33 #define CCITT_SYMS 104
36 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
37 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
38 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,
39 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
40 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
41 128, 192, 256, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896,
42 960, 1024, 1088, 1152, 1216, 1280, 1344, 1408, 1472, 1536, 1600, 1664, 1728,
43 1792, 1856, 1920, 1984, 2048, 2112, 2176, 2240, 2304, 2368, 2432, 2496, 2560
49 0x35, 0x07, 0x07, 0x08, 0x0B, 0x0C, 0x0E, 0x0F, 0x13, 0x14, 0x07, 0x08, 0x08,
50 0x03, 0x34, 0x35, 0x2A, 0x2B, 0x27, 0x0C, 0x08, 0x17, 0x03, 0x04, 0x28, 0x2B,
51 0x13, 0x24, 0x18, 0x02, 0x03, 0x1A, 0x1B, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
52 0x28, 0x29, 0x2A, 0x2B, 0x2C, 0x2D, 0x04, 0x05, 0x0A, 0x0B, 0x52, 0x53, 0x54,
53 0x55, 0x24, 0x25, 0x58, 0x59, 0x5A, 0x5B, 0x4A, 0x4B, 0x32, 0x33, 0x34, 0x1B,
54 0x12, 0x17, 0x37, 0x36, 0x37, 0x64, 0x65, 0x68, 0x67, 0xCC, 0xCD, 0xD2, 0xD3,
55 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xDB, 0x98, 0x99, 0x9A, 0x18, 0x9B,
56 0x08, 0x0C, 0x0D, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F
59 0x37, 0x02, 0x03, 0x02, 0x03, 0x03, 0x02, 0x03, 0x05, 0x04, 0x04, 0x05, 0x07,
60 0x04, 0x07, 0x18, 0x17, 0x18, 0x08, 0x67, 0x68, 0x6C, 0x37, 0x28, 0x17, 0x18,
61 0xCA, 0xCB, 0xCC, 0xCD, 0x68, 0x69, 0x6A, 0x6B, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6,
62 0xD7, 0x6C, 0x6D, 0xDA, 0xDB, 0x54, 0x55, 0x56, 0x57, 0x64, 0x65, 0x52, 0x53,
63 0x24, 0x37, 0x38, 0x27, 0x28, 0x58, 0x59, 0x2B, 0x2C, 0x5A, 0x66, 0x67, 0x0F,
64 0xC8, 0xC9, 0x5B, 0x33, 0x34, 0x35, 0x6C, 0x6D, 0x4A, 0x4B, 0x4C, 0x4D, 0x72,
65 0x73, 0x74, 0x75, 0x76, 0x77, 0x52, 0x53, 0x54, 0x55, 0x5A, 0x5B, 0x64, 0x65,
66 0x08, 0x0C, 0x0D, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x1C, 0x1D, 0x1E, 0x1F
73 8, 6, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7,
74 7, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
75 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
76 8, 8, 8, 8, 5, 5, 6, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9,
77 9, 9, 9, 9, 9, 9, 9, 9, 9, 6, 9, 11, 11, 11, 12, 12, 12, 12, 12, 12,
81 10, 3, 2, 2, 3, 4, 4, 5, 6, 6, 7, 7, 7, 8, 8, 9, 10, 10, 10, 11,
82 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
83 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
84 12, 12, 12, 12, 10, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13,
85 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 11, 11, 11, 12, 12, 12, 12, 12, 12,
91 1, 1, 2, 2, 2, 1, 3, 3, 3, 1, 1
95 4, 3, 7, 6, 3, 1, 3, 6, 7, 7, 9
102 static VLCElem code_table1[528];
103 static VLCElem code_table2[648];
110 for (
i = 0;
i < 2;
i++) {
129 unsigned int *pix_left,
int **runs,
130 const int *runend,
int *
mode)
161 for (k = 0; k < 2; k++) {
164 *(*runs)++ = saved_run;
165 if (*runs >= runend) {
169 if (*pix_left <= saved_run) {
173 *pix_left -= saved_run;
177 saved_run += codes[k];
181 *(*runs)++ = saved_run;
182 if (*runs >= runend) {
186 if (*pix_left <= saved_run) {
187 if (*pix_left == saved_run)
192 *pix_left -= saved_run;
195 if (newmode != *
mode) {
197 if (*runs >= runend) {
207 unsigned int pix_left,
int *runs,
211 unsigned int run = 0;
220 if (runs >= runend) {
224 if (pix_left <=
run) {
233 }
else if ((
int)t == -1) {
253 unsigned int width,
int *runs,
254 const int *runend,
const int *
ref)
256 int mode = 0, saved_run = 0, t;
257 int run_off = *
ref++;
258 unsigned int offs = 0,
run = 0;
260 while (offs <
width) {
272 run = run_off - offs;
281 }
else if (cmode == 1) {
283 for (k = 0; k < 2; k++) {
297 *runs++ =
run + saved_run;
298 if (runs >= runend) {
310 }
else if (cmode == 9 || cmode == 10) {
315 if (cmode == 9 && xxx == 7) {
317 int pix_left =
width - offs;
320 av_log(avctx,
AV_LOG_ERROR,
"saved run %d on entering uncompressed mode\n", saved_run);
324 offs =
width - pix_left;
334 run = run_off - offs + (cmode - 5);
341 *runs++ =
run + saved_run;
342 if (runs >= runend) {
350 while (offs <
width && run_off <= offs) {
357 if (runs >= runend) {
372 while (pix_left > 0) {
373 run = runs[run_idx++];
376 for (;
run > 16;
run -= 16)
386 unsigned int state = -1;
388 while (srcsize-- > 0) {
390 if ((
state & 0xFFF) == 1)
402 int *runs, *
ref =
NULL, *runend;
404 int runsize = avctx->
width + 2;
420 for (j = 0; j <
height; j++) {
421 runend = runs + runsize;