37 #define classic_shift_luma_table_size 42
39 34,36,35,69,135,232,9,16,10,24,11,23,12,16,13,10,14,8,15,8,
40 16,8,17,20,16,10,207,206,205,236,11,8,10,21,9,23,8,8,199,70,
45 #define classic_shift_chroma_table_size 59
47 66,36,37,38,39,40,41,75,76,77,110,239,144,81,82,83,84,85,118,183,
48 56,57,88,89,56,89,154,57,58,57,26,141,57,56,58,57,58,57,184,119,
49 214,245,116,83,82,49,80,79,78,77,44,75,41,40,39,38,37,36,34, 0,
54 3, 9, 5, 12, 10, 35, 32, 29, 27, 50, 48, 45, 44, 41, 39, 37,
55 73, 70, 68, 65, 64, 61, 58, 56, 53, 50, 49, 46, 44, 41, 38, 36,
56 68, 65, 63, 61, 58, 55, 53, 51, 48, 46, 45, 43, 41, 39, 38, 36,
57 35, 33, 32, 30, 29, 27, 26, 25, 48, 47, 46, 44, 43, 41, 40, 39,
58 37, 36, 35, 34, 32, 31, 30, 28, 27, 26, 24, 23, 22, 20, 19, 37,
59 35, 34, 33, 31, 30, 29, 27, 26, 24, 23, 21, 20, 18, 17, 15, 29,
60 27, 26, 24, 22, 21, 19, 17, 16, 14, 26, 25, 23, 21, 19, 18, 16,
61 15, 27, 25, 23, 21, 19, 17, 16, 14, 26, 25, 23, 21, 18, 17, 14,
62 12, 17, 19, 13, 4, 9, 2, 11, 1, 7, 8, 0, 16, 3, 14, 6,
63 12, 10, 5, 15, 18, 11, 10, 13, 15, 16, 19, 20, 22, 24, 27, 15,
64 18, 20, 22, 24, 26, 14, 17, 20, 22, 24, 27, 15, 18, 20, 23, 25,
65 28, 16, 19, 22, 25, 28, 32, 36, 21, 25, 29, 33, 38, 42, 45, 49,
66 28, 31, 34, 37, 40, 42, 44, 47, 49, 50, 52, 54, 56, 57, 59, 60,
67 62, 64, 66, 67, 69, 35, 37, 39, 40, 42, 43, 45, 47, 48, 51, 52,
68 54, 55, 57, 59, 60, 62, 63, 66, 67, 69, 71, 72, 38, 40, 42, 43,
69 46, 47, 49, 51, 26, 28, 30, 31, 33, 34, 18, 19, 11, 13, 7, 8,
73 3, 1, 2, 2, 2, 2, 3, 3, 7, 5, 7, 5, 8, 6, 11, 9,
74 7, 13, 11, 10, 9, 8, 7, 5, 9, 7, 6, 4, 7, 5, 8, 7,
75 11, 8, 13, 11, 19, 15, 22, 23, 20, 33, 32, 28, 27, 29, 51, 77,
76 43, 45, 76, 81, 46, 82, 75, 55, 56,144, 58, 80, 60, 74,147, 63,
77 143, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
78 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 27, 30, 21, 22,
79 17, 14, 5, 6,100, 54, 47, 50, 51, 53,106,107,108,109,110,111,
80 112,113,114,115, 4,117,118, 92, 94,121,122, 3,124,103, 2, 1,
81 0,129,130,131,120,119,126,125,136,137,138,139,140,141,142,134,
82 135,132,133,104, 64,101, 62, 57,102, 95, 93, 59, 61, 28, 97, 96,
83 52, 49, 48, 29, 32, 25, 24, 46, 23, 98, 45, 44, 43, 20, 42, 41,
84 19, 18, 99, 40, 15, 39, 38, 16, 13, 12, 11, 37, 10, 9, 8, 36,
85 7,128,127,105,123,116, 35, 34, 33,145, 31, 79, 42,146, 78, 26,
86 83, 48, 49, 50, 44, 47, 26, 31, 30, 18, 17, 19, 21, 24, 25, 13,
87 14, 16, 17, 18, 20, 21, 12, 14, 15, 9, 10, 6, 9, 6, 5, 8,
88 6, 12, 8, 10, 7, 9, 6, 4, 6, 2, 2, 3, 3, 3, 3, 2,
95 for (i = 0; i < 256;) {
117 for (p = 0; p < 3; p++) {
118 for (i = y = 0; y < 256; y++) {
119 int len0 = s->
len[0][y];
121 if(limit <= 0 || !len0)
123 for (u = 0; u < 256; u++) {
124 int len1 = s->
len[p][u];
125 if (len1 > limit || !len1)
128 len[i] = len0 + len1;
129 bits[i] = (s->
bits[0][y] << len1) + s->
bits[p][u];
130 symbols[i] = (y << 8) + u;
131 if(symbols[i] != 0xffff)
137 bits, 2, 2, symbols, 2, 2, 0);
141 int i,
b,
g,
r, code;
147 for (i = 0,
g = -16;
g < 16;
g++) {
148 int len0 = s->
len[p0][
g & 255];
150 if (limit0 < 2 || !len0)
152 for (
b = -16;
b < 16;
b++) {
153 int len1 = s->
len[p1][
b & 255];
154 int limit1 = limit0 - len1;
155 if (limit1 < 1 || !len1)
157 code = (s->
bits[p0][
g & 255] << len1) + s->
bits[p1][
b & 255];
158 for (
r = -16;
r < 16;
r++) {
159 int len2 = s->
len[2][
r & 255];
160 if (len2 > limit1 || !len2)
163 len[i] = len0 + len1 + len2;
164 bits[i] = (code << len2) + s->
bits[2][
r & 255];
191 for (i = 0; i < 3; i++) {
199 s->
bits[i], 4, 4, 0)) < 0)
228 memcpy(s->
bits[1], s->
bits[0], 256 *
sizeof(uint32_t));
231 memcpy(s->
bits[2], s->
bits[1], 256 *
sizeof(uint32_t));
234 for (i = 0; i < 3; i++) {
237 s->
bits[i], 4, 4, 0)) < 0)
251 memset(s->
vlc, 0, 3 *
sizeof(
VLC));
269 int method, interlace;
345 av_log(avctx,
AV_LOG_ERROR,
"width must be a multiple of 4 this colorspace and predictor\n");
367 for (i = 0; i < 6; i++)
384 #define READ_2PIX(dst0, dst1, plane1){\
385 uint16_t code = get_vlc2(&s->gb, s->vlc[3+plane1].table, VLC_BITS, 1);\
390 dst0 = get_vlc2(&s->gb, s->vlc[0].table, VLC_BITS, 3);\
391 dst1 = get_vlc2(&s->gb, s->vlc[plane1].table, VLC_BITS, 3);\
407 for (i = 0; i < count; i++) {
425 for(i=0; i<count; i++){
435 for (i = 0; i < count; i++) {
439 }
else if(decorrelate) {
442 s->
temp[0][4 * i +
G];
444 s->
temp[0][4 * i +
G];
503 int buf_size = avpkt->
size;
506 const int width2 = s->
width>>1;
508 int fake_ystride, fake_ustride, fake_vstride;
510 int table_size = 0, ret;
521 (
const uint32_t*)buf, buf_size / 4);
538 if ((
unsigned)(buf_size-table_size) >= INT_MAX / 8)
542 (buf_size-table_size) * 8);
552 int lefty, leftu, leftv;
553 int lefttopy, lefttopu, lefttopv;
562 "YUY2 output is not implemented yet\n");
581 for (cy = y = 1; y < s->
height; y++, cy++) {
595 if (y >= s->
height)
break;
654 lefttopy = p->
data[0][3];
658 lefttopu = p->
data[1][1];
659 lefttopv = p->
data[2][1];
665 for (; y<
height; y++, cy++) {
675 if (y >= height)
break;
698 int leftr, leftg, leftb, lefta;
699 const int last_line = (height - 1) * p->
linesize[0];
710 lefta = p->
data[0][last_line+
A] = 255;
721 for (y = s->
height - 2; y >= 0; y--) {
731 fake_ystride, fake_ystride);
740 "prediction type not supported!\n");
744 "BGR24 output is not implemented yet\n");
767 for (i = 0; i < 6; i++) {
774 #if CONFIG_HUFFYUV_DECODER
790 #if CONFIG_FFVHUFF_DECODER