36 #define MIMIC_HEADER_SIZE 20
68 0x0000000a, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
69 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
70 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000b,
71 0x0000001b, 0x00000038, 0x00000078, 0x00000079, 0x0000007a, 0x000000f9,
72 0x000000fa, 0x000003fb, 0x000007f8, 0x000007f9, 0x000007fa, 0x000007fb,
73 0x00000ff8, 0x00000ff9, 0x00000001, 0x00000039, 0x0000007b, 0x000000fb,
74 0x000001f8, 0x000001f9, 0x00000ffa, 0x00000ffb, 0x00001ff8, 0x00001ff9,
75 0x00001ffa, 0x00001ffb, 0x00003ff8, 0x00003ff9, 0x00003ffa, 0x00000000,
76 0x00000004, 0x0000003a, 0x000001fa, 0x00003ffb, 0x00007ff8, 0x00007ff9,
77 0x00007ffa, 0x00007ffb, 0x0000fff8, 0x0000fff9, 0x0000fffa, 0x0000fffb,
78 0x0001fff8, 0x0001fff9, 0x0001fffa, 0x00000000, 0x0000000c, 0x000000f8,
79 0x000001fb, 0x0001fffb, 0x0003fff8, 0x0003fff9, 0x0003fffa, 0x0003fffb,
80 0x0007fff8, 0x0007fff9, 0x0007fffa, 0x0007fffb, 0x000ffff8, 0x000ffff9,
81 0x000ffffa, 0x00000000, 0x0000001a, 0x000003f8, 0x000ffffb, 0x001ffff8,
82 0x001ffff9, 0x001ffffa, 0x001ffffb, 0x003ffff8, 0x003ffff9, 0x003ffffa,
83 0x003ffffb, 0x007ffff8, 0x007ffff9, 0x007ffffa, 0x007ffffb, 0x00000000,
84 0x0000003b, 0x000003f9, 0x00fffff8, 0x00fffff9, 0x00fffffa, 0x00fffffb,
85 0x01fffff8, 0x01fffff9, 0x01fffffa, 0x01fffffb, 0x03fffff8, 0x03fffff9,
86 0x03fffffa, 0x03fffffb, 0x07fffff8, 0x00000000, 0x000003fa, 0x07fffff9,
87 0x07fffffa, 0x07fffffb, 0x0ffffff8, 0x0ffffff9, 0x0ffffffa, 0x0ffffffb,
88 0x1ffffff8, 0x1ffffff9, 0x1ffffffa, 0x1ffffffb, 0x3ffffff8, 0x3ffffff9,
93 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
94 0, 0, 0, 0, 2, 4, 5, 6, 7, 7, 7, 8,
95 8, 10, 11, 11, 11, 11, 12, 12, 2, 6, 7, 8,
96 9, 9, 12, 12, 13, 13, 13, 13, 14, 14, 14, 0,
97 3, 6, 9, 14, 15, 15, 15, 15, 16, 16, 16, 16,
98 17, 17, 17, 0, 4, 8, 9, 17, 18, 18, 18, 18,
99 19, 19, 19, 19, 20, 20, 20, 0, 5, 10, 20, 21,
100 21, 21, 21, 22, 22, 22, 22, 23, 23, 23, 23, 0,
101 6, 10, 24, 24, 24, 24, 25, 25, 25, 25, 26, 26,
102 26, 26, 27, 0, 10, 27, 27, 27, 28, 28, 28, 28,
103 29, 29, 29, 29, 30, 30, 30,
107 0, 8, 1, 2, 9, 16, 24, 17,
108 10, 3, 4, 11, 18, 25, 32, 40,
109 33, 26, 19, 12, 5, 6, 13, 20,
110 27, 34, 41, 48, 56, 49, 42, 35,
111 28, 21, 14, 7, 15, 22, 29, 36,
112 43, 50, 57, 58, 51, 44, 37, 30,
113 23, 31, 38, 45, 52, 59, 39, 46,
114 53, 60, 61, 54, 47, 55, 62, 63,
123 ctx->swap_buf_size = 0;
126 if (
ctx->frames[
i].f)
157 if (!
ctx->frames[
i].f) {
172 if (avctx == avctx_from)
180 if (
i !=
src->next_cur_index &&
src->frames[
i].f->data[0]) {
195 { -7, 7, -6, 6, -5, 5, -4, 4, },
196 { -15, 15, -14, 14, -13, 13, -12, 12,
197 -11, 11, -10, 10, -9, 9, -8, 8, },
198 { -31, 31, -30, 30, -29, 29, -28, 28,
199 -27, 27, -26, 26, -25, 25, -24, 24,
200 -23, 23, -22, 22, -21, 21, -20, 20,
201 -19, 19, -18, 18, -17, 17, -16, 16, },
202 { -63, 63, -62, 62, -61, 61, -60, 60,
203 -59, 59, -58, 58, -57, 57, -56, 56,
204 -55, 55, -54, 54, -53, 53, -52, 52,
205 -51, 51, -50, 50, -49, 49, -48, 48,
206 -47, 47, -46, 46, -45, 45, -44, 44,
207 -43, 43, -42, 42, -41, 41, -40, 40,
208 -39, 39, -38, 38, -37, 37, -36, 36,
209 -35, 35, -34, 34, -33, 33, -32, 32, },
210 { -127, 127, -126, 126, -125, 125, -124, 124,
211 -123, 123, -122, 122, -121, 121, -120, 120,
212 -119, 119, -118, 118, -117, 117, -116, 116,
213 -115, 115, -114, 114, -113, 113, -112, 112,
214 -111, 111, -110, 110, -109, 109, -108, 108,
215 -107, 107, -106, 106, -105, 105, -104, 104,
216 -103, 103, -102, 102, -101, 101, -100, 100,
217 -99, 99, -98, 98, -97, 97, -96, 96, },
218 { -95, 95, -94, 94, -93, 93, -92, 92,
219 -91, 91, -90, 90, -89, 89, -88, 88,
220 -87, 87, -86, 86, -85, 85, -84, 84,
221 -83, 83, -82, 82, -81, 81, -80, 80,
222 -79, 79, -78, 78, -77, 77, -76, 76,
223 -75, 75, -74, 74, -73, 73, -72, 72,
224 -71, 71, -70, 70, -69, 69, -68, 68,
225 -67, 67, -66, 66, -65, 65, -64, 64, },
238 uint32_t vlc, num_bits;
275 int ret, y, x, plane, cur_row = 0;
277 for (plane = 0; plane < 3; plane++) {
278 const int is_chroma = !!plane;
279 const int qscale = av_clip(10000 -
quality, is_chroma ? 1000 : 2000,
281 const int stride =
ctx->frames[
ctx->cur_index ].f->linesize[plane];
285 for (y = 0; y <
ctx->num_vblocks[plane]; y++) {
286 for (x = 0; x <
ctx->num_hblocks[plane]; x++) {
305 int index = (
ctx->cur_index + backref) & 15;
312 ctx->frames[
ctx->prev_index].f->data[plane];
313 ctx->hdsp.put_pixels_tab[1][0](dst, p,
stride, 8);
316 "No such backreference! Buggy sample.\n");
328 dst += (
stride -
ctx->num_hblocks[plane]) << 3;
346 f->data[0] =
f->data[0] + (
f->height - 1) *
f->linesize[0];
347 f->data[1] =
f->data[2] + ((
f->height >> 1) - 1) *
f->linesize[2];
348 f->data[2] = data_1 + ((
f->height >> 1) - 1) *
f->linesize[1];
350 f->linesize[
i] *= -1;
357 int buf_size = avpkt->
size;
373 quality = bytestream2_get_le16u(&gb);
374 width = bytestream2_get_le16u(&gb);
375 height = bytestream2_get_le16u(&gb);
377 is_pframe = bytestream2_get_le32u(&gb);
378 num_coeffs = bytestream2_get_byteu(&gb);
396 for (
i = 0;
i < 3;
i++) {
405 if (is_pframe && !
ctx->frames[
ctx->prev_index].f->data[0]) {
417 ctx->next_prev_index =
ctx->cur_index;
418 ctx->next_cur_index = (
ctx->cur_index - 1) & 15;
426 ctx->bbdsp.bswap_buf(
ctx->swap_buf,
445 ctx->prev_index =
ctx->next_prev_index;
446 ctx->cur_index =
ctx->next_cur_index;