summaryrefslogtreecommitdiff
path: root/libavcodec/mpeg12.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-10-21 23:17:07 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2022-10-27 15:44:36 +0200
commit11dfa4d15963a7ad71b763261d6d7e3dcded9965 (patch)
tree5cfb8de2192009d8fc18f8d0cd957250bd6ce385 /libavcodec/mpeg12.c
parent9aa7397db13e649b3d2d04cdb33920d7a9000d87 (diff)
avcodec/mpeg12: Avoid indirection when accessing rl_vlc tables
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
Diffstat (limited to 'libavcodec/mpeg12.c')
-rw-r--r--libavcodec/mpeg12.c19
1 files changed, 11 insertions, 8 deletions
diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c
index df6aba9d74..351ebf420f 100644
--- a/libavcodec/mpeg12.c
+++ b/libavcodec/mpeg12.c
@@ -63,7 +63,8 @@ static const uint8_t table_mb_btype[11][2] = {
{ 2, 5 }, // 0x1E MB_QUANT|MB_FOR|MB_BACK|MB_PAT
};
-av_cold void ff_init_2d_vlc_rl(RLTable *rl, unsigned static_size, int flags)
+av_cold void ff_init_2d_vlc_rl(const RLTable *rl, RL_VLC_ELEM rl_vlc[],
+ unsigned static_size, int flags)
{
int i;
VLCElem table[680] = { 0 };
@@ -94,9 +95,9 @@ av_cold void ff_init_2d_vlc_rl(RLTable *rl, unsigned static_size, int flags)
level = rl->table_level[code];
}
}
- rl->rl_vlc[0][i].len = len;
- rl->rl_vlc[0][i].level = level;
- rl->rl_vlc[0][i].run = run;
+ rl_vlc[i].len = len;
+ rl_vlc[i].level = level;
+ rl_vlc[i].run = run;
}
}
@@ -122,6 +123,9 @@ VLC ff_mb_ptype_vlc;
VLC ff_mb_btype_vlc;
VLC ff_mb_pat_vlc;
+RL_VLC_ELEM ff_mpeg1_rl_vlc[680];
+RL_VLC_ELEM ff_mpeg2_rl_vlc[674];
+
static av_cold void mpeg12_init_vlcs(void)
{
INIT_VLC_STATIC(&ff_dc_lum_vlc, DC_VLC_BITS, 12,
@@ -147,8 +151,8 @@ static av_cold void mpeg12_init_vlcs(void)
&table_mb_btype[0][1], 2, 1,
&table_mb_btype[0][0], 2, 1, 64);
- INIT_2D_VLC_RL(ff_rl_mpeg1, 680, 0);
- INIT_2D_VLC_RL(ff_rl_mpeg2, 674, 0);
+ INIT_2D_VLC_RL(ff_rl_mpeg1, ff_mpeg1_rl_vlc, 0);
+ INIT_2D_VLC_RL(ff_rl_mpeg2, ff_mpeg2_rl_vlc, 0);
}
av_cold void ff_mpeg12_init_vlcs(void)
@@ -231,7 +235,6 @@ int ff_mpeg1_decode_block_intra(GetBitContext *gb,
int16_t *block, int index, int qscale)
{
int dc, diff, i = 0, component;
- RLTable *rl = &ff_rl_mpeg1;
/* DC coefficient */
component = index <= 3 ? 0 : index - 4 + 1;
@@ -256,7 +259,7 @@ int ff_mpeg1_decode_block_intra(GetBitContext *gb,
while (1) {
int level, run, j;
- GET_RL_VLC(level, run, re, gb, rl->rl_vlc[0],
+ GET_RL_VLC(level, run, re, gb, ff_mpeg1_rl_vlc,
TEX_VLC_BITS, 2, 0);
if (level != 0) {