65 Node *nodes,
int node,
66 uint32_t pfx,
int pl,
int *
pos)
74 xlat[*
pos] =
s + (pl == 0);
93 int cur_node,
i, j,
pos = 0;
97 for (
i = 0;
i < 256;
i++) {
110 int first_node = cur_node;
111 int second_node = cur_node;
114 nodes[cur_node].
count = -1;
118 if (
val && (
val < nodes[first_node].count)) {
119 if (
val >= nodes[second_node].count) {
120 first_node = new_node;
122 first_node = second_node;
123 second_node = new_node;
127 }
while (new_node != cur_node);
129 if (first_node == cur_node)
132 nd = nodes[second_node].
count;
133 st = nodes[first_node].
count;
134 nodes[second_node].
count = 0;
135 nodes[first_node].
count = 0;
136 if (nd >= UINT32_MAX - st) {
140 nodes[cur_node].
count = nd + st;
141 nodes[cur_node].
sym = -1;
142 nodes[cur_node].
n0 = cur_node;
143 nodes[cur_node].
l = first_node;
144 nodes[cur_node].
r = second_node;
148 }
while (cur_node - 256 == j);
152 return ff_init_vlc_sparse(vlc, 10,
pos, lens, 2, 2,
bits, 4, 4, xlat, 1, 1, 0);
156 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
157 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
158 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
159 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
160 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE,
161 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
162 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
163 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
164 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
165 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
166 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
167 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
173 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
174 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
175 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
176 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
177 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
178 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02,
179 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
180 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
181 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
182 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
183 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02,
188 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
189 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,
190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01,
192 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
193 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF,
194 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
195 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
197 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01,
198 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
199 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
200 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
201 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
202 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
203 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
204 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFF,
205 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
206 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
207 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
209 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
210 0x01, 0x01, 0x01, 0x01, 0xFF, 0xFF, 0xFF, 0xFF,
211 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
212 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
213 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
214 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
215 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
220 0xFC, 0xFC, 0xFC, 0xFD, 0xFD, 0xFD, 0xFE, 0xFE,
221 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFC,
222 0xFC, 0xFC, 0xFD, 0xFD, 0xFD, 0xFE, 0xFE, 0xFE,
223 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFC, 0xFC,
224 0xFC, 0xFD, 0xFD, 0xFD, 0xFE, 0xFE, 0xFE, 0xFF,
225 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFD, 0xFD, 0xFD,
226 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
227 0x00, 0x01, 0x01, 0x01, 0xFD, 0xFD, 0xFD, 0xFE,
228 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
229 0x01, 0x01, 0x01, 0xFD, 0xFD, 0xFD, 0xFE, 0xFE,
230 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01,
231 0x01, 0x01, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF,
232 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
233 0x02, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00,
234 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02,
235 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
236 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0xFF,
237 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
238 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0xFF, 0xFF,
239 0xFF, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02,
240 0x02, 0x02, 0x03, 0x03, 0x03, 0xFF, 0xFF, 0xFF,
241 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02,
242 0x02, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x01,
243 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03,
244 0x04, 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01,
245 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04,
246 0x04, 0x04, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01,
247 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04,
252 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
253 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
254 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01,
255 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
256 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
257 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01,
258 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
259 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
260 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01,
261 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
262 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
263 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01,
264 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
265 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
266 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01,
267 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
268 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
269 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01,
270 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
271 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
272 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01,
273 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
274 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
275 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01,
276 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
277 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF,
278 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01,
279 0xFF, 0x00, 0x01, 0xFF, 0x00, 0x01, 0xFF, 0x00,
284 void *
data,
int *got_frame,
287 int TL[4] = { 128, 128, 128, 128 };
288 int L[4] = { 128, 128, 128, 128 };
292 int ret, x, y, toffset, boffset;
297 if (avpkt->
size <= 16)
305 if (toffset < 16 || toffset >= avpkt->
size)
309 if (toffset >= boffset || boffset >= avpkt->
size)
320 memcpy(
s->table_bits, avpkt->
data + toffset, boffset - toffset);
322 s->bdsp.bswap_buf((uint32_t *)
s->table_bits,
323 (uint32_t *)
s->table_bits,
324 (boffset - toffset + 3) >> 2);
328 for (x = 0; x < 1024; x++) {
350 if (!
s->bitstream_bits)
353 memcpy(
s->bitstream_bits, avpkt->
data + boffset, avpkt->
size - boffset);
355 s->bdsp.bswap_buf((uint32_t *)
s->bitstream_bits,
356 (uint32_t *)
s->bitstream_bits,
357 (avpkt->
size - boffset) >> 2);
362 for (y = 0; y < avctx->
height; y++) {
363 memset(dst, 0, avctx->
width * 2);
368 for (y = 0; y < avctx->
height; y++) {
369 for (x = 0; x < avctx->
width * 2 && y < avctx->
height;) {
377 }
else if (
val < 0xE1) {
384 int incr = (
val - 0xDF) * 4;
385 if (x + incr >= avctx->
width * 2) {
386 int iy = ((x + incr) / (avctx->
width * 2));
387 x = (x + incr) % (avctx->
width * 2);
397 y1 =
get_vlc2(&gb,
s->vlc[1].table,
s->vlc[1].bits, 3);
398 u =
get_vlc2(&gb,
s->vlc[2].table,
s->vlc[2].bits, 3);
399 y2 =
get_vlc2(&gb,
s->vlc[1].table,
s->vlc[1].bits, 3);
400 v =
get_vlc2(&gb,
s->vlc[3].table,
s->vlc[3].bits, 3);
401 if (y1 < 0 || y2 < 0 ||
u < 0 || v < 0)
405 dst[x + 2] = y1 + y2;
414 for (x = 0; x < avctx->
width * 2; x += 4) {
415 dst[x ] = dst[x ] +
L[0];
416 dst[x + 2] =
L[0] = dst[x + 2] +
L[0];
417 L[1] = dst[x + 1] +
L[1];
419 L[2] = dst[x + 3] +
L[2];
424 for (y = 1; y < avctx->
height; y++) {
426 dst[x ] = dst[x ] +
L[0] + dst[x + 0 - p->
linesize[0]] - TL[0];
427 dst[x + 2] =
L[0] = dst[x + 2] +
L[0] + dst[x + 2 - p->
linesize[0]] - TL[0];
428 TL[0] = dst[x + 2 - p->
linesize[0]];
429 L[1] = dst[x + 1] +
L[1] + dst[x + 1 - p->
linesize[0]] - TL[1];
431 TL[1] = dst[x + 1 - p->
linesize[0]];
432 L[2] = dst[x + 3] +
L[2] + dst[x + 3 - p->
linesize[0]] - TL[2];
434 TL[2] = dst[x + 3 - p->
linesize[0]];
435 for (x = 4; x < avctx->
width * 2; x += 4) {
436 dst[x ] = dst[x ] +
L[0] + dst[x + 0 - p->
linesize[0]] - TL[0];
437 dst[x + 2] =
L[0] = dst[x + 2] +
L[0] + dst[x + 2 - p->
linesize[0]] - TL[0];
438 TL[0] = dst[x + 2 - p->
linesize[0]];
439 L[1] = dst[x + 1] +
L[1] + dst[x + 1 - p->
linesize[0]] - TL[1];
441 TL[1] = dst[x + 1 - p->
linesize[0]];
442 L[2] = dst[x + 3] +
L[2] + dst[x + 3 - p->
linesize[0]] - TL[2];
444 TL[2] = dst[x + 3 - p->
linesize[0]];
465 s->table_bits_size = 0;
467 s->bitstream_bits_size = 0;