37 #define CBPLO_VLC_BITS 6
38 #define CBPHI_VLC_BITS 6
39 #define BLKTYPE_VLC_BITS 9
40 #define BLOCK_VLC_BITS 12
66 static const uint8_t
cbplo[][2] = {
67 { 0,-6 }, { 0x01, 6 }, { 0x02, 6 }, { 0x03, 6 }, { 0x00, 4 },
68 { 0x01, 3 }, { 0x02, 3 }, { 0x03, 3 }, { 0x00, 1 },
72 4, 5, 5, 4, 5, 4, 6, 4, 5, 6, 4, 4, 4, 4, 4, 2
76 3, 5, 4, 9, 3, 7, 2, 11, 2, 3, 5, 10, 4, 8, 6, 3
80 { 0,-8 }, { 0x34, 9 }, { 0,-9 }, { 0x14, 9 }, { 0,-9 },
81 { 0x23, 8 }, { 0x13, 8 }, { 0x32, 8 }, { 0x33, 7 }, { 0x22, 7 },
82 { 0x12, 7 }, { 0x21, 7 }, { 0x11, 7 }, { 0x04, 6 }, { 0x30, 6 },
83 { 0x03, 5 }, { 0x20, 4 }, { 0x10, 4 }, { 0x02, 3 }, { 0x01, 3 },
88 0, 0x4082, 0x4003, 0x000B, 0x000A, 0x4E01, 0x4D81, 0x4D01, 0x4C81,
89 0x0482, 0x0402, 0x0382, 0x0302, 0x0282, 0x0183, 0x0103, 0x0084, 0x000C,
90 0x0085, 0x0B81, 0x0C01, 0x4E81, 0x4F01, 0x4F81, 0x5001, 0x0086, 0x0104,
91 0x0203, 0x0283, 0x0303, 0x0502, 0x0C81, 0x0D01, 0x5081, 0x5101, 0x5181,
92 0x5201, 0x5281, 0x5301, 0x5381, 0x5401, 0x0000, 0x0009, 0x0008, 0x4C01,
93 0x4B81, 0x4B01, 0x4A81, 0x4A01, 0x4981, 0x4901, 0x4881, 0x4002, 0x0B01,
94 0x0A81, 0x0A01, 0x0981, 0x0901, 0x0881, 0x0801, 0x0781, 0x0202, 0x0182,
95 0x0007, 0x0006, 0x4801, 0x4781, 0x4701, 0x4681, 0x4601, 0x4581, 0x4501,
96 0x4481, 0x0701, 0x0681, 0x0102, 0x0083, 0x0005, 0x4401, 0x4381, 0x4301,
97 0x4281, 0x0601, 0x0581, 0x0501, 0x0004, 0x4201, 0x4181, 0x4101, 0x4081,
98 0x0481, 0x0401, 0x0381, 0x0301, 0x0082, 0x0003, 0x0281, 0x0201, 0x0181,
99 0x4001, 0x0001, 0x0081, 0x0101, 0x0002,
103 -9, 11, 11, 11, 11, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11,
104 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
105 12, 12, 12, 7, 10, 10, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9,
106 9, 9, 9, 9, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
107 8, 8, 7, 7, 7, 7, 7, 7, 7, 7, 6, 6, 6, 6, 6, 6, 6, 6, 6,
108 6, 5, 5, 5, 4, 2, 3, 4, 4,
131 const uint8_t *idct_permutation =
s->idsp.idct_permutation;
132 int i, last,
len, factor2;
145 factor2 =
value & 0x7F;
146 last = (
value >> 14) & 1;
159 if (
s->hi == 2 && flag2 &&
block < 4) {
161 s->block[
block][idct_permutation[0]] *= 2;
162 s->block[
block][idct_permutation[1]] *= 2;
163 s->block[
block][idct_permutation[8]] *= 2;
164 s->block[
block][idct_permutation[16]] *= 2;
171 unsigned cbp,
int flag,
int offset,
unsigned flag2)
174 const uint8_t *idct_permutation =
s->idsp.idct_permutation;
177 memset(
s->block, 0,
sizeof(
s->block));
179 for (
i = 0;
i < 6;
i++) {
187 s->block[
i][idct_permutation[0]] = x;
190 if (cbp & (1 << (5 -
i))) {
210 s->factor =
s->lo * 2;
220 for (y = 0; y < avctx->
height; y += 16) {
221 for (x = 0; x < avctx->
width; x += 16) {
262 s->factor =
s->lo * 2;
272 for (y = 0; y < avctx->
height; y += 16) {
273 for (x = 0; x < avctx->
width; x += 16) {
274 int reverse, intra_block,
value;
275 unsigned cbphi,
cbplo, flag2 = 0;
282 prev->
data[1] + (y >> 1) * prev->
linesize[1] + (x >> 1),
285 prev->
data[2] + (y >> 1) * prev->
linesize[2] + (x >> 1),
294 intra_block =
value & 0x07;
295 reverse = intra_block == 3;
329 prev->
data[1] + (y >> 1) * prev->
linesize[1] + (x >> 1),
332 prev->
data[2] + (y >> 1) * prev->
linesize[2] + (x >> 1),
363 if (avpkt->
size <= 32)
371 s->bdsp.bswap_buf((uint32_t *)
s->bitstream,
372 (uint32_t *)avpkt->
data,
373 (avpkt->
size + 3) >> 2);
384 scaled = avpkt->
data[8];
459 if (!
s->prev_frame->data[0]) {
522 s->bitstream_size = 0;