45 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
48 1, 1, 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, -2,
57 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -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, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
60 -1, -1, -1, -1, -1, -1, -0, -0, -0, -0, -0, -0, -0, -0, -0, -0,
64 0, 1, 1, 1, 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, -2, -2, -2,
79 -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1,
83 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2,
84 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3,
85 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
86 3, 3, 3, 3, 3, 3, 3, 3, 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, -4, -4, -4, -4, -4, -4, -4,
95 -4, -4, -4, -4, -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3,
96 -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3,
97 -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2,
98 -2, -2, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -0, -0, -0, -0,
102 0, 1, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4,
103 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
104 4, 4, 4, 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, -5, -5,
115 -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -4, -4,
116 -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4,
117 -4, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -3, -2, -2, -2, -1,
121 0, 10, 10, 10, 10, 16, 16, 16, 28, 16, 16, 29, 42, 49, 20, 49,
122 59, 25, 26, 26, 27, 31, 33, 33, 33, 34, 34, 37, 67, 38, 39, 39,
123 40, 40, 41, 79, 43, 44, 45, 45, 48, 48, 64, 50, 51, 52, 88, 52,
124 53, 74, 55, 57, 58, 58, 74, 60, 101, 61, 62, 84, 66, 66, 68, 69,
125 87, 82, 71, 97, 73, 73, 82, 75, 111, 77, 94, 78, 87, 81, 83, 97,
126 85, 83, 94, 86, 99, 89, 90, 99, 111, 92, 93, 134, 95, 98, 105, 98,
127 105, 110, 102, 108, 102, 118, 103, 106, 106, 113, 109, 112, 114, 112, 116, 125,
128 115, 116, 117, 117, 126, 119, 125, 121, 121, 123, 145, 124, 126, 131, 127, 129,
129 165, 130, 132, 138, 133, 135, 145, 136, 137, 139, 146, 141, 143, 142, 144, 148,
130 147, 155, 151, 149, 151, 150, 152, 157, 153, 154, 156, 168, 158, 162, 161, 160,
131 172, 163, 169, 164, 166, 184, 167, 170, 177, 174, 171, 173, 182, 176, 180, 178,
132 175, 189, 179, 181, 186, 183, 192, 185, 200, 187, 191, 188, 190, 197, 193, 196,
133 197, 194, 195, 196, 198, 202, 199, 201, 210, 203, 207, 204, 205, 206, 208, 214,
134 209, 211, 221, 212, 213, 215, 224, 216, 217, 218, 219, 220, 222, 228, 223, 225,
135 226, 224, 227, 229, 240, 230, 231, 232, 233, 234, 235, 236, 238, 239, 237, 242,
136 241, 243, 242, 244, 245, 246, 247, 248, 249, 250, 251, 252, 252, 253, 254, 255,
140 const uint8_t one_state[256])
145 for (
i = 1;
i < 256;
i++)
146 l2tab[
i] = -
log2(
i / 256.0) * ((1
U << 31) / 8);
148 for (
i = 0;
i < 256;
i++) {
149 uint64_t best_len[256];
151 for (j = 0; j < 256; j++)
152 best_len[j] = UINT64_MAX;
154 for (j =
FFMAX(
i - 10, 1); j <
FFMIN(
i + 11, 256); j++) {
155 uint32_t occ[256] = { 0 };
162 for (k = 0; k < 256; k++) {
163 uint32_t newocc[256] = { 0 };
164 for (m = 1; m < 256; m++)
166 len += (occ[m]*((
i *(uint64_t)l2tab[ m]
167 + (256-
i)*(uint64_t)l2tab[256-m])>>8)) >> 8;
169 if (
len < best_len[k]) {
171 best_state[
i][k] = j;
173 for (m = 1; m < 256; m++)
175 newocc[ one_state[ m]] += occ[m] * (uint64_t)
i >> 8;
176 newocc[256 - one_state[256 - m]] += occ[m] * (uint64_t)(256 -
i) >> 8;
178 memcpy(occ, newocc,
sizeof(occ));
185 uint8_t *
state,
int v,
187 uint64_t rc_stat[256][2],
188 uint64_t rc_stat2[32][2])
192 #define put_rac(C, S, B) \
195 rc_stat[*(S)][B]++; \
196 rc_stat2[(S) - state][B]++; \
206 for (
i = 0;
i < e;
i++)
210 for (
i = e - 1;
i >= 0;
i--)
216 for (
i = 0;
i < e;
i++)
220 for (
i = e - 1;
i >= 0;
i--)
233 int v,
int is_signed)
247 while (i < state->error_sum) {
256 ff_dlog(
NULL,
"v:%d/%d bias:%d error:%d drift:%d count:%d k:%d\n", v,
code,
264 #define RENAME(name) name
270 #define RENAME(name) name ## 32
274 const uint8_t *
src,
int w,
int h,
275 int stride,
int plane_index,
int pixel_stride,
int ac)
279 const int ring_size =
f->context_model ? 3 : 2;
285 for (y = 0; y <
h; y++) {
291 if (
f->bits_per_raw_sample <= 8) {
292 for (x = 0; x <
w; x++)
297 if (
f->packed_at_lsb) {
298 for (x = 0; x <
w; x++) {
302 for (x = 0; x <
w; x++) {
303 sample[0][x] = ((uint16_t*)(
src +
stride*y))[x] >> (16 -
f->bits_per_raw_sample);
332 for (
i = 0;
i < 5;
i++)
341 for (
int i = 0;
i < nb_contexts;
i++)
343 if (initial_state[
i][j] != 128)
356 if (
f->version < 2) {
360 for (
i = 1;
i < 256;
i++)
362 f->state_transition[
i] -
c->one_state[
i], 1);
373 }
else if (
f->version < 3) {
375 for (
i = 0;
i <
f->slice_count;
i++) {
378 (
fs->slice_x + 1) *
f->num_h_slices /
f->width, 0);
380 (
fs->slice_y + 1) *
f->num_v_slices /
f->height, 0);
382 (
fs->slice_width + 1) *
f->num_h_slices /
f->width - 1,
385 (
fs->slice_height + 1) *
f->num_v_slices /
f->height - 1,
387 for (j = 0; j <
f->plane_count; j++) {
389 av_assert0(
fs->plane[j].quant_table_index ==
f->context_model);
405 memset(state2, 128,
sizeof(state2));
408 f->avctx->extradata_size = 10000 + 4 +
409 (11 * 11 * 5 * 5 * 5 + 11 * 11 * 11) * 32;
411 if (!
f->avctx->extradata)
417 if (
f->version > 2) {
418 if (
f->version == 3) {
419 f->micro_version = 4;
420 }
else if (
f->version == 4)
421 f->micro_version = 3;
427 for (
i = 1;
i < 256;
i++)
440 for (
i = 0;
i <
f->quant_table_count;
i++)
443 for (
i = 0;
i <
f->quant_table_count;
i++) {
446 for (j = 0; j <
f->context_count[
i]; j++)
448 int pred = j ?
f->initial_states[
i][j - 1][k] : 128;
450 (int8_t)(
f->initial_states[
i][j][k] -
pred), 1);
457 if (
f->version > 2) {
464 AV_WL32(
f->avctx->extradata +
f->avctx->extradata_size, v);
465 f->avctx->extradata_size += 4;
472 int i, i2, changed,
print = 0;
476 for (
i = 12;
i < 244;
i++) {
477 for (i2 =
i + 1; i2 < 245 && i2 <
i + 4; i2++) {
479 #define COST(old, new) \
480 s->rc_stat[old][0] * -log2((256 - (new)) / 256.0) + \
481 s->rc_stat[old][1] * -log2((new) / 256.0)
483 #define COST2(old, new) \
484 COST(old, new) + COST(256 - (old), 256 - (new))
488 if (size0 - sizeX > size0*(1e-14) &&
i != 128 && i2 != 128) {
491 FFSWAP(
int,
s->rc_stat[
i][0],
s->rc_stat[i2][0]);
492 FFSWAP(
int,
s->rc_stat[
i][1],
s->rc_stat[i2][1]);
494 FFSWAP(
int, stt[256 -
i], stt[256 - i2]);
495 FFSWAP(
int,
s->rc_stat[256 -
i][0],
s->rc_stat[256 - i2][0]);
496 FFSWAP(
int,
s->rc_stat[256 -
i][1],
s->rc_stat[256 - i2][1]);
498 for (j = 1; j < 256; j++) {
501 else if (stt[j] == i2)
504 if (stt[256 - j] == 256 -
i)
505 stt[256 - j] = 256 - i2;
506 else if (stt[256 - j] == 256 - i2)
507 stt[256 - j] = 256 -
i;
522 int plane_count = 1 + 2*
s->chroma_planes +
s->transparency;
525 s->num_v_slices = (avctx->
width > 352 || avctx->
height > 288 || !avctx->
slices) ? 2 : 1;
526 s->num_v_slices =
FFMIN(
s->num_v_slices, max_v_slices);
527 for (;
s->num_v_slices < 32;
s->num_v_slices++) {
528 for (
s->num_h_slices =
s->num_v_slices;
s->num_h_slices < 2*
s->num_v_slices;
s->num_h_slices++) {
529 int maxw = (avctx->
width +
s->num_h_slices - 1) /
s->num_h_slices;
530 int maxh = (avctx->
height +
s->num_v_slices - 1) /
s->num_v_slices;
531 if (
s->num_h_slices > max_h_slices ||
s->num_v_slices > max_v_slices)
533 if (maxw * maxh * (
int64_t)(
s->bits_per_raw_sample+1) * plane_count > 8<<24)
544 "Unsupported number %d of slices requested, please specify a "
545 "supported number with -slices (ex:4,6,9,12,16, ...)\n",
557 s->version =
FFMAX(
s->version, 2);
566 s->version =
FFMAX(
s->version, 2);
568 if (avctx->
level <= 0 &&
s->version == 2) {
572 if (avctx->
level <
s->version) {
573 av_log(avctx,
AV_LOG_ERROR,
"Version %d needed for requested features but %d requested\n",
s->version, avctx->
level);
576 s->version = avctx->
level;
580 if (
s->version >= 4) {
582 s->crcref = 0x7a8c4079;
583 }
else if (
s->version >= 3) {
591 s->version =
FFMAX(
s->version, 3);
593 s->version =
FFMAX(
s->version, 4);
596 av_log(avctx,
AV_LOG_ERROR,
"Version 2 or 4 needed for requested features but version 2 or 4 is experimental and not enabled\n");
601 for (
i = 1;
i < 256;
i++)
606 for (
i = 1;
i < 256;
i++)
607 s->state_transition[
i] =
c.one_state[
i];
610 for (
i = 0;
i < 256;
i++) {
611 s->quant_table_count = 2;
612 if ((
s->qtable == -1 &&
s->bits_per_raw_sample <= 8) ||
s->qtable == 1) {
618 s->quant_tables[1][2][
i]= 11*11*
quant5 [
i];
619 s->quant_tables[1][3][
i]= 5*11*11*
quant5 [
i];
620 s->quant_tables[1][4][
i]= 5*5*11*11*
quant5 [
i];
621 s->context_count[0] = (11 * 11 * 11 + 1) / 2;
622 s->context_count[1] = (11 * 11 * 5 * 5 * 5 + 1) / 2;
632 s->context_count[0] = (9 * 9 * 9 + 1) / 2;
633 s->context_count[1] = (9 * 9 * 5 * 5 * 5 + 1) / 2;
640 if (!
s->transparency)
642 if (!
s->chroma_planes &&
s->version > 3)
645 s->picture_number = 0;
648 for (
i = 0;
i <
s->quant_table_count;
i++) {
650 sizeof(*
s->rc_stat2[
i]));
666 for (j = 0; j < 256; j++)
667 for (
i = 0;
i < 2;
i++) {
668 s->rc_stat[j][
i] = strtol(p, &next, 0);
671 "2Pass file invalid at %d %d [%s]\n", j,
i, p);
677 for (
i = 0;
i <
s->quant_table_count;
i++)
678 for (j = 0; j <
s->context_count[
i]; j++) {
679 for (k = 0; k < 32; k++)
680 for (m = 0; m < 2; m++) {
681 s->rc_stat2[
i][j][k][m] = strtol(p, &next, 0);
684 "2Pass file invalid at %d %d %d %d [%s]\n",
692 gob_count = strtol(p, &next, 0);
693 if (next == p || gob_count <= 0) {
699 while (*p ==
'\n' || *p ==
' ')
709 for (
i = 0;
i <
s->quant_table_count;
i++) {
710 for (k = 0; k < 32; k++) {
713 for (j = 0; j <
s->context_count[
i]; j++) {
715 if (
s->rc_stat2[
i][j][k][0] +
s->rc_stat2[
i][j][k][1] > 200 && j ||
a+
b > 200) {
717 p = 256.0 *
b / (
a +
b);
718 s->initial_states[
i][jp][k] =
720 for(jp++; jp<j; jp++)
721 s->initial_states[
i][jp][k] =
s->initial_states[
i][jp-1][k];
724 a +=
s->rc_stat2[
i][j][k][0];
725 b +=
s->rc_stat2[
i][j][k][1];
727 p = 256.0 *
b / (
a +
b);
729 s->initial_states[
i][j][k] =
737 if (
s->version <= 1) {
762 s->bits_per_raw_sample = 9;
772 s->bits_per_raw_sample = 10;
781 s->bits_per_raw_sample = 12;
787 s->bits_per_raw_sample = 14;
788 s->packed_at_lsb = 1;
797 s->bits_per_raw_sample = 16;
798 }
else if (!
s->bits_per_raw_sample) {
801 if (
s->bits_per_raw_sample <= 8) {
805 s->version =
FFMAX(
s->version, 1);
817 s->chroma_planes =
desc->nb_components < 3 ? 0 : 1;
821 s->bits_per_raw_sample = 8;
822 else if (!
s->bits_per_raw_sample)
823 s->bits_per_raw_sample = 8;
828 s->chroma_planes = 1;
829 s->bits_per_raw_sample = 8;
834 s->chroma_planes = 1;
835 s->bits_per_raw_sample = 16;
837 s->version =
FFMAX(
s->version, 1);
841 s->chroma_planes = 1;
842 s->bits_per_raw_sample = 16;
844 s->version =
FFMAX(
s->version, 1);
848 s->chroma_planes = 1;
849 s->bits_per_raw_sample = 8;
853 s->bits_per_raw_sample = 9;
857 s->bits_per_raw_sample = 10;
861 s->bits_per_raw_sample = 12;
865 s->bits_per_raw_sample = 14;
869 s->bits_per_raw_sample = 16;
870 else if (!
s->bits_per_raw_sample)
874 s->chroma_planes = 1;
875 if (
s->bits_per_raw_sample >= 16) {
878 s->version =
FFMAX(
s->version, 1);
907 if (
s->bits_per_raw_sample > (
s->version > 3 ? 16 : 8)) {
910 "high bits_per_raw_sample, forcing range coder\n");
921 if (
s->version > 1) {
931 s->slice_count =
s->max_slice_count;
933 for (
int j = 0; j <
s->slice_count; j++) {
934 for (
int i = 0;
i <
s->plane_count;
i++) {
947 #define STATS_OUT_SIZE 1024 * 1024 * 6
952 for (
int i = 0;
i <
s->quant_table_count;
i++)
953 for (
int j = 0; j <
s->max_slice_count; j++) {
977 for (j=0; j<
f->plane_count; j++) {
987 if (
f->version > 3) {
1000 const uint8_t *
src[3],
const int stride[3],
int w,
int h)
1002 #define NB_Y_COEFF 15
1003 static const int rct_y_coeff[15][2] = {
1023 int x, y,
i, p, best;
1025 int lbd =
f->bits_per_raw_sample <= 8;
1026 int packed = !
src[1];
1027 int transparency =
f->transparency;
1028 int packed_size = (3 + transparency)*2;
1030 for (y = 0; y <
h; y++) {
1031 int lastr=0, lastg=0, lastb=0;
1032 for (p = 0; p < 3; p++)
1035 for (x = 0; x <
w; x++) {
1039 unsigned v = *((
const uint32_t*)(
src[0] + x*4 +
stride[0]*y));
1041 g = (v >> 8) & 0xFF;
1042 r = (v >> 16) & 0xFF;
1043 }
else if (packed) {
1044 const uint16_t *p = ((
const uint16_t*)(
src[0] + x*packed_size +
stride[0]*y));
1049 b = *((
const uint16_t*)(
src[0] + x*2 +
stride[0]*y));
1050 g = *((
const uint16_t*)(
src[1] + x*2 +
stride[1]*y));
1051 r = *((
const uint16_t*)(
src[2] + x*2 +
stride[2]*y));
1058 int bg = ag -
sample[0][x];
1059 int bb = ab -
sample[1][x];
1060 int br = ar -
sample[2][x];
1066 stat[
i] +=
FFABS(bg + ((br*rct_y_coeff[
i][0] + bb*rct_y_coeff[
i][1])>>2));
1082 if (stat[
i] < stat[best])
1098 const AVFrame *
const p =
f->cur_enc_frame;
1109 if (
f->version > 3 &&
f->colorspace == 1) {
1119 if (
f->version > 2) {
1132 const int cx = x >>
f->chroma_h_shift;
1133 const int cy = y >>
f->chroma_v_shift;
1137 if (
f->chroma_planes) {
1141 if (
f->transparency)
1146 }
else if (
f->use32bit) {
1161 if (
f->version < 4) {
1176 const AVFrame *pict,
int *got_packet)
1180 uint8_t keystate = 128;
1191 memset(
f->rc_stat, 0,
sizeof(
f->rc_stat));
1192 for (
i = 0;
i <
f->quant_table_count;
i++)
1193 memset(
f->rc_stat2[
i], 0,
f->context_count[
i] *
sizeof(*
f->rc_stat2[
i]));
1196 for (j = 0; j <
f->slice_count; j++) {
1198 for (
i = 0;
i < 256;
i++) {
1202 for (
i = 0;
i <
f->quant_table_count;
i++) {
1203 for (k = 0; k <
f->context_count[
i]; k++)
1204 for (m = 0; m < 32; m++) {
1205 f->rc_stat2[
i][k][m][0] += sc->
rc_stat2[
i][k][m][0];
1206 f->rc_stat2[
i][k][m][1] += sc->
rc_stat2[
i][k][m][1];
1211 for (j = 0; j < 256; j++) {
1212 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1213 f->rc_stat[j][0],
f->rc_stat[j][1]);
1218 for (
i = 0;
i <
f->quant_table_count;
i++) {
1219 for (j = 0; j <
f->context_count[
i]; j++)
1220 for (m = 0; m < 32; m++) {
1221 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1222 f->rc_stat2[
i][j][m][0],
f->rc_stat2[
i][j][m][1]);
1226 snprintf(p, end - p,
"%d\n",
f->gob_count);
1231 maxsize = avctx->
width*avctx->
height * (1 +
f->transparency);
1232 if (
f->chroma_planes)
1234 maxsize +=
f->slice_count * 800;
1235 if (
f->version > 3) {
1236 maxsize *=
f->bits_per_raw_sample + 1;
1238 maxsize +=
f->slice_count * 2 * (avctx->
width + avctx->
height);
1239 maxsize *= 8*(2*
f->bits_per_raw_sample + 5);
1245 av_log(avctx,
AV_LOG_WARNING,
"Cannot allocate worst case packet size, the encoding could fail\n");
1255 f->cur_enc_frame = pict;
1269 for (
i = 1;
i < 256;
i++) {
1270 c->one_state[
i] =
f->state_transition[
i];
1271 c->zero_state[256 -
i] = 256 -
c->one_state[
i];
1275 for (
i = 0;
i <
f->slice_count;
i++) {
1288 f->slice_count,
sizeof(*
f->slices));
1291 for (
i = 0;
i <
f->slice_count;
i++) {
1294 if (
i > 0 ||
f->version > 2) {
1298 AV_WB24(buf_p + bytes, bytes);
1314 f->picture_number++;
1322 #define OFFSET(x) offsetof(FFV1Context, x)
1323 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
1327 { .i64 = 0 }, -2, 2,
VE, .unit =
"coder" },
1334 {
"ac",
"Range with custom table (the ac option exists for compatibility and is deprecated)", 0,
AV_OPT_TYPE_CONST,
1335 { .i64 = 1 }, INT_MIN, INT_MAX,
VE, .unit =
"coder" },
1337 { .i64 = 0 }, 0, 1,
VE },
1339 { .i64 = -1 }, -1, 2,
VE },