[FFmpeg-cvslog] lavc: preserve the original private data in avcodec_copy_context()
Anton Khirnov
git at videolan.org
Thu May 15 19:37:49 CEST 2014
ffmpeg | branch: master | Anton Khirnov <anton at khirnov.net> | Sat Apr 5 07:38:16 2014 +0200| [efc7df6c1f11b20a48e60c3f743ce2331b661973] | committer: Anton Khirnov
lavc: preserve the original private data in avcodec_copy_context()
If a non-NULL codec was passed to avcodec_alloc_context3(), private data
will be already allocated in dest.
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=efc7df6c1f11b20a48e60c3f743ce2331b661973
---
libavcodec/options.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libavcodec/options.c b/libavcodec/options.c
index 2e41ce4..c28cbeb 100644
--- a/libavcodec/options.c
+++ b/libavcodec/options.c
@@ -137,6 +137,9 @@ AVCodecContext *avcodec_alloc_context3(const AVCodec *codec)
int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src)
{
+ const AVCodec *orig_codec = dest->codec;
+ uint8_t *orig_priv_data = dest->priv_data;
+
if (avcodec_is_open(dest)) { // check that the dest context is uninitialized
av_log(dest, AV_LOG_ERROR,
"Tried to copy AVCodecContext %p into already-initialized %p\n",
@@ -145,9 +148,10 @@ int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src)
}
memcpy(dest, src, sizeof(*dest));
+ dest->priv_data = orig_priv_data;
+ dest->codec = orig_codec;
+
/* set values specific to opened codecs back to their default state */
- dest->priv_data = NULL;
- dest->codec = NULL;
dest->slice_offset = NULL;
dest->hwaccel = NULL;
dest->internal = NULL;
More information about the ffmpeg-cvslog
mailing list