| | 1 | The major versions of all the libraries were bumped on 2021-04-27. Follows a summary of backwards-incompatible changes. |
| | 2 | |
| | 3 | = libavcodec = |
| | 4 | * old audio/video decoding APIs avcodec_decode_video2 and |
| | 5 | avcodec_decode_audio4 were removed; |
| | 6 | they are replaced by avcodec_send_packet/avcodec_receive_frame, which |
| | 7 | decouple input and output and can return any number of output frames |
| | 8 | for a single input packet |
| | 9 | * old audio/video encoding APIs avcodec_encode_video2 and |
| | 10 | avcodec_encode_audio2 were removed; |
| | 11 | they are replaced by avcodec_send_frame/avcodec_receive_packet, which |
| | 12 | decouple input and output and can return any number of output packets |
| | 13 | for a single input frame |
| | 14 | * AVCodecContext.coded_frame removed without replacement |
| | 15 | * AVCodecContext.side_data_only_packets removed, codecs (currently only flacenc) |
| | 16 | now always behave as if this field was set to 1 |
| | 17 | * AVCodecContext.vbv_delay removed, replaced by AV_PKT_DATA_CPB_PROPERTIES side data |
| | 18 | * AVCodecContext.rtp_callback removed without replacement |
| | 19 | * AVCodecContext.*_bits removed without replacement |
| | 20 | * following AVCodecContext fields removed, replaced by encoder-private options |
| | 21 | - coder_type and FF_CODER_TYPE* |
| | 22 | - b_frame_strategy |
| | 23 | - mpeg_quant |
| | 24 | - prediction_method and FF_PRED_* |
| | 25 | - pre_me |
| | 26 | - scenechange_threshold |
| | 27 | - noise_reduction |
| | 28 | - me_penalty_compensation |
| | 29 | - brd_scale |
| | 30 | - chromaoffset |
| | 31 | - b_sensitivity |
| | 32 | - context_model |
| | 33 | - frame_skip_* |
| | 34 | - min/max_prediction_order |
| | 35 | - timecode_frame_start |
| | 36 | - rtp_payload_size |
| | 37 | * AVPacket.convergence_duration removed, use AVPacket.duration instead |
| | 38 | * AVPacket API for pre-refcounted memory management were removed |
| | 39 | - av_dup_packet |
| | 40 | - av_copy_packet |
| | 41 | - av_copy_packet_side_data |
| | 42 | - av_free_packet |
| | 43 | users should use refcounted packet API instead |
| | 44 | * av_packet_merge_side_data and av_packet_split_side_data removed without replacement, |
| | 45 | packets with merged side data are no longer supported |
| | 46 | * AVPicture and its related APIs removed; it is replaced either by AVFrame API |
| | 47 | or imgutils in libavutil |
| | 48 | * old bistream filtering API (using AVBitStreamFilterContext) removed, replaced by the API |
| | 49 | in libavcodec/bsf.h |
| | 50 | * avcodec_copy_context removed, it never makes sense for users to call this function |
| | 51 | * avcodec_get_context_defaults3 removed, users should allocate a new codec context |
| | 52 | instead of resettting an old one |
| | 53 | * av_get_codec_tag_string replaced by av_fourcc_make_string/av_fourcc2str |
| | 54 | * avcodec_get_chroma_sub_sample replaced by av_pix_fmt_get_chroma_sub_sample |
| | 55 | * AVCodecContext accessors removed, AVCodecContext fields should be accessed directly |
| | 56 | * AVHWAccel and its related functions removed from public API, as there was no reason |
| | 57 | for them to be user-visible |
| | 58 | * av_lockmgr_register and AVLockOp removed, libavcodec handles locking internally |
| | 59 | * codec registration APIs removed, all codecs are always registered |
| | 60 | - avcodec_register |
| | 61 | - avcodec_register_all |
| | 62 | * av_codec_next replaced by av_codec_iterate |
| | 63 | * AVCPBProperties.max/min/avg_bitrate types changed from int to int64_t |
| | 64 | * avcodec_get_pix_fmt_loss replaced by av_get_pix_fmt_loss |
| | 65 | * avcodec_find_best_pix_fmt_of_2 replaced by av_find_best_pix_fmt_of_2 |
| | 66 | * avcodec_find_best_pix_fmt2 removed |
| | 67 | * av_parser_change removed; dump_extradata, remove_extra or extract_extradata |
| | 68 | should be used instead |
| | 69 | * FF_SUB_TEXT_FMT_ASS_WITH_TIMINGS removed, ASS subtitles are always decoded without timings |
| | 70 | * mpegvideo encoders' rc_strategy option removed, as it had no effect |
| | 71 | * av_vdpau_get_profile removed, users should call av_vdpau_get_profile to set up |
| | 72 | VDPAU decoding |
| | 73 | * libopenh264 encoder's 'slice_mode' option removed, as it is redundant with 'slices'/'max_nal_size' |
| | 74 | options |
| | 75 | * libopenh264 encoder's 'cabac' option replaced with 'coder cabac' |
| | 76 | * 'nvenc' encoder renamed to 'h264_nvenc' |
| | 77 | * struct vaapi_context removed, AVCodecContext.hw_frames_ctx in combination with the API |
| | 78 | in libavutil/hwcontext.h should be used instead |
| | 79 | |
| | 80 | = libavformat = |
| | 81 | * AVFormatContext.open_cb replaced by io_open/io_close |
| | 82 | * AVStream.codec removed; stream information is now exported through |
| | 83 | AVStream.codecpar; for decoding/encoding the users should allocate |
| | 84 | a separate codec context |
| | 85 | * HTTP and RTSP protocol's 'user-agent' option renamed to 'user_agent' |
| | 86 | * HLS muxer's 'hls_wrap' option removed, users should use |
| | 87 | 'hls_list_size'/'hls_flags delete_segments' instead |
| | 88 | * HLS muxer's 'user_localtime'/'use_localtime_mkdir' options removed, users |
| | 89 | should use 'strftime'/'strftime_mkdir' instead |
| | 90 | * AVFMT_FLAG_KEEP_SIDE_DATA removed, it has had no effect since last major bump |
| | 91 | * mov muxer/demuxer no longer read/export the "rotate" tag, use |
| | 92 | AV_PKT_DATA_DISPLAYMATRIX instead |
| | 93 | * AVFormatContext accessors removed, AVFormatContext fields should be accessed |
| | 94 | directly |
| | 95 | * custom AVIOContext instances may no longer return 0 on EOF, they should return |
| | 96 | AVERROR_EOF or another appropriate error code |
| | 97 | * APIs related to ffserver removed without replacement, as ffserver itself has been |
| | 98 | removed |
| | 99 | - AVStream.recommended_encoder_configuration |
| | 100 | - av_stream_get_recommended_encoder_configuration |
| | 101 | - av_stream_set_recommended_encoder_configuration |
| | 102 | * AVFormatContext.filename replaces with AVFormatContext.url |
| | 103 | * format registration APIs removed, all formats are always registered |
| | 104 | - av_register_all |
| | 105 | - av_register_input_format |
| | 106 | - av_register_output_format |
| | 107 | * av_iformat_next replaced with av_demuxer_iterate |
| | 108 | * av_oformat_next replaced with av_muxer_iterate |
| | 109 | * DASH muxer's 'min_seg_duration' option replaced with 'seg_duration' |
| | 110 | * AVFMT_FLAG_MP4A_LATM removed, as it had no effect since 2011 |
| | 111 | * all instances of AVOutputFormat/AVInputFormat visible through the API |
| | 112 | are now const-qualified |
| | 113 | this is only a type change, as the caller was never allowed to modify them |
| | 114 | * av_demuxer_open removed, use avformat_open_input with an options dictionary |
| | 115 | * AVChapter.id type changed from int to int64_t |
| | 116 | |
| | 117 | = libavutil = |
| | 118 | * old VAAPI pixel formats |
| | 119 | - AV_PIX_FMT_VAAPI_IDCT and AV_PIX_FMT_VAAPI_MOCO were never-used - just removed |
| | 120 | - AV_PIX_FMT_VAAPI_VLD renamed to just AV_PIX_FMT_VAAPI |
| | 121 | * QP tables in AVFrame were removed, as they were not flexible enough for new codecs |
| | 122 | - qscale_table |
| | 123 | - qstride |
| | 124 | - qscale_type |
| | 125 | - qp_table_buf |
| | 126 | they were replaced by the API in libavutil/video_enc_params.h |
| | 127 | * AVFrame.error removed without replacement |
| | 128 | * AVFrame.pkt_pts replaced with AVFrame.pts |
| | 129 | * AVFrame accessors were removed, AVFrame fields should be accessed directly |
| | 130 | * types of arguments/return values of the following functions changed from |
| | 131 | (unsigned) int to size_t: |
| | 132 | - av_adler32_update |
| | 133 | - av_hash_update |
| | 134 | - av_md5_update |
| | 135 | - av_md5_sum |
| | 136 | - av_murmur3_update |
| | 137 | - av_ripemd_update |
| | 138 | - av_sha_update |
| | 139 | - av_sha512_update |
| | 140 | - av_buffer_alloc |
| | 141 | - av_buffer_allocz |
| | 142 | - av_buffer_create |
| | 143 | - av_buffer_realloc |
| | 144 | - av_buffer_pool_init |
| | 145 | - av_buffer_pool_init2 |
| | 146 | * AVBufferRef.size changed from int to size_t |
| | 147 | * "compressed" AVComponentDescriptor fields |
| | 148 | - step_minus1 |
| | 149 | - depth_minus1 |
| | 150 | - offset_plus1 |
| | 151 | were replaced by same fields without the offset |
| | 152 | * AV_PIX_FMT_FLAG_PSEUDOPAL removed, pixel formats previously flagged with it |
| | 153 | are no longer treated as paletted |