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],
 
  441                            const uint8_t *scantable, 
const uint32_t *qmul,
 
  444     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};
 
  446     int zeros_left, coeff_token, total_coeff, i, trailing_ones, run_before;
 
  455         total_coeff= coeff_token>>2;
 
  460             total_coeff= coeff_token>>2;
 
  464             total_coeff= coeff_token>>2;
 
  473     if(total_coeff > (
unsigned)max_coeff) {
 
  478     trailing_ones= coeff_token&3;
 
  479     ff_tlog(h->
avctx, 
"trailing:%d, total:%d\n", trailing_ones, total_coeff);
 
  484     level[0] = 1-((i&4)>>1);
 
  485     level[1] = 1-((i&2)   );
 
  486     level[2] = 1-((i&1)<<1);
 
  488     if(trailing_ones<total_coeff) {
 
  490         int suffix_length = total_coeff > 10 & trailing_ones < 3;
 
  495         if(level_code >= 100){
 
  496             prefix= level_code - 100;
 
  506             }
else if(prefix==14){
 
  510                     level_code= prefix + 
get_bits(gb, 4); 
 
  518                     level_code += (1<<(prefix-3))-4096;
 
  520                 level_code += 
get_bits(gb, prefix-3); 
 
  523             if(trailing_ones < 3) level_code += 2;
 
  526             mask= -(level_code&1);
 
  527             level[trailing_ones]= (((2+level_code)>>1) ^ 
mask) - mask;
 
  529             level_code += ((level_code>>31)|1) & -(trailing_ones < 3);
 
  531             suffix_length = 1 + (level_code + 3
U > 6
U);
 
  532             level[trailing_ones]= level_code;
 
  536         for(i=trailing_ones+1;i<total_coeff;i++) {
 
  537             static const unsigned int suffix_limit[7] = {0,3,6,12,24,48,INT_MAX };
 
  542             if(level_code >= 100){
 
  543                 prefix= level_code - 100;
 
  548                     level_code = (prefix<<suffix_length) + 
get_bits(gb, suffix_length);
 
  550                     level_code = 15<<suffix_length;
 
  556                         level_code += (1<<(prefix-3))-4096;
 
  558                     level_code += 
get_bits(gb, prefix-3);
 
  560                 mask= -(level_code&1);
 
  561                 level_code= (((2+level_code)>>1) ^ 
mask) - mask;
 
  563             level[i]= level_code;
 
  564             suffix_length+= suffix_limit[suffix_length] + level_code > 2
U*suffix_limit[suffix_length];
 
  568     if(total_coeff == max_coeff)
 
  571         if (max_coeff <= 8) {
 
  573                 zeros_left = 
get_vlc2(gb, (chroma_dc_total_zeros_vlc-1)[total_coeff].
table,
 
  576                 zeros_left = 
get_vlc2(gb, (chroma422_dc_total_zeros_vlc-1)[total_coeff].table,
 
  583 #define STORE_BLOCK(type) \ 
  584     scantable += zeros_left + total_coeff - 1; \ 
  585     if(n >= LUMA_DC_BLOCK_INDEX){ \ 
  586         ((type*)block)[*scantable] = level[0]; \ 
  587         for(i=1;i<total_coeff && zeros_left > 0;i++) { \ 
  589                 run_before= get_vlc2(gb, (run_vlc-1)[zeros_left].table, RUN_VLC_BITS, 1); \ 
  591                 run_before= get_vlc2(gb, run7_vlc.table, RUN7_VLC_BITS, 2); \ 
  592             zeros_left -= run_before; \ 
  593             scantable -= 1 + run_before; \ 
  594             ((type*)block)[*scantable]= level[i]; \ 
  596         for(;i<total_coeff;i++) { \ 
  598             ((type*)block)[*scantable]= level[i]; \ 
  601         ((type*)block)[*scantable] = ((int)(level[0] * qmul[*scantable] + 32))>>6; \ 
  602         for(i=1;i<total_coeff && zeros_left > 0;i++) { \ 
  604                 run_before= get_vlc2(gb, (run_vlc-1)[zeros_left].table, RUN_VLC_BITS, 1); \ 
  606                 run_before= get_vlc2(gb, run7_vlc.table, RUN7_VLC_BITS, 2); \ 
  607             zeros_left -= run_before; \ 
  608             scantable -= 1 + run_before; \ 
  609             ((type*)block)[*scantable]= ((int)(level[i] * qmul[*scantable] + 32))>>6; \ 
  611         for(;i<total_coeff;i++) { \ 
  613             ((type*)block)[*scantable]= ((int)(level[i] * qmul[*scantable] + 32))>>6; \ 
  634                          const uint8_t *scan8x8, 
int pixel_shift,
 
  635                          int mb_type, 
int cbp, 
int p)
 
  651             for(i8x8=0; i8x8<4; i8x8++){
 
  652                 for(i4x4=0; i4x4<4; i4x4++){
 
  653                     const int index= i4x4 + 4*i8x8 + p*16;
 
  666         int cqm = (
IS_INTRA( mb_type ) ? 0:3)+p;
 
  669         for(i8x8=0; i8x8<4; i8x8++){
 
  672                     int16_t *
buf = &sl->
mb[64*i8x8+256*p << pixel_shift];
 
  674                     for(i4x4=0; i4x4<4; i4x4++){
 
  675                         const int index= i4x4 + 4*i8x8 + p*16;
 
  681                     nnz[0] += nnz[1] + nnz[8] + nnz[9];
 
  682                     new_cbp |= !!nnz[0] << i8x8;
 
  684                     for(i4x4=0; i4x4<4; i4x4++){
 
  685                         const int index= i4x4 + 4*i8x8 + p*16;
 
  695                 nnz[0] = nnz[1] = nnz[8] = nnz[9] = 0;
 
  706     unsigned int mb_type, cbp;
 
  730         if ((sl->
mb_y & 1) == 0)
 
  743             goto decode_intra_mb;
 
  751             goto decode_intra_mb;
 
  810             for(i=0; i<16; i+=di){
 
  815                     mode = rem_mode + (rem_mode >= 
mode);
 
  842     }
else if(partition_count==4){
 
  843         int i, j, sub_partition_count[4], list, 
ref[2][4];
 
  875         for (list = 0; list < sl->
list_count; list++) {
 
  883                     }
else if(ref_count == 2){
 
  903         for (list = 0; list < sl->
list_count; list++) {
 
  915                     for(j=0; j<sub_partition_count[i]; j++){
 
  917                         const int index= 4*i + block_width*j;
 
  926                             mv_cache[ 8 ][0]= mv_cache[ 9 ][0]= mx;
 
  928                             mv_cache[ 8 ][1]= mv_cache[ 9 ][1]= my;
 
  930                             mv_cache[ 1 ][0]= mx;
 
  931                             mv_cache[ 1 ][1]= my;
 
  933                             mv_cache[ 8 ][0]= mx;
 
  934                             mv_cache[ 8 ][1]= my;
 
  936                         mv_cache[ 0 ][0]= mx;
 
  937                         mv_cache[ 0 ][1]= my;
 
  940                     uint32_t *p= (uint32_t *)&sl->
mv_cache[list][ 
scan8[4*i] ][0];
 
  953             for (list = 0; list < sl->
list_count; list++) {
 
  955                     if(
IS_DIR(mb_type, 0, list)){
 
  959                         } 
else if (rc == 2) {
 
  971             for (list = 0; list < sl->
list_count; list++) {
 
  972                 if(
IS_DIR(mb_type, 0, list)){
 
  983             for (list = 0; list < sl->
list_count; list++) {
 
  986                         if(
IS_DIR(mb_type, i, list)){
 
  990                             } 
else if (rc == 2) {
 
 1004             for (list = 0; list < sl->
list_count; list++) {
 
 1007                     if(
IS_DIR(mb_type, i, list)){
 
 1021             for (list = 0; list < sl->
list_count; list++) {
 
 1024                         if(
IS_DIR(mb_type, i, list)){ 
 
 1028                             } 
else if (rc == 2) {
 
 1042             for (list = 0; list < sl->
list_count; list++) {
 
 1045                     if(
IS_DIR(mb_type, i, list)){
 
 1084         if (!decode_chroma && cbp>15) {
 
 1090     if(dct8x8_allowed && (cbp&15) && !
IS_INTRA(mb_type)){
 
 1098         int i4x4, i8x8, chroma_idx;
 
 1102         const uint8_t *scan, *scan8x8;
 
 1117         if (((
unsigned)sl->
qscale) > max_qp){
 
 1119             else                sl->
qscale -= max_qp+1;
 
 1120             if (((
unsigned)sl->
qscale) > max_qp){
 
 1129         if ((ret = 
decode_luma_residual(h, sl, gb, scan, scan8x8, pixel_shift, mb_type, cbp, 0)) < 0 ) {
 
 1144                 for(chroma_idx=0; chroma_idx<2; chroma_idx++)
 
 1145                     if (
decode_residual(h, sl, gb, sl->
mb + ((256 + 16*16*chroma_idx) << pixel_shift),
 
 1148                                         NULL, 4 * num_c8x8) < 0) {
 
 1154                 for(chroma_idx=0; chroma_idx<2; chroma_idx++){
 
 1156                     int16_t *
mb = sl->
mb + (16*(16 + 16*chroma_idx) << pixel_shift);
 
 1157                     for (i8x8 = 0; i8x8<num_c8x8; i8x8++) {
 
 1158                         for (i4x4 = 0; i4x4 < 4; i4x4++) {
 
 1159                             const int index = 16 + 16*chroma_idx + 8*i8x8 + i4x4;
 
 1162                             mb += 16 << pixel_shift;
 
const char const char void * val
#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 av_always_inline int get_chroma_qp(const PPS *pps, int t, int qscale)
Get the chroma qp. 
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]
void ff_h264_pred_direct_motion(const H264Context *const h, H264SliceContext *sl, int *mb_type)
static const uint8_t chroma422_dc_coeff_token_len[4 *9]
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 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 uint8_t run_len[7][16]
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. 
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
static const uint8_t run_bits[7][16]
const uint8_t ff_h264_chroma_dc_scan[4]
#define IS_DIR(a, part, list)
uint32_t(*[6] dequant4_coeff)[16]
uint32_t(*[6] dequant8_coeff)[64]
const IMbInfo ff_h264_i_mb_type_info[26]
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 av_always_inline int pred_intra_mode(const H264Context *h, H264SliceContext *sl, int n)
Get the predicted intra4x4 prediction mode. 
const uint8_t ff_h264_golomb_to_inter_cbp[48]
int ff_h264_check_intra4x4_pred_mode(int8_t *pred_mode_cache, void *logctx, int top_samples_available, int left_samples_available)
Check if the top & left blocks are available if needed and change the dc mode so it only uses the ava...
static VLC_TYPE coeff_token_vlc_tables[520+332+280+256][2]
static VLC total_zeros_vlc[15]
const PMbInfo ff_h264_p_mb_type_info[5]
static av_always_inline void write_back_motion(const H264Context *h, H264SliceContext *sl, int mb_type)
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 const uint16_t mask[17]
#define init_vlc(vlc, nb_bits, nb_codes,bits, bits_wrap, bits_size,codes, codes_wrap, codes_size,flags)
const uint8_t ff_h264_chroma422_dc_scan[8]
static const struct endianess table[]
int8_t intra4x4_pred_mode_cache[5 *8]
static const uint8_t chroma_dc_total_zeros_bits[3][4]
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(). 
unsigned int top_samples_available
static VLC chroma_dc_coeff_token_vlc
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) 
#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 av_always_inline int get_dct8x8_allowed(const H264Context *h, H264SliceContext *sl)
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 CHROMA_DC_BLOCK_INDEX
H.264 / AVC / MPEG-4 part10 codec. 
#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 void fill_rectangle(int x, int y, int w, int h)
#define LUMA_DC_BLOCK_INDEX
#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. 
static int get_ue_golomb_31(GetBitContext *gb)
read unsigned exp golomb code, constraint to a max of 31. 
#define OPEN_READER(name, gb)
static const uint8_t scan8[16 *3+3]
static unsigned int get_bits1(GetBitContext *s)
const uint8_t ff_h264_golomb_to_intra4x4_cbp[48]
static void skip_bits(GetBitContext *s, int n)
uint8_t non_zero_count_cache[15 *8]
non zero coeff count cache. 
static av_always_inline uint32_t pack16to32(unsigned a, unsigned b)
av_cold void ff_h264_decode_init_vlc(void)
int pixel_shift
0 for 8-bit H.264, 1 for high-bit-depth H.264 
#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 int coeff_token_vlc_tables_size[4]
static const int run7_vlc_table_size
int transform_8x8_mode
transform_8x8_mode_flag 
static VLC_TYPE chroma422_dc_coeff_token_vlc_table[8192][2]
static av_always_inline void write_back_non_zero_count(const H264Context *h, H264SliceContext *sl)
common internal api header. 
const PMbInfo ff_h264_b_mb_type_info[23]
static int ref[MAX_W *MAX_W]
int ff_h264_check_intra_pred_mode(void *logctx, int top_samples_available, int left_samples_available, 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 INIT_VLC_USE_NEW_STATIC
const PMbInfo ff_h264_p_sub_mb_type_info[4]
H.264 / AVC / MPEG-4 part10 motion vector prediction. 
static void fill_decode_neighbors(const H264Context *h, H264SliceContext *sl, int mb_type)
int ff_h264_decode_mb_cavlc(const H264Context *h, H264SliceContext *sl)
Decode a macroblock. 
int bit_depth_luma
bit_depth_luma_minus8 + 8 
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]
static const int run_vlc_tables_size
VLC_TYPE(* table)[2]
code, bits 
#define PART_NOT_AVAILABLE
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
unsigned int left_samples_available
static const uint8_t golomb_to_inter_cbp_gray[16]
const PMbInfo ff_h264_b_sub_mb_type_info[13]
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]
const uint16_t ff_h264_mb_sizes[4]
#define STORE_BLOCK(type)
static av_always_inline void write_back_intra_pred_mode(const H264Context *h, H264SliceContext *sl)
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.