summaryrefslogtreecommitdiff
path: root/src/libvdpau/nal.h
diff options
context:
space:
mode:
authorJulian Scheel <julian@jusst.de>2009-01-15 19:26:55 +0000
committerJulian Scheel <julian@jusst.de>2009-01-15 19:26:55 +0000
commit4203256b53c19121243ef38d679471703b4433ac (patch)
treeb44cf583acee340b3c478d9519915f8429aa53b5 /src/libvdpau/nal.h
parent1553b462393d3e20ed838d4326c9d62ca5317b1a (diff)
downloadxine-lib-4203256b53c19121243ef38d679471703b4433ac.tar.gz
xine-lib-4203256b53c19121243ef38d679471703b4433ac.tar.bz2
Properly parse scaling_lists (zigzag order, defaults)...
This fixed wrong colors/artefacts for several mkv samples.
Diffstat (limited to 'src/libvdpau/nal.h')
-rw-r--r--src/libvdpau/nal.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libvdpau/nal.h b/src/libvdpau/nal.h
index ee5a4bb05..f892e1a3a 100644
--- a/src/libvdpau/nal.h
+++ b/src/libvdpau/nal.h
@@ -87,6 +87,32 @@ enum aspect_ratio
ASPECT_EXTENDED_SAR=255
};
+static const uint8_t zigzag_4x4[16] = {
+ 0+0*4, 1+0*4, 0+1*4, 0+2*4,
+ 1+1*4, 2+0*4, 3+0*4, 2+1*4,
+ 1+2*4, 0+3*4, 1+3*4, 2+2*4,
+ 3+1*4, 3+2*4, 2+3*4, 3+3*4,
+};
+
+static const uint8_t zigzag_8x8[64] = {
+ 0+0*8, 1+0*8, 0+1*8, 0+2*8,
+ 1+1*8, 2+0*8, 3+0*8, 2+1*8,
+ 1+2*8, 0+3*8, 0+4*8, 1+3*8,
+ 2+2*8, 3+1*8, 4+0*8, 5+0*8,
+ 4+1*8, 3+2*8, 2+3*8, 1+4*8,
+ 0+5*8, 0+6*8, 1+5*8, 2+4*8,
+ 3+3*8, 4+2*8, 5+1*8, 6+0*8,
+ 7+0*8, 6+1*8, 5+2*8, 4+3*8,
+ 3+4*8, 2+5*8, 1+6*8, 0+7*8,
+ 1+7*8, 2+6*8, 3+5*8, 4+4*8,
+ 5+3*8, 6+2*8, 7+1*8, 7+2*8,
+ 6+3*8, 5+4*8, 4+5*8, 3+6*8,
+ 2+7*8, 3+7*8, 4+6*8, 5+5*8,
+ 6+4*8, 7+3*8, 7+4*8, 6+5*8,
+ 5+6*8, 4+7*8, 5+7*8, 6+6*8,
+ 7+5*8, 7+6*8, 6+7*8, 7+7*8,
+};
+
static inline uint32_t slice_type(uint32_t slice_type)
{
return (slice_type < 10 ? slice_type % 5 : slice_type);