[FFmpeg-devel] [PATCH 1/4] avformat/avidec: Don't reimplement ff_free_stream()

James Almer jamrial at gmail.com
Sat Apr 4 16:59:31 EEST 2020


On 3/27/2020 6:55 AM, Andreas Rheinhardt wrote:
> Using ff_free_stream() makes the code more readable, more future-proof
> (the old code freed AVCodecContexts and AVCodecParameters and its
> substructures manually, so that there is a chance that there would be a
> memleak for some time if new substructures were added) and reduces
> code size.
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
>  libavformat/avidec.c | 17 ++---------------
>  1 file changed, 2 insertions(+), 15 deletions(-)
> 
> diff --git a/libavformat/avidec.c b/libavformat/avidec.c
> index 00c3978b2d..ae343e732a 100644
> --- a/libavformat/avidec.c
> +++ b/libavformat/avidec.c
> @@ -600,21 +600,8 @@ static int avi_read_header(AVFormatContext *s)
>                      goto fail;
>  
>                  ast = s->streams[0]->priv_data;
> -                av_freep(&s->streams[0]->codecpar->extradata);
> -                av_freep(&s->streams[0]->codecpar);
> -#if FF_API_LAVF_AVCTX
> -FF_DISABLE_DEPRECATION_WARNINGS
> -                av_freep(&s->streams[0]->codec);
> -FF_ENABLE_DEPRECATION_WARNINGS
> -#endif
> -                if (s->streams[0]->info)
> -                    av_freep(&s->streams[0]->info->duration_error);
> -                av_freep(&s->streams[0]->info);
> -                if (s->streams[0]->internal)
> -                    av_freep(&s->streams[0]->internal->avctx);
> -                av_freep(&s->streams[0]->internal);
> -                av_freep(&s->streams[0]);
> -                s->nb_streams = 0;
> +                st->priv_data = NULL;
> +                ff_free_stream(s, st);

I stream_index guaranteed to be 0 here? Or in turn, was s->streams[0]
correct in this chunk to begin with?

>                  if (CONFIG_DV_DEMUXER) {
>                      avi->dv_demux = avpriv_dv_init_demux(s);
>                      if (!avi->dv_demux)
> 



More information about the ffmpeg-devel mailing list