39 #define classic_shift_luma_table_size 42
41 34,36,35,69,135,232,9,16,10,24,11,23,12,16,13,10,14,8,15,8,
42 16,8,17,20,16,10,207,206,205,236,11,8,10,21,9,23,8,8,199,70,
47 #define classic_shift_chroma_table_size 59
49 66,36,37,38,39,40,41,75,76,77,110,239,144,81,82,83,84,85,118,183,
50 56,57,88,89,56,89,154,57,58,57,26,141,57,56,58,57,58,57,184,119,
51 214,245,116,83,82,49,80,79,78,77,44,75,41,40,39,38,37,36,34, 0,
56 3, 9, 5, 12, 10, 35, 32, 29, 27, 50, 48, 45, 44, 41, 39, 37,
57 73, 70, 68, 65, 64, 61, 58, 56, 53, 50, 49, 46, 44, 41, 38, 36,
58 68, 65, 63, 61, 58, 55, 53, 51, 48, 46, 45, 43, 41, 39, 38, 36,
59 35, 33, 32, 30, 29, 27, 26, 25, 48, 47, 46, 44, 43, 41, 40, 39,
60 37, 36, 35, 34, 32, 31, 30, 28, 27, 26, 24, 23, 22, 20, 19, 37,
61 35, 34, 33, 31, 30, 29, 27, 26, 24, 23, 21, 20, 18, 17, 15, 29,
62 27, 26, 24, 22, 21, 19, 17, 16, 14, 26, 25, 23, 21, 19, 18, 16,
63 15, 27, 25, 23, 21, 19, 17, 16, 14, 26, 25, 23, 21, 18, 17, 14,
64 12, 17, 19, 13, 4, 9, 2, 11, 1, 7, 8, 0, 16, 3, 14, 6,
65 12, 10, 5, 15, 18, 11, 10, 13, 15, 16, 19, 20, 22, 24, 27, 15,
66 18, 20, 22, 24, 26, 14, 17, 20, 22, 24, 27, 15, 18, 20, 23, 25,
67 28, 16, 19, 22, 25, 28, 32, 36, 21, 25, 29, 33, 38, 42, 45, 49,
68 28, 31, 34, 37, 40, 42, 44, 47, 49, 50, 52, 54, 56, 57, 59, 60,
69 62, 64, 66, 67, 69, 35, 37, 39, 40, 42, 43, 45, 47, 48, 51, 52,
70 54, 55, 57, 59, 60, 62, 63, 66, 67, 69, 71, 72, 38, 40, 42, 43,
71 46, 47, 49, 51, 26, 28, 30, 31, 33, 34, 18, 19, 11, 13, 7, 8,
75 3, 1, 2, 2, 2, 2, 3, 3, 7, 5, 7, 5, 8, 6, 11, 9,
76 7, 13, 11, 10, 9, 8, 7, 5, 9, 7, 6, 4, 7, 5, 8, 7,
77 11, 8, 13, 11, 19, 15, 22, 23, 20, 33, 32, 28, 27, 29, 51, 77,
78 43, 45, 76, 81, 46, 82, 75, 55, 56,144, 58, 80, 60, 74,147, 63,
79 143, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 27, 30, 21, 22,
81 17, 14, 5, 6,100, 54, 47, 50, 51, 53,106,107,108,109,110,111,
82 112,113,114,115, 4,117,118, 92, 94,121,122, 3,124,103, 2, 1,
83 0,129,130,131,120,119,126,125,136,137,138,139,140,141,142,134,
84 135,132,133,104, 64,101, 62, 57,102, 95, 93, 59, 61, 28, 97, 96,
85 52, 49, 48, 29, 32, 25, 24, 46, 23, 98, 45, 44, 43, 20, 42, 41,
86 19, 18, 99, 40, 15, 39, 38, 16, 13, 12, 11, 37, 10, 9, 8, 36,
87 7,128,127,105,123,116, 35, 34, 33,145, 31, 79, 42,146, 78, 26,
88 83, 48, 49, 50, 44, 47, 26, 31, 30, 18, 17, 19, 21, 24, 25, 13,
89 14, 16, 17, 18, 20, 21, 12, 14, 15, 9, 10, 6, 9, 6, 5, 8,
90 6, 12, 8, 10, 7, 9, 6, 4, 6, 2, 2, 3, 3, 3, 3, 2,
121 for (p = 0; p < 4; p++) {
122 int p0 = s->
version > 2 ? p : 0;
123 for (i = y = 0; y < s->
vlc_n; y++) {
124 int len0 = s->
len[p0][
y];
126 if(limit <= 0 || !len0)
130 for (u = 0; u < s->
vlc_n; u++) {
131 int len1 = s->
len[p][
u];
132 if (len1 > limit || !len1)
137 len[i] = len0 + len1;
138 bits[i] = (s->
bits[p0][
y] << len1) + s->
bits[p][u];
139 symbols[i] = (y << 8) + (u & 0xFF);
140 if(symbols[i] != 0xffff)
146 bits, 2, 2, symbols, 2, 2, 0)) < 0)
151 int i,
b,
g,
r, code;
157 for (i = 0,
g = -16;
g < 16;
g++) {
158 int len0 = s->
len[p0][
g & 255];
160 if (limit0 < 2 || !len0)
162 for (
b = -16;
b < 16;
b++) {
163 int len1 = s->
len[p1][
b & 255];
164 int limit1 = limit0 - len1;
165 if (limit1 < 1 || !len1)
167 code = (s->
bits[p0][
g & 255] << len1) + s->
bits[p1][
b & 255];
168 for (
r = -16;
r < 16;
r++) {
169 int len2 = s->
len[2][
r & 255];
170 if (len2 > limit1 || !len2)
173 len[i] = len0 + len1 + len2;
174 bits[i] = (code << len2) + s->
bits[2][
r & 255];
207 for (i = 0; i <
count; i++) {
215 s->
bits[i], 4, 4, 0)) < 0)
245 memcpy(s->
bits[1], s->
bits[0], 256 *
sizeof(uint32_t));
248 memcpy(s->
bits[2], s->
bits[1], 256 *
sizeof(uint32_t));
251 for (i = 0; i < 4; i++) {
254 s->
bits[i], 4, 4, 0)) < 0)
268 memset(s->
vlc, 0, 4 *
sizeof(
VLC));
290 int method, interlace;
524 av_log(avctx,
AV_LOG_ERROR,
"width must be a multiple of 4 this colorspace and predictor\n");
545 for (i = 0; i < 8; i++)
562 #define READ_2PIX(dst0, dst1, plane1){\
563 uint16_t code = get_vlc2(&s->gb, s->vlc[4+plane1].table, VLC_BITS, 1);\
568 dst0 = get_vlc2(&s->gb, s->vlc[0].table, VLC_BITS, 3);\
569 dst1 = get_vlc2(&s->gb, s->vlc[plane1].table, VLC_BITS, 3);\
584 for (; i <
count; i++)
585 s->
temp[0][2 * i ] = s->
temp[1][i] =
586 s->
temp[0][2 * i + 1] = s->
temp[2][i] = 128;
588 for (i = 0; i <
count; i++) {
595 #define READ_2PIX_PLANE(dst0, dst1, plane){\
596 uint16_t code = get_vlc2(&s->gb, s->vlc[4+plane].table, VLC_BITS, 1);\
601 dst0 = get_vlc2(&s->gb, s->vlc[plane].table, VLC_BITS, 3);\
602 dst1 = get_vlc2(&s->gb, s->vlc[plane].table, VLC_BITS, 3);\
605 #define READ_2PIX_PLANE14(dst0, dst1, plane){\
606 int16_t code = get_vlc2(&s->gb, s->vlc[4+plane].table, VLC_BITS, 1);\
607 if(code != (int16_t)0xffff){\
609 dst1 = sign_extend(code, 8);\
611 dst0 = get_vlc2(&s->gb, s->vlc[plane].table, VLC_BITS, 3);\
612 dst1 = get_vlc2(&s->gb, s->vlc[plane].table, VLC_BITS, 3);\
616 #define READ_2PIX_PLANE16(dst0, dst1, plane){\
617 dst0 = get_vlc2(&s->gb, s->vlc[plane].table, VLC_BITS, 3)<<2;\
618 dst0 += get_bits(&s->gb, 2);\
619 dst1 = get_vlc2(&s->gb, s->vlc[plane].table, VLC_BITS, 3)<<2;\
620 dst1 += get_bits(&s->gb, 2);\
634 for(i=0; i<
count; i++){
638 }
else if (s->
bps <= 14) {
644 for(i=0; i<
count; i++){
654 for(i=0; i<
count; i++){
672 for(i=0; i<
count; i++){
682 for (i = 0; i <
count; i++) {
686 }
else if(decorrelate) {
689 s->
temp[0][4 * i +
G];
691 s->
temp[0][4 * i +
G];
735 offset[1] = frame->
linesize[1] * cy;
736 offset[2] = frame->
linesize[2] * cy;
776 int buf_size = avpkt->
size;
779 const int width2 = s->
width>>1;
781 int fake_ystride, fake_ustride, fake_vstride;
784 int table_size = 0,
ret;
793 (
const uint32_t*)buf, buf_size / 4);
804 if ((
unsigned)(buf_size-table_size) >= INT_MAX / 8)
808 (buf_size-table_size) * 8);
818 for(plane = 0; plane < 1 + 2*s->
chroma + s->
alpha; plane++) {
819 int left, lefttop,
y;
822 int fake_stride = fake_ystride;
824 if (s->
chroma && (plane == 1 || plane == 2)) {
827 fake_stride = plane == 1 ? fake_ustride : fake_vstride;
836 for (y = 1; y < h; y++) {
862 lefttop = p->
data[plane][0];
883 int lefty, leftu, leftv;
884 int lefttopy, lefttopu, lefttopv;
893 "YUY2 output is not implemented yet\n");
912 for (cy = y = 1; y < s->
height; y++, cy++) {
926 if (y >= s->
height)
break;
985 lefttopy = p->
data[0][3];
989 lefttopu = p->
data[1][1];
990 lefttopv = p->
data[2][1];
996 for (; y<
height; y++, cy++) {
1000 while (2 * cy > y) {
1006 if (y >= height)
break;
1029 int leftr, leftg, leftb, lefta;
1030 const int last_line = (height - 1) * p->
linesize[0];
1041 lefta = p->
data[0][last_line+
A] = 255;
1052 for (y = s->
height - 2; y >= 0; y--) {
1062 fake_ystride, fake_ystride);
1071 "prediction type not supported!\n");
1075 "BGR24 output is not implemented yet\n");
1094 for (i = 0; i < 8; i++) {
1101 #if CONFIG_HUFFYUV_DECODER
1102 AVCodec ff_huffyuv_decoder = {
1117 #if CONFIG_FFVHUFF_DECODER
1118 AVCodec ff_ffvhuff_decoder = {