32 16, 16, 16, 16, 17, 18, 21, 24,
33 16, 16, 16, 16, 17, 19, 22, 25,
34 16, 16, 17, 18, 20, 22, 25, 29,
35 16, 16, 18, 21, 24, 27, 31, 36,
36 17, 17, 20, 24, 30, 35, 41, 47,
37 18, 19, 22, 27, 35, 44, 54, 65,
38 21, 22, 25, 31, 41, 54, 70, 88,
39 24, 25, 29, 36, 47, 65, 88, 115
43 16, 16, 16, 16, 17, 18, 20, 24,
44 16, 16, 16, 17, 18, 20, 24, 25,
45 16, 16, 17, 18, 20, 24, 25, 28,
46 16, 17, 18, 20, 24, 25, 28, 33,
47 17, 18, 20, 24, 25, 28, 33, 41,
48 18, 20, 24, 25, 28, 33, 41, 54,
49 20, 24, 25, 28, 33, 41, 54, 71,
50 24, 25, 28, 33, 41, 54, 71, 91
74 const HEVCSPS *sps,
int is_slice_header)
91 int delta_rps, abs_delta_rps;
95 if (is_slice_header) {
99 "Invalid value of delta_idx in slice header RPS: %d > %d.\n",
109 delta_rps = (1 - (delta_rps_sign << 1)) * abs_delta_rps;
116 if (used || use_delta_flag) {
117 if (i < rps_ridx->num_delta_pocs)
118 delta_poc = delta_rps + rps_ridx->
delta_poc[i];
120 delta_poc = delta_rps;
138 for (k = i - 1; k >= 0; k--) {
140 if (delta_poc < tmp) {
164 unsigned int prev, nb_positive_pics;
184 for (i = 0; i < nb_positive_pics; i++) {
213 for (i = 0; i < 32; i++)
232 for (i = 0; i < max_num_sub_layers - 1; i++) {
236 if (max_num_sub_layers - 1 > 0)
237 for (i = max_num_sub_layers - 1; i < 8; i++)
239 for (i = 0; i < max_num_sub_layers - 1; i++) {
248 int subpic_params_present)
253 for (i = 0; i < nb_cpb; i++) {
257 if (subpic_params_present) {
269 int nal_params_present = 0, vcl_params_present = 0;
270 int subpic_params_present = 0;
273 if (common_inf_present) {
277 if (nal_params_present || vcl_params_present) {
280 if (subpic_params_present) {
290 if (subpic_params_present)
299 for (i = 0; i < max_sublayers; i++) {
301 unsigned int nb_cpb = 1;
315 if (nal_params_present)
317 if (vcl_params_present)
399 int common_inf_present = 1;
430 vui->
sar = vui_sar[sar_idx];
431 else if (sar_idx == 255) {
436 "Unknown SAR index: %u.\n", sar_idx);
486 "discarding vui default display window, "
487 "original values are l:%u r:%u t:%u b:%u\n",
529 for (matrixId = 0; matrixId < 6; matrixId++) {
531 memset(sl->
sl[0][matrixId], 16, 16);
532 sl->
sl_dc[0][matrixId] = 16;
533 sl->
sl_dc[1][matrixId] = 16;
554 uint8_t scaling_list_pred_mode_flag[4][6];
555 int32_t scaling_list_dc_coef[2][6];
556 int size_id, matrix_id, i, pos;
558 for (size_id = 0; size_id < 4; size_id++)
559 for (matrix_id = 0; matrix_id < (size_id == 3 ? 2 : 6); matrix_id++) {
560 scaling_list_pred_mode_flag[size_id][matrix_id] =
get_bits1(gb);
561 if (!scaling_list_pred_mode_flag[size_id][matrix_id]) {
567 if (matrix_id < delta) {
569 "Invalid delta in scaling list data: %d.\n", delta);
573 memcpy(sl->
sl[size_id][matrix_id],
574 sl->
sl[size_id][matrix_id - delta],
575 size_id > 0 ? 64 : 16);
577 sl->
sl_dc[size_id - 2][matrix_id] = sl->
sl_dc[size_id - 2][matrix_id -
delta];
580 int next_coef, coef_num;
581 int32_t scaling_list_delta_coef;
584 coef_num =
FFMIN(64, 1 << (4 + (size_id << 1)));
586 scaling_list_dc_coef[size_id - 2][matrix_id] =
get_se_golomb(gb) + 8;
587 next_coef = scaling_list_dc_coef[size_id - 2][matrix_id];
588 sl->
sl_dc[size_id - 2][matrix_id] = next_coef;
590 for (i = 0; i < coef_num; i++) {
599 next_coef = (next_coef + scaling_list_delta_coef + 256) % 256;
600 sl->
sl[size_id][matrix_id][pos] = next_coef;
613 unsigned int sps_id = 0;
614 int log2_diff_max_min_transform_block_size;
615 int bit_depth_chroma, start, vui_present, sublayer_ordering_info;
687 "discarding sps conformance window, "
688 "original values are l:%u r:%u t:%u b:%u\n",
704 if (bit_depth_chroma != sps->
bit_depth) {
706 "Luma bit depth (%d) is different from chroma bit depth (%d), "
707 "this is unsupported.\n",
726 "non-4:2:0 support is currently unspecified.\n");
770 if (!sublayer_ordering_info) {
771 for (i = 0; i < start; i++) {
816 "PCM bit depth (%d) is greater than normal bit depth (%d)\n",
865 "chroma samples to preserve alignment.\n",
880 "Displaying the whole video surface.\n");
929 "max transform block size out of range: %d\n",
936 "Parsed SPS: id %d; coded wxh: %dx%d; "
937 "cropped wxh: %dx%d; pix_fmt: %s.\n",
988 int pic_area_in_ctbs, pic_area_in_min_cbs, pic_area_in_min_tbs;
989 int log2_diff_ctb_min_tb_size;
990 int i, j, x, y, ctb_addr_rs, tile_id;
992 unsigned int pps_id = 0;
1241 for (ctb_addr_rs = 0; ctb_addr_rs < pic_area_in_ctbs; ctb_addr_rs++) {
1242 int tb_x = ctb_addr_rs % sps->
ctb_width;
1243 int tb_y = ctb_addr_rs / sps->
ctb_width;
1249 if (tb_x < pps->col_bd[i + 1]) {
1256 if (tb_y < pps->row_bd[i + 1]) {
1262 for (i = 0; i < tile_x; i++)
1264 for (i = 0; i < tile_y; i++)
1268 tb_x - pps->
col_bd[tile_x];
1276 for (y = pps->
row_bd[j]; y < pps->row_bd[j + 1]; y++)
1277 for (x = pps->
col_bd[i]; x < pps->col_bd[i + 1]; x++)
1294 int ctb_addr_rs = sps->
ctb_width * tb_y + tb_x;
1299 val += (m & x ? m * m : 0) + (m & y ? 2 * m * m : 0);
1308 int tb_x = x >> log2_diff_ctb_min_tb_size;
1309 int tb_y = y >> log2_diff_ctb_min_tb_size;
1310 int ctb_addr_rs = sps->
ctb_width * tb_y + tb_x;
1312 (log2_diff_ctb_min_tb_size * 2);
1313 for (i = 0; i < log2_diff_ctb_min_tb_size; i++) {
1315 val += (m & x ? m * m : 0) + (m & y ? 2 * m * m : 0);