48     0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
 
   49     3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
 
   50     0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
 
   51     3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
 
   56     0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3,  3,  3,
 
   57     3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6,  6,  6,
 
   58     7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10,
 
   59    10,10,10,11,11,11,11,11,11,12,12,12,12,12,12,13,13,13, 13, 13, 13,
 
   64     0 + 0 * 4, 0 + 1 * 4, 1 + 0 * 4, 0 + 2 * 4,
 
   65     0 + 3 * 4, 1 + 1 * 4, 1 + 2 * 4, 1 + 3 * 4,
 
   66     2 + 0 * 4, 2 + 1 * 4, 2 + 2 * 4, 2 + 3 * 4,
 
   67     3 + 0 * 4, 3 + 1 * 4, 3 + 2 * 4, 3 + 3 * 4,
 
   71     0 + 0 * 8, 0 + 1 * 8, 0 + 2 * 8, 1 + 0 * 8,
 
   72     1 + 1 * 8, 0 + 3 * 8, 0 + 4 * 8, 1 + 2 * 8,
 
   73     2 + 0 * 8, 1 + 3 * 8, 0 + 5 * 8, 0 + 6 * 8,
 
   74     0 + 7 * 8, 1 + 4 * 8, 2 + 1 * 8, 3 + 0 * 8,
 
   75     2 + 2 * 8, 1 + 5 * 8, 1 + 6 * 8, 1 + 7 * 8,
 
   76     2 + 3 * 8, 3 + 1 * 8, 4 + 0 * 8, 3 + 2 * 8,
 
   77     2 + 4 * 8, 2 + 5 * 8, 2 + 6 * 8, 2 + 7 * 8,
 
   78     3 + 3 * 8, 4 + 1 * 8, 5 + 0 * 8, 4 + 2 * 8,
 
   79     3 + 4 * 8, 3 + 5 * 8, 3 + 6 * 8, 3 + 7 * 8,
 
   80     4 + 3 * 8, 5 + 1 * 8, 6 + 0 * 8, 5 + 2 * 8,
 
   81     4 + 4 * 8, 4 + 5 * 8, 4 + 6 * 8, 4 + 7 * 8,
 
   82     5 + 3 * 8, 6 + 1 * 8, 6 + 2 * 8, 5 + 4 * 8,
 
   83     5 + 5 * 8, 5 + 6 * 8, 5 + 7 * 8, 6 + 3 * 8,
 
   84     7 + 0 * 8, 7 + 1 * 8, 6 + 4 * 8, 6 + 5 * 8,
 
   85     6 + 6 * 8, 6 + 7 * 8, 7 + 2 * 8, 7 + 3 * 8,
 
   86     7 + 4 * 8, 7 + 5 * 8, 7 + 6 * 8, 7 + 7 * 8,
 
   90     0 + 0 * 8, 1 + 1 * 8, 2 + 0 * 8, 0 + 7 * 8,
 
   91     2 + 2 * 8, 2 + 3 * 8, 2 + 4 * 8, 3 + 3 * 8,
 
   92     3 + 4 * 8, 4 + 3 * 8, 4 + 4 * 8, 5 + 3 * 8,
 
   93     5 + 5 * 8, 7 + 0 * 8, 6 + 6 * 8, 7 + 4 * 8,
 
   94     0 + 1 * 8, 0 + 3 * 8, 1 + 3 * 8, 1 + 4 * 8,
 
   95     1 + 5 * 8, 3 + 1 * 8, 2 + 5 * 8, 4 + 1 * 8,
 
   96     3 + 5 * 8, 5 + 1 * 8, 4 + 5 * 8, 6 + 1 * 8,
 
   97     5 + 6 * 8, 7 + 1 * 8, 6 + 7 * 8, 7 + 5 * 8,
 
   98     0 + 2 * 8, 0 + 4 * 8, 0 + 5 * 8, 2 + 1 * 8,
 
   99     1 + 6 * 8, 4 + 0 * 8, 2 + 6 * 8, 5 + 0 * 8,
 
  100     3 + 6 * 8, 6 + 0 * 8, 4 + 6 * 8, 6 + 2 * 8,
 
  101     5 + 7 * 8, 6 + 4 * 8, 7 + 2 * 8, 7 + 6 * 8,
 
  102     1 + 0 * 8, 1 + 2 * 8, 0 + 6 * 8, 3 + 0 * 8,
 
  103     1 + 7 * 8, 3 + 2 * 8, 2 + 7 * 8, 4 + 2 * 8,
 
  104     3 + 7 * 8, 5 + 2 * 8, 4 + 7 * 8, 5 + 4 * 8,
 
  105     6 + 3 * 8, 6 + 5 * 8, 7 + 3 * 8, 7 + 7 * 8,
 
  110     0 + 0 * 8, 1 + 1 * 8, 1 + 2 * 8, 2 + 2 * 8,
 
  111     4 + 1 * 8, 0 + 5 * 8, 3 + 3 * 8, 7 + 0 * 8,
 
  112     3 + 4 * 8, 1 + 7 * 8, 5 + 3 * 8, 6 + 3 * 8,
 
  113     2 + 7 * 8, 6 + 4 * 8, 5 + 6 * 8, 7 + 5 * 8,
 
  114     1 + 0 * 8, 2 + 0 * 8, 0 + 3 * 8, 3 + 1 * 8,
 
  115     3 + 2 * 8, 0 + 6 * 8, 4 + 2 * 8, 6 + 1 * 8,
 
  116     2 + 5 * 8, 2 + 6 * 8, 6 + 2 * 8, 5 + 4 * 8,
 
  117     3 + 7 * 8, 7 + 3 * 8, 4 + 7 * 8, 7 + 6 * 8,
 
  118     0 + 1 * 8, 3 + 0 * 8, 0 + 4 * 8, 4 + 0 * 8,
 
  119     2 + 3 * 8, 1 + 5 * 8, 5 + 1 * 8, 5 + 2 * 8,
 
  120     1 + 6 * 8, 3 + 5 * 8, 7 + 1 * 8, 4 + 5 * 8,
 
  121     4 + 6 * 8, 7 + 4 * 8, 5 + 7 * 8, 6 + 7 * 8,
 
  122     0 + 2 * 8, 2 + 1 * 8, 1 + 3 * 8, 5 + 0 * 8,
 
  123     1 + 4 * 8, 2 + 4 * 8, 6 + 0 * 8, 4 + 3 * 8,
 
  124     0 + 7 * 8, 4 + 4 * 8, 7 + 2 * 8, 3 + 6 * 8,
 
  125     5 + 5 * 8, 6 + 5 * 8, 6 + 6 * 8, 7 + 7 * 8,
 
  138     0, 3, 4, 3, 3, 1, 5, 1, 4, 5, 2, 5, 3, 1, 5, 1
 
  142     { 20, 18, 32, 19, 25, 24 },
 
  143     { 22, 19, 35, 21, 28, 26 },
 
  144     { 26, 23, 42, 24, 33, 31 },
 
  145     { 28, 25, 45, 26, 35, 33 },
 
  146     { 32, 28, 51, 30, 40, 38 },
 
  147     { 36, 32, 58, 34, 46, 43 },
 
  200     const int b4_stride     = h->
