32 #define CABAC_MAX_BIN 31 200 110, 110, 124, 125, 140, 153, 125, 127, 140, 109, 111, 143, 127, 111,
203 110, 110, 124, 125, 140, 153, 125, 127, 140, 109, 111, 143, 127, 111,
208 111, 111, 125, 110, 110, 94, 124, 108, 124, 107, 125, 141, 179, 153,
209 125, 107, 125, 141, 179, 153, 125, 107, 125, 141, 179, 153, 125, 140,
210 139, 182, 182, 152, 136, 152, 136, 153, 136, 139, 111, 136, 139, 111,
213 140, 92, 137, 138, 140, 152, 138, 139, 153, 74, 149, 92, 139, 107,
214 122, 152, 140, 179, 166, 182, 140, 227, 122, 197,
216 138, 153, 136, 167, 152, 152,
218 154, 154, 154, 154, 154, 154, 154, 154,
277 125, 110, 94, 110, 95, 79, 125, 111, 110, 78, 110, 111, 111, 95,
280 125, 110, 94, 110, 95, 79, 125, 111, 110, 78, 110, 111, 111, 95,
285 155, 154, 139, 153, 139, 123, 123, 63, 153, 166, 183, 140, 136, 153,
286 154, 166, 183, 140, 136, 153, 154, 166, 183, 140, 136, 153, 154, 170,
287 153, 123, 123, 107, 121, 107, 121, 167, 151, 183, 140, 151, 183, 140,
290 154, 196, 196, 167, 154, 152, 167, 182, 182, 134, 149, 136, 153, 121,
291 136, 137, 169, 194, 166, 167, 154, 167, 137, 182,
293 107, 167, 91, 122, 107, 167,
295 154, 154, 154, 154, 154, 154, 154, 154,
354 125, 110, 124, 110, 95, 94, 125, 111, 111, 79, 125, 126, 111, 111,
357 125, 110, 124, 110, 95, 94, 125, 111, 111, 79, 125, 126, 111, 111,
362 170, 154, 139, 153, 139, 123, 123, 63, 124, 166, 183, 140, 136, 153,
363 154, 166, 183, 140, 136, 153, 154, 166, 183, 140, 136, 153, 154, 170,
364 153, 138, 138, 122, 121, 122, 121, 167, 151, 183, 140, 151, 183, 140,
367 154, 196, 167, 167, 154, 152, 167, 182, 182, 134, 149, 136, 153, 121,
368 136, 122, 169, 208, 166, 167, 154, 152, 167, 182,
370 107, 167, 91, 107, 107, 167,
372 154, 154, 154, 154, 154, 154, 154, 154,
409 { 0, 1, 2, 3, 16, 17, 18, 19, },
410 { 4, 5, 6, 7, 20, 21, 22, 23, },
411 { 8, 9, 10, 11, 24, 25, 26, 27, },
412 { 12, 13, 14, 15, 28, 29, 30, 31, },
413 { 32, 33, 34, 35, 48, 49, 50, 51, },
414 { 36, 37, 38, 39, 52, 53, 54, 55, },
415 { 40, 41, 42, 43, 56, 57, 58, 59, },
416 { 44, 45, 46, 47, 60, 61, 62, 63, },
440 { 0, 2, 5, 9, 14, 20, 27, 35, },
441 { 1, 4, 8, 13, 19, 26, 34, 42, },
442 { 3, 7, 12, 18, 25, 33, 41, 48, },
443 { 6, 11, 17, 24, 32, 40, 47, 53, },
444 { 10, 16, 23, 31, 39, 46, 52, 57, },
445 { 15, 22, 30, 38, 45, 51, 56, 60, },
446 { 21, 29, 37, 44, 50, 55, 59, 62, },
447 { 28, 36, 43, 49, 54, 58, 61, 63, },
490 int m = (init_value >> 4) * 5 - 45;
491 int n = ((init_value & 15) << 3) - 16;
492 int pre = 2 * (((m * av_clip(s->
sh.
slice_qp, 0, 51)) >> 4) +
n) - 127;
496 pre = 124 + (pre & 1);
500 for (i = 0; i < 4; i++)
548 #define GET_CABAC(ctx) get_cabac(&s->HEVClc->cc, &s->HEVClc->cabac_state[ctx]) 570 for (i = 0; i < 4; i++)
632 if (prefix_val >= 5) {
635 suffix_val += 1 << k;
646 return prefix_val + suffix_val;
677 int inc = 0, depth_left = 0, depth_top = 0;
688 inc += (depth_left > ct_depth);
689 inc += (depth_top > ct_depth);
703 if (log2_cb_size == 3)
754 for (i = 0; i < 4; i++)
788 if (nPbW + nPbH == 12)
799 int max = num_ref_idx_lx - 1;
800 int max_ctx =
FFMIN(max, 2);
899 int log2_size,
int *last_scx_prefix,
int *last_scy_prefix)
902 int max = (log2_size << 1) - 1;
903 int ctx_offset, ctx_shift;
906 ctx_offset = 3 * (log2_size - 2) + ((log2_size - 1) >> 2);
907 ctx_shift = (log2_size + 1) >> 2;
910 ctx_shift = log2_size - 2;
915 *last_scx_prefix = i;
921 *last_scy_prefix = i;
925 int last_significant_coeff_prefix)
928 int length = (last_significant_coeff_prefix >> 1) - 1;
931 for (i = 1; i <
length; i++)
940 inc =
FFMIN(ctx_cg, 1) + (c_idx>0 ? 2 : 0);
947 int inc = ctx_idx_map[(y_c << 2) + x_c] + offset;
977 int last_coeff_abs_level_remaining;
984 for (i = 0; i < rc_rice_param; i++)
986 last_coeff_abs_level_remaining = (prefix << rc_rice_param) + suffix;
988 int prefix_minus3 = prefix - 3;
990 if (prefix ==
CABAC_MAX_BIN || prefix_minus3 + rc_rice_param >= 31) {
995 for (i = 0; i < prefix_minus3 + rc_rice_param; i++)
997 last_coeff_abs_level_remaining = (((1 << prefix_minus3) + 3 - 1)
998 << rc_rice_param) + suffix;
1000 return last_coeff_abs_level_remaining;
1008 for (i = 0; i < nb; i++)
1014 int log2_trafo_size,
enum ScanType scan_idx,
1017 #define GET_COORD(offset, n) \ 1019 x_c = (x_cg << 2) + scan_x_off[n]; \ 1020 y_c = (y_cg << 2) + scan_y_off[n]; \ 1023 int transform_skip_flag = 0;
1025 int last_significant_coeff_x, last_significant_coeff_y;
1029 int greater1_ctx = 1;
1031 int num_last_subset;
1032 int x_cg_last_sig, y_cg_last_sig;
1034 const uint8_t *scan_x_cg, *scan_y_cg, *scan_x_off, *scan_y_off;
1042 uint8_t significant_coeff_group_flag[8][8] = {{0}};
1043 int explicit_rdpcm_flag = 0;
1044 int explicit_rdpcm_dir_flag;
1046 int trafo_size = 1 << log2_trafo_size;
1048 int qp,
shift,add,scale,scale_m;
1049 static const uint8_t level_scale[] = { 40, 45, 51, 57, 64, 72 };
1055 memset(coeffs, 0, trafo_size * trafo_size *
sizeof(int16_t));
1059 static const int qp_c[] = { 29, 30, 31, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37 };
1060 static const uint8_t rem6[51 + 4 * 6 + 1] = {
1061 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
1062 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
1063 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
1064 4, 5, 0, 1, 2, 3, 4, 5, 0, 1
1067 static const uint8_t div6[51 + 4 * 6 + 1] = {
1068 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3,
1069 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,
1070 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
1071 10, 10, 11, 11, 11, 11, 11, 11, 12, 12
1073 int qp_y = lc->
qp_y;
1076 log2_trafo_size <= s->ps.pps->log2_max_transform_skip_block_size) {
1099 qp = qp_c[qp_i - 30];
1111 add = 1 << (shift-1);
1112 scale = level_scale[rem6[qp]] << (div6[qp]);
1121 matrix_id = 3 * matrix_id + c_idx;
1123 scale_matrix = sl->
sl[log2_trafo_size - 2][matrix_id];
1124 if (log2_trafo_size >= 4)
1125 dc_scale = sl->
sl_dc[log2_trafo_size - 4][matrix_id];
1137 if (explicit_rdpcm_flag) {
1143 &last_significant_coeff_x, &last_significant_coeff_y);
1145 if (last_significant_coeff_x > 3) {
1147 last_significant_coeff_x = (1 << ((last_significant_coeff_x >> 1) - 1)) *
1148 (2 + (last_significant_coeff_x & 1)) +
1152 if (last_significant_coeff_y > 3) {
1154 last_significant_coeff_y = (1 << ((last_significant_coeff_y >> 1) - 1)) *
1155 (2 + (last_significant_coeff_y & 1)) +
1160 FFSWAP(
int, last_significant_coeff_x, last_significant_coeff_y);
1162 x_cg_last_sig = last_significant_coeff_x >> 2;
1163 y_cg_last_sig = last_significant_coeff_y >> 2;
1167 int last_x_c = last_significant_coeff_x & 3;
1168 int last_y_c = last_significant_coeff_y & 3;
1173 if (trafo_size == 4) {
1176 }
else if (trafo_size == 8) {
1180 }
else if (trafo_size == 16) {
1196 num_coeff =
horiz_scan8x8_inv[last_significant_coeff_y][last_significant_coeff_x];
1203 num_coeff =
horiz_scan8x8_inv[last_significant_coeff_x][last_significant_coeff_y];
1207 num_last_subset = (num_coeff - 1) >> 4;
1209 for (i = num_last_subset; i >= 0; i--) {
1211 int x_cg, y_cg, x_c, y_c, pos;
1212 int implicit_non_zero_coeff = 0;
1213 int64_t trans_coeff_level;
1218 uint8_t significant_coeff_flag_idx[16];
1219 uint8_t nb_significant_coeff_flag = 0;
1221 x_cg = scan_x_cg[i];
1222 y_cg = scan_y_cg[i];
1224 if ((i < num_last_subset) && (i > 0)) {
1226 if (x_cg < (1 << (log2_trafo_size - 2)) - 1)
1227 ctx_cg += significant_coeff_group_flag[x_cg + 1][y_cg];
1228 if (y_cg < (1 << (log2_trafo_size - 2)) - 1)
1229 ctx_cg += significant_coeff_group_flag[x_cg][y_cg + 1];
1231 significant_coeff_group_flag[x_cg][y_cg] =
1233 implicit_non_zero_coeff = 1;
1235 significant_coeff_group_flag[x_cg][y_cg] =
1236 ((x_cg == x_cg_last_sig && y_cg == y_cg_last_sig) ||
1237 (x_cg == 0 && y_cg == 0));
1240 last_scan_pos = num_coeff - offset - 1;
1242 if (i == num_last_subset) {
1243 n_end = last_scan_pos - 1;
1244 significant_coeff_flag_idx[0] = last_scan_pos;
1245 nb_significant_coeff_flag = 1;
1250 if (x_cg < ((1 << log2_trafo_size) - 1) >> 2)
1251 prev_sig = !!significant_coeff_group_flag[x_cg + 1][y_cg];
1252 if (y_cg < ((1 << log2_trafo_size) - 1) >> 2)
1253 prev_sig += (!!significant_coeff_group_flag[x_cg][y_cg + 1] << 1);
1255 if (significant_coeff_group_flag[x_cg][y_cg] && n_end >= 0) {
1256 static const uint8_t ctx_idx_map[] = {
1257 0, 1, 4, 5, 2, 3, 4, 5, 6, 6, 8, 8, 7, 7, 8, 8,
1258 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
1259 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
1260 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0,
1261 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1267 ctx_idx_map_p = (
uint8_t*) &ctx_idx_map[4 * 16];
1271 scf_offset = 14 + 27;
1276 if (log2_trafo_size == 2) {
1277 ctx_idx_map_p = (
uint8_t*) &ctx_idx_map[0];
1279 ctx_idx_map_p = (
uint8_t*) &ctx_idx_map[(prev_sig + 1) << 4];
1281 if ((x_cg > 0 || y_cg > 0))
1283 if (log2_trafo_size == 3) {
1284 scf_offset += (scan_idx ==
SCAN_DIAG) ? 9 : 15;
1289 if (log2_trafo_size == 3)
1296 for (n = n_end; n > 0; n--) {
1297 x_c = scan_x_off[
n];
1298 y_c = scan_y_off[
n];
1300 significant_coeff_flag_idx[nb_significant_coeff_flag] =
n;
1301 nb_significant_coeff_flag++;
1302 implicit_non_zero_coeff = 0;
1305 if (implicit_non_zero_coeff == 0) {
1311 scf_offset = 16 + 27;
1320 scf_offset = 2 + scf_offset;
1324 significant_coeff_flag_idx[nb_significant_coeff_flag] = 0;
1325 nb_significant_coeff_flag++;
1328 significant_coeff_flag_idx[nb_significant_coeff_flag] = 0;
1329 nb_significant_coeff_flag++;
1333 n_end = nb_significant_coeff_flag;
1337 int first_nz_pos_in_cg;
1338 int last_nz_pos_in_cg;
1339 int c_rice_param = 0;
1340 int first_greater1_coeff_idx = -1;
1341 uint8_t coeff_abs_level_greater1_flag[8];
1342 uint16_t coeff_sign_flag;
1349 int ctx_set = (i > 0 && c_idx == 0) ? 2 : 0;
1353 sb_type = 2 * (c_idx == 0 ? 1 : 0);
1355 sb_type = 2 * (c_idx == 0 ? 1 : 0) + 1;
1359 if (!(i == num_last_subset) && greater1_ctx == 0)
1362 last_nz_pos_in_cg = significant_coeff_flag_idx[0];
1364 for (m = 0; m < (n_end > 8 ? 8 : n_end); m++) {
1365 int inc = (ctx_set << 2) + greater1_ctx;
1366 coeff_abs_level_greater1_flag[m] =
1368 if (coeff_abs_level_greater1_flag[m]) {
1370 if (first_greater1_coeff_idx == -1)
1371 first_greater1_coeff_idx = m;
1372 }
else if (greater1_ctx > 0 && greater1_ctx < 3) {
1376 first_nz_pos_in_cg = significant_coeff_flag_idx[n_end - 1];
1381 (pred_mode_intra == 10 || pred_mode_intra == 26 )) ||
1382 explicit_rdpcm_flag)
1385 sign_hidden = (last_nz_pos_in_cg - first_nz_pos_in_cg >= 4);
1387 if (first_greater1_coeff_idx != -1) {
1391 coeff_sign_flag =
coeff_sign_flag_decode(s, nb_significant_coeff_flag) << (16 - nb_significant_coeff_flag);
1393 coeff_sign_flag =
coeff_sign_flag_decode(s, nb_significant_coeff_flag - 1) << (16 - (nb_significant_coeff_flag - 1));
1396 for (m = 0; m < n_end; m++) {
1397 n = significant_coeff_flag_idx[m];
1400 trans_coeff_level = 1 + coeff_abs_level_greater1_flag[m];
1401 if (trans_coeff_level == ((m == first_greater1_coeff_idx) ? 3 : 2)) {
1404 trans_coeff_level += last_coeff_abs_level_remaining;
1405 if (trans_coeff_level > (3 << c_rice_param))
1408 int c_rice_p_init = lc->
stat_coeff[sb_type] / 4;
1409 if (last_coeff_abs_level_remaining >= (3 << c_rice_p_init))
1411 else if (2 * last_coeff_abs_level_remaining < (1 << c_rice_p_init))
1420 trans_coeff_level = 1 + last_coeff_abs_level_remaining;
1421 if (trans_coeff_level > (3 << c_rice_param))
1424 int c_rice_p_init = lc->
stat_coeff[sb_type] / 4;
1425 if (last_coeff_abs_level_remaining >= (3 << c_rice_p_init))
1427 else if (2 * last_coeff_abs_level_remaining < (1 << c_rice_p_init))
1434 sum_abs += trans_coeff_level;
1435 if (n == first_nz_pos_in_cg && (sum_abs&1))
1436 trans_coeff_level = -trans_coeff_level;
1438 if (coeff_sign_flag >> 15)
1439 trans_coeff_level = -trans_coeff_level;
1440 coeff_sign_flag <<= 1;
1443 if(y_c || x_c || log2_trafo_size < 4) {
1444 switch(log2_trafo_size) {
1445 case 3: pos = (y_c << 3) + x_c;
break;
1446 case 4: pos = ((y_c >> 1) << 3) + (x_c >> 1);
break;
1447 case 5: pos = ((y_c >> 2) << 3) + (x_c >> 2);
break;
1448 default: pos = (y_c << 2) + x_c;
break;
1450 scale_m = scale_matrix[pos];
1455 trans_coeff_level = (trans_coeff_level * (int64_t)scale * (int64_t)scale_m + add) >> shift;
1456 if(trans_coeff_level < 0) {
1457 if((~trans_coeff_level) & 0xFffffffffff8000)
1458 trans_coeff_level = -32768;
1460 if(trans_coeff_level & 0xffffffffffff8000)
1461 trans_coeff_level = 32767;
1464 coeffs[y_c * trafo_size + x_c] = trans_coeff_level;
1471 (pred_mode_intra == 10 || pred_mode_intra == 26))) {
1477 if (transform_skip_flag) {
1479 log2_trafo_size == 2 &&
1482 for (i = 0; i < 8; i++)
1483 FFSWAP(int16_t, coeffs[i], coeffs[16 - i - 1]);
1490 (pred_mode_intra == 10 || pred_mode_intra == 26))) {
1491 int mode = explicit_rdpcm_flag ? explicit_rdpcm_dir_flag : (pred_mode_intra == 26);
1498 int max_xy =
FFMAX(last_significant_coeff_x, last_significant_coeff_y);
1502 int col_limit = last_significant_coeff_x + last_significant_coeff_y + 4;
1504 col_limit =
FFMIN(4, col_limit);
1505 else if (max_xy < 8)
1506 col_limit =
FFMIN(8, col_limit);
1507 else if (max_xy < 12)
1508 col_limit =
FFMIN(24, col_limit);
1516 for (i = 0; i < (trafo_size * trafo_size); i++) {
1537 case 0: lc->
pu.
mvd.
x = 0;
break;
1543 case 0: lc->
pu.
mvd.
y = 0;
break;
static av_always_inline int significant_coeff_group_flag_decode(HEVCContext *s, int c_idx, int ctx_cg)
static av_unused const int8_t num_bins_in_se[]
number of bin by SyntaxElement.
unsigned int log2_min_cb_size
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static int shift(int a, int b)
int ff_hevc_split_coding_unit_flag_decode(HEVCContext *s, int ct_depth, int x0, int y0)
int transform_skip_rotation_enabled_flag
int16_t x
horizontal component of motion vector
int ff_hevc_cbf_luma_decode(HEVCContext *s, int trafo_depth)
int ff_hevc_sao_offset_sign_decode(HEVCContext *s)
int explicit_rdpcm_enabled_flag
void(* transform_rdpcm)(int16_t *coeffs, int16_t log2_size, int mode)
int ff_hevc_merge_flag_decode(HEVCContext *s)
Macro definitions for various function/variable attributes.
void(* idct[4])(int16_t *coeffs, int col_limit)
uint8_t entropy_coding_sync_enabled_flag
int ff_hevc_no_residual_syntax_flag_decode(HEVCContext *s)
static av_always_inline int significant_coeff_flag_decode_0(HEVCContext *s, int c_idx, int offset)
int ff_hevc_split_transform_flag_decode(HEVCContext *s, int log2_trafo_size)
int ff_hevc_sao_merge_flag_decode(HEVCContext *s)
int ff_hevc_rem_intra_luma_pred_mode_decode(HEVCContext *s)
static const uint8_t horiz_scan8x8_inv[8][8]
int ff_hevc_inter_pred_idc_decode(HEVCContext *s, int nPbW, int nPbH)
int ff_hevc_part_mode_decode(HEVCContext *s, int log2_cb_size)
const uint8_t ff_hevc_diag_scan8x8_x[64]
static int explicit_rdpcm_flag_decode(HEVCContext *s, int c_idx)
static void cabac_init_state(HEVCContext *s)
int ff_hevc_prev_intra_luma_pred_flag_decode(HEVCContext *s)
static const uint8_t horiz_scan4x4_y[16]
uint8_t scaling_list_data_present_flag
static int get_bits_count(const GetBitContext *s)
void ff_hevc_hls_mvd_coding(HEVCContext *s, int x0, int y0, int log2_cb_size)
int ff_hevc_skip_flag_decode(HEVCContext *s, int x0, int y0, int x_cb, int y_cb)
int ff_hevc_cbf_cb_cr_decode(HEVCContext *s, int trafo_depth)
uint8_t cu_transquant_bypass_flag
static av_unused const uint8_t * skip_bytes(CABACContext *c, int n)
Skip n bytes and reset the decoder.
int ff_hevc_log2_res_scale_abs(HEVCContext *s, int idx)
void ff_hevc_cabac_init(HEVCContext *s, int ctb_addr_ts)
int ff_hevc_cu_chroma_qp_offset_idx(HEVCContext *s)
static int get_bits_left(GetBitContext *gb)
int ff_hevc_cu_transquant_bypass_flag_decode(HEVCContext *s)
#define SAMPLE_CTB(tab, x, y)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static const uint8_t diag_scan4x4_inv[4][4]
int persistent_rice_adaptation_enabled_flag
coded frame dimension in various units
static const int elem_offset[sizeof(num_bins_in_se)]
Offset to ctxIdx 0 in init_values and states, indexed by SyntaxElement.
unsigned int log2_ctb_size
static const uint8_t offset[127][2]
int ff_hevc_sao_band_position_decode(HEVCContext *s)
static int explicit_rdpcm_dir_flag_decode(HEVCContext *s, int c_idx)
uint8_t tiles_enabled_flag
static const uint8_t diag_scan8x8_inv[8][8]
int ff_hevc_sao_eo_class_decode(HEVCContext *s)
static av_always_inline int abs_mvd_greater1_flag_decode(HEVCContext *s)
int ff_hevc_res_scale_sign_flag(HEVCContext *s, int idx)
uint8_t cabac_state[HEVC_CONTEXTS]
int ff_init_cabac_decoder(CABACContext *c, const uint8_t *buf, int buf_size)
void(* idct_dc[4])(int16_t *coeffs)
static const uint8_t scan_1x1[1]
Context Adaptive Binary Arithmetic Coder inline functions.
uint8_t sign_data_hiding_flag
static av_always_inline int coeff_abs_level_greater1_flag_decode(HEVCContext *s, int c_idx, int inc)
static int av_unused get_cabac_terminate(CABACContext *c)
const uint8_t ff_hevc_diag_scan4x4_y[16]
static av_always_inline int mvd_decode(HEVCContext *s)
int implicit_rdpcm_enabled_flag
static const uint8_t horiz_scan2x2_y[4]
static const uint8_t horiz_scan4x4_x[16]
static av_always_inline int coeff_abs_level_greater2_flag_decode(HEVCContext *s, int c_idx, int inc)
int ff_hevc_merge_idx_decode(HEVCContext *s)
static av_always_inline void last_significant_coeff_xy_prefix_decode(HEVCContext *s, int c_idx, int log2_size, int *last_scx_prefix, int *last_scy_prefix)
uint8_t transform_skip_enabled_flag
static const uint8_t diag_scan2x2_x[4]
int * ctb_addr_rs_to_ts
CtbAddrRSToTS.
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
int ff_hevc_end_of_slice_flag_decode(HEVCContext *s)
static av_always_inline int last_significant_coeff_suffix_decode(HEVCContext *s, int last_significant_coeff_prefix)
enum PredMode pred_mode
PredMode.
int16_t y
vertical component of motion vector
void(* transform_4x4_luma)(int16_t *coeffs)
static const uint8_t horiz_scan2x2_x[4]
int transform_skip_context_enabled_flag
int ff_hevc_cu_qp_delta_sign_flag(HEVCContext *s)
static void skip_bits(GetBitContext *s, int n)
uint8_t edge_emu_buffer[(MAX_PB_SIZE+7) *EDGE_EMU_BUFFER_STRIDE *2]
void ff_hevc_save_states(HEVCContext *s, int ctb_addr_ts)
void(* add_residual[4])(uint8_t *dst, int16_t *res, ptrdiff_t stride)
uint8_t scaling_list_enable_flag
int ff_hevc_ref_idx_lx_decode(HEVCContext *s, int num_ref_idx_lx)
HEVCLocalContext * HEVClc
static av_always_inline int abs_mvd_greater0_flag_decode(HEVCContext *s)
static const uint8_t diag_scan2x2_inv[2][2]
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
int ff_hevc_cu_chroma_qp_offset_flag(HEVCContext *s)
static av_always_inline int get_cabac_bypass_sign(CABACContext *c, int val)
static int av_unused get_cabac_bypass(CABACContext *c)
static void load_states(HEVCContext *s)
static av_always_inline int significant_coeff_flag_decode(HEVCContext *s, int x_c, int y_c, int offset, const uint8_t *ctx_idx_map)
const uint8_t ff_hevc_diag_scan4x4_x[16]
static int hevc_transform_skip_flag_decode(HEVCContext *s, int c_idx)
int ff_hevc_intra_chroma_pred_mode_decode(HEVCContext *s)
common internal and external API header
static av_always_inline int coeff_sign_flag_decode(HEVCContext *s, uint8_t nb)
#define GET_COORD(offset, n)
int ff_hevc_sao_type_idx_decode(HEVCContext *s)
uint8_t edge_emu_buffer2[(MAX_PB_SIZE+7) *EDGE_EMU_BUFFER_STRIDE *2]
uint8_t chroma_qp_offset_list_len_minus1
const uint8_t ff_hevc_diag_scan8x8_y[64]
int ff_hevc_pred_mode_decode(HEVCContext *s)
static const int16_t coeffs[]
int ff_hevc_mpm_idx_decode(HEVCContext *s)
int ff_hevc_pcm_flag_decode(HEVCContext *s)
void ff_hevc_hls_residual_coding(HEVCContext *s, int x0, int y0, int log2_trafo_size, enum ScanType scan_idx, int c_idx)
static const uint8_t * align_get_bits(GetBitContext *s)
static void cabac_init_decoder(HEVCContext *s)
#define FFSWAP(type, a, b)
static const uint8_t init_values[3][HEVC_CONTEXTS]
Indexed by init_type.
int ff_hevc_sao_offset_abs_decode(HEVCContext *s)
static av_always_inline int coeff_abs_level_remaining_decode(HEVCContext *s, int rc_rice_param)
void(* dequant)(int16_t *coeffs, int16_t log2_size)
mode
Use these values in ebur128_init (or'ed).
static void cabac_reinit(HEVCLocalContext *lc)
static av_always_inline int mvd_sign_flag_decode(HEVCContext *s)
int ff_hevc_cu_qp_delta_abs(HEVCContext *s)
static const uint8_t diag_scan2x2_y[4]
int ff_hevc_mvp_lx_flag_decode(HEVCContext *s)