[FFmpeg-devel] [PATCH v2 112/162] avcodec/rv34: Make initializing static VLC tables thread-safe

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Fri Nov 20 09:32:37 EET 2020


Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
---
 libavcodec/rv34.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/libavcodec/rv34.c b/libavcodec/rv34.c
index e633c348bd..13f9b609e2 100644
--- a/libavcodec/rv34.c
+++ b/libavcodec/rv34.c
@@ -27,6 +27,7 @@
 #include "libavutil/avassert.h"
 #include "libavutil/imgutils.h"
 #include "libavutil/internal.h"
+#include "libavutil/thread.h"
 
 #include "avcodec.h"
 #include "error_resilience.h"
@@ -1481,6 +1482,7 @@ static int rv34_decode_slice(RV34DecContext *r, int end, const uint8_t* buf, int
  */
 av_cold int ff_rv34_decode_init(AVCodecContext *avctx)
 {
+    static AVOnce init_static_once = AV_ONCE_INIT;
     RV34DecContext *r = avctx->priv_data;
     MpegEncContext *s = &r->s;
     int ret;
@@ -1513,8 +1515,7 @@ av_cold int ff_rv34_decode_init(AVCodecContext *avctx)
         return ret;
     }
 
-    if(!intra_vlcs[0].cbppattern[0].bits)
-        rv34_init_tables();
+    ff_thread_once(&init_static_once, rv34_init_tables);
 
     return 0;
 }
-- 
2.25.1



More information about the ffmpeg-devel mailing list