44 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
45 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
46 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
47 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
48 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
49 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
50 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
51 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
52 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
53 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
54 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
55 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
56 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1,
57 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
58 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
59 -1, -1, -1, -1, -1, -1, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0,
63 0, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
64 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
65 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
66 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
67 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
68 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
69 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
70 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
71 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
72 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
73 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
74 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
75 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
76 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
77 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
78 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1,
82 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
83 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
84 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
85 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4,
86 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
87 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
88 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
89 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
90 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
91 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
92 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
93 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
94 -4, -4, -4, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3,
95 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
96 -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
97 -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -0, -0, -0, -0,
101 0, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
102 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
103 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
104 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
105 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
106 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
107 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
108 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
109 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
110 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
111 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
112 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
113 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5,
114 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -4, -4,
115 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
116 -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -1,
120 0, 10, 10, 10, 10, 16, 16, 16, 28, 16, 16, 29, 42, 49, 20, 49,
121 59, 25, 26, 26, 27, 31, 33, 33, 33, 34, 34, 37, 67, 38, 39, 39,
122 40, 40, 41, 79, 43, 44, 45, 45, 48, 48, 64, 50, 51, 52, 88, 52,
123 53, 74, 55, 57, 58, 58, 74, 60, 101, 61, 62, 84, 66, 66, 68, 69,
124 87, 82, 71, 97, 73, 73, 82, 75, 111, 77, 94, 78, 87, 81, 83, 97,
125 85, 83, 94, 86, 99, 89, 90, 99, 111, 92, 93, 134, 95, 98, 105, 98,
126 105, 110, 102, 108, 102, 118, 103, 106, 106, 113, 109, 112, 114, 112, 116, 125,
127 115, 116, 117, 117, 126, 119, 125, 121, 121, 123, 145, 124, 126, 131, 127, 129,
128 165, 130, 132, 138, 133, 135, 145, 136, 137, 139, 146, 141, 143, 142, 144, 148,
129 147, 155, 151, 149, 151, 150, 152, 157, 153, 154, 156, 168, 158, 162, 161, 160,
130 172, 163, 169, 164, 166, 184, 167, 170, 177, 174, 171, 173, 182, 176, 180, 178,
131 175, 189, 179, 181, 186, 183, 192, 185, 200, 187, 191, 188, 190, 197, 193, 196,
132 197, 194, 195, 196, 198, 202, 199, 201, 210, 203, 207, 204, 205, 206, 208, 214,
133 209, 211, 221, 212, 213, 215, 224, 216, 217, 218, 219, 220, 222, 228, 223, 225,
134 226, 224, 227, 229, 240, 230, 231, 232, 233, 234, 235, 236, 238, 239, 237, 242,
135 241, 243, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 252, 253, 254, 255,
144 for (i = 1; i < 256; i++)
145 l2tab[i] =
log2(i / 256.0);
147 for (i = 0; i < 256; i++) {
148 double best_len[256];
149 double p = i / 256.0;
151 for (j = 0; j < 256; j++)
152 best_len[j] = 1 << 30;
154 for (j =
FFMAX(i - 10, 1); j <
FFMIN(i + 11, 256); j++) {
155 double occ[256] = { 0 };
158 for (k = 0; k < 256; k++) {
159 double newocc[256] = { 0 };
160 for (m = 1; m < 256; m++)
162 len -=occ[
m]*( p *l2tab[
m]
163 + (1-p)*l2tab[256-m]);
165 if (len < best_len[k]) {
167 best_state[i][k] = j;
169 for (m = 0; m < 256; m++)
171 newocc[ one_state[
m]] += occ[
m] * p;
172 newocc[256 - one_state[256 -
m]] += occ[
m] * (1 - p);
174 memcpy(occ, newocc,
sizeof(occ));
188 #define put_rac(C, S, B) \
191 rc_stat[*(S)][B]++; \
192 rc_stat2[(S) - state][B]++; \
202 for (i = 0; i < e; i++)
206 for (i = e - 1; i >= 0; i--)
207 put_rac(c, state + 22 + i, (a >> i) & 1);
210 put_rac(c, state + 11 + e, v < 0);
212 for (i = 0; i < e; i++)
216 for (i = e - 1; i >= 0; i--)
220 put_rac(c, state + 11 + 10, v < 0);
229 int v,
int is_signed)
243 while (i < state->error_sum) {
251 if (k == 0 && 2 * state->
drift <= -state->
count)
256 code = v ^ ((2 * state->
drift + state->
count) >> 31);
259 av_dlog(NULL,
"v:%d/%d bias:%d error:%d drift:%d count:%d k:%d\n", v, code,
268 int plane_index,
int bits)
289 for (x = 0; x < w; x++) {
292 context =
get_context(p, sample[0] + x, sample[1] + x, sample[2] + x);
293 diff = sample[0][x] -
predict(sample[0] + x, sample[1] + x);
300 diff =
fold(diff, bits);
333 av_dlog(s->
avctx,
"count:%d index:%d, mode:%d, x:%d pos:%d\n",
334 run_count, run_index, run_mode, x,
357 int stride,
int plane_index)
366 for (y = 0; y < h; y++) {
367 for (i = 0; i < ring_size; i++)
368 sample[i] = s->
sample_buffer + (w + 6) * ((h + i -
y) % ring_size) + 3;
370 sample[0][-1]= sample[1][0 ];
371 sample[1][ w]= sample[1][w-1];
374 for (x = 0; x < w; x++)
375 sample[0][x] = src[x + stride * y];
379 for (x = 0; x < w; x++) {
380 sample[0][x] = ((uint16_t*)(src + stride*y))[x];
383 for (x = 0; x < w; x++) {
407 for (y = 0; y < h; y++) {
408 for (i = 0; i < ring_size; i++)
410 sample[p][i]= s->
sample_buffer + p*ring_size*(w+6) + ((h+i-
y)%ring_size)*(w+6) + 3;
412 for (x = 0; x < w; x++) {
415 unsigned v = *((uint32_t*)(src[0] + x*4 + stride[0]*y));
418 r = (v >> 16) & 0xFF;
421 b = *((uint16_t*)(src[0] + x*2 + stride[0]*y));
422 g = *((uint16_t*)(src[1] + x*2 + stride[1]*y));
423 r = *((uint16_t*)(src[2] + x*2 + stride[2]*y));
438 sample[p][0][-1] = sample[p][1][0 ];
439 sample[p][1][ w] = sample[p][1][w-1];
443 encode_line(s, w, sample[p], (p + 1) / 2, bits + 1);
453 memset(state, 128,
sizeof(state));
455 for (i = 1; i < 128; i++)
456 if (quant_table[i] != quant_table[i - 1]) {
467 for (i = 0; i < 5; i++)
477 memset(state, 128,
sizeof(state));
483 for (i = 1; i < 256; i++)
526 memset(state2, 128,
sizeof(state2));
527 memset(state, 128,
sizeof(state));
530 (11 * 11 * 5 * 5 * 5 + 11 * 11 * 11) * 32;
544 for (i = 1; i < 256; i++)
592 int i, i2, changed, print = 0;
596 for (i = 12; i < 244; i++) {
597 for (i2 = i + 1; i2 < 245 && i2 < i + 4; i2++) {
599 #define COST(old, new) \
600 s->rc_stat[old][0] * -log2((256 - (new)) / 256.0) + \
601 s->rc_stat[old][1] * -log2((new) / 256.0)
603 #define COST2(old, new) \
604 COST(old, new) + COST(256 - (old), 256 - (new))
608 if (size0 - sizeX > size0*(1e-14) && i != 128 && i2 != 128) {
610 FFSWAP(
int, stt[i], stt[i2]);
614 FFSWAP(
int, stt[256 - i], stt[256 - i2]);
618 for (j = 1; j < 256; j++) {
621 else if (stt[j] == i2)
624 if (stt[256 - j] == 256 - i)
625 stt[256 - j] = 256 - i2;
626 else if (stt[256 - j] == 256 - i2)
627 stt[256 - j] = 256 - i;
661 av_log(avctx,
AV_LOG_ERROR,
"Version 2 needed for requested features but version 2 is experimental and not enabled\n");
698 av_log(avctx,
AV_LOG_ERROR,
"bits_per_raw_sample of more than 8 needs -coder 1 currently\n");
749 av_log(avctx,
AV_LOG_WARNING,
"Storing alpha plane, this will require a recent FFV1 decoder to playback!\n");
757 for (i = 1; i < 256; i++)
760 for (i = 0; i < 256; i++) {
820 for (j = 0; j < 256; j++)
821 for (i = 0; i < 2; i++) {
822 s->
rc_stat[j][i] = strtol(p, &next, 0);
825 "2Pass file invalid at %d %d [%s]\n", j, i, p);
832 for (k = 0; k < 32; k++)
833 for (m = 0; m < 2; m++) {
834 s->
rc_stat2[i][j][k][
m] = strtol(p, &next, 0);
837 "2Pass file invalid at %d %d %d %d [%s]\n",
844 gob_count = strtol(p, &next, 0);
845 if (next == p || gob_count <= 0) {
850 while (*p ==
'\n' || *p ==
' ')
860 for (k = 0; k < 32; k++) {
867 p = 256.0 *
b / (a +
b);
869 best_state[av_clip(
round(p), 1, 255)][av_clip((a +
b) / gob_count, 0, 255)];
870 for(jp++; jp<j; jp++)
877 p = 256.0 *
b / (a +
b);
880 best_state[av_clip(
round(p), 1, 255)][av_clip((a +
b) / gob_count, 0, 255)];
895 "Unsupported number %d of slices requested, please specify a "
896 "supported number with -slices (ex:4,6,9,12,16, ...)\n",
908 #define STATS_OUT_SIZE 1024 * 1024 * 6
932 memset(state, 128,
sizeof(state));
975 if (f->colorspace == 0) {
978 const int cx = x >> f->chroma_h_shift;
979 const int cy =
y >> f->chroma_v_shift;
983 if (f->chroma_planes) {
984 encode_plane(fs, p->data[1] + ps*cx+cy*p->linesize[1], chroma_width, chroma_height, p->linesize[1], 1);
985 encode_plane(fs, p->data[2] + ps*cx+cy*p->linesize[2], chroma_width, chroma_height, p->linesize[2], 1);
987 if (fs->transparency)
990 uint8_t *planes[3] = {p->data[0] + ps*x +
y*p->linesize[0],
991 p->data[1] + ps*x +
y*p->linesize[1],
992 p->data[2] + ps*x +
y*p->linesize[2]};
1001 const AVFrame *pict,
int *got_packet)
1035 for (i = 1; i < 256; i++) {
1063 if (i > 0 || f->
version > 2) {
1067 AV_WB24(buf_p + bytes, bytes);
1091 for (i = 0; i < 256; i++) {
1097 for (m = 0; m < 32; m++) {
1104 for (j = 0; j < 256; j++) {
1105 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1113 for (m = 0; m < 32; m++) {
1114 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1131 #define OFFSET(x) offsetof(FFV1Context, x)
1132 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM