After being filled by FFCodec->init() from the first worker thread, it needs to
be copied to every other thread context. Otherwise, its entries will not be
present when ff_decode_frame_props() populates output frames.

Signed-off-by: James Almer <jamr...@gmail.com>
---
 libavcodec/pthread_frame.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libavcodec/pthread_frame.c b/libavcodec/pthread_frame.c
index 4ea5dd3698..7019108af6 100644
--- a/libavcodec/pthread_frame.c
+++ b/libavcodec/pthread_frame.c
@@ -905,6 +905,14 @@ static av_cold int init_thread(PerThreadContext *p, int 
*threads_to_free,
             if (err < 0)
                 return err;
         }
+    } else {
+        for (int i = 0; i < avctx->nb_decoded_side_data; i++) {
+            err = av_frame_side_data_clone(&copy->decoded_side_data,
+                                           &copy->nb_decoded_side_data,
+                                           avctx->decoded_side_data[i], 0);
+            if (err < 0)
+                return err;
+        }
     }
 
     atomic_init(&p->debug_threads, (copy->debug & FF_DEBUG_THREADS) != 0);
-- 
2.49.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to