summaryrefslogtreecommitdiff
path: root/libavcodec/ituh263enc.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-12-02 03:26:41 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2021-01-25 14:52:58 +0100
commit61fe481586425a41d45e371de1e875b49882477d (patch)
tree04dbbd211420e71fea74a9b87807fd9d17ed8566 /libavcodec/ituh263enc.c
parent12d0bb382b7f8f67981ec61aad1ce4f6840ab2dc (diff)
avcodec/h263data, ituh263*: Make initializing RL inter table thread-safe
Up until now, ff_h263_rl_inter was initialized by both ituh263dec and ituh263enc; this is an obstacle in making the codecs that use this code init-threadsafe. This obstacle is eliminated by only initializing this RLTable from a single place that is guarded by a dedicated AVOnce. Reviewed-by: Anton Khirnov <anton@khirnov.net> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavcodec/ituh263enc.c')
-rw-r--r--libavcodec/ituh263enc.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/libavcodec/ituh263enc.c b/libavcodec/ituh263enc.c
index e1debcf63b..43260e6984 100644
--- a/libavcodec/ituh263enc.c
+++ b/libavcodec/ituh263enc.c
@@ -759,10 +759,11 @@ av_cold void ff_h263_encode_init(MpegEncContext *s)
static int done = 0;
if (!done) {
+ static uint8_t rl_intra_table[2][2 * MAX_RUN + MAX_LEVEL + 3];
done = 1;
- ff_rl_init(&ff_h263_rl_inter, ff_h263_static_rl_table_store[0]);
- ff_rl_init(&ff_rl_intra_aic, ff_h263_static_rl_table_store[1]);
+ ff_rl_init(&ff_rl_intra_aic, rl_intra_table);
+ ff_h263_init_rl_inter();
init_uni_h263_rl_tab(&ff_rl_intra_aic, uni_h263_intra_aic_rl_len);
init_uni_h263_rl_tab(&ff_h263_rl_inter, uni_h263_inter_rl_len);