Mercurial > libavcodec.hg
annotate vc1data.h @ 3980:5afe4253a220 libavcodec
replace a few and/sub/... by cmov
this is faster on P3, should be faster on AMD, and should be slower on P4
its disabled by default (benchmarks welcome so we know when to enable it)
author | michael |
---|---|
date | Tue, 10 Oct 2006 01:08:39 +0000 |
parents | c8c591fe26f8 |
children | 85e1f5ceb97e |
rev | line source |
---|---|
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
1 /* |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
2 * VC-1 and WMV3 decoder |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
3 * copyright (c) 2006 Konstantin Shishkov |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
4 * (c) 2005 anonymous, Alex Beregszaszi, Michael Niedermayer |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
5 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
6 * This file is part of FFmpeg. |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
7 * |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
8 * FFmpeg is free software; you can redistribute it and/or |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
9 * modify it under the terms of the GNU Lesser General Public |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
10 * License as published by the Free Software Foundation; either |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
11 * version 2.1 of the License, or (at your option) any later version. |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
12 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
13 * FFmpeg is distributed in the hope that it will be useful, |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
16 * Lesser General Public License for more details. |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
17 * |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
18 * You should have received a copy of the GNU Lesser General Public |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3699
diff
changeset
|
19 * License along with FFmpeg; if not, write to the Free Software |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
21 */ |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
3689
diff
changeset
|
22 |
3359 | 23 /** |
24 * @file vc1data.h | |
3360
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
25 * VC-1 tables. |
3359 | 26 */ |
27 | |
28 #ifndef VC1DATA_H | |
29 #define VC1DATA_H | |
30 | |
3689 | 31 #if 0 //original bfraction from vc9data.h, not conforming to standard |
3515
20938be7b67b
Some B-frames support (parsing and decoding only, no motion compesation is done)
kostya
parents:
3360
diff
changeset
|
32 /* Denominator used for vc1_bfraction_lut */ |
20938be7b67b
Some B-frames support (parsing and decoding only, no motion compesation is done)
kostya
parents:
3360
diff
changeset
|
33 #define B_FRACTION_DEN 840 |
20938be7b67b
Some B-frames support (parsing and decoding only, no motion compesation is done)
kostya
parents:
3360
diff
changeset
|
34 |
3359 | 35 /* bfraction is fractional, we scale to the GCD 3*5*7*8 = 840 */ |
36 const int16_t vc1_bfraction_lut[23] = { | |
37 420 /*1/2*/, 280 /*1/3*/, 560 /*2/3*/, 210 /*1/4*/, | |
38 630 /*3/4*/, 168 /*1/5*/, 336 /*2/5*/, | |
39 504 /*3/5*/, 672 /*4/5*/, 140 /*1/6*/, 700 /*5/6*/, | |
40 120 /*1/7*/, 240 /*2/7*/, 360 /*3/7*/, 480 /*4/7*/, | |
41 600 /*5/7*/, 720 /*6/7*/, 105 /*1/8*/, 315 /*3/8*/, | |
42 525 /*5/8*/, 735 /*7/8*/, | |
43 -1 /*inv.*/, 0 /*BI fm*/ | |
44 }; | |
3689 | 45 #else |
46 /* Denominator used for vc1_bfraction_lut */ | |
47 #define B_FRACTION_DEN 256 | |
48 | |
49 /* pre-computed scales for all bfractions and base=256 */ | |
50 const int16_t vc1_bfraction_lut[23] = { | |
51 128 /*1/2*/, 85 /*1/3*/, 170 /*2/3*/, 64 /*1/4*/, | |
52 192 /*3/4*/, 51 /*1/5*/, 102 /*2/5*/, | |
53 153 /*3/5*/, 204 /*4/5*/, 43 /*1/6*/, 215 /*5/6*/, | |
54 37 /*1/7*/, 74 /*2/7*/, 111 /*3/7*/, 148 /*4/7*/, | |
55 185 /*5/7*/, 222 /*6/7*/, 32 /*1/8*/, 96 /*3/8*/, | |
56 160 /*5/8*/, 224 /*7/8*/, | |
57 -1 /*inv.*/, 0 /*BI fm*/ | |
58 }; | |
59 #endif | |
60 | |
3359 | 61 const uint8_t vc1_bfraction_bits[23] = { |
62 3, 3, 3, 3, | |
63 3, 3, 3, | |
64 7, 7, 7, 7, | |
65 7, 7, 7, 7, | |
66 7, 7, 7, 7, | |
67 7, 7, | |
68 7, 7 | |
69 }; | |
70 const uint8_t vc1_bfraction_codes[23] = { | |
71 0, 1, 2, 3, | |
72 4, 5, 6, | |
73 112, 113, 114, 115, | |
74 116, 117, 118, 119, | |
75 120, 121, 122, 123, | |
76 124, 125, | |
77 126, 127 | |
78 }; | |
79 | |
80 //Same as H.264 | |
81 static const AVRational vc1_pixel_aspect[16]={ | |
82 {0, 1}, | |
83 {1, 1}, | |
84 {12, 11}, | |
85 {10, 11}, | |
86 {16, 11}, | |
87 {40, 33}, | |
88 {24, 11}, | |
89 {20, 11}, | |
90 {32, 11}, | |
91 {80, 33}, | |
92 {18, 11}, | |
93 {15, 11}, | |
94 {64, 33}, | |
95 {160, 99}, | |
96 {0, 1}, | |
97 {0, 1} | |
98 }; | |
99 | |
100 /* BitPlane IMODE - such a small table... */ | |
101 static const uint8_t vc1_imode_codes[7] = { | |
102 0, 2, 1, 3, 1, 2, 3 | |
103 }; | |
104 static const uint8_t vc1_imode_bits[7] = { | |
105 4, 2, 3, 2, 4, 3, 3 | |
106 }; | |
107 | |
108 /* Normal-2 imode */ | |
109 static const uint8_t vc1_norm2_codes[4] = { | |
110 0, 4, 5, 3 | |
111 }; | |
112 static const uint8_t vc1_norm2_bits[4] = { | |
113 1, 3, 3, 2 | |
114 }; | |
115 | |
116 static const uint16_t vc1_norm6_codes[64] = { | |
117 0x001, 0x002, 0x003, 0x000, 0x004, 0x001, 0x002, 0x047, 0x005, 0x003, 0x004, 0x04B, 0x005, 0x04D, 0x04E, 0x30E, | |
118 0x006, 0x006, 0x007, 0x053, 0x008, 0x055, 0x056, 0x30D, 0x009, 0x059, 0x05A, 0x30C, 0x05C, 0x30B, 0x30A, 0x037, | |
119 0x007, 0x00A, 0x00B, 0x043, 0x00C, 0x045, 0x046, 0x309, 0x00D, 0x049, 0x04A, 0x308, 0x04C, 0x307, 0x306, 0x036, | |
120 0x00E, 0x051, 0x052, 0x305, 0x054, 0x304, 0x303, 0x035, 0x058, 0x302, 0x301, 0x034, 0x300, 0x033, 0x032, 0x007, | |
121 }; | |
122 | |
123 static const uint8_t vc1_norm6_bits[64] = { | |
124 1, 4, 4, 8, 4, 8, 8, 10, 4, 8, 8, 10, 8, 10, 10, 13, | |
125 4, 8, 8, 10, 8, 10, 10, 13, 8, 10, 10, 13, 10, 13, 13, 9, | |
126 4, 8, 8, 10, 8, 10, 10, 13, 8, 10, 10, 13, 10, 13, 13, 9, | |
127 8, 10, 10, 13, 10, 13, 13, 9, 10, 13, 13, 9, 13, 9, 9, 6, | |
128 }; | |
129 /* Normal-6 imode */ | |
130 static const uint8_t vc1_norm6_spec[64][5] = { | |
131 { 0, 1, 1 }, | |
132 { 1, 2, 4 }, | |
133 { 2, 3, 4 }, | |
134 { 3, 0, 8 }, | |
135 { 4, 4, 4 }, | |
136 { 5, 1, 8 }, | |
137 { 6, 2, 8 }, | |
138 { 7, 2, 5, 7, 5 }, | |
139 { 8, 5, 4 }, | |
140 { 9, 3, 8 }, | |
141 {10, 4, 8 }, | |
142 {11, 2, 5, 11, 5 }, | |
143 {12, 5, 8 }, | |
144 {13, 2, 5, 13, 5 }, | |
145 {14, 2, 5, 14, 5 }, | |
146 {15, 3, 5, 14, 8 }, | |
147 {16, 6, 4 }, | |
148 {17, 6, 8 }, | |
149 {18, 7, 8 }, | |
150 {19, 2, 5, 19, 5 }, | |
151 {20, 8, 8 }, | |
152 {21, 2, 5, 21, 5 }, | |
153 {22, 2, 5, 22, 5 }, | |
154 {23, 3, 5, 13, 8 }, | |
155 {24, 9, 8 }, | |
156 {25, 2, 5, 25, 5 }, | |
157 {26, 2, 5, 26, 5 }, | |
158 {27, 3, 5, 12, 8 }, | |
159 {28, 2, 5, 28, 5 }, | |
160 {29, 3, 5, 11, 8 }, | |
161 {30, 3, 5, 10, 8 }, | |
162 {31, 3, 5, 7, 4 }, | |
163 {32, 7, 4 }, | |
164 {33, 10, 8 }, | |
165 {34, 11, 8 }, | |
166 {35, 2, 5, 3, 5 }, | |
167 {36, 12, 8 }, | |
168 {37, 2, 5, 5, 5 }, | |
169 {38, 2, 5, 6, 5 }, | |
170 {39, 3, 5, 9, 8 }, | |
171 {40, 13, 8 }, | |
172 {41, 2, 5, 9, 5 }, | |
173 {42, 2, 5, 10, 5 }, | |
174 {43, 3, 5, 8, 8 }, | |
175 {44, 2, 5, 12, 5 }, | |
176 {45, 3, 5, 7, 8 }, | |
177 {46, 3, 5, 6, 8 }, | |
178 {47, 3, 5, 6, 4 }, | |
179 {48, 14, 8 }, | |
180 {49, 2, 5, 17, 5 }, | |
181 {50, 2, 5, 18, 5 }, | |
182 {51, 3, 5, 5, 8 }, | |
183 {52, 2, 5, 20, 5 }, | |
184 {53, 3, 5, 4, 8 }, | |
185 {54, 3, 5, 3, 8 }, | |
186 {55, 3, 5, 5, 4 }, | |
187 {56, 2, 5, 24, 5 }, | |
188 {57, 3, 5, 2, 8 }, | |
189 {58, 3, 5, 1, 8 }, | |
190 {59, 3, 5, 4, 4 }, | |
191 {60, 3, 5, 0, 8 }, | |
192 {61, 3, 5, 3, 4 }, | |
193 {62, 3, 5, 2, 4 }, | |
194 {63, 3, 5, 1, 1 }, | |
195 }; | |
196 | |
197 /* 4MV Block pattern VLC tables */ | |
198 static const uint8_t vc1_4mv_block_pattern_codes[4][16] = { | |
199 { 14, 58, 59, 25, 12, 26, 15, 15, 13, 24, 27, 0, 28, 1, 2, 2}, | |
200 { 8, 18, 19, 4, 20, 5, 30, 11, 21, 31, 6, 12, 7, 13, 14, 0}, | |
201 { 15, 6, 7, 2, 8, 3, 28, 9, 10, 29, 4, 11, 5, 12, 13, 0}, | |
202 { 0, 11, 12, 4, 13, 5, 30, 16, 14, 31, 6, 17, 7, 18, 19, 19} | |
203 }; | |
204 static const uint8_t vc1_4mv_block_pattern_bits[4][16] = { | |
205 { 5, 6, 6, 5, 5, 5, 5, 4, 5, 5, 5, 3, 5, 3, 3, 2}, | |
206 { 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4, 4, 4, 4, 4, 2}, | |
207 { 4, 4, 4, 4, 4, 4, 5, 4, 4, 5, 4, 4, 4, 4, 4, 3}, | |
208 { 2, 4, 4, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 4} | |
209 }; | |
210 | |
211 const uint8_t wmv3_dc_scale_table[32]={ | |
3360
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
212 0, 2, 4, 8, 8, 8, 9, 9,10,10,11,11,12,12,13,13,14,14,15,15,16,16,17,17,18,18,19,19,20,20,21,21 |
3359 | 213 }; |
214 | |
215 /* P-Picture CBPCY VLC tables */ | |
3360
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
216 #if 1 // Looks like original tables are not conforming to standard at all. Are they used for old WMV? |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
217 static const uint16_t vc1_cbpcy_p_codes[4][64] = { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
218 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
219 0, 6, 15, 13, 13, 11, 3, 13, 5, 8, 49, 10, 12, 114, 102, 119, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
220 1, 54, 96, 8, 10, 111, 5, 15, 12, 10, 2, 12, 13, 115, 53, 63, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
221 1, 7, 1, 7, 14, 12, 4, 14, 1, 9, 97, 11, 7, 58, 52, 62, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
222 4, 103, 1, 9, 11, 56, 101, 118, 4, 110, 100, 30, 2, 5, 4, 3 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
223 }, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
224 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
225 0, 9, 1, 18, 5, 14, 237, 26, 3, 121, 3, 22, 13, 16, 6, 30, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
226 2, 10, 1, 20, 12, 241, 5, 28, 16, 12, 3, 24, 28, 124, 239, 247, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
227 1, 240, 1, 19, 18, 15, 4, 27, 1, 122, 2, 23, 1, 17, 7, 31, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
228 1, 11, 2, 21, 19, 246, 238, 29, 17, 13, 236, 25, 58, 63, 8, 125 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
229 }, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
230 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
231 0, 201, 25, 231, 5, 221, 1, 3, 2, 414, 2, 241, 16, 225, 195, 492, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
232 2, 412, 1, 240, 7, 224, 98, 245, 1, 220, 96, 5, 9, 230, 101, 247, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
233 1, 102, 1, 415, 24, 3, 2, 244, 3, 54, 3, 484, 17, 114, 200, 493, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
234 3, 413, 1, 4, 13, 113, 99, 485, 4, 111, 194, 243, 5, 29, 26, 31 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
235 }, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
236 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
237 0, 28, 12, 44, 3, 36, 20, 52, 2, 32, 16, 48, 8, 40, 24, 28, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
238 1, 30, 14, 46, 6, 38, 22, 54, 3, 34, 18, 50, 10, 42, 26, 30, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
239 1, 29, 13, 45, 5, 37, 21, 53, 2, 33, 17, 49, 9, 41, 25, 29, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
240 1, 31, 15, 47, 7, 39, 23, 55, 4, 35, 19, 51, 11, 43, 27, 31 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
241 } |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
242 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
243 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
244 static const uint8_t vc1_cbpcy_p_bits[4][64] = { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
245 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
246 13, 13, 7, 13, 7, 13, 13, 12, 6, 13, 7, 12, 6, 8, 8, 8, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
247 5, 7, 8, 12, 6, 8, 13, 12, 7, 13, 13, 12, 6, 8, 7, 7, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
248 6, 13, 8, 12, 7, 13, 13, 12, 7, 13, 8, 12, 5, 7, 7, 7, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
249 6, 8, 13, 12, 6, 7, 8, 8, 5, 8, 8, 6, 3, 3, 3, 2 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
250 }, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
251 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
252 14, 13, 8, 13, 3, 13, 8, 13, 3, 7, 8, 13, 4, 13, 13, 13, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
253 3, 13, 13, 13, 4, 8, 13, 13, 5, 13, 13, 13, 5, 7, 8, 8, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
254 3, 8, 14, 13, 5, 13, 13, 13, 4, 7, 13, 13, 6, 13, 13, 13, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
255 5, 13, 8, 13, 5, 8, 8, 13, 5, 13, 8, 13, 6, 6, 13, 7 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
256 }, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
257 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
258 13, 8, 6, 8, 4, 8, 13, 12, 4, 9, 8, 8, 5, 8, 8, 9, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
259 5, 9, 10, 8, 4, 8, 7, 8, 6, 8, 7, 13, 4, 8, 7, 8, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
260 5, 7, 8, 9, 6, 13, 13, 8, 4, 6, 8, 9, 5, 7, 8, 9, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
261 5, 9, 9, 13, 5, 7, 7, 9, 4, 7, 8, 8, 3, 5, 5, 5 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
262 }, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
263 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
264 9, 9, 9, 9, 2, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 8, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
265 3, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
266 2, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
267 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
268 } |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
269 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
270 #else |
3359 | 271 static const uint16_t vc1_cbpcy_p_codes[4][64] = { |
272 { | |
273 0, 1, 1, 4, 5, 1, 12, 4, 13, 14, 10, 11, 12, 7, 13, 2, | |
274 15, 1, 96, 1, 49, 97, 2, 100, 3, 4, 5, 101, 102, 52, 53, 4, | |
275 6, 7, 54, 103, 8, 9, 10, 110, 11, 12, 111, 56, 114, 58, 115, 5, | |
276 13, 7, 8, 9, 10, 11, 12, 30, 13, 14, 15, 118, 119, 62, 63, 3 | |
277 }, | |
278 { | |
279 0, 1, 2, 1, 3, 1, 16, 17, 5, 18, 12, 19, 13, 1, 28, 58, | |
280 1, 1, 1, 2, 3, 2, 3, 236, 237, 4, 5, 238, 6, 7, 239, 8, | |
281 9, 240, 10, 11, 121, 122, 12, 13, 14, 15, 241, 246, 16, 17, 124, 63, | |
282 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 247, 125 | |
283 }, | |
284 { | |
285 0, 1, 2, 3, 2, 3, 1, 4, 5, 24, 7, 13, 16, 17, 9, 5, | |
286 25, 1, 1, 1, 2, 3, 96, 194, 1, 2, 98, 99, 195, 200, 101, 26, | |
287 201, 102, 412, 413, 414, 54, 220, 111, 221, 3, 224, 113, 225, 114, 230, 29, | |
288 231, 415, 240, 4, 241, 484, 5, 243, 3, 244, 245, 485, 492, 493, 247, 31 | |
289 }, | |
290 { | |
291 0, 1, 1, 1, 2, 2, 3, 4, 3, 5, 6, 7, 8, 9, 10, 11, | |
292 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, | |
293 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, | |
294 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 28, 29, 30, 31 | |
295 } | |
296 }; | |
297 static const uint8_t vc1_cbpcy_p_bits[4][64] = { | |
298 { | |
299 13, 6, 5, 6, 6, 7, 7, 5, 7, 7, 6, 6, 6, 5, 6, 3, | |
300 7, 8, 8, 13, 7, 8, 13, 8, 13, 13, 13, 8, 8, 7, 7, 3, | |
301 13, 13, 7, 8, 13, 13, 13, 8, 13, 13, 8, 7, 8, 7, 8, 3, | |
302 13, 12, 12, 12, 12, 12, 12, 6, 12, 12, 12, 8, 8, 7, 7, 2 | |
303 }, | |
304 { | |
305 14, 3, 3, 5, 3, 4, 5, 5, 3, 5, 4, 5, 4, 6, 5, 6, | |
306 8, 14, 13, 8, 8, 13, 13, 8, 8, 13, 13, 8, 13, 13, 8, 13, | |
307 13, 8, 13, 13, 7, 7, 13, 13, 13, 13, 8, 8, 13, 13, 7, 6, | |
308 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 8, 7 | |
309 }, | |
310 { | |
311 13, 5, 5, 5, 4, 4, 6, 4, 4, 6, 4, 5, 5, 5, 4, 3, | |
312 6, 8, 10, 9, 8, 8, 7, 8, 13, 13, 7, 7, 8, 8, 7, 5, | |
313 8, 7, 9, 9, 9, 6, 8, 7, 8, 13, 8, 7, 8, 7, 8, 5, | |
314 8, 9, 8, 13, 8, 9, 13, 8, 12, 8, 8, 9, 9, 9, 8, 5 | |
315 }, | |
316 { | |
317 9, 2, 3, 9, 2, 9, 9, 9, 2, 9, 9, 9, 9, 9, 9, 9, | |
318 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, | |
319 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, | |
320 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8 | |
321 } | |
322 }; | |
3360
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
323 #endif |
3359 | 324 |
325 /* MacroBlock Transform Type: 7.1.3.11, p89 | |
326 * 8x8:B | |
327 * 8x4:B:btm 8x4:B:top 8x4:B:both, | |
328 * 4x8:B:right 4x8:B:left 4x8:B:both | |
329 * 4x4:B 8x8:MB | |
330 * 8x4:MB:btm 8x4:MB:top 8x4,MB,both | |
331 * 4x8,MB,right 4x8,MB,left | |
332 * 4x4,MB */ | |
333 static const uint16_t vc1_ttmb_codes[3][16] = { | |
334 { | |
335 0x0003, | |
336 0x002E, 0x005F, 0x0000, | |
337 0x0016, 0x0015, 0x0001, | |
338 0x0004, 0x0014, | |
339 0x02F1, 0x0179, 0x017B, | |
340 0x0BC0, 0x0BC1, 0x05E1, | |
341 0x017A | |
342 }, | |
343 { | |
344 0x0006, | |
345 0x0006, 0x0003, 0x0007, | |
346 0x000F, 0x000E, 0x0000, | |
347 0x0002, 0x0002, | |
348 0x0014, 0x0011, 0x000B, | |
349 0x0009, 0x0021, 0x0015, | |
350 0x0020 | |
351 }, | |
352 { | |
353 0x0006, | |
354 0x0000, 0x000E, 0x0005, | |
355 0x0002, 0x0003, 0x0003, | |
356 0x000F, 0x0002, | |
357 0x0081, 0x0021, 0x0009, | |
358 0x0101, 0x0041, 0x0011, | |
359 0x0100 | |
360 } | |
361 }; | |
362 | |
363 static const uint8_t vc1_ttmb_bits[3][16] = { | |
364 { | |
365 2, | |
366 6, 7, 2, | |
367 5, 5, 2, | |
368 3, 5, | |
369 10, 9, 9, | |
370 12, 12, 11, | |
371 9 | |
372 }, | |
373 { | |
374 3, | |
375 4, 4, 4, | |
376 4, 4, 3, | |
377 3, 2, | |
378 7, 7, 6, | |
379 6, 8, 7, | |
380 8 | |
381 }, | |
382 { | |
383 3, | |
384 3, 4, 5, | |
385 3, 3, 4, | |
386 4, 2, | |
387 10, 8, 6, | |
388 11, 9, 7, | |
389 11 | |
390 } | |
391 }; | |
392 | |
393 /* TTBLK (Transform Type per Block) tables */ | |
394 static const uint8_t vc1_ttblk_codes[3][8] = { | |
395 { 0, 1, 3, 5, 16, 17, 18, 19}, | |
396 { 3, 0, 1, 2, 3, 5, 8, 9}, | |
397 { 1, 0, 1, 4, 6, 7, 10, 11} | |
398 }; | |
399 static const uint8_t vc1_ttblk_bits[3][8] = { | |
400 { 2, 2, 2, 3, 5, 5, 5, 5}, | |
401 { 2, 3, 3, 3, 3, 3, 4, 4}, | |
402 { 2, 3, 3, 3, 3, 3, 4, 4} | |
403 }; | |
404 | |
405 /* SUBBLKPAT tables, p93-94, reordered */ | |
406 static const uint8_t vc1_subblkpat_codes[3][15] = { | |
407 { 14, 12, 7, 11, 9, 26, 2, 10, 27, 8, 0, 6, 1, 15, 1}, | |
408 { 14, 0, 8, 15, 10, 4, 23, 13, 5, 9, 25, 3, 24, 22, 1}, | |
409 { 5, 6, 2, 2, 8, 0, 28, 3, 1, 3, 29, 1, 19, 18, 15} | |
410 }; | |
411 static const uint8_t vc1_subblkpat_bits[3][15] = { | |
412 { 5, 5, 5, 5, 5, 6, 4, 5, 6, 5, 4, 5, 4, 5, 1}, | |
413 { 4, 3, 4, 4, 4, 5, 5, 4, 5, 4, 5, 4, 5, 5, 2}, | |
414 { 3, 3, 4, 3, 4, 5, 5, 3, 5, 4, 5, 4, 5, 5, 4} | |
415 }; | |
416 | |
417 /* MV differential tables, p265 */ | |
418 static const uint16_t vc1_mv_diff_codes[4][73] = { | |
419 { | |
420 0, 2, 3, 8, 576, 3, 2, 6, | |
421 5, 577, 578, 7, 8, 9, 40, 19, | |
422 37, 82, 21, 22, 23, 579, 580, 166, | |
423 96, 167, 49, 194, 195, 581, 582, 583, | |
424 292, 293, 294, 13, 2, 7, 24, 50, | |
425 102, 295, 13, 7, 8, 18, 50, 103, | |
426 38, 20, 21, 22, 39, 204, 103, 23, | |
427 24, 25, 104, 410, 105, 106, 107, 108, | |
428 109, 220, 411, 442, 222, 443, 446, 447, | |
429 7 /* 73 elements */ | |
430 }, | |
431 { | |
432 0, 4, 5, 3, 4, 3, 4, 5, | |
433 20, 6, 21, 44, 45, 46, 3008, 95, | |
434 112, 113, 57, 3009, 3010, 116, 117, 3011, | |
435 118, 3012, 3013, 3014, 3015, 3016, 3017, 3018, | |
436 3019, 3020, 3021, 3022, 1, 4, 15, 160, | |
437 161, 41, 6, 11, 42, 162, 43, 119, | |
438 56, 57, 58, 163, 236, 237, 3023, 119, | |
439 120, 242, 122, 486, 1512, 487, 246, 494, | |
440 1513, 495, 1514, 1515, 1516, 1517, 1518, 1519, | |
441 31 /* 73 elements */ | |
442 }, | |
443 { | |
444 0, 512, 513, 514, 515, 2, 3, 258, | |
445 259, 260, 261, 262, 263, 264, 265, 266, | |
446 267, 268, 269, 270, 271, 272, 273, 274, | |
447 275, 276, 277, 278, 279, 280, 281, 282, | |
448 283, 284, 285, 286, 1, 5, 287, 288, | |
449 289, 290, 6, 7, 291, 292, 293, 294, | |
450 295, 296, 297, 298, 299, 300, 301, 302, | |
451 303, 304, 305, 306, 307, 308, 309, 310, | |
452 311, 312, 313, 314, 315, 316, 317, 318, | |
453 319 /* 73 elements */ | |
454 }, | |
455 { | |
456 0, 1, 1, 2, 3, 4, 1, 5, | |
457 4, 3, 5, 8, 6, 9, 10, 11, | |
458 12, 7, 104, 14, 105, 4, 10, 15, | |
459 11, 6, 14, 8, 106, 107, 108, 15, | |
460 109, 9, 55, 10, 1, 2, 1, 2, | |
461 3, 12, 6, 2, 6, 7, 28, 7, | |
462 15, 8, 5, 18, 29, 152, 77, 24, | |
463 25, 26, 39, 108, 13, 109, 55, 56, | |
464 57, 116, 11, 153, 234, 235, 118, 119, | |
465 15 /* 73 elements */ | |
466 } | |
467 }; | |
468 static const uint8_t vc1_mv_diff_bits[4][73] = { | |
469 { | |
470 6, 7, 7, 8, 14, 6, 5, 6, 7, 14, 14, 6, 6, 6, 8, 9, | |
471 10, 9, 7, 7, 7, 14, 14, 10, 9, 10, 8, 10, 10, 14, 14, 14, | |
472 13, 13, 13, 6, 3, 5, 6, 8, 9, 13, 5, 4, 4, 5, 7, 9, | |
473 6, 5, 5, 5, 6, 9, 8, 5, 5, 5, 7, 10, 7, 7, 7, 7, | |
474 7, 8, 10, 9, 8, 9, 9, 9, 3 /* 73 elements */ | |
475 }, | |
476 { | |
477 5, 7, 7, 6, 6, 5, 5, 6, 7, 5, 7, 8, 8, 8, 14, 9, | |
478 9, 9, 8, 14, 14, 9, 9, 14, 9, 14, 14, 14, 14, 14, 14, 14, | |
479 14, 14, 14, 14, 2, 3, 6, 8, 8, 6, 3, 4, 6, 8, 6, 9, | |
480 6, 6, 6, 8, 8, 8, 14, 7, 7, 8, 7, 9, 13, 9, 8, 9, | |
481 13, 9, 13, 13, 13, 13, 13, 13, 5 /* 73 elements */ | |
482 | |
483 }, | |
484 { | |
485 3, 12, 12, 12, 12, 3, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11, | |
486 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, | |
487 11, 11, 11, 11, 1, 5, 11, 11, 11, 11, 4, 4, 11, 11, 11, 11, | |
488 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, | |
489 11, 11, 11, 11, 11, 11, 11, 11, 11 /* 73 elements */ | |
490 }, | |
491 { | |
492 15, 11, 15, 15, 15, 15, 12, 15, 12, 11, 12, 12, 15, 12, 12, 12, | |
493 12, 15, 15, 12, 15, 10, 11, 12, 11, 10, 11, 10, 15, 15, 15, 11, | |
494 15, 10, 14, 10, 4, 4, 5, 7, 8, 9, 5, 3, 4, 5, 6, 8, | |
495 5, 4, 3, 5, 6, 8, 7, 5, 5, 5, 6, 7, 9, 7, 6, 6, | |
496 6, 7, 10, 8, 8, 8, 7, 7, 4 /* 73 elements */ | |
497 } | |
498 }; | |
499 | |
500 /* DC differentials low+hi-mo, p217 are the same as in msmpeg4data .h */ | |
501 | |
502 /* Scantables/ZZ scan are at 11.9 (p262) and 8.1.1.12 (p10) */ | |
3360
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
503 static const int8_t vc1_normal_zz[64] = { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
504 0, 8, 1, 2, 9, 16, 24, 17, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
505 10, 3, 4, 11, 18, 25, 32, 40, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
506 33, 48, 26, 19, 12, 5, 6, 13, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
507 20, 27, 34, 41, 56, 49, 57, 42, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
508 35, 28, 21, 14, 7, 15, 22, 29, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
509 36, 43, 50, 58, 51, 59, 44, 37, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
510 30, 23, 31, 38, 45, 52, 60, 53, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
511 61, 46, 39, 47, 54, 62, 55, 63 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
512 }; |
3359 | 513 |
3360
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
514 static const int8_t vc1_horizontal_zz [64] = /* Table 227 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
515 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
516 0, 1, 8, 2, 3, 9, 16, 24, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
517 17, 10, 4, 5, 11, 18, 25, 32, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
518 40, 48, 33, 26, 19, 12, 6, 7, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
519 13, 20, 27, 34, 41, 56, 49, 57, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
520 42, 35, 28, 21, 14, 15, 22, 29, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
521 36, 43, 50, 58, 51, 44, 37, 30, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
522 23, 31, 38, 45, 52, 59, 60, 53, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
523 46, 39, 47, 54, 61, 62, 55, 63 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
524 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
525 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
526 static const int8_t vc1_vertical_zz [64] = /* Table 228 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
527 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
528 0, 8, 16, 1, 24, 32, 40, 9, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
529 2, 3, 10, 17, 25, 48, 56, 41, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
530 33, 26, 18, 11, 4, 5, 12, 19, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
531 27, 34, 49, 57, 50, 42, 35, 28, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
532 20, 13, 6, 7, 14, 21, 29, 36, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
533 43, 51, 58, 59, 52, 44, 37, 30, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
534 22, 15, 23, 31, 38, 45, 60, 53, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
535 46, 39, 47, 54, 61, 62, 55, 63 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
536 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
537 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
538 static const int8_t vc1_simple_progressive_8x8_zz [64] = |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
539 /* Table 229 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
540 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
541 0, 8, 1, 2, 9, 16, 24, 17, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
542 10, 3, 4, 11, 18, 25, 32, 40, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
543 48, 56, 41, 33, 26, 19, 12, 5, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
544 6, 13, 20, 27, 34, 49, 57, 58, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
545 50, 42, 35, 28, 21, 14, 7, 15, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
546 22, 29, 36, 43, 51, 59, 60, 52, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
547 44, 37, 30, 23, 31, 38, 45, 53, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
548 61, 62, 54, 46, 39, 47, 55, 63 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
549 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
550 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
551 static const int8_t vc1_simple_progressive_8x4_zz [32] = /* Table 230 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
552 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
553 0, 1, 2, 8, 3, 9, 10, 16, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
554 4, 11, 17, 24, 18, 12, 5, 19, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
555 25, 13, 20, 26, 27, 6, 21, 28, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
556 14, 22, 29, 7, 30, 15, 23, 31 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
557 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
558 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
559 static const int8_t vc1_simple_progressive_4x8_zz [32] = /* Table 231 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
560 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
561 0, 8, 1, 16, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
562 9, 24, 17, 2, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
563 32, 10, 25, 40, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
564 18, 48, 33, 26, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
565 56, 41, 34, 3, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
566 49, 57, 11, 42, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
567 19, 50, 27, 58, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
568 35, 43, 51, 59 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
569 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
570 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
571 /* Table 232 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
572 static const int8_t vc1_simple_progressive_4x4_zz [16] = |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
573 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
574 0, 8, 16, 1, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
575 9, 24, 17, 2, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
576 10, 18, 25, 3, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
577 11, 26, 19, 27 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
578 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
579 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
580 static const int8_t vc1_adv_progressive_8x4_zz [32] = /* Table 233 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
581 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
582 0, 8, 1, 16, 2, 9, 10, 3, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
583 24, 17, 4, 11, 18, 12, 5, 19, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
584 25, 13, 20, 26, 27, 6, 21, 28, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
585 14, 22, 29, 7, 30, 15, 23, 31 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
586 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
587 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
588 static const int8_t vc1_adv_progressive_4x8_zz [32] = /* Table 234 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
589 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
590 0, 1, 8, 2, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
591 9, 16, 17, 24, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
592 10, 32, 25, 18, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
593 40, 3, 33, 26, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
594 48, 11, 56, 41, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
595 34, 49, 57, 42, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
596 19, 50, 27, 58, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
597 35, 43, 51, 59 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
598 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
599 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
600 static const int8_t vc1_adv_interlaced_8x8_zz [64] = /* Table 235 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
601 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
602 0, 8, 1, 16, 24, 9, 2, 32, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
603 40, 48, 56, 17, 10, 3, 25, 18, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
604 11, 4, 33, 41, 49, 57, 26, 34, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
605 42, 50, 58, 19, 12, 5, 27, 20, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
606 13, 6, 35, 28, 21, 14, 7, 15, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
607 22, 29, 36, 43, 51, 59, 60, 52, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
608 44, 37, 30, 23, 31, 38, 45, 53, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
609 61, 62, 54, 46, 39, 47, 55, 63 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
610 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
611 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
612 static const int8_t vc1_adv_interlaced_8x4_zz [32] = /* Table 236 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
613 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
614 0, 8, 16, 24, 1, 9, 2, 17, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
615 25, 10, 3, 18, 26, 4, 11, 19, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
616 12, 5, 13, 20, 27, 6, 21, 28, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
617 14, 22, 29, 7, 30, 15, 23, 31 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
618 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
619 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
620 static const int8_t vc1_adv_interlaced_4x8_zz [32] = /* Table 237 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
621 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
622 0, 1, 2, 8, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
623 16, 9, 24, 17, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
624 10, 3, 32, 40, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
625 48, 56, 25, 18, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
626 33, 26, 41, 34, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
627 49, 57, 11, 42, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
628 19, 50, 27, 58, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
629 35, 43, 51, 59 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
630 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
631 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
632 static const int8_t vc1_adv_interlaced_4x4_zz [16] = /* Table 238 */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
633 { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
634 0, 8, 16, 24, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
635 1, 9, 17, 2, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
636 25, 10, 18, 3, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
637 26, 11, 19, 27 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
638 }; |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
639 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
640 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
641 /* DQScale as specified in 8.1.3.9 - almost identical to 0x40000/i */ |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
642 static const int32_t vc1_dqscale[63] = { |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
643 0x40000, 0x20000, 0x15555, 0x10000, 0xCCCD, 0xAAAB, 0x9249, 0x8000, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
644 0x71C7, 0x6666, 0x5D17, 0x5555, 0x4EC5, 0x4925, 0x4444, 0x4000, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
645 0x3C3C, 0x38E4, 0x35E5, 0x3333, 0x30C3, 0x2E8C, 0x2C86, 0x2AAB, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
646 0x28F6, 0x2762, 0x25ED, 0x2492, 0x234F, 0x2222, 0x2108, 0x2000, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
647 0x1F08, 0x1E1E, 0x1D42, 0x1C72, 0x1BAD, 0x1AF3, 0x1A42, 0x199A, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
648 0x18FA, 0x1862, 0x17D0, 0x1746, 0x16C1, 0x1643, 0x15CA, 0x1555, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
649 0x14E6, 0x147B, 0x1414, 0x13B1, 0x1352, 0x12F7, 0x129E, 0x1249, |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
650 0x11F7, 0x11A8, 0x115B, 0x1111, 0x10C9, 0x1084, 0x1000 |
2c4ddf5b9217
VC-1 decoder with I-frames support and partial P-frames decoding
kostya
parents:
3359
diff
changeset
|
651 }; |
3359 | 652 #endif /* VC1DATA_H */ |