Lines Matching refs:pps
83 if (s->pps_list[id] && s->pps == (const HEVCPPS*)s->pps_list[id]->data)
84 s->pps = NULL;
1307 HEVCPPS *pps = (HEVCPPS*)data;
1309 av_freep(&pps->column_width);
1310 av_freep(&pps->row_height);
1311 av_freep(&pps->col_bd);
1312 av_freep(&pps->row_bd);
1313 av_freep(&pps->col_idxX);
1314 av_freep(&pps->ctb_addr_rs_to_ts);
1315 av_freep(&pps->ctb_addr_ts_to_rs);
1316 av_freep(&pps->tile_pos_rs);
1317 av_freep(&pps->tile_id);
1318 av_freep(&pps->min_tb_addr_zs_tab);
1320 av_freep(&pps);
1324 HEVCPPS *pps, HEVCSPS *sps) {
1327 if (pps->transform_skip_enabled_flag) {
1328 pps->log2_max_transform_skip_block_size = get_ue_golomb_long(gb) + 2;
1330 pps->cross_component_prediction_enabled_flag = get_bits1(gb);
1331 pps->chroma_qp_offset_list_enabled_flag = get_bits1(gb);
1332 if (pps->chroma_qp_offset_list_enabled_flag) {
1333 pps->diff_cu_chroma_qp_offset_depth = get_ue_golomb_long(gb);
1334 pps->chroma_qp_offset_list_len_minus1 = get_ue_golomb_long(gb);
1335 if (pps->chroma_qp_offset_list_len_minus1 > 5) {
1340 for (i = 0; i <= pps->chroma_qp_offset_list_len_minus1; i++) {
1341 pps->cb_qp_offset_list[i] = get_se_golomb_long(gb);
1342 if (pps->cb_qp_offset_list[i]) {
1346 pps->cr_qp_offset_list[i] = get_se_golomb_long(gb);
1347 if (pps->cr_qp_offset_list[i]) {
1353 pps->log2_sao_offset_scale_luma = get_ue_golomb_long(gb);
1354 pps->log2_sao_offset_scale_chroma = get_ue_golomb_long(gb);
1356 if ( pps->log2_sao_offset_scale_luma > FFMAX(sps->bit_depth - 10, 0)
1357 || pps->log2_sao_offset_scale_chroma > FFMAX(sps->bit_depth_chroma - 10, 0)
1365 HEVCPPS *pps, HEVCSPS *sps)
1372 pps->col_bd = av_malloc_array(pps->num_tile_columns + 1, sizeof(*pps->col_bd));
1373 pps->row_bd = av_malloc_array(pps->num_tile_rows + 1, sizeof(*pps->row_bd));
1374 pps->col_idxX = av_malloc_array(sps->ctb_width, sizeof(*pps->col_idxX));
1375 if (!pps->col_bd || !pps->row_bd || !pps->col_idxX)
1378 if (pps->uniform_spacing_flag) {
1379 if (!pps->column_width) {
1380 pps->column_width = av_malloc_array(pps->num_tile_columns, sizeof(*pps->column_width));
1381 pps->row_height = av_malloc_array(pps->num_tile_rows, sizeof(*pps->row_height));
1383 if (!pps->column_width || !pps->row_height)
1386 for (i = 0; i < pps->num_tile_columns; i++) {
1387 pps->column_width[i] = ((i + 1) * sps->ctb_width) / pps->num_tile_columns -
1388 (i * sps->ctb_width) / pps->num_tile_columns;
1391 for (i = 0; i < pps->num_tile_rows; i++) {
1392 pps->row_height[i] = ((i + 1) * sps->ctb_height) / pps->num_tile_rows -
1393 (i * sps->ctb_height) / pps->num_tile_rows;
1397 pps->col_bd[0] = 0;
1398 for (i = 0; i < pps->num_tile_columns; i++)
1399 pps->col_bd[i + 1] = pps->col_bd[i] + pps->column_width[i];
1401 pps->row_bd[0] = 0;
1402 for (i = 0; i < pps->num_tile_rows; i++)
1403 pps->row_bd[i + 1] = pps->row_bd[i] + pps->row_height[i];
1406 if (i > pps->col_bd[j])
1408 pps->col_idxX[i] = j;
1416 pps->ctb_addr_rs_to_ts = av_malloc_array(pic_area_in_ctbs, sizeof(*pps->ctb_addr_rs_to_ts));
1417 pps->ctb_addr_ts_to_rs = av_malloc_array(pic_area_in_ctbs, sizeof(*pps->ctb_addr_ts_to_rs));
1418 pps->tile_id = av_malloc_array(pic_area_in_ctbs, sizeof(*pps->tile_id));
1419 pps->min_tb_addr_zs_tab = av_malloc_array((sps->tb_mask+2) * (sps->tb_mask+2), sizeof(*pps->min_tb_addr_zs_tab));
1420 if (!pps->ctb_addr_rs_to_ts || !pps->ctb_addr_ts_to_rs ||
1421 !pps->tile_id || !pps->min_tb_addr_zs_tab) {
1432 for (i = 0; i < pps->num_tile_columns; i++) {
1433 if (tb_x < pps->col_bd[i + 1]) {
1439 for (i = 0; i < pps->num_tile_rows; i++) {
1440 if (tb_y < pps->row_bd[i + 1]) {
1447 val += pps->row_height[tile_y] * pps->column_width[i];
1449 val += sps->ctb_width * pps->row_height[i];
1451 val += (tb_y - pps->row_bd[tile_y]) * pps->column_width[tile_x] +
1452 tb_x - pps->col_bd[tile_x];
1454 pps->ctb_addr_rs_to_ts[ctb_addr_rs] = val;
1455 pps->ctb_addr_ts_to_rs[val] = ctb_addr_rs;
1458 for (j = 0, tile_id = 0; j < pps->num_tile_rows; j++)
1459 for (i = 0; i < pps->num_tile_columns; i++, tile_id++)
1460 for (y = pps->row_bd[j]; y < pps->row_bd[j + 1]; y++)
1461 for (x = pps->col_bd[i]; x < pps->col_bd[i + 1]; x++)
1462 pps->tile_id[pps->ctb_addr_rs_to_ts[y * sps->ctb_width + x]] = tile_id;
1464 pps->tile_pos_rs = av_malloc_array(tile_id, sizeof(*pps->tile_pos_rs));
1465 if (!pps->tile_pos_rs)
1468 for (j = 0; j < pps->num_tile_rows; j++)
1469 for (i = 0; i < pps->num_tile_columns; i++)
1470 pps->tile_pos_rs[j * pps->num_tile_columns + i] =
1471 pps->row_bd[j] * sps->ctb_width + pps->col_bd[i];
1474 pps->min_tb_addr_zs = &pps->min_tb_addr_zs_tab[1*(sps->tb_mask+2)+1];
1476 pps->min_tb_addr_zs_tab[y*(sps->tb_mask+2)] = -1;
1477 pps->min_tb_addr_zs_tab[y] = -1;
1484 int val = pps->ctb_addr_rs_to_ts[rs] << (log2_diff * 2);
1489 pps->min_tb_addr_zs[y * (sps->tb_mask+2) + x] = val;
1506 HEVCPPS *pps = av_mallocz(sizeof(*pps));
1508 if (!pps)
1511 pps_buf = av_buffer_create((uint8_t *)pps, sizeof(*pps),
1514 av_freep(&pps);
1521 if (nal_size > sizeof(pps->data)) {
1524 nal_size, sizeof(pps->data));
1525 pps->data_size = sizeof(pps->data);
1527 pps->data_size = nal_size;
1529 memcpy(pps->data, gb->buffer, pps->data_size);
1532 pps->loop_filter_across_tiles_enabled_flag = 1;
1533 pps->num_tile_columns = 1;
1534 pps->num_tile_rows = 1;
1535 pps->uniform_spacing_flag = 1;
1536 pps->disable_dbf = 0;
1537 pps->beta_offset = 0;
1538 pps->tc_offset = 0;
1539 pps->log2_max_transform_skip_block_size = 2;
1548 pps->sps_id = get_ue_golomb_long(gb);
1549 if (pps->sps_id >= HEVC_MAX_SPS_COUNT) {
1550 av_log(avctx, AV_LOG_ERROR, "SPS id out of range: %d\n", pps->sps_id);
1554 if (!ps->sps_list[pps->sps_id]) {
1555 av_log(avctx, AV_LOG_ERROR, "SPS %u does not exist.\n", pps->sps_id);
1559 sps = (HEVCSPS *)ps->sps_list[pps->sps_id]->data;
1561 pps->dependent_slice_segments_enabled_flag = get_bits1(gb);
1562 pps->output_flag_present_flag = get_bits1(gb);
1563 pps->num_extra_slice_header_bits = get_bits(gb, 3);
1565 pps->sign_data_hiding_flag = get_bits1(gb);
1567 pps->cabac_init_present_flag = get_bits1(gb);
1569 pps->num_ref_idx_l0_default_active = get_ue_golomb_long(gb) + 1;
1570 pps->num_ref_idx_l1_default_active = get_ue_golomb_long(gb) + 1;
1572 pps->pic_init_qp_minus26 = get_se_golomb(gb);
1574 pps->constrained_intra_pred_flag = get_bits1(gb);
1575 pps->transform_skip_enabled_flag = get_bits1(gb);
1577 pps->cu_qp_delta_enabled_flag = get_bits1(gb);
1578 pps->diff_cu_qp_delta_depth = 0;
1579 if (pps->cu_qp_delta_enabled_flag)
1580 pps->diff_cu_qp_delta_depth = get_ue_golomb_long(gb);
1582 if (pps->diff_cu_qp_delta_depth < 0 ||
1583 pps->diff_cu_qp_delta_depth > sps->log2_diff_max_min_coding_block_size) {
1585 pps->diff_cu_qp_delta_depth);
1590 pps->cb_qp_offset = get_se_golomb(gb);
1591 if (pps->cb_qp_offset < -12 || pps->cb_qp_offset > 12) {
1593 pps->cb_qp_offset);
1597 pps->cr_qp_offset = get_se_golomb(gb);
1598 if (pps->cr_qp_offset < -12 || pps->cr_qp_offset > 12) {
1600 pps->cr_qp_offset);
1604 pps->pic_slice_level_chroma_qp_offsets_present_flag = get_bits1(gb);
1606 pps->weighted_pred_flag = get_bits1(gb);
1607 pps->weighted_bipred_flag = get_bits1(gb);
1609 pps->transquant_bypass_enable_flag = get_bits1(gb);
1610 pps->tiles_enabled_flag = get_bits1(gb);
1611 pps->entropy_coding_sync_enabled_flag = get_bits1(gb);
1613 if (pps->tiles_enabled_flag) {
1631 pps->num_tile_columns = num_tile_columns_minus1 + 1;
1632 pps->num_tile_rows = num_tile_rows_minus1 + 1;
1634 pps->column_width = av_malloc_array(pps->num_tile_columns, sizeof(*pps->column_width));
1635 pps->row_height = av_malloc_array(pps->num_tile_rows, sizeof(*pps->row_height));
1636 if (!pps->column_width || !pps->row_height) {
1641 pps->uniform_spacing_flag = get_bits1(gb);
1642 if (!pps->uniform_spacing_flag) {
1644 for (i = 0; i < pps->num_tile_columns - 1; i++) {
1645 pps->column_width[i] = get_ue_golomb_long(gb) + 1;
1646 sum += pps->column_width[i];
1653 pps->column_width[pps->num_tile_columns - 1] = sps->ctb_width - sum;
1656 for (i = 0; i < pps->num_tile_rows - 1; i++) {
1657 pps->row_height[i] = get_ue_golomb_long(gb) + 1;
1658 sum += pps->row_height[i];
1665 pps->row_height[pps->num_tile_rows - 1] = sps->ctb_height - sum;
1667 pps->loop_filter_across_tiles_enabled_flag = get_bits1(gb);
1670 pps->seq_loop_filter_across_slices_enabled_flag = get_bits1(gb);
1672 pps->deblocking_filter_control_present_flag = get_bits1(gb);
1673 if (pps->deblocking_filter_control_present_flag) {
1674 pps->deblocking_filter_override_enabled_flag = get_bits1(gb);
1675 pps->disable_dbf = get_bits1(gb);
1676 if (!pps->disable_dbf) {
1691 pps->beta_offset = 2 * beta_offset_div2;
1692 pps->tc_offset = 2 * tc_offset_div2;
1696 pps->scaling_list_data_present_flag = get_bits1(gb);
1697 if (pps->scaling_list_data_present_flag) {
1698 set_default_scaling_list_data(&pps->scaling_list);
1699 ret = scaling_list_data(gb, avctx, &pps->scaling_list, sps);
1703 pps->lists_modification_present_flag = get_bits1(gb);
1711 pps->log2_parallel_merge_level = log2_parallel_merge_level_minus2 + 2;
1713 pps->slice_header_extension_present_flag = get_bits1(gb);
1716 pps->pps_range_extensions_flag = get_bits1(gb);
1718 if (sps->ptl.general_ptl.profile_idc == FF_PROFILE_HEVC_REXT && pps->pps_range_extensions_flag) {
1719 if ((ret = pps_range_extensions(gb, avctx, pps, sps)) < 0)
1724 ret = setup_pps(avctx, gb, pps, sps);
1756 ps->pps = NULL;