summaryrefslogtreecommitdiff
path: root/libavcodec/dxva2_h264.c
diff options
context:
space:
mode:
authorCarl Eugen Hoyos <cehoyos@ag.or.at>2011-09-21 20:42:48 +0000
committerJanne Grunau <janne-libav@jannau.net>2011-09-30 20:15:17 +0200
commitbcb15554894e13d1575d5f6e7ff833812a315004 (patch)
tree4473ad26cd3c3a35ee0a002f39f54e374d77c4d8 /libavcodec/dxva2_h264.c
parentbf5d46d8e6de1f3035adb63b50924f474fabb578 (diff)
dxva2_h264: pass the correct 8x8 scaling lists
Copy the Inter 8x8 scaling list as second 8x8 matrix into DXVA2's quantization matrix data structure instead of a potentially unset Intra chroma scaling matrix. Fix dxva2 decoding for some H264 samples. Signed-off-by: Janne Grunau <janne-libav@jannau.net>
Diffstat (limited to 'libavcodec/dxva2_h264.c')
-rw-r--r--libavcodec/dxva2_h264.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/libavcodec/dxva2_h264.c b/libavcodec/dxva2_h264.c
index 090bce632d..ea51958c62 100644
--- a/libavcodec/dxva2_h264.c
+++ b/libavcodec/dxva2_h264.c
@@ -162,17 +162,19 @@ static void fill_scaling_lists(struct dxva_context *ctx, const H264Context *h, D
for (j = 0; j < 16; j++)
qm->bScalingLists4x4[i][j] = h->pps.scaling_matrix4[i][j];
- for (i = 0; i < 2; i++)
- for (j = 0; j < 64; j++)
- qm->bScalingLists8x8[i][j] = h->pps.scaling_matrix8[i][j];
+ for (i = 0; i < 64; i++) {
+ qm->bScalingLists8x8[0][i] = h->pps.scaling_matrix8[0][i];
+ qm->bScalingLists8x8[1][i] = h->pps.scaling_matrix8[3][i];
+ }
} else {
for (i = 0; i < 6; i++)
for (j = 0; j < 16; j++)
qm->bScalingLists4x4[i][j] = h->pps.scaling_matrix4[i][zigzag_scan[j]];
- for (i = 0; i < 2; i++)
- for (j = 0; j < 64; j++)
- qm->bScalingLists8x8[i][j] = h->pps.scaling_matrix8[i][ff_zigzag_direct[j]];
+ for (i = 0; i < 64; i++) {
+ qm->bScalingLists8x8[0][i] = h->pps.scaling_matrix8[0][ff_zigzag_direct[i]];
+ qm->bScalingLists8x8[1][i] = h->pps.scaling_matrix8[3][ff_zigzag_direct[i]];
+ }
}
}