[FFmpeg-devel] [PATCH 82/87] avformat: remove deprecated AVStream.codec
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Sat Apr 24 15:52:26 EEST 2021
James Almer:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
> fftools/ffmpeg_opt.c | 13 ---
> libavformat/avformat.h | 8 +-
> libavformat/dump.c | 24 ------
> libavformat/isom.c | 12 +--
> libavformat/mov.c | 17 ----
> libavformat/movenc.c | 38 +--------
> libavformat/mux.c | 27 -------
> libavformat/sdp.c | 18 -----
> libavformat/segment.c | 6 --
> libavformat/utils.c | 164 +-------------------------------------
> libavformat/version.h | 3 -
> libavformat/yuv4mpegenc.c | 7 --
> 12 files changed, 7 insertions(+), 330 deletions(-)
>
> diff --git a/libavformat/avformat.h b/libavformat/avformat.h
> index 28069d45dc..3e307efb16 100644
> --- a/libavformat/avformat.h
> +++ b/libavformat/avformat.h
> @@ -839,13 +839,7 @@ typedef struct AVStream {
> * encoding: set by the user, replaced by libavformat if left unset
> */
> int id;
> -#if FF_API_LAVF_AVCTX
> - /**
> - * @deprecated use the codecpar struct instead
> - */
> - attribute_deprecated
> - AVCodecContext *codec;
> -#endif
The documentation of avformat_new_stream() must also be updated. E.g.:
"User is required to call avcodec_close() and avformat_free_context() to
clean up the allocation by avformat_new_stream()."
Furthermore, the AVCodec parameter is currently only used for the public
AVCodecContext that is about to be removed and not the private
AVCodecContext, so I wonder whether this should be changed or if we
should add a avformat_new_stream2() without this useless parameter.
> +
> void *priv_data;
>
> /**
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index 2f66f539a6..49bf19b2b0 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -158,13 +158,6 @@ int ff_copy_whiteblacklists(AVFormatContext *dst, const AVFormatContext *src)
>
> static const AVCodec *find_decoder(AVFormatContext *s, const AVStream *st, enum AVCodecID codec_id)
> {
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - if (st->codec->codec)
> - return st->codec->codec;
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> -
> switch (st->codecpar->codec_type) {
> case AVMEDIA_TYPE_VIDEO:
> if (s->video_codec) return s->video_codec;
> @@ -354,12 +347,6 @@ static int set_codec_from_probe_data(AVFormatContext *s, AVStream *st,
> st->codecpar->codec_id = fmt_id_type[i].id;
> st->codecpar->codec_type = fmt_id_type[i].type;
> st->internal->need_context_update = 1;
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - st->codec->codec_type = st->codecpar->codec_type;
> - st->codec->codec_id = st->codecpar->codec_id;
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> return score;
> }
> }
> @@ -480,15 +467,6 @@ static int update_stream_avctx(AVFormatContext *s)
> if (ret < 0)
> return ret;
>
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - /* update deprecated public codec context */
> - ret = avcodec_parameters_to_context(st->codec, st->codecpar);
> - if (ret < 0)
> - return ret;
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> -
> st->internal->need_context_update = 0;
> }
> return 0;
> @@ -920,13 +898,6 @@ void ff_compute_frame_duration(AVFormatContext *s, int *pnum, int *pden, AVStrea
> av_mul_q(av_inv_q(st->internal->avctx->time_base), (AVRational){1, st->internal->avctx->ticks_per_frame});
> int frame_size, sample_rate;
>
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - if ((!codec_framerate.den || !codec_framerate.num) && st->codec->time_base.den && st->codec->time_base.num)
> - codec_framerate = av_mul_q(av_inv_q(st->codec->time_base), (AVRational){1, st->codec->ticks_per_frame});
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> -
> *pnum = 0;
> *pden = 0;
> switch (st->codecpar->codec_type) {
> @@ -1547,17 +1518,6 @@ static int read_frame_internal(AVFormatContext *s, AVPacket *pkt)
> return ret;
> }
>
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - /* update deprecated public codec context */
> - ret = avcodec_parameters_to_context(st->codec, st->codecpar);
> - if (ret < 0) {
> - av_packet_unref(pkt);
> - return ret;
> - }
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> -
> st->internal->need_context_update = 0;
> }
>
> @@ -1680,10 +1640,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
> av_opt_set_dict_val(s, "metadata", NULL, AV_OPT_SEARCH_CHILDREN);
> }
>
> -#if FF_API_LAVF_AVCTX
> - update_stream_avctx(s);
> -#endif
> -
> if (s->debug & FF_FDEBUG_TS)
> av_log(s, AV_LOG_DEBUG,
> "read_frame_internal stream=%d, pts=%s, dts=%s, "
> @@ -3632,15 +3588,6 @@ int avformat_find_stream_info(AVFormatContext *ic, AVDictionary **options)
> }
>
> /* check if the caller has overridden the codec id */
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - if (st->codec->codec_id != st->internal->orig_codec_id) {
> - st->codecpar->codec_id = st->codec->codec_id;
> - st->codecpar->codec_type = st->codec->codec_type;
> - st->internal->orig_codec_id = st->codec->codec_id;
> - }
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> // only for the split stuff
> if (!st->parser && !(ic->flags & AVFMT_FLAG_NOPARSE) && st->internal->request_probe <= 0) {
> st->parser = av_parser_init(st->codecpar->codec_id);
> @@ -4123,42 +4070,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
> goto find_stream_info_err;
> }
>
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - ret = avcodec_parameters_to_context(st->codec, st->codecpar);
> - if (ret < 0)
> - goto find_stream_info_err;
> -
> - // The old API (AVStream.codec) "requires" the resolution to be adjusted
> - // by the lowres factor.
> - if (st->internal->avctx->lowres && st->internal->avctx->width) {
> - st->codec->lowres = st->internal->avctx->lowres;
> - st->codec->width = st->internal->avctx->width;
> - st->codec->height = st->internal->avctx->height;
> - }
> -
> - if (st->codec->codec_tag != MKTAG('t','m','c','d')) {
> - st->codec->time_base = st->internal->avctx->time_base;
> - st->codec->ticks_per_frame = st->internal->avctx->ticks_per_frame;
> - }
> - st->codec->framerate = st->avg_frame_rate;
> -
> - if (st->internal->avctx->subtitle_header) {
> - st->codec->subtitle_header = av_malloc(st->internal->avctx->subtitle_header_size);
> - if (!st->codec->subtitle_header)
> - goto find_stream_info_err;
> - st->codec->subtitle_header_size = st->internal->avctx->subtitle_header_size;
> - memcpy(st->codec->subtitle_header, st->internal->avctx->subtitle_header,
> - st->codec->subtitle_header_size);
> - }
> -
> - // Fields unavailable in AVCodecParameters
> - st->codec->coded_width = st->internal->avctx->coded_width;
> - st->codec->coded_height = st->internal->avctx->coded_height;
> - st->codec->properties = st->internal->avctx->properties;
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> -
> st->internal->avctx_inited = 0;
> }
>
> @@ -4368,11 +4279,6 @@ static void free_stream(AVStream **pst)
>
> av_dict_free(&st->metadata);
> avcodec_parameters_free(&st->codecpar);
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - avcodec_free_context(&st->codec);
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> av_freep(&st->priv_data);
>
> av_freep(pst);
> @@ -4480,16 +4386,6 @@ AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c)
> if (!st)
> return NULL;
>
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - st->codec = avcodec_alloc_context3(c);
> - if (!st->codec) {
> - av_free(st);
> - return NULL;
> - }
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> -
> st->internal = av_mallocz(sizeof(*st->internal));
> if (!st->internal)
> goto fail;
> @@ -4508,13 +4404,6 @@ FF_ENABLE_DEPRECATION_WARNINGS
> goto fail;
>
> if (s->iformat) {
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - /* no default bitrate if decoding */
> - st->codec->bit_rate = 0;
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> -
> /* default pts setting is MPEG-like */
> avpriv_set_pts_info(st, 33, 1, 90000);
> /* we set the current DTS to 0 so that formats without any timestamps
> @@ -4922,11 +4811,6 @@ void avpriv_set_pts_info(AVStream *s, int pts_wrap_bits,
> return;
> }
> s->time_base = new_tb;
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - s->codec->pkt_timebase = new_tb;
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> s->internal->avctx->pkt_timebase = new_tb;
> s->pts_wrap_bits = pts_wrap_bits;
> }
> @@ -5154,16 +5038,8 @@ static int match_stream_specifier(AVFormatContext *s, AVStream *st,
> if (*spec && *spec++ != ':') /* If we are not at the end, then another specifier must follow. */
> return AVERROR(EINVAL);
>
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - if (type != st->codecpar->codec_type
> - && (st->codecpar->codec_type != AVMEDIA_TYPE_UNKNOWN || st->codec->codec_type != type))
> - match = 0;
> - FF_ENABLE_DEPRECATION_WARNINGS
> -#else
> if (type != st->codecpar->codec_type)
> match = 0;
> -#endif
> if (nopic && (st->disposition & AV_DISPOSITION_ATTACHED_PIC))
> match = 0;
> } else if (*spec == 'p' && *(spec + 1) == ':') {
> @@ -5230,35 +5106,16 @@ FF_DISABLE_DEPRECATION_WARNINGS
> return match && ret;
> } else if (*spec == 'u' && *(spec + 1) == '\0') {
> AVCodecParameters *par = st->codecpar;
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - AVCodecContext *codec = st->codec;
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> int val;
> switch (par->codec_type) {
> case AVMEDIA_TYPE_AUDIO:
> val = par->sample_rate && par->channels;
> -#if FF_API_LAVF_AVCTX
> - val = val || (codec->sample_rate && codec->channels);
> -#endif
> - if (par->format == AV_SAMPLE_FMT_NONE
> -#if FF_API_LAVF_AVCTX
> - && codec->sample_fmt == AV_SAMPLE_FMT_NONE
> -#endif
> - )
> + if (par->format == AV_SAMPLE_FMT_NONE)
> return 0;
> break;
> case AVMEDIA_TYPE_VIDEO:
> val = par->width && par->height;
> -#if FF_API_LAVF_AVCTX
> - val = val || (codec->width && codec->height);
> -#endif
> - if (par->format == AV_PIX_FMT_NONE
> -#if FF_API_LAVF_AVCTX
> - && codec->pix_fmt == AV_PIX_FMT_NONE
> -#endif
> - )
> + if (par->format == AV_PIX_FMT_NONE)
> return 0;
> break;
> case AVMEDIA_TYPE_UNKNOWN:
> @@ -5268,11 +5125,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
> val = 1;
> break;
> }
> -#if FF_API_LAVF_AVCTX
> - return match && ((par->codec_id != AV_CODEC_ID_NONE || codec->codec_id != AV_CODEC_ID_NONE) && val != 0);
> -#else
> return match && (par->codec_id != AV_CODEC_ID_NONE && val != 0);
> -#endif
> } else {
> return AVERROR(EINVAL);
> }
> @@ -5684,15 +5537,8 @@ int avformat_transfer_internal_stream_timing_info(const AVOutputFormat *ofmt,
> const AVCodecContext *dec_ctx;
> AVCodecContext *enc_ctx;
>
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - dec_ctx = ist->codec;
> - enc_ctx = ost->codec;
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#else
> dec_ctx = ist->internal->avctx;
> enc_ctx = ost->internal->avctx;
> -#endif
>
> enc_ctx->time_base = ist->time_base;
> /*
> @@ -5748,13 +5594,7 @@ FF_ENABLE_DEPRECATION_WARNINGS
> AVRational av_stream_get_codec_timebase(const AVStream *st)
> {
> // See avformat_transfer_internal_stream_timing_info() TODO.
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> - return st->codec->time_base;
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#else
> return st->internal->avctx->time_base;
> -#endif
> }
>
> void ff_format_set_url(AVFormatContext *s, char *url)
More information about the ffmpeg-devel
mailing list