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>
This commit is contained in:
parent
bf5d46d8e6
commit
bcb1555489
@ -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]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user