libavformat: Use avcodec_copy_context for chained muxers

This avoids having the chained AVStream->codec point to the same
AVCodecContext owned by the outer AVStream. The downside is that
changes to the AVCodecContext made after calling av_write_header
cannot be detected automatically within the chained muxer.

This avoids having to manually unlink the chained AVStream->codec
by setting it to null before freeing the chained muxer via generic
freeing functions.

Signed-off-by: Ronald S. Bultje <rsbultje@gmail.com>
(cherry picked from commit 1338dc0823)
This commit is contained in:
Martin Storsjö
2011-02-04 12:04:15 +02:00
committed by Michael Niedermayer
parent e9266a2be0
commit 173f19be75
4 changed files with 12 additions and 9 deletions

View File

@@ -500,6 +500,8 @@ void ff_rtsp_undo_setup(AVFormatContext *s)
}
av_metadata_free(&rtpctx->streams[0]->metadata);
av_metadata_free(&rtpctx->metadata);
av_free(rtpctx->streams[0]->codec->extradata);
av_free(rtpctx->streams[0]->codec);
av_free(rtpctx->streams[0]->info);
av_free(rtpctx->streams[0]);
av_free(rtpctx);