radv/video: Add NULL checks for picture parameters

Fixes vk_layer_validation_tests PositiveVideoDecode.* and
PositiveVideoDecode*.InlineSessionParams

Cc: mesa-stable
Reviewed-by: Benjamin Cheng <benjamin.cheng@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38158>
This commit is contained in:
David Rosca
2025-10-30 09:23:30 +01:00
committed by Marge Bot
parent 23a3587aa6
commit bd151bf8b2
2 changed files with 134 additions and 96 deletions
+131 -96
View File
@@ -1752,8 +1752,10 @@ get_h265_msg(struct radv_device *device, struct radv_video_session *vid, struct
result.bit_depth_luma_minus8 = sps->bit_depth_luma_minus8;
result.bit_depth_chroma_minus8 = sps->bit_depth_chroma_minus8;
result.log2_max_pic_order_cnt_lsb_minus4 = sps->log2_max_pic_order_cnt_lsb_minus4;
result.sps_max_dec_pic_buffering_minus1 =
sps->pDecPicBufMgr->max_dec_pic_buffering_minus1[sps->sps_max_sub_layers_minus1];
if (sps->pDecPicBufMgr) {
result.sps_max_dec_pic_buffering_minus1 =
sps->pDecPicBufMgr->max_dec_pic_buffering_minus1[sps->sps_max_sub_layers_minus1];
}
result.log2_min_luma_coding_block_size_minus3 = sps->log2_min_luma_coding_block_size_minus3;
result.log2_diff_max_min_luma_coding_block_size = sps->log2_diff_max_min_luma_coding_block_size;
result.log2_min_transform_block_size_minus2 = sps->log2_min_luma_transform_block_size_minus2;
@@ -1876,8 +1878,7 @@ get_vp9_msg(struct radv_device *device, struct radv_video_session *vid, struct v
memset(&result, 0, sizeof(result));
rvcn_dec_vp9_probs_segment_t *prbs = (rvcn_dec_vp9_probs_segment_t *)(probs_ptr);
if (std_pic_info->flags.segmentation_enabled) {
if (std_pic_info->flags.segmentation_enabled && std_pic_info->pSegmentation) {
for (unsigned i = 0; i < 8; ++i) {
prbs->seg.feature_data[i] = (uint16_t)std_pic_info->pSegmentation->FeatureData[i][0] |
((uint32_t)(std_pic_info->pSegmentation->FeatureData[i][1] & 0xff) << 16) |
@@ -1918,12 +1919,12 @@ get_vp9_msg(struct radv_device *device, struct radv_video_session *vid, struct v
result.frame_header_flags |=
(std_pic_info->flags.refresh_frame_context << RDECODE_FRAME_HDR_INFO_VP9_REFRESH_FRAME_CONTEXT_SHIFT) &
RDECODE_FRAME_HDR_INFO_VP9_REFRESH_FRAME_CONTEXT_MASK;
if (std_pic_info->flags.segmentation_enabled) {
assert(std_pic_info->pSegmentation);
result.frame_header_flags |=
(std_pic_info->flags.segmentation_enabled << RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_ENABLED_SHIFT) &
RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_ENABLED_MASK;
result.frame_header_flags |=
(std_pic_info->flags.segmentation_enabled << RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_ENABLED_SHIFT) &
RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_ENABLED_MASK;
if (std_pic_info->flags.segmentation_enabled && std_pic_info->pSegmentation) {
result.frame_header_flags |= (std_pic_info->pSegmentation->flags.segmentation_update_map
<< RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_UPDATE_MAP_SHIFT) &
RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_UPDATE_MAP_MASK;
@@ -1936,13 +1937,16 @@ get_vp9_msg(struct radv_device *device, struct radv_video_session *vid, struct v
<< RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_UPDATE_DATA_SHIFT) &
RDECODE_FRAME_HDR_INFO_VP9_SEGMENTATION_UPDATE_DATA_MASK;
}
result.frame_header_flags |= (std_pic_info->pLoopFilter->flags.loop_filter_delta_enabled
<< RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_ENABLED_SHIFT) &
RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_ENABLED_MASK;
result.frame_header_flags |= (std_pic_info->pLoopFilter->flags.loop_filter_delta_update
<< RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_UPDATE_SHIFT) &
RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_UPDATE_MASK;
if (std_pic_info->pLoopFilter) {
result.frame_header_flags |= (std_pic_info->pLoopFilter->flags.loop_filter_delta_enabled
<< RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_ENABLED_SHIFT) &
RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_ENABLED_MASK;
result.frame_header_flags |= (std_pic_info->pLoopFilter->flags.loop_filter_delta_update
<< RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_UPDATE_SHIFT) &
RDECODE_FRAME_HDR_INFO_VP9_MODE_REF_DELTA_UPDATE_MASK;
}
result.frame_header_flags |=
(std_pic_info->flags.UsePrevFrameMvs << RDECODE_FRAME_HDR_INFO_VP9_USE_PREV_IN_FIND_MV_REFS_SHIFT) &
@@ -1955,26 +1959,31 @@ get_vp9_msg(struct radv_device *device, struct radv_video_session *vid, struct v
result.frame_context_idx = std_pic_info->frame_context_idx;
result.reset_frame_context = std_pic_info->reset_frame_context;
result.filter_level = std_pic_info->pLoopFilter->loop_filter_level;
result.sharpness_level = std_pic_info->pLoopFilter->loop_filter_sharpness;
uint8_t loop_filter_level = 0;
int shifted = std_pic_info->pLoopFilter->loop_filter_level >= 32;
if (std_pic_info->pLoopFilter) {
loop_filter_level = std_pic_info->pLoopFilter->loop_filter_level;
result.filter_level = std_pic_info->pLoopFilter->loop_filter_level;
result.sharpness_level = std_pic_info->pLoopFilter->loop_filter_sharpness;
}
int shifted = loop_filter_level >= 32;
for (int i = 0; i < (std_pic_info->flags.segmentation_enabled ? 8 : 1); i++) {
const uint8_t seg_lvl_alt_l = 1;
uint8_t lvl;
if (std_pic_info->flags.segmentation_enabled &&
if (std_pic_info->flags.segmentation_enabled && std_pic_info->pSegmentation &&
std_pic_info->pSegmentation->FeatureEnabled[i] & (1 << seg_lvl_alt_l)) {
lvl = std_pic_info->pSegmentation->FeatureData[i][seg_lvl_alt_l];
if (!std_pic_info->pSegmentation->flags.segmentation_abs_or_delta_update)
lvl += std_pic_info->pLoopFilter->loop_filter_level;
lvl += loop_filter_level;
lvl = CLAMP(lvl, 0, 63);
} else {
lvl = std_pic_info->pLoopFilter->loop_filter_level;
lvl = loop_filter_level;
}
if (std_pic_info->pLoopFilter->flags.loop_filter_delta_enabled) {
if (std_pic_info->pLoopFilter && std_pic_info->pLoopFilter->flags.loop_filter_delta_enabled) {
result.lf_adj_level[i][0][0] = result.lf_adj_level[i][0][1] =
CLAMP(lvl + (std_pic_info->pLoopFilter->loop_filter_ref_deltas[0] * (1 << shifted)), 0, 63);
for (int j = 1; j < 4; j++) {
@@ -2001,7 +2010,8 @@ get_vp9_msg(struct radv_device *device, struct radv_video_session *vid, struct v
result.log2_tile_rows = std_pic_info->tile_rows_log2;
result.chroma_format = 1;
result.bit_depth_luma_minus8 = result.bit_depth_chroma_minus8 = (std_pic_info->pColorConfig->BitDepth - 8);
if (std_pic_info->pColorConfig)
result.bit_depth_luma_minus8 = result.bit_depth_chroma_minus8 = (std_pic_info->pColorConfig->BitDepth - 8);
result.vp9_frame_size = vp9_pic_info->uncompressedHeaderOffset;
result.compressed_header_size = vp9_pic_info->tilesOffset - vp9_pic_info->compressedHeaderOffset;
@@ -2088,16 +2098,20 @@ get_av1_msg(struct radv_device *device, struct radv_video_session *vid, struct v
(pi->flags.allow_high_precision_mv << RDECODE_FRAME_HDR_INFO_AV1_ALLOW_HIGH_PRECISION_MV_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_ALLOW_HIGH_PRECISION_MV_MASK;
result.frame_header_flags |=
(seq_hdr->pColorConfig->flags.mono_chrome << RDECODE_FRAME_HDR_INFO_AV1_MONOCHROME_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_MONOCHROME_MASK;
if (seq_hdr->pColorConfig) {
result.frame_header_flags |=
(seq_hdr->pColorConfig->flags.mono_chrome << RDECODE_FRAME_HDR_INFO_AV1_MONOCHROME_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_MONOCHROME_MASK;
}
result.frame_header_flags |= (pi->flags.skip_mode_present << RDECODE_FRAME_HDR_INFO_AV1_SKIP_MODE_FLAG_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_SKIP_MODE_FLAG_MASK;
result.frame_header_flags |=
(pi->pQuantization->flags.using_qmatrix << RDECODE_FRAME_HDR_INFO_AV1_USING_QMATRIX_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_USING_QMATRIX_MASK;
if (pi->pQuantization) {
result.frame_header_flags |=
(pi->pQuantization->flags.using_qmatrix << RDECODE_FRAME_HDR_INFO_AV1_USING_QMATRIX_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_USING_QMATRIX_MASK;
}
result.frame_header_flags |=
(seq_hdr->flags.enable_filter_intra << RDECODE_FRAME_HDR_INFO_AV1_ENABLE_FILTER_INTRA_SHIFT) &
@@ -2141,13 +2155,15 @@ get_av1_msg(struct radv_device *device, struct radv_video_session *vid, struct v
(pi->flags.force_integer_mv << RDECODE_FRAME_HDR_INFO_AV1_CUR_FRAME_FORCE_INTEGER_MV_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_CUR_FRAME_FORCE_INTEGER_MV_MASK;
result.frame_header_flags |=
(pi->pLoopFilter->flags.loop_filter_delta_enabled << RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_ENABLED_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_ENABLED_MASK;
if (pi->pLoopFilter) {
result.frame_header_flags |=
(pi->pLoopFilter->flags.loop_filter_delta_enabled << RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_ENABLED_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_ENABLED_MASK;
result.frame_header_flags |=
(pi->pLoopFilter->flags.loop_filter_delta_update << RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_UPDATE_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_UPDATE_MASK;
result.frame_header_flags |=
(pi->pLoopFilter->flags.loop_filter_delta_update << RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_UPDATE_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_MODE_REF_DELTA_UPDATE_MASK;
}
result.frame_header_flags |= (pi->flags.delta_q_present << RDECODE_FRAME_HDR_INFO_AV1_DELTA_Q_PRESENT_FLAG_SHIFT) &
RDECODE_FRAME_HDR_INFO_AV1_DELTA_Q_PRESENT_FLAG_MASK;
@@ -2207,50 +2223,59 @@ get_av1_msg(struct radv_device *device, struct radv_video_session *vid, struct v
result.sb_size = seq_hdr->flags.use_128x128_superblock;
result.interp_filter = pi->interpolation_filter;
for (i = 0; i < 2; ++i)
result.filter_level[i] = pi->pLoopFilter->loop_filter_level[i];
result.filter_level_u = pi->pLoopFilter->loop_filter_level[2];
result.filter_level_v = pi->pLoopFilter->loop_filter_level[3];
result.sharpness_level = pi->pLoopFilter->loop_filter_sharpness;
for (i = 0; i < 8; ++i)
result.ref_deltas[i] = pi->pLoopFilter->loop_filter_ref_deltas[i];
for (i = 0; i < 2; ++i)
result.mode_deltas[i] = pi->pLoopFilter->loop_filter_mode_deltas[i];
result.base_qindex = pi->pQuantization->base_q_idx;
result.y_dc_delta_q = pi->pQuantization->DeltaQYDc;
result.u_dc_delta_q = pi->pQuantization->DeltaQUDc;
result.v_dc_delta_q = pi->pQuantization->DeltaQVDc;
result.u_ac_delta_q = pi->pQuantization->DeltaQUAc;
result.v_ac_delta_q = pi->pQuantization->DeltaQVAc;
if (pi->pQuantization->flags.using_qmatrix) {
result.qm_y = pi->pQuantization->qm_y | 0xf0;
result.qm_u = pi->pQuantization->qm_u | 0xf0;
result.qm_v = pi->pQuantization->qm_v | 0xf0;
} else {
result.qm_y = 0xff;
result.qm_u = 0xff;
result.qm_v = 0xff;
if (pi->pLoopFilter) {
for (i = 0; i < 2; ++i)
result.filter_level[i] = pi->pLoopFilter->loop_filter_level[i];
result.filter_level_u = pi->pLoopFilter->loop_filter_level[2];
result.filter_level_v = pi->pLoopFilter->loop_filter_level[3];
result.sharpness_level = pi->pLoopFilter->loop_filter_sharpness;
for (i = 0; i < 8; ++i)
result.ref_deltas[i] = pi->pLoopFilter->loop_filter_ref_deltas[i];
for (i = 0; i < 2; ++i)
result.mode_deltas[i] = pi->pLoopFilter->loop_filter_mode_deltas[i];
}
result.qm_y = 0xff;
result.qm_u = 0xff;
result.qm_v = 0xff;
if (pi->pQuantization) {
result.base_qindex = pi->pQuantization->base_q_idx;
result.y_dc_delta_q = pi->pQuantization->DeltaQYDc;
result.u_dc_delta_q = pi->pQuantization->DeltaQUDc;
result.v_dc_delta_q = pi->pQuantization->DeltaQVDc;
result.u_ac_delta_q = pi->pQuantization->DeltaQUAc;
result.v_ac_delta_q = pi->pQuantization->DeltaQVAc;
if (pi->pQuantization->flags.using_qmatrix) {
result.qm_y = pi->pQuantization->qm_y | 0xf0;
result.qm_u = pi->pQuantization->qm_u | 0xf0;
result.qm_v = pi->pQuantization->qm_v | 0xf0;
}
}
result.delta_q_res = (1 << pi->delta_q_res);
result.delta_lf_res = (1 << pi->delta_lf_res);
result.tile_cols = pi->pTileInfo->TileCols;
result.tile_rows = pi->pTileInfo->TileRows;
result.tx_mode = pi->TxMode;
result.reference_mode = (pi->flags.reference_select == 1) ? 2 : 0;
result.chroma_format = seq_hdr->pColorConfig->flags.mono_chrome ? 0 : 1;
result.tile_size_bytes = pi->pTileInfo->tile_size_bytes_minus_1;
result.context_update_tile_id = pi->pTileInfo->context_update_tile_id;
for (i = 0; i < result.tile_cols; i++)
result.tile_col_start_sb[i] = pi->pTileInfo->pMiColStarts[i];
result.tile_col_start_sb[result.tile_cols] =
result.tile_col_start_sb[result.tile_cols - 1] + pi->pTileInfo->pWidthInSbsMinus1[result.tile_cols - 1] + 1;
for (i = 0; i < pi->pTileInfo->TileRows; i++)
result.tile_row_start_sb[i] = pi->pTileInfo->pMiRowStarts[i];
result.tile_row_start_sb[result.tile_rows] =
result.tile_row_start_sb[result.tile_rows - 1] + pi->pTileInfo->pHeightInSbsMinus1[result.tile_rows - 1] + 1;
if (pi->pTileInfo) {
result.tile_cols = pi->pTileInfo->TileCols;
result.tile_rows = pi->pTileInfo->TileRows;
result.tile_size_bytes = pi->pTileInfo->tile_size_bytes_minus_1;
result.context_update_tile_id = pi->pTileInfo->context_update_tile_id;
for (i = 0; i < result.tile_cols; i++)
result.tile_col_start_sb[i] = pi->pTileInfo->pMiColStarts[i];
result.tile_col_start_sb[result.tile_cols] =
result.tile_col_start_sb[result.tile_cols - 1] + pi->pTileInfo->pWidthInSbsMinus1[result.tile_cols - 1] + 1;
for (i = 0; i < pi->pTileInfo->TileRows; i++)
result.tile_row_start_sb[i] = pi->pTileInfo->pMiRowStarts[i];
result.tile_row_start_sb[result.tile_rows] =
result.tile_row_start_sb[result.tile_rows - 1] + pi->pTileInfo->pHeightInSbsMinus1[result.tile_rows - 1] + 1;
}
result.max_width = seq_hdr->max_frame_width_minus_1 + 1;
result.max_height = seq_hdr->max_frame_height_minus_1 + 1;
@@ -2300,24 +2325,26 @@ get_av1_msg(struct radv_device *device, struct radv_video_session *vid, struct v
av1_pic_info->referenceNameSlotIndices[i] == -1 ? 0x7f : av1_pic_info->referenceNameSlotIndices[i];
}
result.bit_depth_luma_minus8 = result.bit_depth_chroma_minus8 = seq_hdr->pColorConfig->BitDepth - 8;
int16_t *feature_data = (int16_t *)probs_ptr;
int fd_idx = 0;
for (i = 0; i < 8; ++i) {
result.feature_mask[i] = pi->pSegmentation->FeatureEnabled[i];
for (j = 0; j < 8; ++j) {
result.feature_data[i][j] = pi->pSegmentation->FeatureData[i][j];
feature_data[fd_idx++] = result.feature_data[i][j];
if (pi->pSegmentation) {
int16_t *feature_data = (int16_t *)probs_ptr;
int fd_idx = 0;
for (i = 0; i < 8; ++i) {
result.feature_mask[i] = pi->pSegmentation->FeatureEnabled[i];
for (j = 0; j < 8; ++j) {
result.feature_data[i][j] = pi->pSegmentation->FeatureData[i][j];
feature_data[fd_idx++] = result.feature_data[i][j];
}
}
memcpy(((char *)probs_ptr + 128), result.feature_mask, 8);
}
memcpy(((char *)probs_ptr + 128), result.feature_mask, 8);
result.cdef_damping = pi->pCDEF->cdef_damping_minus_3 + 3;
result.cdef_bits = pi->pCDEF->cdef_bits;
for (i = 0; i < 8; ++i) {
result.cdef_strengths[i] = (pi->pCDEF->cdef_y_pri_strength[i] << 2) + pi->pCDEF->cdef_y_sec_strength[i];
result.cdef_uv_strengths[i] = (pi->pCDEF->cdef_uv_pri_strength[i] << 2) + pi->pCDEF->cdef_uv_sec_strength[i];
if (pi->pCDEF) {
result.cdef_damping = pi->pCDEF->cdef_damping_minus_3 + 3;
result.cdef_bits = pi->pCDEF->cdef_bits;
for (i = 0; i < 8; ++i) {
result.cdef_strengths[i] = (pi->pCDEF->cdef_y_pri_strength[i] << 2) + pi->pCDEF->cdef_y_sec_strength[i];
result.cdef_uv_strengths[i] = (pi->pCDEF->cdef_uv_pri_strength[i] << 2) + pi->pCDEF->cdef_uv_sec_strength[i];
}
}
if (pi->flags.UsesLr) {
@@ -2327,9 +2354,13 @@ get_av1_msg(struct radv_device *device, struct radv_video_session *vid, struct v
}
}
if (seq_hdr->pColorConfig->BitDepth > 8) {
result.p010_mode = 1;
result.msb_mode = 1;
if (seq_hdr->pColorConfig) {
result.chroma_format = seq_hdr->pColorConfig->flags.mono_chrome ? 0 : 1;
result.bit_depth_luma_minus8 = result.bit_depth_chroma_minus8 = seq_hdr->pColorConfig->BitDepth - 8;
if (seq_hdr->pColorConfig->BitDepth > 8) {
result.p010_mode = 1;
result.msb_mode = 1;
}
}
result.preskip_segid = 0;
@@ -2361,7 +2392,7 @@ get_av1_msg(struct radv_device *device, struct radv_video_session *vid, struct v
rvcn_dec_film_grain_params_t *fg_params = &result.film_grain;
fg_params->apply_grain = pi->flags.apply_grain;
if (fg_params->apply_grain) {
if (fg_params->apply_grain && pi->pFilmGrain) {
rvcn_dec_av1_fg_init_buf_t *fg_buf = (rvcn_dec_av1_fg_init_buf_t *)((char *)probs_ptr + 256);
fg_params->random_seed = pi->pFilmGrain->grain_seed;
fg_params->grain_scale_shift = pi->pFilmGrain->grain_scale_shift;
@@ -2407,10 +2438,12 @@ get_av1_msg(struct radv_device *device, struct radv_video_session *vid, struct v
}
result.uncompressed_header_size = 0;
for (i = 0; i < STD_VIDEO_AV1_NUM_REF_FRAMES; ++i) {
result.global_motion[i].wmtype = pi->pGlobalMotion->GmType[i];
for (j = 0; j < STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS; ++j)
result.global_motion[i].wmmat[j] = pi->pGlobalMotion->gm_params[i][j];
if (pi->pGlobalMotion) {
for (i = 0; i < STD_VIDEO_AV1_NUM_REF_FRAMES; ++i) {
result.global_motion[i].wmtype = pi->pGlobalMotion->GmType[i];
for (j = 0; j < STD_VIDEO_AV1_GLOBAL_MOTION_PARAMS; ++j)
result.global_motion[i].wmmat[j] = pi->pGlobalMotion->gm_params[i][j];
}
}
for (i = 0; i < av1_pic_info->tileCount && i < 256; ++i) {
result.tile_info[i].offset = av1_pic_info->pTileOffsets[i];
@@ -2924,8 +2957,10 @@ get_uvd_h265_msg(struct radv_device *device, struct radv_video_session *vid, str
result.bit_depth_luma_minus8 = sps->bit_depth_luma_minus8;
result.bit_depth_chroma_minus8 = sps->bit_depth_chroma_minus8;
result.log2_max_pic_order_cnt_lsb_minus4 = sps->log2_max_pic_order_cnt_lsb_minus4;
result.sps_max_dec_pic_buffering_minus1 =
sps->pDecPicBufMgr->max_dec_pic_buffering_minus1[sps->sps_max_sub_layers_minus1];
if (sps->pDecPicBufMgr) {
result.sps_max_dec_pic_buffering_minus1 =
sps->pDecPicBufMgr->max_dec_pic_buffering_minus1[sps->sps_max_sub_layers_minus1];
}
result.log2_min_luma_coding_block_size_minus3 = sps->log2_min_luma_coding_block_size_minus3;
result.log2_diff_max_min_luma_coding_block_size = sps->log2_diff_max_min_luma_coding_block_size;
result.log2_min_transform_block_size_minus2 = sps->log2_min_luma_transform_block_size_minus2;
+3
View File
@@ -1052,6 +1052,9 @@ radv_enc_hevc_st_ref_pic_set(struct radv_cmd_buffer *cmd_buffer, const StdVideoH
unsigned int num_short_term_ref_pic_sets = sps->num_short_term_ref_pic_sets;
unsigned int index = num_short_term_ref_pic_sets;
if (!rps)
return 0;
if (index != 0)
radv_enc_code_fixed_bits(cmd_buffer, rps->flags.inter_ref_pic_set_prediction_flag, 0x1);