diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-11-17 11:13:56 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-12-08 17:51:46 +0100 |
commit | f697622f687c22392194d6939914c9a6a01ce69e (patch) | |
tree | 3e4a81266a69fe0bdbcc12e9f5e73133bf0cce24 /libavcodec | |
parent | 88c75592bdf42c9caf90722739c13dd3db36a381 (diff) | |
download | ffmpeg-f697622f687c22392194d6939914c9a6a01ce69e.tar.gz |
avcodec/rv34: Make initializing static VLC tables thread-safe
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavcodec')
-rw-r--r-- | libavcodec/rv34.c | 5 |
1 files 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; } |