30 #define CABAC_MAX_BIN 31
198 110, 110, 124, 125, 140, 153, 125, 127, 140, 109, 111, 143, 127, 111,
201 110, 110, 124, 125, 140, 153, 125, 127, 140, 109, 111, 143, 127, 111,
206 111, 111, 125, 110, 110, 94, 124, 108, 124, 107, 125, 141, 179, 153,
207 125, 107, 125, 141, 179, 153, 125, 107, 125, 141, 179, 153, 125, 140,
208 139, 182, 182, 152, 136, 152, 136, 153, 136, 139, 111, 136, 139, 111,
211 140, 92, 137, 138, 140, 152, 138, 139, 153, 74, 149, 92, 139, 107,
212 122, 152, 140, 179, 166, 182, 140, 227, 122, 197,
214 138, 153, 136, 167, 152, 152,
216 154, 154, 154, 154, 154, 154, 154, 154,
275 125, 110, 94, 110, 95, 79, 125, 111, 110, 78, 110, 111, 111, 95,
278 125, 110, 94, 110, 95, 79, 125, 111, 110, 78, 110, 111, 111, 95,
283 155, 154, 139, 153, 139, 123, 123, 63, 153, 166, 183, 140, 136, 153,
284 154, 166, 183, 140, 136, 153, 154, 166, 183, 140, 136, 153, 154, 170,
285 153, 123, 123, 107, 121, 107, 121, 167, 151, 183, 140, 151, 183, 140,
288 154, 196, 196, 167, 154, 152, 167, 182, 182, 134, 149, 136, 153, 121,
289 136, 137, 169, 194, 166, 167, 154, 167, 137, 182,
291 107, 167, 91, 122, 107, 167,
293 154, 154, 154, 154, 154, 154, 154, 154,
352 125, 110, 124, 110, 95, 94, 125, 111, 111, 79, 125, 126, 111, 111,
355 125, 110, 124, 110, 95, 94, 125, 111, 111, 79, 125, 126, 111, 111,
360 170, 154, 139, 153, 139, 123, 123, 63, 124, 166, 183, 140, 136, 153,
361 154, 166, 183, 140, 136, 153, 154, 166, 183, 140, 136, 153, 154, 170,
362 153, 138, 138, 122, 121, 122, 121, 167, 151, 183, 140, 151, 183, 140,
365 154, 196, 167, 167, 154, 152, 167, 182, 182, 134, 149, 136, 153, 121,
366 136, 122, 169, 208, 166, 167, 154, 152, 167, 182,
368 107, 167, 91, 107, 107, 167,
370 154, 154, 154, 154, 154, 154, 154, 154,
407 { 0, 1, 2, 3, 16, 17, 18, 19, },
408 { 4, 5, 6, 7, 20, 21, 22, 23, },
409 { 8, 9, 10, 11, 24, 25, 26, 27, },
410 { 12, 13, 14, 15, 28, 29, 30, 31, },
411 { 32, 33, 34, 35, 48, 49, 50, 51, },
412 { 36, 37, 38, 39, 52, 53, 54, 55, },
413 { 40, 41, 42, 43, 56, 57, 58, 59, },
414 { 44, 45, 46, 47, 60, 61, 62, 63, },
438 { 0, 2, 5, 9, 14, 20, 27, 35, },
439 { 1, 4, 8, 13, 19, 26, 34, 42, },
440 { 3, 7, 12, 18, 25, 33, 41, 48, },
441 { 6, 11, 17, 24, 32, 40, 47, 53, },
442 { 10, 16, 23, 31, 39, 46, 52, 57, },
443 { 15, 22, 30, 38, 45, 51, 56, 60, },
444 { 21, 29, 37, 44, 50, 55, 59, 62, },
445 { 28, 36, 43, 49, 54, 58, 61, 63, },
488 int m = (init_value >> 4) * 5 - 45;
489 int n = ((init_value & 15) << 3) - 16;
490 int pre = 2 * (((m * av_clip(s->
sh.
slice_qp, 0, 51)) >> 4) +
n) - 127;
494 pre = 124 + (pre & 1);
498 for (i = 0; i < 4; i++)
546 #define GET_CABAC(ctx) get_cabac(&s->HEVClc->cc, &s->HEVClc->cabac_state[ctx])
568 for (i = 0; i < 4; i++)
630 if (prefix_val >= 5) {
633 suffix_val += 1 << k;
644 return prefix_val + suffix_val;
675 int inc = 0, depth_left = 0, depth_top = 0;
686 inc += (depth_left > ct_depth);
687 inc += (depth_top > ct_depth);
701 if (log2_cb_size == 3)
752 for (i = 0; i < 4; i++)
786 if (nPbW + nPbH == 12)
797 int max = num_ref_idx_lx - 1;
798 int max_ctx =
FFMIN(max, 2);
897 int log2_size,
int *last_scx_prefix,
int *last_scy_prefix)
900 int max = (log2_size << 1) - 1;
901 int ctx_offset, ctx_shift;
904 ctx_offset = 3 * (log2_size - 2) + ((log2_size - 1) >> 2);
905 ctx_shift = (log2_size + 1) >> 2;
908 ctx_shift = log2_size - 2;
913 *last_scx_prefix = i;
919 *last_scy_prefix = i;
923 int last_significant_coeff_prefix)
926 int length = (last_significant_coeff_prefix >> 1) - 1;
929 for (i = 1; i <
length; i++)
938 inc =
FFMIN(ctx_cg, 1) + (c_idx>0 ? 2 : 0);
945 int inc = ctx_idx_map[(y_c << 2) + x_c] + offset;
975 int last_coeff_abs_level_remaining;
982 for (i = 0; i < rc_rice_param; i++)
984 last_coeff_abs_level_remaining = (prefix << rc_rice_param) + suffix;
986 int prefix_minus3 = prefix - 3;
988 if (prefix ==
CABAC_MAX_BIN || prefix_minus3 + rc_rice_param >= 31) {
993 for (i = 0; i < prefix_minus3 + rc_rice_param; i++)
995 last_coeff_abs_level_remaining = (((1 << prefix_minus3) + 3 - 1)
996 << rc_rice_param) + suffix;
998 return last_coeff_abs_level_remaining;
1006 for (i = 0; i < nb; i++)
1012 int log2_trafo_size,
enum ScanType scan_idx,
1015 #define GET_COORD(offset, n) \
1017 x_c = (x_cg << 2) + scan_x_off[n]; \
1018 y_c = (y_cg << 2) + scan_y_off[n]; \
1021 int transform_skip_flag = 0;
1023 int last_significant_coeff_x, last_significant_coeff_y;
1027 int greater1_ctx = 1;
1029 int num_last_subset;
1030 int x_cg_last_sig, y_cg_last_sig;
1032 const uint8_t *scan_x_cg, *scan_y_cg, *scan_x_off, *scan_y_off;
1040 uint8_t significant_coeff_group_flag[8][8] = {{0}};
1041 int explicit_rdpcm_flag = 0;
1042 int explicit_rdpcm_dir_flag;
1044 int trafo_size = 1 << log2_trafo_size;
1046 int qp,
shift,add,scale,scale_m;
1047 const uint8_t level_scale[] = { 40, 45, 51, 57, 64, 72 };
1053 memset(coeffs, 0, trafo_size * trafo_size *
sizeof(int16_t));
1057 static const int qp_c[] = { 29, 30, 31, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37 };
1059 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2,
1060 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5,
1061 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3, 4, 5, 0, 1, 2, 3,
1062 4, 5, 0, 1, 2, 3, 4, 5, 0, 1
1066 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3,
1067 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6,
1068 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10,
1069 10, 10, 11, 11, 11, 11, 11, 11, 12, 12
1071 int qp_y = lc->
qp_y;
1074 log2_trafo_size <= s->ps.pps->log2_max_transform_skip_block_size) {
1097 qp = qp_c[qp_i - 30];
1109 add = 1 << (shift-1);
1110 scale = level_scale[rem6[qp]] << (div6[qp]);
1119 matrix_id = 3 * matrix_id + c_idx;
1121 scale_matrix = sl->
sl[log2_trafo_size - 2][matrix_id];
1122 if (log2_trafo_size >= 4)
1123 dc_scale = sl->
sl_dc[log2_trafo_size - 4][matrix_id];
1135 if (explicit_rdpcm_flag) {
1141 &last_significant_coeff_x, &last_significant_coeff_y);
1143 if (last_significant_coeff_x > 3) {
1145 last_significant_coeff_x = (1 << ((last_significant_coeff_x >> 1) - 1)) *
1146 (2 + (last_significant_coeff_x & 1)) +
1150 if (last_significant_coeff_y > 3) {
1152 last_significant_coeff_y = (1 << ((last_significant_coeff_y >> 1) - 1)) *
1153 (2 + (last_significant_coeff_y & 1)) +
1158 FFSWAP(
int, last_significant_coeff_x, last_significant_coeff_y);
1160 x_cg_last_sig = last_significant_coeff_x >> 2;
1161 y_cg_last_sig = last_significant_coeff_y >> 2;
1165 int last_x_c = last_significant_coeff_x & 3;
1166 int last_y_c = last_significant_coeff_y & 3;
1171 if (trafo_size == 4) {
1174 }
else if (trafo_size == 8) {
1178 }
else if (trafo_size == 16) {
1194 num_coeff =
horiz_scan8x8_inv[last_significant_coeff_y][last_significant_coeff_x];
1201 num_coeff =
horiz_scan8x8_inv[last_significant_coeff_x][last_significant_coeff_y];
1205 num_last_subset = (num_coeff - 1) >> 4;
1207 for (i = num_last_subset; i >= 0; i--) {
1209 int x_cg, y_cg, x_c, y_c, pos;
1210 int implicit_non_zero_coeff = 0;
1211 int64_t trans_coeff_level;
1216 uint8_t significant_coeff_flag_idx[16];
1217 uint8_t nb_significant_coeff_flag = 0;
1219 x_cg = scan_x_cg[i];
1220 y_cg = scan_y_cg[i];
1222 if ((i < num_last_subset) && (i > 0)) {
1224 if (x_cg < (1 << (log2_trafo_size - 2)) - 1)
1225 ctx_cg += significant_coeff_group_flag[x_cg + 1][y_cg];
1226 if (y_cg < (1 << (log2_trafo_size - 2)) - 1)
1227 ctx_cg += significant_coeff_group_flag[x_cg][y_cg + 1];
1229 significant_coeff_group_flag[x_cg][y_cg] =
1231 implicit_non_zero_coeff = 1;
1233 significant_coeff_group_flag[x_cg][y_cg] =
1234 ((x_cg == x_cg_last_sig && y_cg == y_cg_last_sig) ||
1235 (x_cg == 0 && y_cg == 0));
1238 last_scan_pos = num_coeff - offset - 1;
1240 if (i == num_last_subset) {
1241 n_end = last_scan_pos - 1;
1242 significant_coeff_flag_idx[0] = last_scan_pos;
1243 nb_significant_coeff_flag = 1;
1248 if (x_cg < ((1 << log2_trafo_size) - 1) >> 2)
1249 prev_sig = !!significant_coeff_group_flag[x_cg + 1][y_cg];
1250 if (y_cg < ((1 << log2_trafo_size) - 1) >> 2)
1251 prev_sig += (!!significant_coeff_group_flag[x_cg][y_cg + 1] << 1);
1253 if (significant_coeff_group_flag[x_cg][y_cg] && n_end >= 0) {
1254 static const uint8_t ctx_idx_map[] = {
1255 0, 1, 4, 5, 2, 3, 4, 5, 6, 6, 8, 8, 7, 7, 8, 8,
1256 1, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
1257 2, 2, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
1258 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0, 2, 1, 0, 0,
1259 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2
1265 ctx_idx_map_p = (
uint8_t*) &ctx_idx_map[4 * 16];
1269 scf_offset = 14 + 27;
1274 if (log2_trafo_size == 2) {
1275 ctx_idx_map_p = (
uint8_t*) &ctx_idx_map[0];
1277 ctx_idx_map_p = (
uint8_t*) &ctx_idx_map[(prev_sig + 1) << 4];
1279 if ((x_cg > 0 || y_cg > 0))
1281 if (log2_trafo_size == 3) {
1282 scf_offset += (scan_idx ==
SCAN_DIAG) ? 9 : 15;
1287 if (log2_trafo_size == 3)
1294 for (n = n_end; n > 0; n--) {
1295 x_c = scan_x_off[
n];
1296 y_c = scan_y_off[
n];
1298 significant_coeff_flag_idx[nb_significant_coeff_flag] =
n;
1299 nb_significant_coeff_flag++;
1300 implicit_non_zero_coeff = 0;
1303 if (implicit_non_zero_coeff == 0) {
1309 scf_offset = 16 + 27;
1318 scf_offset = 2 + scf_offset;
1322 significant_coeff_flag_idx[nb_significant_coeff_flag] = 0;
1323 nb_significant_coeff_flag++;
1326 significant_coeff_flag_idx[nb_significant_coeff_flag] = 0;
1327 nb_significant_coeff_flag++;
1331 n_end = nb_significant_coeff_flag;
1335 int first_nz_pos_in_cg;
1336 int last_nz_pos_in_cg;
1337 int c_rice_param = 0;
1338 int first_greater1_coeff_idx = -1;
1339 uint8_t coeff_abs_level_greater1_flag[8];
1340 uint16_t coeff_sign_flag;
1347 int ctx_set = (i > 0 && c_idx == 0) ? 2 : 0;
1351 sb_type = 2 * (c_idx == 0 ? 1 : 0);
1353 sb_type = 2 * (c_idx == 0 ? 1 : 0) + 1;
1357 if (!(i == num_last_subset) && greater1_ctx == 0)
1360 last_nz_pos_in_cg = significant_coeff_flag_idx[0];
1362 for (m = 0; m < (n_end > 8 ? 8 : n_end); m++) {
1363 int inc = (ctx_set << 2) + greater1_ctx;
1364 coeff_abs_level_greater1_flag[
m] =
1366 if (coeff_abs_level_greater1_flag[m]) {
1368 if (first_greater1_coeff_idx == -1)
1369 first_greater1_coeff_idx =
m;
1370 }
else if (greater1_ctx > 0 && greater1_ctx < 3) {
1374 first_nz_pos_in_cg = significant_coeff_flag_idx[n_end - 1];
1379 (pred_mode_intra == 10 || pred_mode_intra == 26 )) ||
1380 explicit_rdpcm_flag)
1383 sign_hidden = (last_nz_pos_in_cg - first_nz_pos_in_cg >= 4);
1385 if (first_greater1_coeff_idx != -1) {
1389 coeff_sign_flag =
coeff_sign_flag_decode(s, nb_significant_coeff_flag) << (16 - nb_significant_coeff_flag);
1391 coeff_sign_flag =
coeff_sign_flag_decode(s, nb_significant_coeff_flag - 1) << (16 - (nb_significant_coeff_flag - 1));
1394 for (m = 0; m < n_end; m++) {
1395 n = significant_coeff_flag_idx[
m];
1398 trans_coeff_level = 1 + coeff_abs_level_greater1_flag[
m];
1399 if (trans_coeff_level == ((m == first_greater1_coeff_idx) ? 3 : 2)) {
1402 trans_coeff_level += last_coeff_abs_level_remaining;
1403 if (trans_coeff_level > (3 << c_rice_param))
1406 int c_rice_p_init = lc->
stat_coeff[sb_type] / 4;
1407 if (last_coeff_abs_level_remaining >= (3 << c_rice_p_init))
1409 else if (2 * last_coeff_abs_level_remaining < (1 << c_rice_p_init))
1418 trans_coeff_level = 1 + last_coeff_abs_level_remaining;
1419 if (trans_coeff_level > (3 << c_rice_param))
1422 int c_rice_p_init = lc->
stat_coeff[sb_type] / 4;
1423 if (last_coeff_abs_level_remaining >= (3 << c_rice_p_init))
1425 else if (2 * last_coeff_abs_level_remaining < (1 << c_rice_p_init))
1432 sum_abs += trans_coeff_level;
1433 if (n == first_nz_pos_in_cg && (sum_abs&1))
1434 trans_coeff_level = -trans_coeff_level;
1436 if (coeff_sign_flag >> 15)
1437 trans_coeff_level = -trans_coeff_level;
1438 coeff_sign_flag <<= 1;
1441 if(y_c || x_c || log2_trafo_size < 4) {
1442 switch(log2_trafo_size) {
1443 case 3: pos = (y_c << 3) + x_c;
break;
1444 case 4: pos = ((y_c >> 1) << 3) + (x_c >> 1);
break;
1445 case 5: pos = ((y_c >> 2) << 3) + (x_c >> 2);
break;
1446 default: pos = (y_c << 2) + x_c;
break;
1448 scale_m = scale_matrix[pos];
1453 trans_coeff_level = (trans_coeff_level * (int64_t)scale * (int64_t)scale_m + add) >> shift;
1454 if(trans_coeff_level < 0) {
1455 if((~trans_coeff_level) & 0xFffffffffff8000)
1456 trans_coeff_level = -32768;
1458 if(trans_coeff_level & 0xffffffffffff8000)
1459 trans_coeff_level = 32767;
1462 coeffs[y_c * trafo_size + x_c] = trans_coeff_level;
1469 (pred_mode_intra == 10 || pred_mode_intra == 26))) {
1475 if (transform_skip_flag) {
1477 log2_trafo_size == 2 &&
1480 for (i = 0; i < 8; i++)
1481 FFSWAP(int16_t, coeffs[i], coeffs[16 - i - 1]);
1488 (pred_mode_intra == 10 || pred_mode_intra == 26))) {
1489 int mode = explicit_rdpcm_flag ? explicit_rdpcm_dir_flag : (pred_mode_intra == 26);
1496 int max_xy =
FFMAX(last_significant_coeff_x, last_significant_coeff_y);
1500 int col_limit = last_significant_coeff_x + last_significant_coeff_y + 4;
1502 col_limit =
FFMIN(4, col_limit);
1503 else if (max_xy < 8)
1504 col_limit =
FFMIN(8, col_limit);
1505 else if (max_xy < 12)
1506 col_limit =
FFMIN(24, col_limit);
1514 for (i = 0; i < (trafo_size * trafo_size); i++) {
1535 case 0: lc->
pu.
mvd.
x = 0;
break;
1541 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)
uint8_t edge_emu_buffer[(MAX_PB_SIZE+7)*EDGE_EMU_BUFFER_STRIDE *2]
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)
const uint8_t ff_hevc_diag_scan4x4_x[16]
int ff_hevc_sao_offset_sign_decode(HEVCContext *s)
int explicit_rdpcm_enabled_flag
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)
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 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
void(* transform_skip)(int16_t *coeffs, int16_t log2_size)
void(* transform_rdpcm)(int16_t *coeffs, int16_t log2_size, int mode)
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
void(* transform_add[4])(uint8_t *_dst, int16_t *coeffs, ptrdiff_t _stride)
static const uint8_t offset[127][2]
uint8_t edge_emu_buffer2[(MAX_PB_SIZE+7)*EDGE_EMU_BUFFER_STRIDE *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]
GLsizei GLboolean const GLfloat * value
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)
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
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)
const uint8_t ff_hevc_diag_scan8x8_y[64]
void ff_hevc_save_states(HEVCContext *s, int ctb_addr_ts)
static const uint8_t rem6[QP_MAX_NUM+1]
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)
GLint GLenum GLboolean GLsizei stride
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 chroma_qp_offset_list_len_minus1
static const uint8_t div6[QP_MAX_NUM+1]
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)
const uint8_t ff_hevc_diag_scan8x8_x[64]
#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)
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)
const uint8_t ff_hevc_diag_scan4x4_y[16]
static const uint8_t diag_scan2x2_y[4]
void(* idct_4x4_luma)(int16_t *coeffs)
int ff_hevc_mvp_lx_flag_decode(HEVCContext *s)
#define SAMPLE_CTB(tab, x, y)