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 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS * sizeof(**vksps_scaling->ScalingList16x16)); | 231 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS * sizeof(**vksps_scaling->ScalingList16x16)); |
| 232 | 232 | ||
| 233 | for (int i = 0; i < STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS; i++) | 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 | STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS * sizeof(**vksps_scaling->ScalingList32x32)); | 235 | STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS * sizeof(**vksps_scaling->ScalingList32x32)); |
| 236 | 236 | ||
| 237 | memcpy(vksps_scaling->ScalingListDCCoef16x16, sps->scaling_list.sl_dc[0], | 237 | memcpy(vksps_scaling->ScalingListDCCoef16x16, sps->scaling_list.sl_dc[0], |
| 238 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS * sizeof(*vksps_scaling->ScalingListDCCoef16x16)); | 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], | 240 | for (int i = 0; i < STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS; i++) |
| 241 | STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS * sizeof(*vksps_scaling->ScalingListDCCoef32x32)); | 241 | vksps_scaling->ScalingListDCCoef32x32[i] = sps->scaling_list.sl_dc[1][i * 3]; |
| 242 | 242 | ||
| 243 | *vksps_vui_header = (StdVideoH265HrdParameters) { | 243 | *vksps_vui_header = (StdVideoH265HrdParameters) { |
| 244 | .flags = (StdVideoH265HrdFlags) { | 244 | .flags = (StdVideoH265HrdFlags) { |
| @@ -477,14 +477,14 @@ static void set_pps(const HEVCPPS *pps, const HEVCSPS *sps, · 232 unmodified lines | |||
| 477 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS * sizeof(**vkpps_scaling->ScalingList16x16)); | 477 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS * sizeof(**vkpps_scaling->ScalingList16x16)); |
| 478 | 478 | ||
| 479 | for (int i = 0; i < STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS; i++) | 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 | STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS * sizeof(**vkpps_scaling->ScalingList32x32)); | 481 | STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS * sizeof(**vkpps_scaling->ScalingList32x32)); |
| 482 | 482 | ||
| 483 | memcpy(vkpps_scaling->ScalingListDCCoef16x16, pps->scaling_list.sl_dc[0], | 483 | memcpy(vkpps_scaling->ScalingListDCCoef16x16, pps->scaling_list.sl_dc[0], |
| 484 | STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS * sizeof(*vkpps_scaling->ScalingListDCCoef16x16)); | 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], | 486 | for (int i = 0; i < STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS; i++) |
| 487 | STD_VIDEO_H265_SCALING_LIST_32X32_NUM_LISTS * sizeof(*vkpps_scaling->ScalingListDCCoef32x32)); | 487 | vkpps_scaling->ScalingListDCCoef32x32[i] = sps->scaling_list.sl_dc[1][i * 3]; |
| 488 | 488 | ||
| 489 | *vkpps = (StdVideoH265PictureParameterSet) { | 489 | *vkpps = (StdVideoH265PictureParameterSet) { |
| 490 | .flags = (StdVideoH265PpsFlags) { | 490 | .flags = (StdVideoH265PpsFlags) { |