This fixes another problem in the hevc scaling lists and aligns the code with what other hwaccels do.
Unified · Split
| @@ -231,14 +231,14 @@ static void set_sps(const HEVCSPS *sps, int sps_idx, · 230 unmodified lines | ||
| 231 | 231 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS * sizeof(**vksps_scaling->ScalingList16x16)); |
| 232 | 232 | |
| 233 | 233 | for (int i = 0; i < STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS; i++) |
| 234 | − memcpy(vksps_scaling->ScalingList32x32[i], sps->scaling_list.sl[3][i], | |
| 234 | + memcpy(vksps_scaling->ScalingList32x32[i], sps->scaling_list.sl[3][i * 3], | |
| 235 | 235 | STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS * sizeof(**vksps_scaling->ScalingList32x32)); |
| 236 | 236 | |
| 237 | 237 | memcpy(vksps_scaling->ScalingListDCCoef16x16, sps->scaling_list.sl_dc[0], |
| 238 | 238 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS * sizeof(*vksps_scaling->ScalingListDCCoef16x16)); |
| 239 | 239 | |
| 240 | − memcpy(vksps_scaling->ScalingListDCCoef32x32, sps->scaling_list.sl_dc[1], | |
| 241 | − STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS * sizeof(*vksps_scaling->ScalingListDCCoef32x32)); | |
| 240 | + for (int i = 0; i < STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS; i++) | |
| 241 | + vksps_scaling->ScalingListDCCoef32x32[i] = sps->scaling_list.sl_dc[1][i * 3]; | |
| 242 | 242 | |
| 243 | 243 | *vksps_vui_header = (StdVideoH265HrdParameters) { |
| 244 | 244 | .flags = (StdVideoH265HrdFlags) { |
| @@ -477,14 +477,14 @@ static void set_pps(const HEVCPPS *pps, const HEVCSPS *sps, · 232 unmodified lines | ||
| 477 | 477 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS * sizeof(**vkpps_scaling->ScalingList16x16)); |
| 478 | 478 | |
| 479 | 479 | for (int i = 0; i < STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS; i++) |
| 480 | − memcpy(vkpps_scaling->ScalingList32x32[i], pps->scaling_list.sl[3][i], | |
| 480 | + memcpy(vkpps_scaling->ScalingList32x32[i], pps->scaling_list.sl[3][i * 3], | |
| 481 | 481 | STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS * sizeof(**vkpps_scaling->ScalingList32x32)); |
| 482 | 482 | |
| 483 | 483 | memcpy(vkpps_scaling->ScalingListDCCoef16x16, pps->scaling_list.sl_dc[0], |
| 484 | 484 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS * sizeof(*vkpps_scaling->ScalingListDCCoef16x16)); |
| 485 | 485 | |
| 486 | − memcpy(vkpps_scaling->ScalingListDCCoef32x32, pps->scaling_list.sl_dc[1], | |
| 487 | − STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS * sizeof(*vkpps_scaling->ScalingListDCCoef32x32)); | |
| 486 | + for (int i = 0; i < STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS; i++) | |
| 487 | + vkpps_scaling->ScalingListDCCoef32x32[i] = sps->scaling_list.sl_dc[1][i * 3]; | |
| 488 | 488 | |
| 489 | 489 | *vkpps = (StdVideoH265PictureParameterSet) { |
| 490 | 490 | .flags = (StdVideoH265PpsFlags) { |