diff options
author | Nicolas George <nicolas.george@normalesup.org> | 2013-03-05 15:19:47 +0100 |
---|---|---|
committer | Nicolas George <nicolas.george@normalesup.org> | 2013-03-05 15:43:32 +0100 |
commit | 9b211c43dc5f2e618f204c4a7fd184eb2ea51f02 (patch) | |
tree | 46b46a32a32f339484295bfff031ef97fdba9441 | |
parent | ad4855613520fd14e90ff8c551bfd99cd464e080 (diff) | |
download | ffmpeg-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.c | 11 |
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; } |