lavc: copy AVCodecContext for threads
authorPaul B Mahol <onemda@gmail.com>
Thu, 13 Jun 2013 21:49:18 +0000 (21:49 +0000)
committerPaul B Mahol <onemda@gmail.com>
Thu, 13 Jun 2013 21:49:18 +0000 (21:49 +0000)
Signed-off-by: Paul B Mahol <onemda@gmail.com>
libavcodec/alac.c
libavcodec/flacdec.c
libavcodec/takdec.c
libavcodec/tta.c
libavcodec/wavpack.c

index c6f01b3..6ffc006 100644 (file)
@@ -621,6 +621,7 @@ static av_cold int alac_decode_init(AVCodecContext * avctx)
 static int init_thread_copy(AVCodecContext *avctx)
 {
     ALACContext *alac = avctx->priv_data;
+    alac->avctx = avctx;
     return allocate_buffers(alac);
 }
 
index a0c950b..c5847e3 100644 (file)
@@ -498,7 +498,6 @@ static int flac_decode_frame(AVCodecContext *avctx, void *data,
     int ret;
 
     *got_frame_ptr = 0;
-    s->avctx = avctx;
 
     if (s->max_framesize == 0) {
         s->max_framesize =
@@ -575,6 +574,7 @@ static int init_thread_copy(AVCodecContext *avctx)
     FLACContext *s = avctx->priv_data;
     s->decoded_buffer = NULL;
     s->decoded_buffer_size = 0;
+    s->avctx = avctx;
     if (s->max_blocksize)
         return allocate_buffers(s);
     return 0;
index c9c861c..9e01ee0 100644 (file)
@@ -902,6 +902,13 @@ static int tak_decode_frame(AVCodecContext *avctx, void *data,
     return pkt->size;
 }
 
+static int init_thread_copy(AVCodecContext *avctx)
+{
+    TAKDecContext *s = avctx->priv_data;
+    s->avctx = avctx;
+    return 0;
+}
+
 static int update_thread_context(AVCodecContext *dst,
                                  const AVCodecContext *src)
 {
@@ -931,6 +938,7 @@ AVCodec ff_tak_decoder = {
     .init             = tak_decode_init,
     .close            = tak_decode_close,
     .decode           = tak_decode_frame,
+    .init_thread_copy = ONLY_IF_THREADS_ENABLED(init_thread_copy),
     .update_thread_context = ONLY_IF_THREADS_ENABLED(update_thread_context),
     .capabilities     = CODEC_CAP_DR1 | CODEC_CAP_FRAME_THREADS,
     .long_name        = NULL_IF_CONFIG_SMALL("TAK (Tom's lossless Audio Kompressor)"),
index 710aa35..6697d84 100644 (file)
@@ -410,6 +410,8 @@ error:
 
 static int init_thread_copy(AVCodecContext *avctx)
 {
+    TTAContext *s = avctx->priv_data;
+    s->avctx = avctx;
     return allocate_buffers(avctx);
 }
 
index de5bc6c..47f598a 100644 (file)
@@ -728,6 +728,13 @@ static av_cold int wv_alloc_frame_context(WavpackContext *c)
     return 0;
 }
 
+static int init_thread_copy(AVCodecContext *avctx)
+{
+    WavpackContext *s = avctx->priv_data;
+    s->avctx = avctx;
+    return 0;
+}
+
 static av_cold int wavpack_decode_init(AVCodecContext *avctx)
 {
     WavpackContext *s = avctx->priv_data;
@@ -1238,6 +1245,7 @@ AVCodec ff_wavpack_decoder = {
     .close          = wavpack_decode_end,
     .decode         = wavpack_decode_frame,
     .flush          = wavpack_decode_flush,
+    .init_thread_copy = ONLY_IF_THREADS_ENABLED(init_thread_copy),
     .capabilities   = CODEC_CAP_DR1 | CODEC_CAP_FRAME_THREADS,
     .long_name      = NULL_IF_CONFIG_SMALL("WavPack"),
 };