mb_width * 4 + 1;
 
  201     const int b4_array_size = b4_stride * h->
mb_height * 4;
 
  250         int h_chroma_shift, v_chroma_shift;
 
  252                                          &h_chroma_shift, &v_chroma_shift);
 
  256                    0x80, FF_CEIL_RSHIFT(h->
avctx->
width, h_chroma_shift));
 
  258                    0x80, FF_CEIL_RSHIFT(h->
avctx->
width, h_chroma_shift));
 
  276     for (i = 0; i < 2; i++) {
 
  289     return (ret < 0) ? ret : 
AVERROR(ENOMEM);
 
  307     if (i == H264_MAX_PICTURE_COUNT)
 
  319     for (i = 0; i < 6; i++) {
 
  321         for (j = 0; j < i; j++)
 
  330         for (q = 0; q < max_qp + 1; q++) {
 
  333             for (x = 0; x < 64; x++)
 
  345     for (i = 0; i < 6; i++) {
 
  347         for (j = 0; j < i; j++)
 
  356         for (q = 0; q < max_qp + 1; q++) {
 
  359             for (x = 0; x < 16; x++)
 
  376         for (i = 0; i < 6; i++)
 
  377             for (x = 0; x < 16; x++)
 
  380             for (i = 0; i < 6; i++)
 
  381                 for (x = 0; x < 64; x++)
 
  386 #define IN_RANGE(a, b, size) (((a) >= (b)) && ((a) < ((b) + (size)))) 
  388 #define REBASE_PICTURE(pic, new_ctx, old_ctx)             \ 
  389     (((pic) && (pic) >= (old_ctx)->DPB &&                       \ 
  390       (pic) < (old_ctx)->DPB + H264_MAX_PICTURE_COUNT) ?          \ 
  391      &(new_ctx)->DPB[(pic) - (old_ctx)->DPB] : NULL) 
  399     for (i = 0; i < 
count; i++) {
 
  412     for (i = 0; i < 
count; i++) {
 
  413         if (to[i] && !from[i]) {
 
  415         } 
else if (from[i] && !to[i]) {
 
  422             memcpy(to[i], from[i], size);
 
  428 #define copy_fields(to, from, start_field, end_field)                   \ 
  429     memcpy(&(to)->start_field, &(from)->start_field,                        \ 
  430            (char *)&(to)->end_field - (char *)&(to)->start_field) 
  446         (h->
width                 != h1->width                 ||
 
  447          h->
height                != h1->height                ||
 
  462                                   (
void **)h1->sps_buffers,
 
  467                                   (
void **)h1->pps_buffers,
 
  472     if (need_reinit || !inited) {
 
  473         h->
width     = h1->width;
 
  503         if (h1->DPB[i].f->buf[0] &&
 
  510     if (h1->cur_pic.f->buf[0]) {
 
  528     copy_fields(h, h1, dequant4_buffer, dequant4_coeff);
 
  530     for (i = 0; i < 6; i++)
 
  532                                (h1->dequant4_coeff[i] - h1->dequant4_buffer[0]);
 
  534     for (i = 0; i < 6; i++)
 
  536                                (h1->dequant8_coeff[i] - h1->dequant8_buffer[0]);
 
  619     if (CONFIG_ERROR_RESILIENCE) {
 
  631     if (CONFIG_ERROR_RESILIENCE && h->
enable_er) {
 
  637     for (i = 0; i < 16; i++) {
 
  641     for (i = 0; i < 16; i++) {
 
  666                                               int linesize, 
int uvlinesize,
 
  676     src_cb -= uvlinesize;
 
  677     src_cr -= uvlinesize;
 
  683                 AV_COPY128(top_border, src_y + 15 * linesize);
 
  685                     AV_COPY128(top_border + 16, src_y + 15 * linesize + 16);
 
  689                             AV_COPY128(top_border + 32, src_cb + 15 * uvlinesize);
 
  690                             AV_COPY128(top_border + 48, src_cb + 15 * uvlinesize + 16);
 
  691                             AV_COPY128(top_border + 64, src_cr + 15 * uvlinesize);
 
  692                             AV_COPY128(top_border + 80, src_cr + 15 * uvlinesize + 16);
 
  694                             AV_COPY128(top_border + 16, src_cb + 15 * uvlinesize);
 
  695                             AV_COPY128(top_border + 32, src_cr + 15 * uvlinesize);
 
  697                     } 
else if (chroma422) {
 
  699                             AV_COPY128(top_border + 32, src_cb + 15 * uvlinesize);
 
  700                             AV_COPY128(top_border + 48, src_cr + 15 * uvlinesize);
 
  702                             AV_COPY64(top_border + 16, src_cb + 15 * uvlinesize);
 
  703                             AV_COPY64(top_border + 24, src_cr + 15 * uvlinesize);
 
  707                             AV_COPY128(top_border + 32, src_cb + 7 * uvlinesize);
 
  708                             AV_COPY128(top_border + 48, src_cr + 7 * uvlinesize);
 
  710                             AV_COPY64(top_border + 16, src_cb + 7 * uvlinesize);
 
  711                             AV_COPY64(top_border + 24, src_cr + 7 * uvlinesize);
 
  725     AV_COPY128(top_border, src_y + 16 * linesize);
 
  727         AV_COPY128(top_border + 16, src_y + 16 * linesize + 16);
 
  732                 AV_COPY128(top_border + 32, src_cb + 16 * linesize);
 
  733                 AV_COPY128(top_border + 48, src_cb + 16 * linesize + 16);
 
  734                 AV_COPY128(top_border + 64, src_cr + 16 * linesize);
 
  735                 AV_COPY128(top_border + 80, src_cr + 16 * linesize + 16);
 
  737                 AV_COPY128(top_border + 16, src_cb + 16 * linesize);
 
  738                 AV_COPY128(top_border + 32, src_cr + 16 * linesize);
 
  740         } 
else if (chroma422) {
 
  742                 AV_COPY128(top_border + 32, src_cb + 16 * uvlinesize);
 
  743                 AV_COPY128(top_border + 48, src_cr + 16 * uvlinesize);
 
  745                 AV_COPY64(top_border + 16, src_cb + 16 * uvlinesize);
 
  746                 AV_COPY64(top_border + 24, src_cr + 16 * uvlinesize);
 
  750                 AV_COPY128(top_border + 32, src_cb + 8 * uvlinesize);
 
  751                 AV_COPY128(top_border + 48, src_cr + 8 * uvlinesize);
 
  753                 AV_COPY64(top_border + 16, src_cb + 8 * uvlinesize);
 
  754                 AV_COPY64(top_border + 24, src_cr + 8 * uvlinesize);
 
  767     int ref0, ref1, i, cur_poc, ref_start, ref_count0, ref_count1;
 
  769     for (i = 0; i < 2; i++) {
 
  801     for (ref0 = ref_start; ref0 < ref_count0; ref0++) {
 
  803         for (ref1 = ref_start; ref1 < ref_count1; ref1++) {
 
  807                 int td   = av_clip_int8(poc1 - poc0);
 
  809                     int tb = av_clip_int8(cur_poc - poc0);
 
  810                     int tx = (16384 + (
FFABS(td) >> 1)) / 
td;
 
  811                     int dist_scale_factor = (tb * tx + 32) >> 8;
 
  812                     if (dist_scale_factor >= -64 && dist_scale_factor <= 128)
 
  813                         w = 64 - dist_scale_factor;
 
  832     for (i = 0; i < 16; i++) {
 
  833 #define TRANSPOSE(x) ((x) >> 2) | (((x) << 2) & 0xF) 
  838     for (i = 0; i < 64; i++) {
 
  839 #define TRANSPOSE(x) ((x) >> 3) | (((x) & 7) << 3) 
  865 #define HWACCEL_MAX (CONFIG_H264_DXVA2_HWACCEL + \ 
  866                      CONFIG_H264_D3D11VA_HWACCEL + \ 
  867                      CONFIG_H264_VAAPI_HWACCEL + \ 
  868                      (CONFIG_H264_VDA_HWACCEL * 2) + \ 
  869                      CONFIG_H264_VDPAU_HWACCEL) 
  920 #if CONFIG_H264_VDPAU_HWACCEL 
  936 #if CONFIG_H264_DXVA2_HWACCEL 
  939 #if CONFIG_H264_D3D11VA_HWACCEL 
  942 #if CONFIG_H264_VAAPI_HWACCEL 
  945 #if CONFIG_H264_VDA_HWACCEL 
  989     if (width <= 0 || height <= 0) {
 
 1016     int nb_slices = (HAVE_THREADS &&
 
 1049                 "VDPAU decoding does not support video colorspace.\n");
 
 1085                " reducing to %d\n", nb_slices, max_slices);
 
 1086         nb_slices = max_slices;
 
 1142     unsigned int first_mb_in_slice;
 
 1143     unsigned int pps_id;
 
 1145     unsigned int slice_type, tmp, i, j;
 
 1146     int last_pic_structure, last_pic_droppable;
 
 1148     int needs_reinit = 0;
 
 1149     int field_pic_flag, bottom_field_flag;
 
 1151     int frame_num, picture_structure, droppable;
 
 1152     int mb_aff_frame, last_mb_aff_frame;
 
 1160     if (first_mb_in_slice == 0) { 
 
 1186     if (slice_type > 9) {
 
 1188                "slice type %d too large at %d\n",
 
 1189                slice_type, first_mb_in_slice);
 
 1192     if (slice_type > 4) {
 
 1228                "non-existing PPS %u referenced\n",
 
 1234                "PPS change from %d to %d forbidden\n",
 
 1243                "non-existing SPS %u referenced\n",
 
 1256                "SPS changed in the middle of the frame\n");
 
 1278                        "Reenabling low delay requires a codec flush.\n");
 
 1336         (must_reinit || needs_reinit)) {
 
 1340                    "changing width %d -> %d / height %d -> %d on " 
 1361                    "h264_slice_header_init() failed\n");
 
 1368                    "Cannot (re-)initialize context during parallel decoding.\n");
 
 1378                    "h264_slice_header_init() failed\n");
 
 1412         if (field_pic_flag) {
 
 1421         if (last_pic_structure != picture_structure ||
 
 1422             last_pic_droppable != droppable ||
 
 1423             last_mb_aff_frame  != mb_aff_frame) {
 
 1425                    "Changing field mode (%d -> %d) between slices is not allowed\n",
 
 1430                    "unset cur_pic_ptr on slice %d\n",
 
 1449             if (unwrap_prev_frame_num > h->
frame_num)
 
 1450                 unwrap_prev_frame_num -= max_frame_num;
 
 1454                 if (unwrap_prev_frame_num < 0)
 
 1455                     unwrap_prev_frame_num += max_frame_num;
 
 1502                                "Invalid field mode combination %d/%d\n",
 
 1507                     } 
else if (last_pic_droppable != h->
droppable) {
 
 1509                                               "Found reference and non-reference fields in the same frame, which");
 
 1626         first_mb_in_slice >= h->
mb_num) {
 
 1696         for (i = 0; i < 2; i++) {
 
 1760                    "deblocking_filter_idc %u out of range\n", tmp);
 
 1775                        "deblocking filter parameters %d %d out of range\n",
 
 1802                        "Cannot parallelize slice decoding with deblocking filter type 1, decoding such frames in sequential order\n" 
 1803                        "To parallelize slice decoding you need video encoded with disable_deblocking_filter_idc set to 2 (deblock only edges that do not cross slices).\n" 
 1804                        "Setting the flags2 libavcodec option to +fast (-flags2 +fast) will disable deblocking across slices and enable parallel slice decoding " 
 1805                        "but will generate non-standard-compliant output.\n");
 
 1810                        "Deblocking switched inside frame.\n");
 
 1835     for (j = 0; j < 2; j++) {
 
 1838         for (i = 0; i < 16; i++) {
 
 1840             if (j < sl->list_count && i < sl->ref_count[j] &&
 
 1859         for (i = 0; i < 16; i++)
 
 1862         ref2frm[18 + 1] = -1;
 
 1863         for (i = 16; i < 48; i++)
 
 1864             ref2frm[i + 4] = 4 * id_list[(i - 16) >> 1] +
 
 1875                "slice:%d %s mb:%d %c%s%s pps:%u frame:%d poc:%d/%d ref:%d/%d qp:%d loop:%d:%d:%d weight:%d%s %s\n",
 
 1917                                                       int mb_type, 
int top_xy,
 
 1920                                                       int left_type[LEFT_MBS],
 
 1921                                                       int mb_xy, 
int list)
 
 1928             const int b_xy  = h->
mb2b_xy[top_xy] + 3 * b_stride;
 
 1929             const int b8_xy = 4 * top_xy + 2;
 
 1932             ref_cache[0 - 1 * 8] =
 
 1933             ref_cache[1 - 1 * 8] = ref2frm[list][h->
cur_pic.
ref_index[list][b8_xy + 0]];
 
 1934             ref_cache[2 - 1 * 8] =
 
 1935             ref_cache[3 - 1 * 8] = ref2frm[list][h->
cur_pic.
ref_index[list][b8_xy + 1]];
 
 1944                 const int b8_xy = 4 * left_xy[
LTOP] + 1;
 
 1951                 ref_cache[-1 +  8] = ref2frm[list][h->
cur_pic.
ref_index[list][b8_xy + 2 * 0]];
 
 1952                 ref_cache[-1 + 16] =
 
 1953                 ref_cache[-1 + 24] = ref2frm[list][h->
cur_pic.
ref_index[list][b8_xy + 2 * 1]];
 
 1961                 ref_cache[-1 + 16] =
 
 1979         uint32_t ref01 = (
pack16to32(ref2frm[list][ref[0]], ref2frm[list][ref[1]]) & 0x00FF00FF) * 0x0101;
 
 1980         uint32_t ref23 = (
pack16to32(ref2frm[list][ref[2]], ref2frm[list][ref[3]]) & 0x00FF00FF) * 0x0101;
 
 1981         AV_WN32A(&ref_cache[0 * 8], ref01);
 
 1982         AV_WN32A(&ref_cache[1 * 8], ref01);
 
 1983         AV_WN32A(&ref_cache[2 * 8], ref23);
 
 1984         AV_WN32A(&ref_cache[3 * 8], ref23);
 
 1989         AV_COPY128(mv_dst + 8 * 0, mv_src + 0 * b_stride);
 
 1990         AV_COPY128(mv_dst + 8 * 1, mv_src + 1 * b_stride);
 
 1991         AV_COPY128(mv_dst + 8 * 2, mv_src + 2 * b_stride);
 
 1992         AV_COPY128(mv_dst + 8 * 3, mv_src + 3 * b_stride);
 
 2002     const int mb_xy = sl->
mb_xy;
 
 2013     left_xy[
LBOT] = left_xy[
LTOP] = mb_xy - 1;
 
 2018             if (left_mb_field_flag != curr_mb_field_flag)
 
 2021             if (curr_mb_field_flag)
 
 2024             if (left_mb_field_flag != curr_mb_field_flag)
 
 2038         if (qp <= qp_thresh &&
 
 2039             (left_xy[
LTOP] < 0 ||
 
 2045             if ((left_xy[
LTOP] < 0 ||
 
 2060             left_type[
LTOP] = left_type[
LBOT] = 0;
 
 2065             left_type[
LTOP] = left_type[
LBOT] = 0;
 
 2075                              top_type, left_type, mb_xy, 0);
 
 2078                                  top_type, left_type, mb_xy, 1);
 
 2082     AV_COPY32(&nnz_cache[4 + 8 * 1], &nnz[0]);
 
 2083     AV_COPY32(&nnz_cache[4 + 8 * 2], &nnz[4]);
 
 2084     AV_COPY32(&nnz_cache[4 + 8 * 3], &nnz[8]);
 
 2085     AV_COPY32(&nnz_cache[4 + 8 * 4], &nnz[12]);
 
 2090         AV_COPY32(&nnz_cache[4 + 8 * 0], &nnz[3 * 4]);
 
 2093     if (left_type[
LTOP]) {
 
 2095         nnz_cache[3 + 8 * 1] = nnz[3 + 0 * 4];
 
 2096         nnz_cache[3 + 8 * 2] = nnz[3 + 1 * 4];
 
 2097         nnz_cache[3 + 8 * 3] = nnz[3 + 2 * 4];
 
 2098         nnz_cache[3 + 8 * 4] = nnz[3 + 3 * 4];
 
 2105             nnz_cache[4 + 8 * 0] =
 
 2106             nnz_cache[5 + 8 * 0] = (h->
cbp_table[top_xy] & 0x4000) >> 12;
 
 2107             nnz_cache[6 + 8 * 0] =
 
 2108             nnz_cache[7 + 8 * 0] = (h->
cbp_table[top_xy] & 0x8000) >> 12;
 
 2111             nnz_cache[3 + 8 * 1] =
 
 2112             nnz_cache[3 + 8 * 2] = (h->
cbp_table[left_xy[
LTOP]] & 0x2000) >> 12; 
 
 2115             nnz_cache[3 + 8 * 3] =
 
 2116             nnz_cache[3 + 8 * 4] = (h->
cbp_table[left_xy[
LBOT]] & 0x8000) >> 12; 
 
 2120             nnz_cache[
scan8[0]] =
 
 2121             nnz_cache[scan8[1]] =
 
 2122             nnz_cache[scan8[2]] =
 
 2123             nnz_cache[scan8[3]] = (sl->
cbp & 0x1000) >> 12;
 
 2125             nnz_cache[scan8[0 + 4]] =
 
 2126             nnz_cache[scan8[1 + 4]] =
 
 2127             nnz_cache[scan8[2 + 4]] =
 
 2128             nnz_cache[scan8[3 + 4]] = (sl->
cbp & 0x2000) >> 12;
 
 2130             nnz_cache[scan8[0 + 8]] =
 
 2131             nnz_cache[scan8[1 + 8]] =
 
 2132             nnz_cache[scan8[2 + 8]] =
 
 2133             nnz_cache[scan8[3 + 8]] = (sl->
cbp & 0x4000) >> 12;
 
 2135             nnz_cache[scan8[0 + 12]] =
 
 2136             nnz_cache[scan8[1 + 12]] =
 
 2137             nnz_cache[scan8[2 + 12]] =
 
 2138             nnz_cache[scan8[3 + 12]] = (sl->
cbp & 0x8000) >> 12;
 
 2147     uint8_t *dest_y, *dest_cb, *dest_cr;
 
 2148     int linesize, uvlinesize, mb_x, mb_y;
 
 2155         for (mb_x = start_x; mb_x < end_x; mb_x++)
 
 2156             for (mb_y = end_mb_y - 
FRAME_MBAFF(h); mb_y <= end_mb_y; mb_y++) {
 
 2170                           ((mb_x << pixel_shift) + mb_y * sl->
linesize) * 16;
 
 2172                           (mb_x << pixel_shift) * (8 << 
CHROMA444(h)) +
 
 2175                           (mb_x << pixel_shift) * (8 << 
CHROMA444(h)) +
 
 2200                                       linesize, uvlinesize);
 
 2203                                            dest_cr, linesize, uvlinesize);
 
 2235         if ((top + height) >= pic_height)
 
 2236             height += deblock_border;
 
 2237         top -= deblock_border;
 
 2240     if (top >= pic_height || (top + height) < 0)
 
 2243     height = 
FFMIN(height, pic_height - top);
 
 2259                          int startx, 
int starty,
 
 2260                          int endx, 
int endy, 
int status)
 
 2265     if (CONFIG_ERROR_RESILIENCE) {
 
 2276     int lf_x_start = sl->
mb_x;
 
 2349                 if (sl->
mb_x >= lf_x_start)
 
 2367                 sl->
mb_x = lf_x_start = 0;
 
 2382                 if (sl->
mb_x > lf_x_start)
 
 2416                        "error while decoding MB %d %d\n", sl->
mb_x, sl->
mb_y);
 
 2424                 sl->
mb_x = lf_x_start = 0;
 
 2458                     if (sl->
mb_x > lf_x_start)
 
 2492     if (context_count == 1) {
 
 2499         for (i = 0; i < context_count; i++) {
 
 2503             if (CONFIG_ERROR_RESILIENCE) {
 
 2506             for (j = 0; j < context_count; j++) {
 
 2510                 if (i==j || mb_index > mb_index2)
 
 2512                 mb_index_end = 
FFMIN(mb_index_end, mb_index2);
 
 2523         if (CONFIG_ERROR_RESILIENCE) {
 
 2524             for (i = 1; i < context_count; i++)
 
int video_signal_type_present_flag
struct H264Context * h264
void ff_h264_unref_picture(H264Context *h, H264Picture *pic)
int ff_thread_can_start_frame(AVCodecContext *avctx)
const struct AVCodec * codec
discard all frames except keyframes 
void ff_h264_flush_change(H264Context *h)
static const uint8_t dequant8_coeff_init[6][6]
int long_ref
1->long term reference 0->short term reference 
#define AVERROR_INVALIDDATA
Invalid data found when processing input. 
int single_decode_warning
1 if the single thread fallback warning has already been displayed, 0 otherwise. 
#define CODEC_FLAG2_FAST
Allow non spec compliant speedup tricks. 
int sei_recovery_frame_cnt
static int shift(int a, int b)
int ff_h264_decode_ref_pic_list_reordering(H264Context *h, H264SliceContext *sl)
int16_t mv_cache[2][5 *8][2]
Motion vector cache. 
#define AV_PIX_FMT_YUV444P14
static int get_se_golomb(GetBitContext *gb)
read signed exp golomb code. 
int edge_emu_buffer_allocated
int coded_width
Bitstream width / height, may be different from width/height e.g. 
static void decode_finish_row(const H264Context *h, H264SliceContext *sl)
Draw edges and report progress for the last MB row. 
#define H264_MAX_PICTURE_COUNT
int ff_h264_decode_mb_cavlc(const H264Context *h, H264SliceContext *sl)
Decode a macroblock. 
uint8_t field_scan8x8_q0[64]
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) 
static unsigned int get_bits(GetBitContext *s, int n)
Read 1-25 bits. 
#define AV_LOG_WARNING
Something somehow does not look correct. 
int chroma_qp_index_offset[2]
const uint8_t * bytestream_end
AVBufferRef * buf[AV_NUM_DATA_POINTERS]
AVBuffer references backing the data for this frame. 
H264ChromaContext h264chroma
MMCO mmco[MAX_MMCO_COUNT]
memory management control operations buffer. 
static void implicit_weight_table(const H264Context *h, H264SliceContext *sl, int field)
Initialize implicit_weight table. 
enum AVColorRange color_range
MPEG vs JPEG YUV range. 
int bitstream_restriction_flag
AVBufferRef * mb_type_buf
int bipred_scratchpad_allocated
#define DELAYED_PIC_REF
Value of Picture.reference when Picture is not a reference picture, but is held for delayed output...
void ff_h264_direct_ref_list_init(const H264Context *const h, H264SliceContext *sl)
#define AV_PIX_FMT_GBRP10
#define VP_START
< current MB is the first after a resync marker 
AVBufferPool * mb_type_pool
HW decoding through VA API, Picture.data[3] contains a vaapi_render_state struct which contains the b...
qpel_mc_func(* qpel_put)[16]
void ff_h264_filter_mb_fast(const H264Context *h, H264SliceContext *sl, int mb_x, int mb_y, uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr, unsigned int linesize, unsigned int uvlinesize)
#define AV_EF_AGGRESSIVE
consider things that a sane encoder should not do as an error 
void ff_h264_draw_horiz_band(const H264Context *h, H264SliceContext *sl, int y, int height)
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown) That is the width of a pixel divided by the height of the pixel...
int16_t(*[2] motion_val)[2]
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx. 
H264Picture * delayed_pic[MAX_DELAYED_PIC_COUNT+2]
static int av_cmp_q(AVRational a, AVRational b)
Compare two rationals. 
int is_avc
Used to parse AVC variant of h264. 
AVBufferPool * ref_index_pool
static const uint8_t dequant4_coeff_init[6][3]
void ff_h264_free_tables(H264Context *h)
uint8_t zigzag_scan8x8_cavlc[64]
#define AV_PIX_FMT_YUV420P12
av_cold void ff_h264chroma_init(H264ChromaContext *c, int bit_depth)
int ff_h264_get_profile(SPS *sps)
Compute profile from profile_idc and constraint_set?_flags. 
#define FF_ARRAY_ELEMS(a)
static const uint8_t zigzag_scan8x8_cavlc[64+1]
uint32_t dequant8_buffer[6][QP_MAX_NUM+1][64]
discard all non intra frames 
int prev_poc_msb
poc_msb of the last reference pic for POC type 0 
int bits_per_raw_sample
Bits per sample/pixel of internal libavcodec pixel/sample format. 
uint32_t num_units_in_tick
void ff_h264_filter_mb(const H264Context *h, H264SliceContext *sl, int mb_x, int mb_y, uint8_t *img_y, uint8_t *img_cb, uint8_t *img_cr, unsigned int linesize, unsigned int uvlinesize)
static const uint8_t field_scan[16+1]
H264Picture * long_ref[32]
order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB) 
int luma_weight_flag[2]
7.4.3.2 luma_weight_lX_flag 
unsigned current_sps_id
id of the current SPS 
unsigned int ref_count[2]
num_ref_idx_l0/1_active_minus1 + 1 
#define IN_RANGE(a, b, size)
int ff_set_ref_count(H264Context *h, H264SliceContext *sl)
#define REBASE_PICTURE(pic, new_ctx, old_ctx)
int ff_h264_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
enum AVDiscard skip_frame
Skip decoding for selected frames. 
static const uint8_t golomb_to_pict_type[5]
struct AVHWAccel * hwaccel
Hardware accelerator in use. 
unsigned int crop_top
frame_cropping_rect_top_offset 
#define USES_LIST(a, list)
#define av_assert0(cond)
assert() equivalent, that is always enabled. 
uint8_t scaling_matrix4[6][16]
const uint8_t * bytestream
int deblocking_filter_parameters_present
deblocking_filter_parameters_present_flag 
void void avpriv_request_sample(void *avc, const char *msg,...) av_printf_format(2
Log a generic warning message about a missing feature. 
static int copy_parameter_set(void **to, void **from, int count, int size)
uint32_t(*[6] dequant4_coeff)[16]
av_cold void ff_h264qpel_init(H264QpelContext *c, int bit_depth)
static enum AVPixelFormat non_j_pixfmt(enum AVPixelFormat a)
int prev_frame_num_offset
for POC type 2 
unsigned int crop_left
frame_cropping_rect_left_offset 
int gaps_in_frame_num_allowed_flag
int slice_alpha_c0_offset
int field_picture
whether or not picture was encoded in separate fields 
int bit_depth_chroma
bit_depth_chroma_minus8 + 8 
static void init_dequant4_coeff_table(H264Context *h)
enum AVColorPrimaries color_primaries
void ff_h264_direct_dist_scale_factor(const H264Context *const h, H264SliceContext *sl)
Multithreading support functions. 
#define CODEC_CAP_HWACCEL_VDPAU
Codec can export data for HW decoding (VDPAU). 
int cabac
entropy_coding_mode_flag 
static const uint8_t dequant8_coeff_init_scan[16]
static void init_dequant8_coeff_table(H264Context *h)
unsigned int crop_right
frame_cropping_rect_right_offset 
unsigned int last_ref_count[2]
uint8_t(*[2] top_borders)[(16 *3)*2]
int frame_recovered
Initial frame has been completely recovered. 
#define PICT_BOTTOM_FIELD
int transform_bypass
qpprime_y_zero_transform_bypass_flag 
static int get_bits_count(const GetBitContext *s)
char av_get_picture_type_char(enum AVPictureType pict_type)
Return a single letter to describe the given picture type pict_type. 
planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting col...
int ff_set_sar(AVCodecContext *avctx, AVRational sar)
Check that the provided sample aspect ratio is valid and set it on the codec context. 
qpel_mc_func(* qpel_avg)[16]
int redundant_pic_cnt_present
redundant_pic_cnt_present_flag 
#define MAX_DELAYED_PIC_COUNT
static void fill_rectangle(SDL_Surface *screen, int x, int y, int w, int h, int color, int update)
AVBufferRef * qscale_table_buf
#define AV_PIX_FMT_YUV422P12
int ff_h264_decode_mb_cabac(const H264Context *h, H264SliceContext *sl)
Decode a CABAC coded macroblock. 
high precision timer, useful to profile code 
int recovered
picture at IDR or recovery point + recovery count 
int ff_h264_fill_default_ref_list(H264Context *h, H264SliceContext *sl)
Fill the default_ref_list. 
qpel_mc_func avg_h264_qpel_pixels_tab[4][16]
int last_pocs[MAX_DELAYED_PIC_COUNT]
static int h264_frame_start(H264Context *h)
H.264 / AVC / MPEG4 part10 codec. 
void ff_h264_hl_decode_mb(const H264Context *h, H264SliceContext *sl)
static int get_bits_left(GetBitContext *gb)
H264Picture DPB[H264_MAX_PICTURE_COUNT]
int mb_aff
mb_adaptive_frame_field_flag 
enum AVColorTransferCharacteristic color_trc
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered. 
int has_b_frames
Size of the frame reordering buffer in the decoder. 
static int get_ue_golomb(GetBitContext *gb)
read unsigned exp golomb code. 
static int alloc_scratch_buffers(H264SliceContext *sl, int linesize)
int poc_type
pic_order_cnt_type 
void ff_er_add_slice(ERContext *s, int startx, int starty, int endx, int endy, int status)
Add a slice. 
#define PTRDIFF_SPECIFIER
#define AV_EF_EXPLODE
abort decoding on minor error detection 
discard all bidirectional frames 
void * hwaccel_picture_private
hardware accelerator private data 
int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift)
Utility function to access log2_chroma_w log2_chroma_h from the pixel format AVPixFmtDescriptor. 
int active_thread_type
Which multithreading methods are in use by the codec. 
static const uint8_t field_scan8x8[64+1]
int ff_init_poc(H264Context *h, int pic_field_poc[2], int *pic_poc)
int capabilities
Codec capabilities. 
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers. 
int ff_pred_weight_table(H264Context *h, H264SliceContext *sl)
static int init_dimensions(H264Context *h)
int deblocking_filter
disable_deblocking_filter_idc with 1 <-> 0 
uint8_t(*[2] mvd_table)[2]
int prev_interlaced_frame
Complement sei_pic_struct SEI_PIC_STRUCT_TOP_BOTTOM and SEI_PIC_STRUCT_BOTTOM_TOP indicate interlaced...
static int fill_filter_caches(const H264Context *h, H264SliceContext *sl, int mb_type)
simple assert() macros that are a bit more flexible than ISO C assert(). 
int weighted_pred
weighted_pred_flag 
#define AV_PIX_FMT_YUV444P10
int direct_spatial_mv_pred
av_cold void ff_h264_pred_init(H264PredContext *h, int codec_id, const int bit_depth, int chroma_format_idc)
Set the intra prediction function pointers. 
HW acceleration through VDA, data[3] contains a CVPixelBufferRef. 
int frame_num
frame_num (raw frame_num from slice header) 
static av_always_inline uint32_t pack16to32(unsigned a, unsigned b)
uint8_t * list_counts
Array of list_count per MB specifying the slice type. 
int ff_h264_get_slice_type(const H264SliceContext *sl)
Reconstruct bitstream slice_type. 
Libavcodec external API header. 
qpel_mc_func put_h264_qpel_pixels_tab[4][16]
int delta_pic_order_always_zero_flag
#define CODEC_FLAG_LOW_DELAY
Force low delay. 
void av_image_copy(uint8_t *dst_data[4], int dst_linesizes[4], const uint8_t *src_data[4], const int src_linesizes[4], enum AVPixelFormat pix_fmt, int width, int height)
Copy image in src_data to dst_data. 
int new
flag to keep track if the decoder context needs re-init due to changed SPS 
#define FIELD_OR_MBAFF_PICTURE(h)
int slice_type_nos
S free slice type (SI/SP are remapped to I/P) 
uint8_t zigzag_scan8x8[64]
AVBufferRef * hwaccel_priv_buf
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples) 
static const uint8_t scan8[16 *3+3]
int crop
frame_cropping_flag 
uint8_t * error_status_table
int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max)
Reduce a fraction. 
uint8_t scaling_matrix8[6][64]
int nal_length_size
Number of bytes used for nal length (1, 2 or 4) 
useful rectangle filling function 
#define AV_PIX_FMT_YUV422P9
int refs
number of reference frames 
av_cold void ff_videodsp_init(VideoDSPContext *ctx, int bpc)
AVBufferRef * motion_val_buf[2]
int ref_frame_count
num_ref_frames 
enum AVPixelFormat * pix_fmts
array of supported pixel formats, or NULL if unknown, array is terminated by -1 
int frame_num_offset
for POC type 2 
int err_recognition
Error recognition; may misdetect some more or less valid parts as errors. 
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code. 
uint16_t * slice_table
slice_table_base + 2*mb_stride + 1 
static void copy_picture_range(H264Picture **to, H264Picture **from, int count, H264Context *new_base, H264Context *old_base)
av_cold void ff_h264dsp_init(H264DSPContext *c, const int bit_depth, const int chroma_format_idc)
uint8_t field_scan8x8_cavlc[64]
int colour_description_present_flag
static void er_add_slice(H264SliceContext *sl, int startx, int starty, int endx, int endy, int status)
planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting col...
int width
picture width / height. 
int long_ref_count
number of actual long term references 
#define FF_CEIL_RSHIFT(a, b)
int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)
void ff_thread_report_progress(ThreadFrame *f, int n, int field)
Notify later decoding threads when part of their reference picture is ready. 
PPS * pps_buffers[MAX_PPS_COUNT]
enum AVColorPrimaries color_primaries
Chromaticity coordinates of the source primaries. 
Context Adaptive Binary Arithmetic Coder inline functions. 
int init_qp
pic_init_qp_minus26 + 26 
H264SliceContext * slice_ctx
int direct_8x8_inference_flag
int ff_h264_decode_slice_header(H264Context *h, H264SliceContext *sl)
Decode a slice header. 
int max_pic_num
max_frame_num or 2 * max_frame_num for field pics. 
int ticks_per_frame
For some codecs, the time base is closer to the field rate than the frame rate. 
int top_borders_allocated[2]
int ff_generate_sliding_window_mmcos(H264Context *h, int first_slice)
static int pic_is_unused(H264Context *h, H264Picture *pic)
int curr_pic_num
frame_num for frames or 2 * frame_num + 1 for field pics. 
int chroma_log2_weight_denom
static void init_scan_tables(H264Context *h)
initialize scan tables 
static int av_unused get_cabac_terminate(CABACContext *c)
#define AV_PIX_FMT_YUV444P9
#define AV_PIX_FMT_GBRP14
uint32_t dequant4_buffer[6][QP_MAX_NUM+1][16]
void ff_h264_init_cabac_states(const H264Context *h, H264SliceContext *sl)
int thread_count
thread count is used to decide how many independent tasks should be passed to execute() ...
the normal 2^n-1 "JPEG" YUV ranges 
static int init_table_pools(H264Context *h)
uint8_t * edge_emu_buffer
int dequant_coeff_pps
reinit tables when pps changes 
static unsigned get_ue_golomb_long(GetBitContext *gb)
Read an unsigned Exp-Golomb code in the range 0 to UINT32_MAX-1. 
#define AVERROR_PATCHWELCOME
Not yet implemented in FFmpeg, patches welcome. 
int pic_order_present
pic_order_present_flag 
SPS * sps_buffers[MAX_SPS_COUNT]
uint8_t zigzag_scan_q0[16]
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
int bit_depth_luma
luma bit depth from sps to detect changes 
int chroma_format_idc
chroma format from sps to detect changes 
int timing_info_present_flag
int ff_h264_execute_ref_pic_marking(H264Context *h, MMCO *mmco, int mmco_count)
Execute the reference picture marking (memory management control operations). 
int coded_picture_number
picture number in bitstream order 
int ff_h264_slice_context_init(H264Context *h, H264SliceContext *sl)
Init context Allocate buffers which are not shared amongst multiple threads. 
#define AV_LOG_INFO
Standard information. 
uint8_t zigzag_scan8x8_q0[64]
#define AV_PIX_FMT_YUV420P14
H264 / AVC / MPEG4 part10 codec data table  
#define FF_THREAD_SLICE
Decode more than one part of a single frame at once. 
static int get_ue_golomb_31(GetBitContext *gb)
read unsigned exp golomb code, constraint to a max of 31. 
static const uint8_t zigzag_scan[16+1]
int prev_frame_num
frame_num of the last pic for POC type 1/2 
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line. 
H264Picture * short_ref[32]
void avpriv_color_frame(AVFrame *frame, const int color[4])
int field_poc[2]
top/bottom POC 
int ff_thread_get_buffer(AVCodecContext *avctx, ThreadFrame *f, int flags)
Wrapper around get_buffer() for frame-multithreaded codecs. 
int max_contexts
Max number of threads / contexts. 
int recovery_frame
recovery_frame is the frame_num at which the next frame should be fully constructed. 
main external API structure. 
int qp_thresh
QP threshold to skip loopfilter. 
uint8_t * data
The data buffer. 
int ff_h264_alloc_tables(H264Context *h)
Allocate tables. 
AVBufferRef * av_buffer_allocz(int size)
Same as av_buffer_alloc(), except the returned buffer will be initialized to zero. 
static const uint8_t field_scan8x8_cavlc[64+1]
static unsigned int get_bits1(GetBitContext *s)
BYTE int const BYTE int int int height
#define AV_PIX_FMT_YUV420P10
#define FF_THREAD_FRAME
Decode more than one frame at once. 
uint8_t non_zero_count_cache[15 *8]
non zero coeff count cache. 
uint32_t(*[6] dequant8_coeff)[64]
void av_buffer_pool_uninit(AVBufferPool **ppool)
Mark the pool as being available for freeing. 
enum AVColorSpace colorspace
YUV colorspace type. 
enum AVColorTransferCharacteristic color_trc
Color Transfer Characteristic. 
HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface. 
A reference counted buffer type. 
int pixel_shift
0 for 8-bit H264, 1 for high-bit-depth H264 
int mmco_reset
MMCO_RESET set this 1. 
static const uint8_t rem6[QP_MAX_NUM+1]
int ff_h264_decode_ref_pic_marking(H264Context *h, GetBitContext *gb, int first_slice)
H264Picture * cur_pic_ptr
const uint8_t ff_zigzag_direct[64]
static int h264_slice_header_init(H264Context *h)
int mb_mbaff
mb_aff_frame && mb_field_decoding_flag 
enum AVPixelFormat ff_thread_get_format(AVCodecContext *avctx, const enum AVPixelFormat *fmt)
Wrapper around get_format() for frame-multithreaded codecs. 
#define AV_PIX_FMT_YUV420P9
int log2_max_poc_lsb
log2_max_pic_order_cnt_lsb_minus4 
ptrdiff_t mb_linesize
may be equal to s->linesize or s->linesize * 2, for mbaff 
HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer. ...
int16_t slice_row[MAX_SLICES]
to detect when MAX_SLICES is too low 
static int alloc_picture(H264Context *h, H264Picture *pic)
int block_offset[2 *(16 *3)]
block_offset[ 0..23] for frame macroblocks block_offset[24..47] for field macroblocks ...
#define AV_PIX_FMT_YUV422P14
#define AV_PIX_FMT_GBRP12
int transform_8x8_mode
transform_8x8_mode_flag 
#define AV_PIX_FMT_YUV422P10
#define AV_PIX_FMT_YUV444P12
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes. 
#define FF_DEBUG_PICT_INFO
static void release_unused_pictures(H264Context *h, int remove_current)
the normal 219*2^(n-8) "MPEG" YUV ranges 
#define copy_fields(to, from, start_field, end_field)
hardware decoding through VDA 
discard all non reference 
AVBufferPool * qscale_table_pool
H264Picture * next_output_pic
int mb_height
pic_height_in_map_units_minus1 + 1 
AVBufferPool * motion_val_pool
void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size)
Allocate a buffer, reusing the given one if large enough. 
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) 
#define SLICE_SINGLETHREAD
common internal api header. 
AVBufferPool * av_buffer_pool_init(int size, AVBufferRef *(*alloc)(int size))
Allocate and initialize a buffer pool. 
#define CODEC_FLAG_GRAY
Only decode/encode grayscale. 
static enum AVPixelFormat get_pixel_format(H264Context *h, int force_callback)
int log2_max_frame_num
log2_max_frame_num_minus4 + 4 
H.264 / AVC / MPEG4 part10 motion vector predicion. 
void ff_h264_fill_mbaff_ref_list(H264Context *h, H264SliceContext *sl)
planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting col...
int implicit_weight[48][48][2]
int cur_chroma_format_idc
int8_t * intra4x4_pred_mode
enum AVDiscard skip_loop_filter
Skip loop filtering for selected frames. 
static void predict_field_decoding_flag(const H264Context *h, H264SliceContext *sl)
int ref2frm[MAX_SLICES][2][64]
reference to frame number lists, used in the loop filter, the first 2 are for -2,-1 ...
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 const uint8_t div6[QP_MAX_NUM+1]
int ff_h264_field_end(H264Context *h, H264SliceContext *sl, int in_setup)
int prev_poc_lsb
poc_lsb of the last reference pic for POC type 0 
int ff_h264_execute_decode_slices(H264Context *h, unsigned context_count)
Call decode_slice() for each context. 
static av_always_inline void backup_mb_border(const H264Context *h, H264SliceContext *sl, uint8_t *src_y, uint8_t *src_cb, uint8_t *src_cr, int linesize, int uvlinesize, int simple)
void ff_h264_set_erpic(ERPicture *dst, H264Picture *src)
uint8_t zigzag_scan8x8_cavlc_q0[64]
int8_t ref_cache[2][5 *8]
void ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size)
int(* execute)(struct AVCodecContext *c, int(*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size)
The codec may call this to execute several independent things. 
int frame_priv_data_size
Size of per-frame hardware accelerator private data. 
int luma_log2_weight_denom
void ff_h264_init_dequant_tables(H264Context *h)
int key_frame
1 -> keyframe, 0-> not 
enum AVPictureType pict_type
static int find_unused_picture(H264Context *h)
int current_slice
current slice number, used to initialize slice_num of each thread/context 
static const uint8_t * align_get_bits(GetBitContext *s)
int mb_width
pic_width_in_mbs_minus1 + 1 
H264Ref ref_list[2][48]
0..15: frame refs, 16..47: mbaff field refs. 
uint8_t field_scan8x8_cavlc_q0[64]
AVBufferRef * ref_index_buf[2]
int au_pps_id
pps_id of current access unit 
void ff_er_frame_start(ERContext *s)
uint8_t(*[2] mvd_table)[2]
uint8_t field_scan8x8[64]
static av_always_inline void fill_filter_caches_inter(const H264Context *h, H264SliceContext *sl, int mb_type, int top_xy, int left_xy[LEFT_MBS], int top_type, int left_type[LEFT_MBS], int mb_xy, int list)
HW decoding through Direct3D11, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer...
int8_t * intra4x4_pred_mode
AVBufferRef * av_buffer_pool_get(AVBufferPool *pool)
Allocate a new AVBuffer, reusing an old buffer from the pool when available. 
static int decode_slice(struct AVCodecContext *avctx, void *arg)
const char * av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
Return the short name for a pixel format, NULL in case pix_fmt is unknown. 
uint8_t field_scan_q0[16]
int mb_field_decoding_flag
uint8_t(* non_zero_count)[48]
static void loop_filter(const H264Context *h, H264SliceContext *sl, int start_x, int end_x)
unsigned int crop_bottom
frame_cropping_rect_bottom_offset 
uint8_t * bipred_scratchpad
AVPixelFormat
Pixel format. 
int sei_recovery_frame_cnt
recovery_frame_cnt from SEI message 
#define AV_GET_BUFFER_FLAG_REF
The decoder will keep a reference to the frame and may reuse it later. 
Context Adaptive Binary Arithmetic Coder. 
int chroma_weight_flag[2]
7.4.3.2 chroma_weight_lX_flag 
int short_ref_count
number of actual short term references 
enum AVColorSpace colorspace