frontends/va: Parse more H264 PPS for transform_8x8_mode_flag

Also use constrained_intra_pred_flag from pic params.

Reviewed-by: Ruijing Dong <ruijing.dong@amd.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/31020>
This commit is contained in:
David Rosca
2024-09-03 15:03:04 +02:00
committed by Marge Bot
parent 1537b9355a
commit cd2562117a
2 changed files with 16 additions and 0 deletions
@@ -136,6 +136,10 @@ vlVaHandleVAEncPictureParameterBufferTypeH264(vlVaDriver *drv, vlVaContext *cont
context->desc.h264enc.pic_ctrl.chroma_qp_index_offset = h264->chroma_qp_index_offset;
context->desc.h264enc.pic_ctrl.second_chroma_qp_index_offset
= h264->second_chroma_qp_index_offset;
context->desc.h264enc.pic_ctrl.constrained_intra_pred_flag =
h264->pic_fields.bits.constrained_intra_pred_flag;
context->desc.h264enc.pic_ctrl.transform_8x8_mode_flag =
h264->pic_fields.bits.transform_8x8_mode_flag;
if (!(context->desc.base.packed_headers & VA_ENC_PACKED_HEADER_SLICE)) {
unsigned max_poc = 1 << (context->desc.h264enc.seq.log2_max_pic_order_cnt_lsb_minus4 + 4);
@@ -749,6 +753,17 @@ static void parseEncPpsParamsH264(vlVaContext *context, struct vl_rbsp *rbsp)
pic->deblocking_filter_control_present_flag = vl_rbsp_u(rbsp, 1);
pic->constrained_intra_pred_flag = vl_rbsp_u(rbsp, 1);
pic->redundant_pic_cnt_present_flag = vl_rbsp_u(rbsp, 1);
if (vl_rbsp_more_data(rbsp)) {
pic->transform_8x8_mode_flag = vl_rbsp_u(rbsp, 1);
if (vl_rbsp_u(rbsp, 1)) { /* pic_scaling_matrix_present_flag */
debug_error("PPS scaling matrix not supported");
return;
}
pic->second_chroma_qp_index_offset = vl_rbsp_se(rbsp);
} else {
pic->transform_8x8_mode_flag = 0;
pic->second_chroma_qp_index_offset = pic->chroma_qp_index_offset;
}
}
VAStatus
+1
View File
@@ -538,6 +538,7 @@ struct pipe_h264_enc_pic_control
uint32_t deblocking_filter_control_present_flag : 1;
uint32_t constrained_intra_pred_flag : 1;
uint32_t redundant_pic_cnt_present_flag : 1;
uint32_t transform_8x8_mode_flag : 1;
};
uint8_t nal_ref_idc;
uint8_t nal_unit_type;