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) {
265 s->factor =
s->lo * 2;
275 for (y = 0; y < avctx->
height; y += 16) {
276 for (x = 0; x < avctx->
width; x += 16) {
277 int reverse, intra_block,
value;
278 unsigned cbplo, flag2 = 0;
286 prev->
data[1] + (y >> 1) * prev->
linesize[1] + (x >> 1),
289 prev->
data[2] + (y >> 1) * prev->
linesize[2] + (x >> 1),
298 intra_block =
value & 0x07;
299 reverse = intra_block == 3;
336 prev->
data[1] + (y >> 1) * prev->
linesize[1] + (x >> 1),
339 prev->
data[2] + (y >> 1) * prev->
linesize[2] + (x >> 1),
370 if (avpkt->
size <= 32)
378 s->bdsp.bswap_buf((uint32_t *)
s->bitstream,
379 (uint32_t *)avpkt->
data,
380 (avpkt->
size + 3) >> 2);
391 scaled = avpkt->
data[8];
466 if (!
s->prev_frame->data[0]) {
529 s->bitstream_size = 0;