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
231231 STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS * sizeof(**vksps_scaling->ScalingList16x16));
232232
233233 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],
235235 STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS * sizeof(**vksps_scaling->ScalingList32x32));
236236
237237 memcpy(vksps_scaling->ScalingListDCCoef16x16, sps->scaling_list.sl_dc[0],
238238 STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS * sizeof(*vksps_scaling->ScalingListDCCoef16x16));
239239
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];
242242
243243 *vksps_vui_header = (StdVideoH265HrdParameters) {
244244 .flags = (StdVideoH265HrdFlags) {
@@ -477,14 +477,14 @@ static void set_pps(const HEVCPPS *pps, const HEVCSPS *sps, · 232 unmodified lines
477477 STD_VIDEO_H265_SCALING_LIST_16X16_NUM_ELEMENTS * sizeof(**vkpps_scaling->ScalingList16x16));
478478
479479 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],
481481 STD_VIDEO_H265_SCALING_LIST_32X32_NUM_ELEMENTS * sizeof(**vkpps_scaling->ScalingList32x32));
482482
483483 memcpy(vkpps_scaling->ScalingListDCCoef16x16, pps->scaling_list.sl_dc[0],
484484 STD_VIDEO_H265_SCALING_LIST_16X16_NUM_LISTS * sizeof(*vkpps_scaling->ScalingListDCCoef16x16));
485485
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];
488488
489489 *vkpps = (StdVideoH265PictureParameterSet) {
490490 .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