[Mesa-dev] [PATCH] st/omx/h264: fix corruption when scaling matrix present flag is set
Leo Liu
leo.liu at amd.com
Mon Feb 1 16:09:09 UTC 2016
The scaling lsit should be filling out with zig zag scan
Cc: "11.0 11.1" <mesa-stable at lists.freedesktop.org>
Signed-off-by: Leo Liu <leo.liu at amd.com>
---
src/gallium/state_trackers/omx/vid_dec_h264.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
diff --git a/src/gallium/state_trackers/omx/vid_dec_h264.c b/src/gallium/state_trackers/omx/vid_dec_h264.c
index f66ed89..8104e93 100644
--- a/src/gallium/state_trackers/omx/vid_dec_h264.c
+++ b/src/gallium/state_trackers/omx/vid_dec_h264.c
@@ -79,6 +79,22 @@ static const uint8_t Default_8x8_Inter[64] = {
30, 30, 32, 32, 32, 33, 33, 35
};
+static const uint8_t Zigzag_Scan[16] = {
+ 0, 1, 4, 8, 5, 2, 3, 6,
+ 9, 12, 13, 10, 7, 11, 14, 15
+};
+
+static const uint8_t Zigzag_Scan8[64] = {
+ 0, 1, 8, 16, 9, 2, 3, 10,
+ 17, 24, 32, 25, 18, 11, 4, 5,
+ 12, 19, 26, 33, 40, 48, 41, 34,
+ 27, 20, 13, 6, 7, 14, 21, 28,
+ 35, 42, 49, 56, 57, 50, 43, 36,
+ 29, 22, 15, 23, 30, 37, 44, 51,
+ 58, 59, 52, 45, 38, 31, 39, 46,
+ 53, 60, 61, 54, 47, 55, 62, 63
+};
+
static void vid_dec_h264_Decode(vid_dec_PrivateType *priv, struct vl_vlc *vlc, unsigned min_bits_left);
static void vid_dec_h264_EndFrame(vid_dec_PrivateType *priv);
static struct pipe_video_buffer *vid_dec_h264_Flush(vid_dec_PrivateType *priv);
@@ -215,6 +231,7 @@ static void scaling_list(struct vl_rbsp *rbsp, uint8_t *scalingList, unsigned si
}
for (i = 0; i < sizeOfScalingList; ++i ) {
+ unsigned scan = (sizeOfScalingList == 16) ? Zigzag_Scan[i] : Zigzag_Scan8[i];
if (nextScale != 0) {
signed delta_scale = vl_rbsp_se(rbsp);
@@ -224,8 +241,8 @@ static void scaling_list(struct vl_rbsp *rbsp, uint8_t *scalingList, unsigned si
return;
}
}
- scalingList[i] = nextScale == 0 ? lastScale : nextScale;
- lastScale = scalingList[i];
+ scalingList[scan] = nextScale == 0 ? lastScale : nextScale;
+ lastScale = scalingList[scan];
}
}
--
1.9.1
More information about the mesa-dev
mailing list