[FFmpeg-cvslog] avcodec/ffv1dec: move initial_states init to init_thread_copy()
Michael Niedermayer
git at videolan.org
Mon Sep 2 10:11:25 CEST 2013
ffmpeg | branch: release/2.0 | Michael Niedermayer <michaelni at gmx.at> | Sun Sep 1 19:29:38 2013 +0200| [1da5ab751f999a181b42fe73b3ebcaa264ae4929] | committer: Carl Eugen Hoyos
avcodec/ffv1dec: move initial_states init to init_thread_copy()
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
(cherry picked from commit c72cca5a44d8a83e097a97a13990d421ba7a4c5d)
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=1da5ab751f999a181b42fe73b3ebcaa264ae4929
---
libavcodec/ffv1dec.c | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c
index 588b5e1..9f61262 100644
--- a/libavcodec/ffv1dec.c
+++ b/libavcodec/ffv1dec.c
@@ -916,13 +916,19 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac
static int init_thread_copy(AVCodecContext *avctx)
{
FFV1Context *f = avctx->priv_data;
+ int i;
f->picture.f = NULL;
f->last_picture.f = NULL;
f->sample_buffer = NULL;
- f->quant_table_count = 0;
f->slice_count = 0;
+ for (i = 0; i < f->quant_table_count; i++) {
+ av_assert0(f->version > 1);
+ f->initial_states[i] = av_memdup(f->initial_states[i],
+ f->context_count[i] * sizeof(*f->initial_states[i]));
+ }
+
return 0;
}
@@ -936,12 +942,9 @@ static int update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
return 0;
if (!fdst->picture.f) {
+ FFV1Context bak = *fdst;
memcpy(fdst, fsrc, sizeof(*fdst));
-
- for (i = 0; i < fdst->quant_table_count; i++) {
- fdst->initial_states[i] = av_malloc(fdst->context_count[i] * sizeof(*fdst->initial_states[i]));
- memcpy(fdst->initial_states[i], fsrc->initial_states[i], fdst->context_count[i] * sizeof(*fdst->initial_states[i]));
- }
+ memcpy(fdst->initial_states, bak.initial_states, sizeof(fdst->initial_states));
fdst->picture.f = av_frame_alloc();
fdst->last_picture.f = av_frame_alloc();
More information about the ffmpeg-cvslog
mailing list