X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fmpeg12.c;h=69c6d0a09a2af26523c727f895fd96ea79cddc1b;hb=29b17528612c8b0f66e6982ab48cc0816e41f36f;hp=8bc56973ed9bc70ccc30e42c4f8607d418afac48;hpb=6fee1b90ce3bf4fbdfde7016e0890057c9000487;p=ffmpeg diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 8bc56973ed9..69c6d0a09a2 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -25,26 +25,43 @@ * MPEG-1/2 decoder */ -//#define DEBUG #include "libavutil/attributes.h" #include "internal.h" #include "avcodec.h" -#include "dsputil.h" #include "mpegvideo.h" #include "error_resilience.h" #include "mpeg12.h" #include "mpeg12data.h" -#include "mpeg12decdata.h" +#include "mpegvideodata.h" #include "bytestream.h" -#include "vdpau_internal.h" -#include "xvmc_internal.h" #include "thread.h" -//#undef NDEBUG -//#include - 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 + { 1, 3 }, // 0x08 MB_FOR + { 1, 1 }, // 0x0A MB_FOR|MB_PAT + { 1, 6 }, // 0x11 MB_QUANT|MB_INTRA + { 1, 5 }, // 0x12 MB_QUANT|MB_PAT + { 2, 5 }, // 0x1A MB_QUANT|MB_FOR|MB_PAT +}; + +static const uint8_t table_mb_btype[11][2] = { + { 3, 5 }, // 0x01 MB_INTRA + { 2, 3 }, // 0x04 MB_BACK + { 3, 3 }, // 0x06 MB_BACK|MB_PAT + { 2, 4 }, // 0x08 MB_FOR + { 3, 4 }, // 0x0A MB_FOR|MB_PAT + { 2, 2 }, // 0x0C MB_FOR|MB_BACK + { 3, 2 }, // 0x0E MB_FOR|MB_BACK|MB_PAT + { 1, 6 }, // 0x11 MB_QUANT|MB_INTRA + { 2, 6 }, // 0x16 MB_QUANT|MB_BACK|MB_PAT + { 3, 6 }, // 0x1A MB_QUANT|MB_FOR|MB_PAT + { 2, 5 }, // 0x1E MB_QUANT|MB_FOR|MB_BACK|MB_PAT +}; + #define INIT_2D_VLC_RL(rl, static_size)\ {\ static RL_VLC_ELEM rl_vlc_table[static_size];\ @@ -148,8 +165,8 @@ 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_init_rl(&ff_rl_mpeg1, ff_mpeg12_static_rl_table_store[0]); - ff_init_rl(&ff_rl_mpeg2, ff_mpeg12_static_rl_table_store[1]); + 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); INIT_2D_VLC_RL(ff_rl_mpeg2, 674);