Lines Matching refs:sl
1262 void ff_h264_init_cabac_states(const H264Context *h, H264SliceContext *sl) in ff_h264_init_cabac_states() argument
1266 const int slice_qp = av_clip(sl->qscale - 6*(h->ps.sps->bit_depth_luma-8), 0, 51); in ff_h264_init_cabac_states()
1268 if (sl->slice_type_nos == AV_PICTURE_TYPE_I) tab = cabac_context_init_I; in ff_h264_init_cabac_states()
1269 else tab = cabac_context_init_PB[sl->cabac_init_idc]; in ff_h264_init_cabac_states()
1279 sl->cabac_state[i] = pre; in ff_h264_init_cabac_states()
1283 static int decode_cabac_field_decoding_flag(const H264Context *h, H264SliceContext *sl) in decode_cabac_field_decoding_flag() argument
1285 const int mbb_xy = sl->mb_xy - 2*h->mb_stride; in decode_cabac_field_decoding_flag()
1289 …ctx += sl->mb_field_decoding_flag & !!sl->mb_x; //for FMO:(s->current_picture.mb_type[mba_xy] >> 7… in decode_cabac_field_decoding_flag()
1290 ctx += (h->cur_pic.mb_type[mbb_xy] >> 7) & (h->slice_table[mbb_xy] == sl->slice_num); in decode_cabac_field_decoding_flag()
1292 return get_cabac_noinline( &sl->cabac, &(sl->cabac_state+70)[ctx] ); in decode_cabac_field_decoding_flag()
1295 static int decode_cabac_intra_mb_type(H264SliceContext *sl, in decode_cabac_intra_mb_type() argument
1298 uint8_t *state= &sl->cabac_state[ctx_base]; in decode_cabac_intra_mb_type()
1303 if (sl->left_type[LTOP] & (MB_TYPE_INTRA16x16|MB_TYPE_INTRA_PCM)) in decode_cabac_intra_mb_type()
1305 if (sl->top_type & (MB_TYPE_INTRA16x16|MB_TYPE_INTRA_PCM)) in decode_cabac_intra_mb_type()
1307 if( get_cabac_noinline( &sl->cabac, &state[ctx] ) == 0 ) in decode_cabac_intra_mb_type()
1311 if( get_cabac_noinline( &sl->cabac, state ) == 0 ) in decode_cabac_intra_mb_type()
1315 if( get_cabac_terminate( &sl->cabac ) ) in decode_cabac_intra_mb_type()
1319 mb_type += 12 * get_cabac_noinline( &sl->cabac, &state[1] ); /* cbp_luma != 0 */ in decode_cabac_intra_mb_type()
1320 if( get_cabac_noinline( &sl->cabac, &state[2] ) ) /* cbp_chroma */ in decode_cabac_intra_mb_type()
1321 mb_type += 4 + 4 * get_cabac_noinline( &sl->cabac, &state[2+intra_slice] ); in decode_cabac_intra_mb_type()
1322 mb_type += 2 * get_cabac_noinline( &sl->cabac, &state[3+intra_slice] ); in decode_cabac_intra_mb_type()
1323 mb_type += 1 * get_cabac_noinline( &sl->cabac, &state[3+2*intra_slice] ); in decode_cabac_intra_mb_type()
1327 static int decode_cabac_mb_skip(const H264Context *h, H264SliceContext *sl, in decode_cabac_mb_skip() argument
1337 && h->slice_table[mba_xy] == sl->slice_num in decode_cabac_mb_skip()
1338 && MB_FIELD(sl) == !!IS_INTERLACED( h->cur_pic.mb_type[mba_xy] ) ) in decode_cabac_mb_skip()
1340 if (MB_FIELD(sl)) { in decode_cabac_mb_skip()
1343 && h->slice_table[mbb_xy] == sl->slice_num in decode_cabac_mb_skip()
1349 int mb_xy = sl->mb_xy; in decode_cabac_mb_skip()
1354 if( h->slice_table[mba_xy] == sl->slice_num && !IS_SKIP(h->cur_pic.mb_type[mba_xy] )) in decode_cabac_mb_skip()
1356 if( h->slice_table[mbb_xy] == sl->slice_num && !IS_SKIP(h->cur_pic.mb_type[mbb_xy] )) in decode_cabac_mb_skip()
1359 if (sl->slice_type_nos == AV_PICTURE_TYPE_B) in decode_cabac_mb_skip()
1361 return get_cabac_noinline( &sl->cabac, &sl->cabac_state[11+ctx] ); in decode_cabac_mb_skip()
1364 static int decode_cabac_mb_intra4x4_pred_mode(H264SliceContext *sl, int pred_mode) in decode_cabac_mb_intra4x4_pred_mode() argument
1368 if( get_cabac( &sl->cabac, &sl->cabac_state[68] ) ) in decode_cabac_mb_intra4x4_pred_mode()
1371 mode += 1 * get_cabac( &sl->cabac, &sl->cabac_state[69] ); in decode_cabac_mb_intra4x4_pred_mode()
1372 mode += 2 * get_cabac( &sl->cabac, &sl->cabac_state[69] ); in decode_cabac_mb_intra4x4_pred_mode()
1373 mode += 4 * get_cabac( &sl->cabac, &sl->cabac_state[69] ); in decode_cabac_mb_intra4x4_pred_mode()
1378 static int decode_cabac_mb_chroma_pre_mode(const H264Context *h, H264SliceContext *sl) in decode_cabac_mb_chroma_pre_mode() argument
1380 const int mba_xy = sl->left_mb_xy[0]; in decode_cabac_mb_chroma_pre_mode()
1381 const int mbb_xy = sl->top_mb_xy; in decode_cabac_mb_chroma_pre_mode()
1386 if (sl->left_type[LTOP] && h->chroma_pred_mode_table[mba_xy] != 0) in decode_cabac_mb_chroma_pre_mode()
1389 if (sl->top_type && h->chroma_pred_mode_table[mbb_xy] != 0) in decode_cabac_mb_chroma_pre_mode()
1392 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[64+ctx] ) == 0 ) in decode_cabac_mb_chroma_pre_mode()
1395 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[64+3] ) == 0 ) in decode_cabac_mb_chroma_pre_mode()
1397 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[64+3] ) == 0 ) in decode_cabac_mb_chroma_pre_mode()
1403 static int decode_cabac_mb_cbp_luma(H264SliceContext *sl) in decode_cabac_mb_cbp_luma() argument
1407 cbp_a = sl->left_cbp; in decode_cabac_mb_cbp_luma()
1408 cbp_b = sl->top_cbp; in decode_cabac_mb_cbp_luma()
1411 cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]); in decode_cabac_mb_cbp_luma()
1413 cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]) << 1; in decode_cabac_mb_cbp_luma()
1415 cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]) << 2; in decode_cabac_mb_cbp_luma()
1417 cbp += get_cabac_noinline(&sl->cabac, &sl->cabac_state[73 + ctx]) << 3; in decode_cabac_mb_cbp_luma()
1420 static int decode_cabac_mb_cbp_chroma(H264SliceContext *sl) in decode_cabac_mb_cbp_chroma() argument
1425 cbp_a = (sl->left_cbp>>4)&0x03; in decode_cabac_mb_cbp_chroma()
1426 cbp_b = (sl-> top_cbp>>4)&0x03; in decode_cabac_mb_cbp_chroma()
1431 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[77 + ctx] ) == 0 ) in decode_cabac_mb_cbp_chroma()
1437 return 1 + get_cabac_noinline( &sl->cabac, &sl->cabac_state[77 + ctx] ); in decode_cabac_mb_cbp_chroma()
1440 static int decode_cabac_p_mb_sub_type(H264SliceContext *sl) in decode_cabac_p_mb_sub_type() argument
1442 if( get_cabac( &sl->cabac, &sl->cabac_state[21] ) ) in decode_cabac_p_mb_sub_type()
1444 if( !get_cabac( &sl->cabac, &sl->cabac_state[22] ) ) in decode_cabac_p_mb_sub_type()
1446 if( get_cabac( &sl->cabac, &sl->cabac_state[23] ) ) in decode_cabac_p_mb_sub_type()
1450 static int decode_cabac_b_mb_sub_type(H264SliceContext *sl) in decode_cabac_b_mb_sub_type() argument
1453 if( !get_cabac( &sl->cabac, &sl->cabac_state[36] ) ) in decode_cabac_b_mb_sub_type()
1455 if( !get_cabac( &sl->cabac, &sl->cabac_state[37] ) ) in decode_cabac_b_mb_sub_type()
1456 return 1 + get_cabac( &sl->cabac, &sl->cabac_state[39] ); /* B_L0_8x8, B_L1_8x8 */ in decode_cabac_b_mb_sub_type()
1458 if( get_cabac( &sl->cabac, &sl->cabac_state[38] ) ) { in decode_cabac_b_mb_sub_type()
1459 if( get_cabac( &sl->cabac, &sl->cabac_state[39] ) ) in decode_cabac_b_mb_sub_type()
1460 return 11 + get_cabac( &sl->cabac, &sl->cabac_state[39] ); /* B_L1_4x4, B_Bi_4x4 */ in decode_cabac_b_mb_sub_type()
1463 type += 2*get_cabac( &sl->cabac, &sl->cabac_state[39] ); in decode_cabac_b_mb_sub_type()
1464 type += get_cabac( &sl->cabac, &sl->cabac_state[39] ); in decode_cabac_b_mb_sub_type()
1468 static int decode_cabac_mb_ref(H264SliceContext *sl, int list, int n) in decode_cabac_mb_ref() argument
1470 int refa = sl->ref_cache[list][scan8[n] - 1]; in decode_cabac_mb_ref()
1471 int refb = sl->ref_cache[list][scan8[n] - 8]; in decode_cabac_mb_ref()
1475 if (sl->slice_type_nos == AV_PICTURE_TYPE_B) { in decode_cabac_mb_ref()
1476 if( refa > 0 && !(sl->direct_cache[scan8[n] - 1]&(MB_TYPE_DIRECT2>>1)) ) in decode_cabac_mb_ref()
1478 if( refb > 0 && !(sl->direct_cache[scan8[n] - 8]&(MB_TYPE_DIRECT2>>1)) ) in decode_cabac_mb_ref()
1487 while( get_cabac( &sl->cabac, &sl->cabac_state[54+ctx] ) ) { in decode_cabac_mb_ref()
1497 static int decode_cabac_mb_mvd(H264SliceContext *sl, int ctxbase, int amvd, int *mvda) in decode_cabac_mb_mvd() argument
1501 …if(!get_cabac(&sl->cabac, &sl->cabac_state[ctxbase+((amvd-3)>>(INT_BIT-1))+((amvd-33)>>(INT_BIT-1)… in decode_cabac_mb_mvd()
1509 while( mvd < 9 && get_cabac( &sl->cabac, &sl->cabac_state[ctxbase] ) ) { in decode_cabac_mb_mvd()
1517 while( get_cabac_bypass( &sl->cabac ) ) { in decode_cabac_mb_mvd()
1521 av_log(sl->h264->avctx, AV_LOG_ERROR, "overflow in decode_cabac_mb_mvd\n"); in decode_cabac_mb_mvd()
1526 mvd += get_cabac_bypass( &sl->cabac )<<k; in decode_cabac_mb_mvd()
1531 return get_cabac_bypass_sign( &sl->cabac, -mvd ); in decode_cabac_mb_mvd()
1534 #define DECODE_CABAC_MB_MVD(sl, list, n )\ argument
1536 int amvd0 = sl->mvd_cache[list][scan8[n] - 1][0] +\
1537 sl->mvd_cache[list][scan8[n] - 8][0];\
1538 int amvd1 = sl->mvd_cache[list][scan8[n] - 1][1] +\
1539 sl->mvd_cache[list][scan8[n] - 8][1];\
1541 int mxd = decode_cabac_mb_mvd(sl, 40, amvd0, &mpx);\
1542 int myd = decode_cabac_mb_mvd(sl, 47, amvd1, &mpy);\
1549 static av_always_inline int get_cabac_cbf_ctx(H264SliceContext *sl, in get_cabac_cbf_ctx() argument
1560 nza = (sl->left_cbp>>(6+idx))&0x01; in get_cabac_cbf_ctx()
1561 nzb = (sl-> top_cbp>>(6+idx))&0x01; in get_cabac_cbf_ctx()
1564 nza = sl->left_cbp&(0x100<<idx); in get_cabac_cbf_ctx()
1565 nzb = sl-> top_cbp&(0x100<<idx); in get_cabac_cbf_ctx()
1568 nza = sl->non_zero_count_cache[scan8[idx] - 1]; in get_cabac_cbf_ctx()
1569 nzb = sl->non_zero_count_cache[scan8[idx] - 8]; in get_cabac_cbf_ctx()
1582 decode_cabac_residual_internal(const H264Context *h, H264SliceContext *sl, in decode_cabac_residual_internal() argument
1642 cc.range = sl->cabac.range; in decode_cabac_residual_internal()
1643 cc.low = sl->cabac.low; in decode_cabac_residual_internal()
1644 cc.bytestream= sl->cabac.bytestream; in decode_cabac_residual_internal()
1646 cc.bytestream_end = sl->cabac.bytestream_end; in decode_cabac_residual_internal()
1649 #define CC &sl->cabac in decode_cabac_residual_internal()
1652 significant_coeff_ctx_base = sl->cabac_state in decode_cabac_residual_internal()
1653 + significant_coeff_flag_offset[MB_FIELD(sl)][cat]; in decode_cabac_residual_internal()
1654 last_coeff_ctx_base = sl->cabac_state in decode_cabac_residual_internal()
1655 + last_coeff_flag_offset[MB_FIELD(sl)][cat]; in decode_cabac_residual_internal()
1656 abs_level_m1_ctx_base = sl->cabac_state in decode_cabac_residual_internal()
1675 const uint8_t *sig_off = significant_coeff_flag_offset_8x8[MB_FIELD(sl)]; in decode_cabac_residual_internal()
1700 h->cbp_table[sl->mb_xy] |= 0x40 << (n - CHROMA_DC_BLOCK_INDEX); in decode_cabac_residual_internal()
1702 h->cbp_table[sl->mb_xy] |= 0x100 << (n - LUMA_DC_BLOCK_INDEX); in decode_cabac_residual_internal()
1703 sl->non_zero_count_cache[scan8[n]] = coeff_count; in decode_cabac_residual_internal()
1706 fill_rectangle(&sl->non_zero_count_cache[scan8[n]], 2, 2, 8, coeff_count, 1); in decode_cabac_residual_internal()
1709 sl->non_zero_count_cache[scan8[n]] = coeff_count; in decode_cabac_residual_internal()
1762 sl->cabac.range = cc.range ; in decode_cabac_residual_internal()
1763 sl->cabac.low = cc.low ; in decode_cabac_residual_internal()
1764 sl->cabac.bytestream= cc.bytestream; in decode_cabac_residual_internal()
1770 H264SliceContext *sl, in decode_cabac_residual_dc_internal() argument
1776 decode_cabac_residual_internal(h, sl, block, cat, n, scantable, NULL, max_coeff, 1, 0); in decode_cabac_residual_dc_internal()
1780 H264SliceContext *sl, in decode_cabac_residual_dc_internal_422() argument
1786 decode_cabac_residual_internal(h, sl, block, cat, n, scantable, NULL, max_coeff, 1, 1); in decode_cabac_residual_dc_internal_422()
1790 H264SliceContext *sl, in decode_cabac_residual_nondc_internal() argument
1797 decode_cabac_residual_internal(h, sl, block, cat, n, scantable, qmul, max_coeff, 0, 0); in decode_cabac_residual_nondc_internal()
1813 H264SliceContext *sl, in decode_cabac_residual_dc() argument
1820 … if( get_cabac( &sl->cabac, &sl->cabac_state[get_cabac_cbf_ctx(sl, cat, n, max_coeff, 1)]) == 0 ) { in decode_cabac_residual_dc()
1821 sl->non_zero_count_cache[scan8[n]] = 0; in decode_cabac_residual_dc()
1824 decode_cabac_residual_dc_internal(h, sl, block, cat, n, scantable, max_coeff); in decode_cabac_residual_dc()
1828 decode_cabac_residual_dc_422(const H264Context *h, H264SliceContext *sl, in decode_cabac_residual_dc_422() argument
1834 if (get_cabac(&sl->cabac, &sl->cabac_state[get_cabac_cbf_ctx(sl, cat, n, max_coeff, 1)]) == 0) { in decode_cabac_residual_dc_422()
1835 sl->non_zero_count_cache[scan8[n]] = 0; in decode_cabac_residual_dc_422()
1838 decode_cabac_residual_dc_internal_422(h, sl, block, cat, n, scantable, max_coeff); in decode_cabac_residual_dc_422()
1842 H264SliceContext *sl, in decode_cabac_residual_nondc() argument
1850 …if( (cat != 5 || CHROMA444(h)) && get_cabac( &sl->cabac, &sl->cabac_state[get_cabac_cbf_ctx(sl, ca… in decode_cabac_residual_nondc()
1852 fill_rectangle(&sl->non_zero_count_cache[scan8[n]], 2, 2, 8, 0, 1); in decode_cabac_residual_nondc()
1854 sl->non_zero_count_cache[scan8[n]] = 0; in decode_cabac_residual_nondc()
1858 decode_cabac_residual_nondc_internal(h, sl, block, cat, n, scantable, qmul, max_coeff); in decode_cabac_residual_nondc()
1861 static av_always_inline void decode_cabac_luma_residual(const H264Context *h, H264SliceContext *sl, in decode_cabac_luma_residual() argument
1868 int qscale = p == 0 ? sl->qscale : sl->chroma_qp[p - 1]; in decode_cabac_luma_residual()
1870 AV_ZERO128(sl->mb_luma_dc[p]+0); in decode_cabac_luma_residual()
1871 AV_ZERO128(sl->mb_luma_dc[p]+8); in decode_cabac_luma_residual()
1872 AV_ZERO128(sl->mb_luma_dc[p]+16); in decode_cabac_luma_residual()
1873 AV_ZERO128(sl->mb_luma_dc[p]+24); in decode_cabac_luma_residual()
1874 …decode_cabac_residual_dc(h, sl, sl->mb_luma_dc[p], ctx_cat[0][p], LUMA_DC_BLOCK_INDEX+p, scan, 16); in decode_cabac_luma_residual()
1880 …decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), ctx_cat[1][p], index, scan … in decode_cabac_luma_residual()
1883 fill_rectangle(&sl->non_zero_count_cache[scan8[16*p]], 4, 4, 8, 0, 1); in decode_cabac_luma_residual()
1891 … decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), ctx_cat[3][p], index, in decode_cabac_luma_residual()
1897 …decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), ctx_cat[2][p], index, scan,… in decode_cabac_luma_residual()
1901 fill_rectangle(&sl->non_zero_count_cache[scan8[4*i8x8+16*p]], 2, 2, 8, 0, 1); in decode_cabac_luma_residual()
1911 int ff_h264_decode_mb_cabac(const H264Context *h, H264SliceContext *sl) in ff_h264_decode_mb_cabac() argument
1920 mb_xy = sl->mb_xy = sl->mb_x + sl->mb_y*h->mb_stride; in ff_h264_decode_mb_cabac()
1922 ff_tlog(h->avctx, "pic:%d mb:%d/%d\n", h->poc.frame_num, sl->mb_x, sl->mb_y); in ff_h264_decode_mb_cabac()
1923 if (sl->slice_type_nos != AV_PICTURE_TYPE_I) { in ff_h264_decode_mb_cabac()
1926 if (FRAME_MBAFF(h) && (sl->mb_y & 1) == 1 && sl->prev_mb_skipped) in ff_h264_decode_mb_cabac()
1927 skip = sl->next_mb_skipped; in ff_h264_decode_mb_cabac()
1929 skip = decode_cabac_mb_skip(h, sl, sl->mb_x, sl->mb_y ); in ff_h264_decode_mb_cabac()
1932 if (FRAME_MBAFF(h) && (sl->mb_y & 1) == 0) { in ff_h264_decode_mb_cabac()
1934 sl->next_mb_skipped = decode_cabac_mb_skip(h, sl, sl->mb_x, sl->mb_y+1 ); in ff_h264_decode_mb_cabac()
1935 if(!sl->next_mb_skipped) in ff_h264_decode_mb_cabac()
1936 … sl->mb_mbaff = sl->mb_field_decoding_flag = decode_cabac_field_decoding_flag(h, sl); in ff_h264_decode_mb_cabac()
1939 decode_mb_skip(h, sl); in ff_h264_decode_mb_cabac()
1943 sl->last_qscale_diff = 0; in ff_h264_decode_mb_cabac()
1950 if ((sl->mb_y & 1) == 0) in ff_h264_decode_mb_cabac()
1951 sl->mb_mbaff = in ff_h264_decode_mb_cabac()
1952 sl->mb_field_decoding_flag = decode_cabac_field_decoding_flag(h, sl); in ff_h264_decode_mb_cabac()
1955 sl->prev_mb_skipped = 0; in ff_h264_decode_mb_cabac()
1957 fill_decode_neighbors(h, sl, -(MB_FIELD(sl))); in ff_h264_decode_mb_cabac()
1959 if (sl->slice_type_nos == AV_PICTURE_TYPE_B) { in ff_h264_decode_mb_cabac()
1961 av_assert2(sl->slice_type_nos == AV_PICTURE_TYPE_B); in ff_h264_decode_mb_cabac()
1963 if (!IS_DIRECT(sl->left_type[LTOP] - 1)) in ff_h264_decode_mb_cabac()
1965 if (!IS_DIRECT(sl->top_type - 1)) in ff_h264_decode_mb_cabac()
1968 if( !get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+ctx] ) ){ in ff_h264_decode_mb_cabac()
1970 }else if( !get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+3] ) ) { in ff_h264_decode_mb_cabac()
1971 … mb_type= 1 + get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ); /* B_L[01]_16x16 */ in ff_h264_decode_mb_cabac()
1974 bits = get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+4] ) << 3; in ff_h264_decode_mb_cabac()
1975 bits+= get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ) << 2; in ff_h264_decode_mb_cabac()
1976 bits+= get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ) << 1; in ff_h264_decode_mb_cabac()
1977 bits+= get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ); in ff_h264_decode_mb_cabac()
1981 mb_type = decode_cabac_intra_mb_type(sl, 32, 0); in ff_h264_decode_mb_cabac()
1988 bits= ( bits<<1 ) + get_cabac_noinline( &sl->cabac, &sl->cabac_state[27+5] ); in ff_h264_decode_mb_cabac()
1994 } else if (sl->slice_type_nos == AV_PICTURE_TYPE_P) { in ff_h264_decode_mb_cabac()
1995 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[14] ) == 0 ) { in ff_h264_decode_mb_cabac()
1997 if( get_cabac_noinline( &sl->cabac, &sl->cabac_state[15] ) == 0 ) { in ff_h264_decode_mb_cabac()
1999 mb_type= 3 * get_cabac_noinline( &sl->cabac, &sl->cabac_state[16] ); in ff_h264_decode_mb_cabac()
2002 mb_type= 2 - get_cabac_noinline( &sl->cabac, &sl->cabac_state[17] ); in ff_h264_decode_mb_cabac()
2007 mb_type = decode_cabac_intra_mb_type(sl, 17, 0); in ff_h264_decode_mb_cabac()
2011 mb_type = decode_cabac_intra_mb_type(sl, 3, 1); in ff_h264_decode_mb_cabac()
2012 if (sl->slice_type == AV_PICTURE_TYPE_SI && mb_type) in ff_h264_decode_mb_cabac()
2014 av_assert2(sl->slice_type_nos == AV_PICTURE_TYPE_I); in ff_h264_decode_mb_cabac()
2018 sl->intra16x16_pred_mode = ff_h264_i_mb_type_info[mb_type].pred_mode; in ff_h264_decode_mb_cabac()
2021 if (MB_FIELD(sl)) in ff_h264_decode_mb_cabac()
2024 h->slice_table[mb_xy] = sl->slice_num; in ff_h264_decode_mb_cabac()
2035 ptr= sl->cabac.bytestream; in ff_h264_decode_mb_cabac()
2036 if(sl->cabac.low&0x1) ptr--; in ff_h264_decode_mb_cabac()
2038 if(sl->cabac.low&0x1FF) ptr--; in ff_h264_decode_mb_cabac()
2042 if ((int) (sl->cabac.bytestream_end - ptr) < mb_size) in ff_h264_decode_mb_cabac()
2044 sl->intra_pcm_ptr = ptr; in ff_h264_decode_mb_cabac()
2047 ret = ff_init_cabac_decoder(&sl->cabac, ptr, sl->cabac.bytestream_end - ptr); in ff_h264_decode_mb_cabac()
2059 sl->last_qscale_diff = 0; in ff_h264_decode_mb_cabac()
2063 fill_decode_caches(h, sl, mb_type); in ff_h264_decode_mb_cabac()
2068 …if (dct8x8_allowed && get_cabac_noinline(&sl->cabac, &sl->cabac_state[399 + sl->neighbor_transform… in ff_h264_decode_mb_cabac()
2071 int pred = pred_intra_mode(h, sl, i); in ff_h264_decode_mb_cabac()
2072 int mode = decode_cabac_mb_intra4x4_pred_mode(sl, pred); in ff_h264_decode_mb_cabac()
2073 fill_rectangle(&sl->intra4x4_pred_mode_cache[scan8[i]], 2, 2, 8, mode, 1); in ff_h264_decode_mb_cabac()
2077 int pred = pred_intra_mode(h, sl, i); in ff_h264_decode_mb_cabac()
2078 … sl->intra4x4_pred_mode_cache[scan8[i]] = decode_cabac_mb_intra4x4_pred_mode(sl, pred); in ff_h264_decode_mb_cabac()
2081 sl->intra4x4_pred_mode_cache[scan8[i]]); in ff_h264_decode_mb_cabac()
2084 write_back_intra_pred_mode(h, sl); in ff_h264_decode_mb_cabac()
2085 if (ff_h264_check_intra4x4_pred_mode(sl->intra4x4_pred_mode_cache, h->avctx, in ff_h264_decode_mb_cabac()
2086 … sl->top_samples_available, sl->left_samples_available) < 0 ) in ff_h264_decode_mb_cabac()
2089 … sl->intra16x16_pred_mode = ff_h264_check_intra_pred_mode(h->avctx, sl->top_samples_available, in ff_h264_decode_mb_cabac()
2090 … sl->left_samples_available, sl->intra16x16_pred_mode, 0); in ff_h264_decode_mb_cabac()
2091 if (sl->intra16x16_pred_mode < 0) return -1; in ff_h264_decode_mb_cabac()
2095 pred_mode = decode_cabac_mb_chroma_pre_mode(h, sl); in ff_h264_decode_mb_cabac()
2097 pred_mode= ff_h264_check_intra_pred_mode(h->avctx, sl->top_samples_available, in ff_h264_decode_mb_cabac()
2098 sl->left_samples_available, pred_mode, 1 ); in ff_h264_decode_mb_cabac()
2100 sl->chroma_pred_mode = pred_mode; in ff_h264_decode_mb_cabac()
2102 sl->chroma_pred_mode = DC_128_PRED8x8; in ff_h264_decode_mb_cabac()
2107 if (sl->slice_type_nos == AV_PICTURE_TYPE_B ) { in ff_h264_decode_mb_cabac()
2109 sl->sub_mb_type[i] = decode_cabac_b_mb_sub_type(sl); in ff_h264_decode_mb_cabac()
2110 … sub_partition_count[i] = ff_h264_b_sub_mb_type_info[sl->sub_mb_type[i]].partition_count; in ff_h264_decode_mb_cabac()
2111 sl->sub_mb_type[i] = ff_h264_b_sub_mb_type_info[sl->sub_mb_type[i]].type; in ff_h264_decode_mb_cabac()
2113 if (IS_DIRECT(sl->sub_mb_type[0] | sl->sub_mb_type[1] | in ff_h264_decode_mb_cabac()
2114 sl->sub_mb_type[2] | sl->sub_mb_type[3])) { in ff_h264_decode_mb_cabac()
2115 ff_h264_pred_direct_motion(h, sl, &mb_type); in ff_h264_decode_mb_cabac()
2116 sl->ref_cache[0][scan8[4]] = in ff_h264_decode_mb_cabac()
2117 sl->ref_cache[1][scan8[4]] = in ff_h264_decode_mb_cabac()
2118 sl->ref_cache[0][scan8[12]] = in ff_h264_decode_mb_cabac()
2119 sl->ref_cache[1][scan8[12]] = PART_NOT_AVAILABLE; in ff_h264_decode_mb_cabac()
2121 … fill_rectangle(&sl->direct_cache[scan8[4*i]], 2, 2, 8, (sl->sub_mb_type[i] >> 1) & 0xFF, 1); in ff_h264_decode_mb_cabac()
2125 sl->sub_mb_type[i] = decode_cabac_p_mb_sub_type(sl); in ff_h264_decode_mb_cabac()
2126 … sub_partition_count[i] = ff_h264_p_sub_mb_type_info[sl->sub_mb_type[i]].partition_count; in ff_h264_decode_mb_cabac()
2127 sl->sub_mb_type[i] = ff_h264_p_sub_mb_type_info[sl->sub_mb_type[i]].type; in ff_h264_decode_mb_cabac()
2131 for( list = 0; list < sl->list_count; list++ ) { in ff_h264_decode_mb_cabac()
2133 if(IS_DIRECT(sl->sub_mb_type[i])) continue; in ff_h264_decode_mb_cabac()
2134 if(IS_DIR(sl->sub_mb_type[i], 0, list)){ in ff_h264_decode_mb_cabac()
2135 unsigned rc = sl->ref_count[list] << MB_MBAFF(sl); in ff_h264_decode_mb_cabac()
2137 ref[list][i] = decode_cabac_mb_ref(sl, list, 4 * i); in ff_h264_decode_mb_cabac()
2147 sl->ref_cache[list][scan8[4 * i] + 1] = in ff_h264_decode_mb_cabac()
2148 … sl->ref_cache[list][scan8[4 * i] + 8] = sl->ref_cache[list][scan8[4 * i] + 9] = ref[list][i]; in ff_h264_decode_mb_cabac()
2153 dct8x8_allowed = get_dct8x8_allowed(h, sl); in ff_h264_decode_mb_cabac()
2155 for (list = 0; list < sl->list_count; list++) { in ff_h264_decode_mb_cabac()
2157 sl->ref_cache[list][scan8[4 * i]] = sl->ref_cache[list][scan8[4 * i] + 1]; in ff_h264_decode_mb_cabac()
2158 if(IS_DIRECT(sl->sub_mb_type[i])){ in ff_h264_decode_mb_cabac()
2159 fill_rectangle(sl->mvd_cache[list][scan8[4*i]], 2, 2, 8, 0, 2); in ff_h264_decode_mb_cabac()
2163 if(IS_DIR(sl->sub_mb_type[i], 0, list) && !IS_DIRECT(sl->sub_mb_type[i])){ in ff_h264_decode_mb_cabac()
2164 const int sub_mb_type= sl->sub_mb_type[i]; in ff_h264_decode_mb_cabac()
2170 int16_t (* mv_cache)[2] = &sl->mv_cache[list][ scan8[index] ]; in ff_h264_decode_mb_cabac()
2171 uint8_t (* mvd_cache)[2]= &sl->mvd_cache[list][ scan8[index] ]; in ff_h264_decode_mb_cabac()
2172 … pred_motion(h, sl, index, block_width, list, sl->ref_cache[list][ scan8[index] ], &mx, &my); in ff_h264_decode_mb_cabac()
2173 DECODE_CABAC_MB_MVD(sl, list, index) in ff_h264_decode_mb_cabac()
2206 fill_rectangle(sl->mv_cache [list][ scan8[4*i] ], 2, 2, 8, 0, 4); in ff_h264_decode_mb_cabac()
2207 fill_rectangle(sl->mvd_cache[list][ scan8[4*i] ], 2, 2, 8, 0, 2); in ff_h264_decode_mb_cabac()
2212 ff_h264_pred_direct_motion(h, sl, &mb_type); in ff_h264_decode_mb_cabac()
2213 fill_rectangle(sl->mvd_cache[0][scan8[0]], 4, 4, 8, 0, 2); in ff_h264_decode_mb_cabac()
2214 fill_rectangle(sl->mvd_cache[1][scan8[0]], 4, 4, 8, 0, 2); in ff_h264_decode_mb_cabac()
2219 for (list = 0; list < sl->list_count; list++) { in ff_h264_decode_mb_cabac()
2222 unsigned rc = sl->ref_count[list] << MB_MBAFF(sl); in ff_h264_decode_mb_cabac()
2224 ref= decode_cabac_mb_ref(sl, list, 0); in ff_h264_decode_mb_cabac()
2231 fill_rectangle(&sl->ref_cache[list][ scan8[0] ], 4, 4, 8, ref, 1); in ff_h264_decode_mb_cabac()
2234 for (list = 0; list < sl->list_count; list++) { in ff_h264_decode_mb_cabac()
2237 pred_motion(h, sl, 0, 4, list, sl->ref_cache[list][ scan8[0] ], &mx, &my); in ff_h264_decode_mb_cabac()
2238 DECODE_CABAC_MB_MVD(sl, list, 0) in ff_h264_decode_mb_cabac()
2241 fill_rectangle(sl->mvd_cache[list][ scan8[0] ], 4, 4, 8, pack8to16(mpx,mpy), 2); in ff_h264_decode_mb_cabac()
2242 fill_rectangle(sl->mv_cache[list][ scan8[0] ], 4, 4, 8, pack16to32(mx,my), 4); in ff_h264_decode_mb_cabac()
2247 for (list = 0; list < sl->list_count; list++) { in ff_h264_decode_mb_cabac()
2251 unsigned rc = sl->ref_count[list] << MB_MBAFF(sl); in ff_h264_decode_mb_cabac()
2253 ref= decode_cabac_mb_ref(sl, list, 8 * i); in ff_h264_decode_mb_cabac()
2260 … fill_rectangle(&sl->ref_cache[list][ scan8[0] + 16*i ], 4, 2, 8, ref, 1); in ff_h264_decode_mb_cabac()
2262 … fill_rectangle(&sl->ref_cache[list][ scan8[0] + 16*i ], 4, 2, 8, (LIST_NOT_USED&0xFF), 1); in ff_h264_decode_mb_cabac()
2265 for (list = 0; list < sl->list_count; list++) { in ff_h264_decode_mb_cabac()
2269 … pred_16x8_motion(h, sl, 8*i, list, sl->ref_cache[list][scan8[0] + 16*i], &mx, &my); in ff_h264_decode_mb_cabac()
2270 DECODE_CABAC_MB_MVD(sl, list, 8*i) in ff_h264_decode_mb_cabac()
2273 … fill_rectangle(sl->mvd_cache[list][ scan8[0] + 16*i ], 4, 2, 8, pack8to16(mpx,mpy), 2); in ff_h264_decode_mb_cabac()
2274 … fill_rectangle(sl->mv_cache[list][ scan8[0] + 16*i ], 4, 2, 8, pack16to32(mx,my), 4); in ff_h264_decode_mb_cabac()
2276 fill_rectangle(sl->mvd_cache[list][ scan8[0] + 16*i ], 4, 2, 8, 0, 2); in ff_h264_decode_mb_cabac()
2277 fill_rectangle(sl->mv_cache[list][ scan8[0] + 16*i ], 4, 2, 8, 0, 4); in ff_h264_decode_mb_cabac()
2283 for (list = 0; list < sl->list_count; list++) { in ff_h264_decode_mb_cabac()
2287 unsigned rc = sl->ref_count[list] << MB_MBAFF(sl); in ff_h264_decode_mb_cabac()
2289 ref = decode_cabac_mb_ref(sl, list, 4 * i); in ff_h264_decode_mb_cabac()
2296 fill_rectangle(&sl->ref_cache[list][ scan8[0] + 2*i ], 2, 4, 8, ref, 1); in ff_h264_decode_mb_cabac()
2298 … fill_rectangle(&sl->ref_cache[list][ scan8[0] + 2*i ], 2, 4, 8, (LIST_NOT_USED&0xFF), 1); in ff_h264_decode_mb_cabac()
2301 for (list = 0; list < sl->list_count; list++) { in ff_h264_decode_mb_cabac()
2305 … pred_8x16_motion(h, sl, i*4, list, sl->ref_cache[list][ scan8[0] + 2*i ], &mx, &my); in ff_h264_decode_mb_cabac()
2306 DECODE_CABAC_MB_MVD(sl, list, 4*i) in ff_h264_decode_mb_cabac()
2309 … fill_rectangle(sl->mvd_cache[list][ scan8[0] + 2*i ], 2, 4, 8, pack8to16(mpx,mpy), 2); in ff_h264_decode_mb_cabac()
2310 … fill_rectangle(sl->mv_cache[list][ scan8[0] + 2*i ], 2, 4, 8, pack16to32(mx,my), 4); in ff_h264_decode_mb_cabac()
2312 fill_rectangle(sl->mvd_cache[list][ scan8[0] + 2*i ], 2, 4, 8, 0, 2); in ff_h264_decode_mb_cabac()
2313 fill_rectangle(sl->mv_cache[list][ scan8[0] + 2*i ], 2, 4, 8, 0, 4); in ff_h264_decode_mb_cabac()
2322 write_back_motion(h, sl, mb_type); in ff_h264_decode_mb_cabac()
2326 cbp = decode_cabac_mb_cbp_luma(sl); in ff_h264_decode_mb_cabac()
2328 cbp |= decode_cabac_mb_cbp_chroma(sl) << 4; in ff_h264_decode_mb_cabac()
2336 h->cbp_table[mb_xy] = sl->cbp = cbp; in ff_h264_decode_mb_cabac()
2339 …mb_type |= MB_TYPE_8x8DCT * get_cabac_noinline(&sl->cabac, &sl->cabac_state[399 + sl->neighbor_tra… in ff_h264_decode_mb_cabac()
2346 uint8_t *nnz_cache = sl->non_zero_count_cache; in ff_h264_decode_mb_cabac()
2349 if (sl->left_type[LEFT(i)] && !IS_8x8DCT(sl->left_type[LEFT(i)])) { in ff_h264_decode_mb_cabac()
2358 if (sl->top_type && !IS_8x8DCT(sl->top_type)){ in ff_h264_decode_mb_cabac()
2366 if (sl->left_type[LEFT(i)] && !IS_8x8DCT(sl->left_type[LEFT(i)])) { in ff_h264_decode_mb_cabac()
2372 nnz_cache[3+8*12 + 2*8*i]= !IS_INTRA_PCM(sl->left_type[LEFT(i)]) ? 0 : 64; in ff_h264_decode_mb_cabac()
2375 if (sl->top_type && !IS_8x8DCT(sl->top_type)){ in ff_h264_decode_mb_cabac()
2376 uint32_t top_empty = !IS_INTRA_PCM(sl->top_type) ? 0 : 0x40404040; in ff_h264_decode_mb_cabac()
2390 if(get_cabac_noinline( &sl->cabac, &sl->cabac_state[60 + (sl->last_qscale_diff != 0)])){ in ff_h264_decode_mb_cabac()
2395 while( get_cabac_noinline( &sl->cabac, &sl->cabac_state[60 + ctx] ) ) { in ff_h264_decode_mb_cabac()
2399 …v_log(h->avctx, AV_LOG_ERROR, "cabac decode of qscale diff failed at %d %d\n", sl->mb_x, sl->mb_y); in ff_h264_decode_mb_cabac()
2408 sl->last_qscale_diff = val; in ff_h264_decode_mb_cabac()
2409 sl->qscale += val; in ff_h264_decode_mb_cabac()
2410 if (((unsigned)sl->qscale) > max_qp){ in ff_h264_decode_mb_cabac()
2411 if (sl->qscale < 0) sl->qscale += max_qp + 1; in ff_h264_decode_mb_cabac()
2412 else sl->qscale -= max_qp + 1; in ff_h264_decode_mb_cabac()
2414 sl->chroma_qp[0] = get_chroma_qp(h->ps.pps, 0, sl->qscale); in ff_h264_decode_mb_cabac()
2415 sl->chroma_qp[1] = get_chroma_qp(h->ps.pps, 1, sl->qscale); in ff_h264_decode_mb_cabac()
2417 sl->last_qscale_diff=0; in ff_h264_decode_mb_cabac()
2420 scan8x8 = sl->qscale ? h->field_scan8x8 : h->field_scan8x8_q0; in ff_h264_decode_mb_cabac()
2421 scan = sl->qscale ? h->field_scan : h->field_scan_q0; in ff_h264_decode_mb_cabac()
2423 scan8x8 = sl->qscale ? h->zigzag_scan8x8 : h->zigzag_scan8x8_q0; in ff_h264_decode_mb_cabac()
2424 scan = sl->qscale ? h->zigzag_scan : h->zigzag_scan_q0; in ff_h264_decode_mb_cabac()
2427 decode_cabac_luma_residual(h, sl, scan, scan8x8, pixel_shift, mb_type, cbp, 0); in ff_h264_decode_mb_cabac()
2429 decode_cabac_luma_residual(h, sl, scan, scan8x8, pixel_shift, mb_type, cbp, 1); in ff_h264_decode_mb_cabac()
2430 decode_cabac_luma_residual(h, sl, scan, scan8x8, pixel_shift, mb_type, cbp, 2); in ff_h264_decode_mb_cabac()
2435 … decode_cabac_residual_dc_422(h, sl, sl->mb + ((256 + 16*16*c) << pixel_shift), 3, in ff_h264_decode_mb_cabac()
2443 int16_t *mb = sl->mb + (16*(16 + 16*c) << pixel_shift); in ff_h264_decode_mb_cabac()
2444 … qmul = h->ps.pps->dequant4_coeff[c+1+(IS_INTRA( mb_type ) ? 0:3)][sl->chroma_qp[c]]; in ff_h264_decode_mb_cabac()
2448 decode_cabac_residual_nondc(h, sl, mb, 4, index, scan + 1, qmul, 15); in ff_h264_decode_mb_cabac()
2454 fill_rectangle(&sl->non_zero_count_cache[scan8[16]], 4, 4, 8, 0, 1); in ff_h264_decode_mb_cabac()
2455 fill_rectangle(&sl->non_zero_count_cache[scan8[32]], 4, 4, 8, 0, 1); in ff_h264_decode_mb_cabac()
2461 decode_cabac_residual_dc(h, sl, sl->mb + ((256 + 16 * 16 * c) << pixel_shift), in ff_h264_decode_mb_cabac()
2468 … qmul = h->ps.pps->dequant4_coeff[c+1+(IS_INTRA( mb_type ) ? 0:3)][sl->chroma_qp[c]]; in ff_h264_decode_mb_cabac()
2471 …decode_cabac_residual_nondc(h, sl, sl->mb + (16*index << pixel_shift), 4, index, scan + 1, qmul, 1… in ff_h264_decode_mb_cabac()
2475 fill_rectangle(&sl->non_zero_count_cache[scan8[16]], 4, 4, 8, 0, 1); in ff_h264_decode_mb_cabac()
2476 fill_rectangle(&sl->non_zero_count_cache[scan8[32]], 4, 4, 8, 0, 1); in ff_h264_decode_mb_cabac()
2480 fill_rectangle(&sl->non_zero_count_cache[scan8[ 0]], 4, 4, 8, 0, 1); in ff_h264_decode_mb_cabac()
2481 fill_rectangle(&sl->non_zero_count_cache[scan8[16]], 4, 4, 8, 0, 1); in ff_h264_decode_mb_cabac()
2482 fill_rectangle(&sl->non_zero_count_cache[scan8[32]], 4, 4, 8, 0, 1); in ff_h264_decode_mb_cabac()
2483 sl->last_qscale_diff = 0; in ff_h264_decode_mb_cabac()
2486 h->cur_pic.qscale_table[mb_xy] = sl->qscale; in ff_h264_decode_mb_cabac()
2487 write_back_non_zero_count(h, sl); in ff_h264_decode_mb_cabac()