diff options
Diffstat (limited to 'libavcodec/vulkan_hevc.c')
-rw-r--r-- | libavcodec/vulkan_hevc.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/libavcodec/vulkan_hevc.c b/libavcodec/vulkan_hevc.c index df86049d22..5d7c6b1b64 100644 --- a/libavcodec/vulkan_hevc.c +++ b/libavcodec/vulkan_hevc.c @@ -351,6 +351,8 @@ static void set_sps(const HEVCSPS *sps, int sps_idx, pal->PredictorPaletteEntries[i][j] = sps->sps_palette_predictor_initializer[i][j]; for (int i = 0; i < sps->nb_st_rps; i++) { + const ShortTermRPS *st_rps = &sps->st_rps[i]; + str[i] = (StdVideoH265ShortTermRefPicSet) { .flags = (StdVideoH265ShortTermRefPicSetFlags) { .inter_ref_pic_set_prediction_flag = sps->st_rps[i].rps_predict, @@ -375,12 +377,13 @@ static void set_sps(const HEVCSPS *sps, int sps_idx, str[i].used_by_curr_pic_flag |= sps->st_rps[i].used[j] << j; for (int j = 0; j < str[i].num_negative_pics; j++) { - str[i].delta_poc_s0_minus1[j] = sps->st_rps[i].delta_poc_s0[j] - 1; + str[i].delta_poc_s0_minus1[j] = st_rps->delta_poc[j] - (j ? st_rps->delta_poc[j - 1] : 0) - 1; str[i].used_by_curr_pic_s0_flag |= sps->st_rps[i].used[j] << j; } for (int j = 0; j < str[i].num_positive_pics; j++) { - str[i].delta_poc_s1_minus1[j] = sps->st_rps[i].delta_poc_s1[j] - 1; + str[i].delta_poc_s0_minus1[j] = st_rps->delta_poc[st_rps->num_negative_pics + j] - + (j ? st_rps->delta_poc[st_rps->num_negative_pics + j - 1] : 0) - 1; str[i].used_by_curr_pic_s0_flag |= sps->st_rps[i].used[str[i].num_negative_pics + j] << j; } } |