aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas George <nicolas.george@normalesup.org>2013-03-05 15:19:47 +0100
committerNicolas George <nicolas.george@normalesup.org>2013-03-05 15:43:32 +0100
commit9b211c43dc5f2e618f204c4a7fd184eb2ea51f02 (patch)
tree46b46a32a32f339484295bfff031ef97fdba9441
parentad4855613520fd14e90ff8c551bfd99cd464e080 (diff)
downloadffmpeg-9b211c43dc5f2e618f204c4a7fd184eb2ea51f02.tar.gz
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.
-rw-r--r--doc/examples/muxing.c11
1 files changed, 2 insertions, 9 deletions
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;
}