36 #define classic_shift_luma_table_size 42
38 34,36,35,69,135,232,9,16,10,24,11,23,12,16,13,10,14,8,15,8,
39 16,8,17,20,16,10,207,206,205,236,11,8,10,21,9,23,8,8,199,70,
44 #define classic_shift_chroma_table_size 59
46 66,36,37,38,39,40,41,75,76,77,110,239,144,81,82,83,84,85,118,183,
47 56,57,88,89,56,89,154,57,58,57,26,141,57,56,58,57,58,57,184,119,
48 214,245,116,83,82,49,80,79,78,77,44,75,41,40,39,38,37,36,34, 0,
53 3, 9, 5, 12, 10, 35, 32, 29, 27, 50, 48, 45, 44, 41, 39, 37,
54 73, 70, 68, 65, 64, 61, 58, 56, 53, 50, 49, 46, 44, 41, 38, 36,
55 68, 65, 63, 61, 58, 55, 53, 51, 48, 46, 45, 43, 41, 39, 38, 36,
56 35, 33, 32, 30, 29, 27, 26, 25, 48, 47, 46, 44, 43, 41, 40, 39,
57 37, 36, 35, 34, 32, 31, 30, 28, 27, 26, 24, 23, 22, 20, 19, 37,
58 35, 34, 33, 31, 30, 29, 27, 26, 24, 23, 21, 20, 18, 17, 15, 29,
59 27, 26, 24, 22, 21, 19, 17, 16, 14, 26, 25, 23, 21, 19, 18, 16,
60 15, 27, 25, 23, 21, 19, 17, 16, 14, 26, 25, 23, 21, 18, 17, 14,
61 12, 17, 19, 13, 4, 9, 2, 11, 1, 7, 8, 0, 16, 3, 14, 6,
62 12, 10, 5, 15, 18, 11, 10, 13, 15, 16, 19, 20, 22, 24, 27, 15,
63 18, 20, 22, 24, 26, 14, 17, 20, 22, 24, 27, 15, 18, 20, 23, 25,
64 28, 16, 19, 22, 25, 28, 32, 36, 21, 25, 29, 33, 38, 42, 45, 49,
65 28, 31, 34, 37, 40, 42, 44, 47, 49, 50, 52, 54, 56, 57, 59, 60,
66 62, 64, 66, 67, 69, 35, 37, 39, 40, 42, 43, 45, 47, 48, 51, 52,
67 54, 55, 57, 59, 60, 62, 63, 66, 67, 69, 71, 72, 38, 40, 42, 43,
68 46, 47, 49, 51, 26, 28, 30, 31, 33, 34, 18, 19, 11, 13, 7, 8,
72 3, 1, 2, 2, 2, 2, 3, 3, 7, 5, 7, 5, 8, 6, 11, 9,
73 7, 13, 11, 10, 9, 8, 7, 5, 9, 7, 6, 4, 7, 5, 8, 7,
74 11, 8, 13, 11, 19, 15, 22, 23, 20, 33, 32, 28, 27, 29, 51, 77,
75 43, 45, 76, 81, 46, 82, 75, 55, 56,144, 58, 80, 60, 74,147, 63,
76 143, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
77 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 27, 30, 21, 22,
78 17, 14, 5, 6,100, 54, 47, 50, 51, 53,106,107,108,109,110,111,
79 112,113,114,115, 4,117,118, 92, 94,121,122, 3,124,103, 2, 1,
80 0,129,130,131,120,119,126,125,136,137,138,139,140,141,142,134,
81 135,132,133,104, 64,101, 62, 57,102, 95, 93, 59, 61, 28, 97, 96,
82 52, 49, 48, 29, 32, 25, 24, 46, 23, 98, 45, 44, 43, 20, 42, 41,
83 19, 18, 99, 40, 15, 39, 38, 16, 13, 12, 11, 37, 10, 9, 8, 36,
84 7,128,127,105,123,116, 35, 34, 33,145, 31, 79, 42,146, 78, 26,
85 83, 48, 49, 50, 44, 47, 26, 31, 30, 18, 17, 19, 21, 24, 25, 13,
86 14, 16, 17, 18, 20, 21, 12, 14, 15, 9, 10, 6, 9, 6, 5, 8,
87 6, 12, 8, 10, 7, 9, 6, 4, 6, 2, 2, 3, 3, 3, 3, 2,
94 for (i = 0; i < 256;) {
118 for (p = 0; p < 3; p++) {
119 for (i = y = 0; y < 256; y++) {
120 int len0 = s->
len[0][
y];
122 if(limit <= 0 || !len0)
124 for (u = 0; u < 256; u++) {
125 int len1 = s->
len[p][
u];
126 if (len1 > limit || !len1)
129 len[i] = len0 + len1;
130 bits[i] = (s->
bits[0][
y] << len1) + s->
bits[p][u];
131 symbols[i] = (y << 8) +
u;
132 if(symbols[i] != 0xffff)
138 bits, 2, 2, symbols, 2, 2, 0)) < 0)
143 int i,
b,
g,
r, code;
149 for (i = 0,
g = -16;
g < 16;
g++) {
150 int len0 = s->
len[p0][
g & 255];
152 if (limit0 < 2 || !len0)
154 for (
b = -16;
b < 16;
b++) {
155 int len1 = s->
len[p1][
b & 255];
156 int limit1 = limit0 - len1;
157 if (limit1 < 1 || !len1)
159 code = (s->
bits[p0][
g & 255] << len1) + s->
bits[p1][
b & 255];
160 for (
r = -16;
r < 16;
r++) {
161 int len2 = s->
len[2][
r & 255];
162 if (len2 > limit1 || !len2)
165 len[i] = len0 + len1 + len2;
166 bits[i] = (code << len2) + s->
bits[2][
r & 255];
195 for (i = 0; i < 3; i++) {
203 s->
bits[i], 4, 4, 0)) < 0)
233 memcpy(s->
bits[1], s->
bits[0], 256 *
sizeof(uint32_t));
236 memcpy(s->
bits[2], s->
bits[1], 256 *
sizeof(uint32_t));
239 for (i = 0; i < 3; i++) {
242 s->
bits[i], 4, 4, 0)) < 0)
257 memset(s->
vlc, 0, 3 *
sizeof(
VLC));
274 int method, interlace;
350 av_log(avctx,
AV_LOG_ERROR,
"width must be a multiple of 4 this colorspace and predictor\n");
371 for (i = 0; i < 6; i++)
388 #define READ_2PIX(dst0, dst1, plane1){\
389 uint16_t code = get_vlc2(&s->gb, s->vlc[3+plane1].table, VLC_BITS, 1);\
394 dst0 = get_vlc2(&s->gb, s->vlc[0].table, VLC_BITS, 3);\
395 dst1 = get_vlc2(&s->gb, s->vlc[plane1].table, VLC_BITS, 3);\
411 for (i = 0; i <
count; i++) {
429 for(i=0; i<
count; i++){
439 for (i = 0; i <
count; i++) {
443 }
else if(decorrelate) {
446 s->
temp[0][4 * i +
G];
448 s->
temp[0][4 * i +
G];
492 offset[1] = frame->
linesize[1] * cy;
493 offset[2] = frame->
linesize[2] * cy;
507 int buf_size = avpkt->
size;
510 const int width2 = s->
width>>1;
512 int fake_ystride, fake_ustride, fake_vstride;
515 int table_size = 0,
ret;
524 (
const uint32_t*)buf, buf_size / 4);
535 if ((
unsigned)(buf_size-table_size) >= INT_MAX / 8)
539 (buf_size-table_size) * 8);
549 int lefty, leftu, leftv;
550 int lefttopy, lefttopu, lefttopv;
559 "YUY2 output is not implemented yet\n");
578 for (cy = y = 1; y < s->
height; y++, cy++) {
592 if (y >= s->
height)
break;
651 lefttopy = p->
data[0][3];
655 lefttopu = p->
data[1][1];
656 lefttopv = p->
data[2][1];
662 for (; y<
height; y++, cy++) {
672 if (y >= height)
break;
695 int leftr, leftg, leftb, lefta;
696 const int last_line = (height - 1) * p->
linesize[0];
707 lefta = p->
data[0][last_line+
A] = 255;
718 for (y = s->
height - 2; y >= 0; y--) {
728 fake_ystride, fake_ystride);
737 "prediction type not supported!\n");
741 "BGR24 output is not implemented yet\n");
760 for (i = 0; i < 6; i++) {
767 #if CONFIG_HUFFYUV_DECODER
783 #if CONFIG_FFVHUFF_DECODER