[FFmpeg-cvslog] avcodec/mpeg12: Don't initialize encoder-only parts of RLTable
Andreas Rheinhardt
git at videolan.org
Thu Dec 31 17:53:36 EET 2020
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Tue Dec 8 20:25:23 2020 +0100| [6e8fcd9c5624c1a89e49803de9e10562ace61b6a] | committer: Andreas Rheinhardt
avcodec/mpeg12: Don't initialize encoder-only parts of RLTable
ff_mpeg12_init_vlcs() currently initializes index_run, max_level and
max_run of ff_rl_mpeg1/2; yet the only user of these fields is the
MPEG-1/2 encoder which already initializes these tables on its own.
So remove the initializations in ff_mpeg12_init_vlcs(); this also
simplifies making ff_mpeg12_init_vlcs() thread-safe.
Reviewed-by: Anton Khirnov <anton at khirnov.net>
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6e8fcd9c5624c1a89e49803de9e10562ace61b6a
---
libavcodec/mpeg12.c | 4 ----
libavcodec/mpeg12.h | 2 --
libavcodec/mpeg12enc.c | 6 ++++--
3 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index e4f007aec5..b4ef41e12d 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -41,8 +41,6 @@
#include "bytestream.h"
#include "thread.h"
-uint8_t ff_mpeg12_static_rl_table_store[2][2][2*MAX_RUN + MAX_LEVEL + 3];
-
static const uint8_t table_mb_ptype[7][2] = {
{ 3, 5 }, // 0x01 MB_INTRA
{ 1, 2 }, // 0x02 MB_PAT
@@ -163,8 +161,6 @@ av_cold void ff_mpeg12_init_vlcs(void)
INIT_VLC_STATIC(&ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 11,
&table_mb_btype[0][1], 2, 1,
&table_mb_btype[0][0], 2, 1, 64);
- ff_rl_init(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]);
- ff_rl_init(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]);
INIT_2D_VLC_RL(ff_rl_mpeg1, 680, 0);
INIT_2D_VLC_RL(ff_rl_mpeg2, 674, 0);
diff --git a/libavcodec/mpeg12.h b/libavcodec/mpeg12.h
index 9a7c2b66b3..4cd48b5d20 100644
--- a/libavcodec/mpeg12.h
+++ b/libavcodec/mpeg12.h
@@ -25,8 +25,6 @@
#include "mpeg12vlc.h"
#include "mpegvideo.h"
-extern uint8_t ff_mpeg12_static_rl_table_store[2][2][2*MAX_RUN + MAX_LEVEL + 3];
-
void ff_mpeg12_common_init(MpegEncContext *s);
#define INIT_2D_VLC_RL(rl, static_size, flags)\
diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c
index d399e9e75e..155971fecd 100644
--- a/libavcodec/mpeg12enc.c
+++ b/libavcodec/mpeg12enc.c
@@ -1041,8 +1041,10 @@ void ff_mpeg1_encode_mb(MpegEncContext *s, int16_t block[8][64],
static av_cold void mpeg12_encode_init_static(void)
{
- ff_rl_init(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]);
- ff_rl_init(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]);
+ static uint8_t mpeg12_static_rl_table_store[2][2][2*MAX_RUN + MAX_LEVEL + 3];
+
+ ff_rl_init(&ff_rl_mpeg1, mpeg12_static_rl_table_store[0]);
+ ff_rl_init(&ff_rl_mpeg2, mpeg12_static_rl_table_store[1]);
for (int i = 0; i < 64; i++) {
mpeg1_max_level[0][i] = ff_rl_mpeg1.max_level[0][i];
More information about the ffmpeg-cvslog
mailing list