aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-10-24 11:41:37 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-10-26 07:25:09 +0100
commitc4229ad0749faa26a86b998deda1754e04ce77bb (patch)
treec2b664d445ab1226a87ee897185c558d17f2bf15
parent3a836f38f609940d883b8d8ed5e8a526e803da3c (diff)
downloadffmpeg-c4229ad0749faa26a86b998deda1754e04ce77bb.tar.gz
avcodec/mobiclip: Reduce size of VLCs, inline constants
The longest motion vector VLC for mobiclip is six bits long, so using eight bits for the VLC table is wasteful. Furthermore, the length can be inlined. Reviewed-by: Michael Niedermayer <michael@niedermayer.cc> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-rw-r--r--libavcodec/mobiclip.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/libavcodec/mobiclip.c b/libavcodec/mobiclip.c
index 48467614ab..8d37243d87 100644
--- a/libavcodec/mobiclip.c
+++ b/libavcodec/mobiclip.c
@@ -31,6 +31,8 @@
#include "golomb.h"
#include "internal.h"
+#define MOBI_MV_VLC_BITS 6
+
static const uint8_t zigzag4x4_tab[] =
{
0x00, 0x04, 0x01, 0x02, 0x05, 0x08, 0x0C, 0x09, 0x06, 0x03, 0x07, 0x0A,
@@ -364,14 +366,14 @@ static av_cold int mobiclip_init(AVCodecContext *avctx)
}
for (int j = 0; j < 16; j++) {
- ret = ff_init_vlc_sparse(&s->mv_vlc[0][j], 8, mv_len[j],
+ ret = ff_init_vlc_sparse(&s->mv_vlc[0][j], MOBI_MV_VLC_BITS, mv_len[j],
mv_bits_mods[j], sizeof(*mv_bits_mods[j]), sizeof(*mv_bits_mods[j]),
mv_codes_mods[j], sizeof(*mv_codes_mods[j]), sizeof(*mv_codes_mods[j]),
mv_syms_mods[j], sizeof(*mv_syms_mods[j]), sizeof(*mv_syms_mods[j]), 0);
if (ret < 0)
return ret;
- ret = ff_init_vlc_sparse(&s->mv_vlc[1][j], 8, mv_len[j],
+ ret = ff_init_vlc_sparse(&s->mv_vlc[1][j], MOBI_MV_VLC_BITS, mv_len[j],
mv_bits[j], sizeof(*mv_bits[j]), sizeof(*mv_bits[j]),
mv_codes[j], sizeof(*mv_codes[j]), sizeof(*mv_codes[j]),
mv_syms[j], sizeof(*mv_syms[j]), sizeof(*mv_syms[j]), 0);
@@ -1259,7 +1261,7 @@ static int predict_motion(AVCodecContext *avctx,
int ret, idx2;
idx2 = get_vlc2(gb, s->mv_vlc[s->moflex][tidx].table,
- s->mv_vlc[s->moflex][tidx].bits, 1);
+ MOBI_MV_VLC_BITS, 1);
if (idx2 < 0)
return AVERROR_INVALIDDATA;
@@ -1335,7 +1337,7 @@ static int mobiclip_decode(AVCodecContext *avctx, void *data,
motion[x / 16 + 2].y = 0;
idx = get_vlc2(gb, s->mv_vlc[s->moflex][0].table,
- s->mv_vlc[s->moflex][0].bits, 1);
+ MOBI_MV_VLC_BITS, 1);
if (idx < 0)
return AVERROR_INVALIDDATA;