mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 18:28:12 +02:00
vulkan/video: keep delta weight and offsets of predicted weight tables in h265 slice parsing
Signed-off-by: Hyunjun Ko <zzoon@igalia.com> Reviewed-by: Dave Airlie <airlied@redhat.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23790>
This commit is contained in:
parent
c421ecea56
commit
e2f95ad296
2 changed files with 24 additions and 14 deletions
|
|
@ -456,19 +456,20 @@ h265_pred_weight_table(struct vk_video_h265_slice_params *params,
|
|||
|
||||
for (i = 0; i < params->num_ref_idx_l0_active; ++i) {
|
||||
if (params->luma_weight_l0_flag[i]) {
|
||||
unsigned delta_luma_weight_l0 = vl_rbsp_se(rbsp);
|
||||
params->luma_weight_l0[i] = (1 << params->luma_log2_weight_denom) + delta_luma_weight_l0;
|
||||
params->delta_luma_weight_l0[i] = vl_rbsp_se(rbsp);
|
||||
params->luma_weight_l0[i] = (1 << params->luma_log2_weight_denom) + params->delta_luma_weight_l0[i];
|
||||
params->luma_offset_l0[i] = vl_rbsp_se(rbsp);
|
||||
}
|
||||
|
||||
if (params->chroma_weight_l0_flag[i]) {
|
||||
for (j = 0; j < 2; j++) {
|
||||
unsigned delta_chroma_weight_l0 = vl_rbsp_se(rbsp);
|
||||
unsigned delta_chroma_offset_l0 = vl_rbsp_se(rbsp);
|
||||
params->delta_chroma_weight_l0[i][j] = vl_rbsp_se(rbsp);
|
||||
params->delta_chroma_offset_l0[i][j] = vl_rbsp_se(rbsp);
|
||||
|
||||
params->chroma_weight_l0[i][j] = (1 << params->chroma_log2_weight_denom) + delta_chroma_weight_l0;
|
||||
params->chroma_offset_l0[i][j] = delta_chroma_offset_l0 -
|
||||
((128 * params->chroma_weight_l0[i][j]) >> params->chroma_log2_weight_denom) + 128;
|
||||
params->chroma_weight_l0[i][j] =
|
||||
(1 << params->chroma_log2_weight_denom) + params->delta_chroma_weight_l0[i][j];
|
||||
params->chroma_offset_l0[i][j] = CLAMP(params->delta_chroma_offset_l0[i][j] -
|
||||
((128 * params->chroma_weight_l0[i][j]) >> params->chroma_log2_weight_denom) + 128, -128, 127);
|
||||
}
|
||||
} else {
|
||||
for (j = 0; j < 2; j++) {
|
||||
|
|
@ -497,19 +498,21 @@ h265_pred_weight_table(struct vk_video_h265_slice_params *params,
|
|||
|
||||
for (i = 0; i < params->num_ref_idx_l1_active; ++i) {
|
||||
if (params->luma_weight_l1_flag[i]) {
|
||||
unsigned delta_luma_weight_l1 = vl_rbsp_se(rbsp);
|
||||
params->luma_weight_l1[i] = (1 << params->luma_log2_weight_denom) + delta_luma_weight_l1;
|
||||
params->delta_luma_weight_l1[i] = vl_rbsp_se(rbsp);
|
||||
params->luma_weight_l1[i] =
|
||||
(1 << params->luma_log2_weight_denom) + params->delta_luma_weight_l1[i];
|
||||
params->luma_offset_l1[i] = vl_rbsp_se(rbsp);
|
||||
}
|
||||
|
||||
if (params->chroma_weight_l1_flag[i]) {
|
||||
for (j = 0; j < 2; j++) {
|
||||
unsigned delta_chroma_weight_l1 = vl_rbsp_se(rbsp);
|
||||
unsigned delta_chroma_offset_l1 = vl_rbsp_se(rbsp);
|
||||
params->delta_chroma_weight_l1[i][j] = vl_rbsp_se(rbsp);
|
||||
params->delta_chroma_offset_l1[i][j] = vl_rbsp_se(rbsp);
|
||||
|
||||
params->chroma_weight_l1[i][j] = (1 << params->chroma_log2_weight_denom) + delta_chroma_weight_l1;
|
||||
params->chroma_offset_l1[i][j] = delta_chroma_offset_l1 -
|
||||
((128 * params->chroma_weight_l1[i][j]) >> params->chroma_log2_weight_denom) + 128;
|
||||
params->chroma_weight_l1[i][j] =
|
||||
(1 << params->chroma_log2_weight_denom) + params->delta_chroma_weight_l1[i][j];
|
||||
params->chroma_offset_l1[i][j] = CLAMP(params->delta_chroma_offset_l1[i][j] -
|
||||
((128 * params->chroma_weight_l1[i][j]) >> params->chroma_log2_weight_denom) + 128, -128, 127);
|
||||
}
|
||||
} else {
|
||||
for (j = 0; j < 2; j++) {
|
||||
|
|
|
|||
|
|
@ -152,6 +152,13 @@ struct vk_video_h265_slice_params {
|
|||
uint8_t chroma_weight_l1_flag[16];
|
||||
int16_t chroma_weight_l1[16][2];
|
||||
int16_t chroma_offset_l1[16][2];
|
||||
|
||||
int8_t delta_luma_weight_l0[16];
|
||||
int8_t delta_luma_weight_l1[16];
|
||||
int8_t delta_chroma_weight_l0[16][2];
|
||||
int8_t delta_chroma_weight_l1[16][2];
|
||||
int16_t delta_chroma_offset_l0[16][2];
|
||||
int16_t delta_chroma_offset_l1[16][2];
|
||||
};
|
||||
|
||||
void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue