From 9b211c43dc5f2e618f204c4a7fd184eb2ea51f02 Mon Sep 17 00:00:00 2001 From: Nicolas George Date: Tue, 5 Mar 2013 15:19:47 +0100 Subject: examples/muxing: fix memory leak. 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. --- doc/examples/muxing.c | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) (limited to 'doc/examples') diff --git a/doc/examples/muxing.c b/doc/examples/muxing.c index 8469b272b5..0a00884859 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); return 0; } -- cgit v1.2.3