History

vulkan/hevc: fix 32x32 scaling list indexing

This fixes another problem in the hevc scaling lists and aligns the code with what other hwaccels do.

Dave Airlie committed 3 years ago

Commit 2c4b6971 parent bfd50901 file · +6 −6Browse files

Unified · Split

libavcodec/vulkan_hevc.c+6−6
@@ -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) {

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t