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.