diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-12-09 01:41:31 +0100 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2021-01-25 14:51:53 +0100 |
commit | d90d0a715f08384bf44b004da60c6d1760a30beb (patch) | |
tree | f7d6e3cb1ffbbd73808f77cd6998a974c0c97bca | |
parent | a3831e81ff368f6c8f098b5c3dad80cae91bacae (diff) | |
download | ffmpeg-d90d0a715f08384bf44b004da60c6d1760a30beb.tar.gz |
avcodec/msmpeg4dec: Reuse identical RL VLCs
Some of the RLTables used by msmpeg4dec actually coincide with other
RLTables: ff_rl_table[5] coincides with ff_h263_rl_inter (and
ff_rl_table[2] with ff_mpeg4_rl_intra). Given that ff_h263_rl_inter is
always initialized before msmpeg4dec's RLTables are initialized, one can
just reuse the VLC tables by copying the pointers; after all, there are
no ownership issues for static data. This saves 70912B from the .bss
segment, translating into actual memory savings when this decoder is
actually used.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-rw-r--r-- | libavcodec/msmpeg4dec.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index 882dd22dbd..06e9707b65 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -322,7 +322,10 @@ av_cold int ff_msmpeg4_decode_init(AVCodecContext *avctx) INIT_FIRST_VLC_RL(ff_rl_table[2], 554); INIT_VLC_RL(ff_rl_table[3], 940); INIT_VLC_RL(ff_rl_table[4], 962); - INIT_VLC_RL(ff_rl_table[5], 554); + /* ff_rl_table[5] coincides with ff_h263_rl_inter which has just been + * initialized in ff_h263_decode_init() above. So just copy the VLCs. */ + av_assert1(ff_h263_rl_inter.rl_vlc[0]); + memcpy(ff_rl_table[5].rl_vlc, ff_h263_rl_inter.rl_vlc, sizeof(ff_rl_table[5].rl_vlc)); mv = &ff_mv_tables[0]; INIT_VLC_STATIC(&mv->vlc, MV_VLC_BITS, mv->n + 1, |