29 #define UNCHECKED_BITSTREAM_READER 1
42 0, 1, 2, 4, 8, 3, 5,10,12,15, 7,11,13,14, 6, 9,
46 15, 0, 7,11,13,14, 3, 5,10,12, 1, 2, 4, 8, 6, 9,
92 6, 2, 0, 0, 8, 6, 3, 0, 9, 8, 7, 5, 10, 9, 8, 6,
93 11,10, 9, 7, 13,11,10, 8, 13,13,11, 9, 13,13,13,10,
94 14,14,13,11, 14,14,14,13, 15,15,14,14, 15,15,15,14,
95 16,15,15,15, 16,16,16,15, 16,16,16,16, 16,16,16,16,
99 6, 2, 0, 0, 6, 5, 3, 0, 7, 6, 6, 4, 8, 6, 6, 4,
100 8, 7, 7, 5, 9, 8, 8, 6, 11, 9, 9, 6, 11,11,11, 7,
101 12,11,11, 9, 12,12,12,11, 12,12,12,11, 13,13,13,12,
102 13,13,13,13, 13,14,13,13, 14,14,14,13, 14,14,14,14,
106 6, 4, 0, 0, 6, 5, 4, 0, 6, 5, 5, 4, 7, 5, 5, 4,
107 7, 5, 5, 4, 7, 6, 6, 4, 7, 6, 6, 4, 8, 7, 7, 5,
108 8, 8, 7, 6, 9, 8, 8, 7, 9, 9, 8, 8, 9, 9, 9, 8,
109 10, 9, 9, 9, 10,10,10,10, 10,10,10,10, 10,10,10,10,
113 6, 6, 0, 0, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6,
114 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
115 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
116 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6,
123 5, 1, 0, 0, 7, 4, 1, 0, 7, 6, 5, 3, 7, 6, 5, 3,
124 7, 6, 5, 4, 15, 6, 5, 4, 11,14, 5, 4, 8,10,13, 4,
125 15,14, 9, 4, 11,10,13,12, 15,14, 9,12, 11,10,13, 8,
126 15, 1, 9,12, 11,14,13, 8, 7,10, 9,12, 4, 6, 5, 8,
130 11, 2, 0, 0, 7, 7, 3, 0, 7,10, 9, 5, 7, 6, 5, 4,
131 4, 6, 5, 6, 7, 6, 5, 8, 15, 6, 5, 4, 11,14,13, 4,
132 15,10, 9, 4, 11,14,13,12, 8,10, 9, 8, 15,14,13,12,
133 11,10, 9,12, 7,11, 6, 8, 9, 8,10, 1, 7, 6, 5, 4,
137 15,14, 0, 0, 11,15,13, 0, 8,12,14,12, 15,10,11,11,
138 11, 8, 9,10, 9,14,13, 9, 8,10, 9, 8, 15,14,13,13,
139 11,14,10,12, 15,10,13,12, 11,14, 9,12, 8,10,13, 8,
140 13, 7, 9,12, 9,12,11,10, 5, 8, 7, 6, 1, 4, 3, 2,
144 0, 1, 0, 0, 4, 5, 6, 0, 8, 9,10,11, 12,13,14,15,
145 16,17,18,19, 20,21,22,23, 24,25,26,27, 28,29,30,31,
146 32,33,34,35, 36,37,38,39, 40,41,42,43, 44,45,46,47,
147 48,49,50,51, 52,53,54,55, 56,57,58,59, 60,61,62,63,
152 {1,3,3,4,4,5,5,6,6,7,7,8,8,9,9,9},
153 {3,3,3,3,3,4,4,4,4,5,5,6,6,6,6},
154 {4,3,3,3,4,4,3,3,4,5,5,6,5,6},
155 {5,3,4,4,3,3,3,4,3,4,5,5,5},
156 {4,4,4,3,3,3,3,3,4,5,4,5},
157 {6,5,3,3,3,3,3,3,4,3,6},
158 {6,5,3,3,3,2,3,4,3,6},
170 {1,3,2,3,2,3,2,3,2,3,2,3,2,3,2,1},
171 {7,6,5,4,3,5,4,3,2,3,2,3,2,1,0},
172 {5,7,6,5,4,3,4,3,2,3,2,1,1,0},
173 {3,7,5,4,6,5,4,3,3,2,2,1,0},
174 {5,4,3,7,6,5,4,3,2,1,1,0},
175 {1,1,7,6,5,4,3,2,1,1,0},
176 {1,1,5,4,3,3,2,1,1,0},
200 { 1, 3, 3, 4, 4, 4, 5, 5 },
201 { 3, 2, 3, 3, 3, 3, 3 },
202 { 3, 3, 2, 2, 3, 3 },
210 { 1, 2, 3, 2, 3, 1, 1, 0 },
211 { 0, 1, 1, 4, 5, 6, 7 },
212 { 0, 1, 1, 2, 6, 7 },
226 {3,3,3,3,3,3,3,4,5,6,7,8,9,10,11},
236 {7,6,5,4,3,2,1,1,1,1,1,1,1,1,1},
271 #define LEVEL_TAB_BITS 8
274 #define CHROMA_DC_COEFF_TOKEN_VLC_BITS 8
275 #define CHROMA422_DC_COEFF_TOKEN_VLC_BITS 13
276 #define COEFF_TOKEN_VLC_BITS 8
277 #define TOTAL_ZEROS_VLC_BITS 9
278 #define CHROMA_DC_TOTAL_ZEROS_VLC_BITS 3
279 #define CHROMA422_DC_TOTAL_ZEROS_VLC_BITS 5
280 #define RUN_VLC_BITS 3
281 #define RUN7_VLC_BITS 6
289 const int index8=
scan8[
n];
294 if(i<64) i= (i+1)>>1;
296 ff_tlog(h->
avctx,
"pred_nnz L%X T%X n%d s%d P%X\n", left, top, n,
scan8[n], i&31);
305 for(suffix_length=0; suffix_length<7; suffix_length++){
310 int level_code = (prefix << suffix_length) +
311 (i >> (
av_log2(i) - suffix_length)) - (1 << suffix_length);
312 int mask = -(level_code&1);
313 level_code = (((2 + level_code) >> 1) ^
mask) - mask;
369 init_vlc(&chroma_dc_total_zeros_vlc[i],
379 init_vlc(&chroma422_dc_total_zeros_vlc[i],
429 print_bin(buf>>(32-log), log);
448 const uint8_t *scantable,
const uint32_t *qmul,
451 static const int coeff_token_table_index[17]= {0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3};
453 int zeros_left, coeff_token, total_coeff, i, trailing_ones, run_before;
462 total_coeff= coeff_token>>2;
467 total_coeff= coeff_token>>2;
471 total_coeff= coeff_token>>2;
480 if(total_coeff > (
unsigned)max_coeff) {
485 trailing_ones= coeff_token&3;
486 ff_tlog(h->
avctx,
"trailing:%d, total:%d\n", trailing_ones, total_coeff);
491 level[0] = 1-((i&4)>>1);
492 level[1] = 1-((i&2) );
493 level[2] = 1-((i&1)<<1);
495 if(trailing_ones<total_coeff) {
497 int suffix_length = total_coeff > 10 & trailing_ones < 3;
502 if(level_code >= 100){
503 prefix= level_code - 100;
513 }
else if(prefix==14){
517 level_code= prefix +
get_bits(gb, 4);
525 level_code += (1<<(prefix-3))-4096;
527 level_code +=
get_bits(gb, prefix-3);
530 if(trailing_ones < 3) level_code += 2;
533 mask= -(level_code&1);
534 level[trailing_ones]= (((2+level_code)>>1) ^
mask) - mask;
536 level_code += ((level_code>>31)|1) & -(trailing_ones < 3);
538 suffix_length = 1 + (level_code + 3
U > 6
U);
539 level[trailing_ones]= level_code;
543 for(i=trailing_ones+1;i<total_coeff;i++) {
544 static const unsigned int suffix_limit[7] = {0,3,6,12,24,48,INT_MAX };
549 if(level_code >= 100){
550 prefix= level_code - 100;
555 level_code = (prefix<<suffix_length) +
get_bits(gb, suffix_length);
557 level_code = 15<<suffix_length;
563 level_code += (1<<(prefix-3))-4096;
565 level_code +=
get_bits(gb, prefix-3);
567 mask= -(level_code&1);
568 level_code= (((2+level_code)>>1) ^
mask) - mask;
570 level[i]= level_code;
571 suffix_length+= suffix_limit[suffix_length] + level_code > 2
U*suffix_limit[suffix_length];
575 if(total_coeff == max_coeff)
578 if (max_coeff <= 8) {
580 zeros_left =
get_vlc2(gb, (chroma_dc_total_zeros_vlc-1)[total_coeff].
table,
583 zeros_left =
get_vlc2(gb, (chroma422_dc_total_zeros_vlc-1)[total_coeff].table,
590 #define STORE_BLOCK(type) \
591 scantable += zeros_left + total_coeff - 1; \
592 if(n >= LUMA_DC_BLOCK_INDEX){ \
593 ((type*)block)[*scantable] = level[0]; \
594 for(i=1;i<total_coeff && zeros_left > 0;i++) { \
596 run_before= get_vlc2(gb, (run_vlc-1)[zeros_left].table, RUN_VLC_BITS, 1); \
598 run_before= get_vlc2(gb, run7_vlc.table, RUN7_VLC_BITS, 2); \
599 zeros_left -= run_before; \
600 scantable -= 1 + run_before; \
601 ((type*)block)[*scantable]= level[i]; \
603 for(;i<total_coeff;i++) { \
605 ((type*)block)[*scantable]= level[i]; \
608 ((type*)block)[*scantable] = ((int)(level[0] * qmul[*scantable] + 32))>>6; \
609 for(i=1;i<total_coeff && zeros_left > 0;i++) { \
611 run_before= get_vlc2(gb, (run_vlc-1)[zeros_left].table, RUN_VLC_BITS, 1); \
613 run_before= get_vlc2(gb, run7_vlc.table, RUN7_VLC_BITS, 2); \
614 zeros_left -= run_before; \
615 scantable -= 1 + run_before; \
616 ((type*)block)[*scantable]= ((int)(level[i] * qmul[*scantable] + 32))>>6; \
618 for(;i<total_coeff;i++) { \
620 ((type*)block)[*scantable]= ((int)(level[i] * qmul[*scantable] + 32))>>6; \
641 const uint8_t *scan8x8,
int pixel_shift,
642 int mb_type,
int cbp,
int p)
658 for(i8x8=0; i8x8<4; i8x8++){
659 for(i4x4=0; i4x4<4; i4x4++){
660 const int index= i4x4 + 4*i8x8 + p*16;
673 int cqm = (
IS_INTRA( mb_type ) ? 0:3)+p;
676 for(i8x8=0; i8x8<4; i8x8++){
679 int16_t *
buf = &sl->
mb[64*i8x8+256*p << pixel_shift];
681 for(i4x4=0; i4x4<4; i4x4++){
682 const int index= i4x4 + 4*i8x8 + p*16;
688 nnz[0] += nnz[1] + nnz[8] + nnz[9];
689 new_cbp |= !!nnz[0] << i8x8;
691 for(i4x4=0; i4x4<4; i4x4++){
692 const int index= i4x4 + 4*i8x8 + p*16;
702 nnz[0] = nnz[1] = nnz[8] = nnz[9] = 0;
713 unsigned int mb_type, cbp;
737 if ((sl->
mb_y & 1) == 0)
750 goto decode_intra_mb;
758 goto decode_intra_mb;
817 for(i=0; i<16; i+=di){
822 mode = rem_mode + (rem_mode >=
mode);
846 }
else if(partition_count==4){
847 int i, j, sub_partition_count[4], list, ref[2][4];
879 for (list = 0; list < sl->
list_count; list++) {
887 }
else if(ref_count == 2){
907 for (list = 0; list < sl->
list_count; list++) {
919 for(j=0; j<sub_partition_count[i]; j++){
921 const int index= 4*i + block_width*j;
930 mv_cache[ 8 ][0]= mv_cache[ 9 ][0]= mx;
932 mv_cache[ 8 ][1]= mv_cache[ 9 ][1]= my;
934 mv_cache[ 1 ][0]= mx;
935 mv_cache[ 1 ][1]= my;
937 mv_cache[ 8 ][0]= mx;
938 mv_cache[ 8 ][1]= my;
940 mv_cache[ 0 ][0]= mx;
941 mv_cache[ 0 ][1]= my;
944 uint32_t *p= (uint32_t *)&sl->
mv_cache[list][
scan8[4*i] ][0];
957 for (list = 0; list < sl->
list_count; list++) {
959 if(
IS_DIR(mb_type, 0, list)){
963 }
else if (rc == 2) {
975 for (list = 0; list < sl->
list_count; list++) {
976 if(
IS_DIR(mb_type, 0, list)){
987 for (list = 0; list < sl->
list_count; list++) {
990 if(
IS_DIR(mb_type, i, list)){
994 }
else if (rc == 2) {
1008 for (list = 0; list < sl->
list_count; list++) {
1011 if(
IS_DIR(mb_type, i, list)){
1025 for (list = 0; list < sl->
list_count; list++) {
1028 if(
IS_DIR(mb_type, i, list)){
1032 }
else if (rc == 2) {
1046 for (list = 0; list < sl->
list_count; list++) {
1049 if(
IS_DIR(mb_type, i, list)){
1086 if (!decode_chroma && cbp>15) {
1092 if(dct8x8_allowed && (cbp&15) && !
IS_INTRA(mb_type)){
1100 int i4x4, i8x8, chroma_idx;
1104 const uint8_t *scan, *scan8x8;
1119 if (((
unsigned)sl->
qscale) > max_qp){
1121 else sl->
qscale -= max_qp+1;
1122 if (((
unsigned)sl->
qscale) > max_qp){
1131 if ((ret =
decode_luma_residual(h, sl, gb, scan, scan8x8, pixel_shift, mb_type, cbp, 0)) < 0 ) {
1146 for(chroma_idx=0; chroma_idx<2; chroma_idx++)
1147 if (
decode_residual(h, sl, gb, sl->
mb + ((256 + 16*16*chroma_idx) << pixel_shift),
1150 NULL, 4*num_c8x8) < 0) {
1156 for(chroma_idx=0; chroma_idx<2; chroma_idx++){
1158 int16_t *
mb = sl->
mb + (16*(16 + 16*chroma_idx) << pixel_shift);
1159 for (i8x8 = 0; i8x8<num_c8x8; i8x8++) {
1160 for (i4x4 = 0; i4x4 < 4; i4x4++) {
1161 const int index = 16 + 16*chroma_idx + 8*i8x8 + i4x4;
1164 mb += 16 << pixel_shift;
const char const char void * val
int ff_h264_check_intra_pred_mode(const H264Context *h, H264SliceContext *sl, int mode, int is_chroma)
Check if the top & left blocks are available if needed and change the dc mode so it only uses the ava...
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
#define CHROMA_DC_TOTAL_ZEROS_VLC_BITS
int16_t mv_cache[2][5 *8][2]
Motion vector cache.
static int get_se_golomb(GetBitContext *gb)
read signed exp golomb code.
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits.
static const uint8_t chroma422_dc_scan[8]
static void skip_bits_long(GetBitContext *s, int n)
static const int chroma422_dc_coeff_token_vlc_table_size
static av_cold void init_cavlc_level_tab(void)
#define TOTAL_ZEROS_VLC_BITS
uint8_t zigzag_scan8x8_cavlc[64]
static VLC_TYPE run7_vlc_table[96][2]
static const uint8_t chroma422_dc_coeff_token_len[4 *9]
static av_always_inline void write_back_motion(const H264Context *h, H264SliceContext *sl, int mb_type)
static const int chroma422_dc_total_zeros_vlc_tables_size
#define CHROMA422_DC_TOTAL_ZEROS_VLC_BITS
static VLC_TYPE chroma_dc_total_zeros_vlc_tables[3][8][2]
static av_always_inline void write_back_non_zero_count(const H264Context *h, H264SliceContext *sl)
static VLC chroma422_dc_coeff_token_vlc
static const uint8_t coeff_token_len[4][4 *17]
static const uint8_t chroma422_dc_coeff_token_bits[4 *9]
static const uint8_t chroma422_dc_total_zeros_len[7][8]
unsigned int ref_count[2]
num_ref_idx_l0/1_active_minus1 + 1
static int decode_residual(const H264Context *h, H264SliceContext *sl, GetBitContext *gb, int16_t *block, int n, const uint8_t *scantable, const uint32_t *qmul, int max_coeff)
Decode a residual block.
static const PMbInfo b_sub_mb_type_info[13]
static const uint8_t run_len[7][16]
void ff_h264_pred_direct_motion(const H264Context *const h, H264SliceContext *sl, int *mb_type)
static const uint8_t chroma_dc_coeff_token_bits[4 *5]
#define av_assert0(cond)
assert() equivalent, that is always enabled.
static VLC chroma422_dc_total_zeros_vlc[7]
static const uint8_t golomb_to_intra4x4_cbp_gray[16]
uint16_t sub_mb_type[4]
as a dct coefficient is int32_t in high depth, we need to reserve twice the space.
uint32_t(*[6] dequant4_coeff)[16]
static const uint8_t coeff_token_bits[4][4 *17]
#define av_assert2(cond)
assert() equivalent, that does lie in speed critical code.
static const int chroma_dc_total_zeros_vlc_tables_size
#define CHROMA422_DC_COEFF_TOKEN_VLC_BITS
#define LUMA_DC_BLOCK_INDEX
static const uint8_t run_bits[7][16]
#define IS_DIR(a, part, list)
static av_always_inline int pred_intra_mode(const H264Context *h, H264SliceContext *sl, int n)
Get the predicted intra4x4 prediction mode.
static const IMbInfo i_mb_type_info[26]
static int get_bits_count(const GetBitContext *s)
static int8_t cavlc_level_tab[7][1<< LEVEL_TAB_BITS][2]
char av_get_picture_type_char(enum AVPictureType pict_type)
Return a single letter to describe the given picture type pict_type.
static const uint8_t total_zeros_len[16][16]
static void fill_rectangle(SDL_Surface *screen, int x, int y, int w, int h, int color, int update)
static VLC_TYPE coeff_token_vlc_tables[520+332+280+256][2]
static VLC total_zeros_vlc[15]
H.264 / AVC / MPEG4 part10 codec.
static VLC chroma_dc_total_zeros_vlc[3]
static int get_bits_left(GetBitContext *gb)
#define UPDATE_CACHE(name, gb)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static int get_ue_golomb(GetBitContext *gb)
Read an unsigned Exp-Golomb code in the range 0 to 8190.
static av_always_inline int get_dct8x8_allowed(const H264Context *h, H264SliceContext *sl)
static const uint16_t mask[17]
static av_always_inline void write_back_intra_pred_mode(const H264Context *h, H264SliceContext *sl)
#define CHROMA_DC_BLOCK_INDEX
static const struct endianess table[]
int8_t intra4x4_pred_mode_cache[5 *8]
static const uint8_t chroma_dc_total_zeros_bits[3][4]
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
static av_always_inline void pred_16x8_motion(const H264Context *const h, H264SliceContext *sl, int n, int list, int ref, int *const mx, int *const my)
Get the directionally predicted 16x8 MV.
simple assert() macros that are a bit more flexible than ISO C assert().
static VLC chroma_dc_coeff_token_vlc
static av_always_inline uint32_t pack16to32(unsigned a, unsigned b)
static const uint8_t offset[127][2]
#define CLOSE_READER(name, gb)
int slice_type_nos
S free slice type (SI/SP are remapped to I/P)
static const uint8_t scan8[16 *3+3]
#define COEFF_TOKEN_VLC_BITS
int16_t mb_luma_dc[3][16 *2]
as mb is addressed by scantable[i] and scantable is uint8_t we can either check that i is not too lar...
static const int chroma_dc_coeff_token_vlc_table_size
static const uint8_t total_zeros_bits[16][16]
uint16_t * slice_table
slice_table_base + 2*mb_stride + 1
uint8_t field_scan8x8_cavlc[64]
static VLC_TYPE chroma422_dc_total_zeros_vlc_tables[7][32][2]
static av_always_inline void pred_8x16_motion(const H264Context *const h, H264SliceContext *sl, int n, int list, int ref, int *const mx, int *const my)
Get the directionally predicted 8x16 MV.
#define MB_TYPE_INTERLACED
static VLC coeff_token_vlc[4]
static VLC_TYPE total_zeros_vlc_tables[15][512][2]
static unsigned int show_bits(GetBitContext *s, int n)
Show 1-25 bits.
#define LAST_SKIP_BITS(name, gb, num)
static av_always_inline int get_vlc2(GetBitContext *s, VLC_TYPE(*table)[2], int bits, int max_depth)
Parse a vlc code.
int direct_8x8_inference_flag
static const uint8_t golomb_to_intra4x4_cbp[48]
#define INIT_VLC_USE_NEW_STATIC
#define PART_NOT_AVAILABLE
#define FF_ARRAY_ELEMS(a)
static const uint8_t chroma_dc_coeff_token_len[4 *5]
static unsigned get_ue_golomb_long(GetBitContext *gb)
Read an unsigned Exp-Golomb code in the range 0 to UINT32_MAX-1.
uint8_t zigzag_scan_q0[16]
Libavcodec external API header.
H264 / AVC / MPEG4 part10 codec data table
static int get_ue_golomb_31(GetBitContext *gb)
read unsigned exp golomb code, constraint to a max of 31.
#define OPEN_READER(name, gb)
int ff_h264_check_intra4x4_pred_mode(const H264Context *h, H264SliceContext *sl)
Check if the top & left blocks are available if needed and change the dc mode so it only uses the ava...
#define init_vlc(vlc, nb_bits, nb_codes,bits, bits_wrap, bits_size,codes, codes_wrap, codes_size,flags)
static unsigned int get_bits1(GetBitContext *s)
static void skip_bits(GetBitContext *s, int n)
uint8_t non_zero_count_cache[15 *8]
non zero coeff count cache.
uint32_t(*[6] dequant8_coeff)[64]
static const uint8_t chroma_dc_scan[4]
av_cold void ff_h264_decode_init_vlc(void)
int pixel_shift
0 for 8-bit H264, 1 for high-bit-depth H264
#define GET_CACHE(name, gb)
static const int total_zeros_vlc_tables_size
int mb_mbaff
mb_aff_frame && mb_field_decoding_flag
static const uint8_t chroma422_dc_total_zeros_bits[7][8]
static void fill_decode_caches(const H264Context *h, H264SliceContext *sl, int mb_type)
static const PMbInfo b_mb_type_info[23]
static const int coeff_token_vlc_tables_size[4]
static const int run7_vlc_table_size
static const PMbInfo p_mb_type_info[5]
static const PMbInfo p_sub_mb_type_info[4]
int transform_8x8_mode
transform_8x8_mode_flag
static VLC_TYPE chroma422_dc_coeff_token_vlc_table[8192][2]
common internal api header.
H.264 / AVC / MPEG4 part10 motion vector predicion.
static void fill_decode_neighbors(const H264Context *h, H264SliceContext *sl, int mb_type)
static const uint8_t golomb_to_inter_cbp[48]
int ff_h264_decode_mb_cavlc(const H264Context *h, H264SliceContext *sl)
Decode a macroblock.
int bit_depth_luma
bit_depth_luma_minus8 + 8
static av_always_inline int get_chroma_qp(const H264Context *h, int t, int qscale)
Get the chroma qp.
static int pred_non_zero_count(const H264Context *h, H264SliceContext *sl, int n)
Get the predicted number of non-zero coefficients.
#define CHROMA_DC_COEFF_TOKEN_VLC_BITS
uint8_t zigzag_scan8x8_cavlc_q0[64]
int8_t ref_cache[2][5 *8]
const uint16_t ff_h264_mb_sizes[4]
static const int run_vlc_tables_size
VLC_TYPE(* table)[2]
code, bits
static const uint8_t chroma_dc_total_zeros_len[3][4]
static void av_unused decode_mb_skip(const H264Context *h, H264SliceContext *sl)
decodes a P_SKIP or B_SKIP macroblock
static int get_level_prefix(GetBitContext *gb)
static const uint8_t * align_get_bits(GetBitContext *s)
uint8_t field_scan8x8_cavlc_q0[64]
const uint8_t * intra_pcm_ptr
static const uint8_t golomb_to_inter_cbp_gray[16]
static VLC_TYPE run_vlc_tables[6][8][2]
uint8_t field_scan_q0[16]
int mb_field_decoding_flag
uint8_t(* non_zero_count)[48]
static av_always_inline int decode_luma_residual(const H264Context *h, H264SliceContext *sl, GetBitContext *gb, const uint8_t *scan, const uint8_t *scan8x8, int pixel_shift, int mb_type, int cbp, int p)
static VLC_TYPE chroma_dc_coeff_token_vlc_table[256][2]
#define STORE_BLOCK(type)
static av_always_inline void pred_motion(const H264Context *const h, H264SliceContext *sl, int n, int part_width, int list, int ref, int *const mx, int *const my)
Get the predicted MV.