[FFmpeg-devel] [PATCH] examples/muxing: fix memory leak.

Stefano Sabatini stefasab at gmail.com
Tue Mar 5 15:42:48 CET 2013


On date Tuesday 2013-03-05 15:23:14 +0100, Nicolas George encoded:
> Do not re-call avcodec_get_context_defaults3(), it is already
> called by avformat_new_stream() and it leaks the codec
> priv_data that was already allocated.
> 
> Use avformat_free_context() instead of freeing (not)
> everything manually.
> 
> Fix trac ticket #2322.
> 
> Signed-off-by: Nicolas George <nicolas.george at normalesup.org>
> ---
>  doc/examples/muxing.c |   11 ++---------
>  1 file changed, 2 insertions(+), 9 deletions(-)
> 
> diff --git a/doc/examples/muxing.c b/doc/examples/muxing.c
> index 8469b27..0a00884 100644
> --- a/doc/examples/muxing.c
> +++ b/doc/examples/muxing.c
> @@ -86,7 +86,6 @@ static AVStream *add_stream(AVFormatContext *oc, AVCodec **codec,
>          break;
>  
>      case AVMEDIA_TYPE_VIDEO:
> -        avcodec_get_context_defaults3(c, *codec);
>          c->codec_id = codec_id;
>  
>          c->bit_rate = 400000;
> @@ -396,7 +395,7 @@ int main(int argc, char **argv)
>      AVStream *audio_st, *video_st;
>      AVCodec *audio_codec, *video_codec;
>      double audio_pts, video_pts;
> -    int ret, i;
> +    int ret;
>  
>      /* Initialize libavcodec, and register all codecs and formats. */
>      av_register_all();
> @@ -504,18 +503,12 @@ int main(int argc, char **argv)
>      if (audio_st)
>          close_audio(oc, audio_st);
>  
> -    /* Free the streams. */
> -    for (i = 0; i < oc->nb_streams; i++) {
> -        av_freep(&oc->streams[i]->codec);
> -        av_freep(&oc->streams[i]);
> -    }
> -
>      if (!(fmt->flags & AVFMT_NOFILE))
>          /* Close the output file. */
>          avio_close(oc->pb);
>  
>      /* free the stream */
> -    av_free(oc);
> +    avformat_free_context(oc);

LGTM assuming it has been tested, thanks.
-- 
FFmpeg = Fundamental and Fiendish Magnificient Powerful Ecletic Game


More information about the ffmpeg-devel mailing list