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,
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 int stride,
int plane_index,
int pixel_stride)
277 const int ring_size =
s->context_model ? 3 : 2;
281 memset(
s->sample_buffer, 0,
ring_size * (
w + 6) *
sizeof(*
s->sample_buffer));
283 for (y = 0; y <
h; y++) {
289 if (
s->bits_per_raw_sample <= 8) {
290 for (x = 0; x <
w; x++)
295 if (
s->packed_at_lsb) {
296 for (x = 0; x <
w; x++) {
300 for (x = 0; x <
w; x++) {
301 sample[0][x] = ((uint16_t*)(
src +
stride*y))[x] >> (16 -
s->bits_per_raw_sample);
318 for (
i = 1;
i < 128;
i++)
330 for (
i = 0;
i < 5;
i++)
339 for (
int i = 0;
i < nb_contexts;
i++)
341 if (initial_state[
i][j] != 128)
354 if (
f->version < 2) {
358 for (
i = 1;
i < 256;
i++)
360 f->state_transition[
i] -
c->one_state[
i], 1);
371 }
else if (
f->version < 3) {
373 for (
i = 0;
i <
f->slice_count;
i++) {
376 (
fs->slice_x + 1) *
f->num_h_slices /
f->width, 0);
378 (
fs->slice_y + 1) *
f->num_v_slices /
f->height, 0);
380 (
fs->slice_width + 1) *
f->num_h_slices /
f->width - 1,
383 (
fs->slice_height + 1) *
f->num_v_slices /
f->height - 1,
385 for (j = 0; j <
f->plane_count; j++) {
387 av_assert0(
f->plane[j].quant_table_index ==
f->context_model);
401 memset(state2, 128,
sizeof(state2));
404 f->avctx->extradata_size = 10000 + 4 +
405 (11 * 11 * 5 * 5 * 5 + 11 * 11 * 11) * 32;
407 if (!
f->avctx->extradata)
413 if (
f->version > 2) {
414 if (
f->version == 3) {
415 f->micro_version = 4;
416 }
else if (
f->version == 4)
417 f->micro_version = 2;
423 for (
i = 1;
i < 256;
i++)
436 for (
i = 0;
i <
f->quant_table_count;
i++)
439 for (
i = 0;
i <
f->quant_table_count;
i++) {
442 for (j = 0; j <
f->context_count[
i]; j++)
444 int pred = j ?
f->initial_states[
i][j - 1][k] : 128;
446 (int8_t)(
f->initial_states[
i][j][k] -
pred), 1);
453 if (
f->version > 2) {
460 AV_WL32(
f->avctx->extradata +
f->avctx->extradata_size, v);
461 f->avctx->extradata_size += 4;
468 int i, i2, changed,
print = 0;
472 for (
i = 12;
i < 244;
i++) {
473 for (i2 =
i + 1; i2 < 245 && i2 <
i + 4; i2++) {
475 #define COST(old, new) \
476 s->rc_stat[old][0] * -log2((256 - (new)) / 256.0) + \
477 s->rc_stat[old][1] * -log2((new) / 256.0)
479 #define COST2(old, new) \
480 COST(old, new) + COST(256 - (old), 256 - (new))
484 if (size0 - sizeX > size0*(1e-14) &&
i != 128 && i2 != 128) {
487 FFSWAP(
int,
s->rc_stat[
i][0],
s->rc_stat[i2][0]);
488 FFSWAP(
int,
s->rc_stat[
i][1],
s->rc_stat[i2][1]);
490 FFSWAP(
int, stt[256 -
i], stt[256 - i2]);
491 FFSWAP(
int,
s->rc_stat[256 -
i][0],
s->rc_stat[256 - i2][0]);
492 FFSWAP(
int,
s->rc_stat[256 -
i][1],
s->rc_stat[256 - i2][1]);
494 for (j = 1; j < 256; j++) {
497 else if (stt[j] == i2)
500 if (stt[256 - j] == 256 -
i)
501 stt[256 - j] = 256 - i2;
502 else if (stt[256 - j] == 256 - i2)
503 stt[256 - j] = 256 -
i;
527 s->version =
FFMAX(
s->version, 2);
531 s->version =
FFMAX(
s->version, 2);
545 s->ec = (
s->version >= 3);
550 s->version =
FFMAX(
s->version, 3);
553 av_log(
avctx,
AV_LOG_ERROR,
"Version 2 needed for requested features but version 2 is experimental and not enabled\n");
572 s->bits_per_raw_sample = 9;
582 s->bits_per_raw_sample = 10;
591 s->bits_per_raw_sample = 12;
597 s->bits_per_raw_sample = 14;
598 s->packed_at_lsb = 1;
607 s->bits_per_raw_sample = 16;
608 }
else if (!
s->bits_per_raw_sample) {
611 if (
s->bits_per_raw_sample <= 8) {
615 s->version =
FFMAX(
s->version, 1);
627 s->chroma_planes =
desc->nb_components < 3 ? 0 : 1;
631 s->bits_per_raw_sample = 8;
632 else if (!
s->bits_per_raw_sample)
633 s->bits_per_raw_sample = 8;
638 s->chroma_planes = 1;
639 s->bits_per_raw_sample = 8;
644 s->chroma_planes = 1;
645 s->bits_per_raw_sample = 16;
647 s->version =
FFMAX(
s->version, 1);
651 s->chroma_planes = 1;
652 s->bits_per_raw_sample = 16;
654 s->version =
FFMAX(
s->version, 1);
658 s->chroma_planes = 1;
659 s->bits_per_raw_sample = 8;
663 s->bits_per_raw_sample = 9;
667 s->bits_per_raw_sample = 10;
671 s->bits_per_raw_sample = 12;
675 s->bits_per_raw_sample = 14;
679 s->bits_per_raw_sample = 16;
680 else if (!
s->bits_per_raw_sample)
684 s->chroma_planes = 1;
685 if (
s->bits_per_raw_sample >= 16) {
688 s->version =
FFMAX(
s->version, 1);
696 if (
s->bits_per_raw_sample > 8) {
699 "bits_per_raw_sample > 8, forcing range coder\n");
705 for (
i = 1;
i < 256;
i++)
710 for (
i = 1;
i < 256;
i++)
711 s->state_transition[
i] =
c.one_state[
i];
714 for (
i = 0;
i < 256;
i++) {
715 s->quant_table_count = 2;
716 if (
s->bits_per_raw_sample <= 8) {
722 s->quant_tables[1][2][
i]= 11*11*
quant5 [
i];
723 s->quant_tables[1][3][
i]= 5*11*11*
quant5 [
i];
724 s->quant_tables[1][4][
i]= 5*5*11*11*
quant5 [
i];
736 s->context_count[0] = (11 * 11 * 11 + 1) / 2;
737 s->context_count[1] = (11 * 11 * 5 * 5 * 5 + 1) / 2;
738 memcpy(
s->quant_table,
s->quant_tables[
s->context_model],
739 sizeof(
s->quant_table));
741 for (
i = 0;
i <
s->plane_count;
i++) {
752 if (!
s->transparency)
754 if (!
s->chroma_planes &&
s->version > 3)
761 s->picture_number = 0;
764 for (
i = 0;
i <
s->quant_table_count;
i++) {
766 sizeof(*
s->rc_stat2[
i]));
782 for (j = 0; j < 256; j++)
783 for (
i = 0;
i < 2;
i++) {
784 s->rc_stat[j][
i] = strtol(p, &next, 0);
787 "2Pass file invalid at %d %d [%s]\n", j,
i, p);
793 for (
i = 0;
i <
s->quant_table_count;
i++)
794 for (j = 0; j <
s->context_count[
i]; j++) {
795 for (k = 0; k < 32; k++)
796 for (m = 0; m < 2; m++) {
797 s->rc_stat2[
i][j][k][m] = strtol(p, &next, 0);
800 "2Pass file invalid at %d %d %d %d [%s]\n",
815 while (*p ==
'\n' || *p ==
' ')
825 for (
i = 0;
i <
s->quant_table_count;
i++) {
826 for (k = 0; k < 32; k++) {
829 for (j = 0; j <
s->context_count[
i]; j++) {
831 if (
s->rc_stat2[
i][j][k][0] +
s->rc_stat2[
i][j][k][1] > 200 && j ||
a+
b > 200) {
833 p = 256.0 *
b / (
a +
b);
834 s->initial_states[
i][jp][k] =
836 for(jp++; jp<j; jp++)
837 s->initial_states[
i][jp][k] =
s->initial_states[
i][jp-1][k];
840 a +=
s->rc_stat2[
i][j][k][0];
841 b +=
s->rc_stat2[
i][j][k][1];
843 p = 256.0 *
b / (
a +
b);
845 s->initial_states[
i][j][k] =
853 if (
s->version > 1) {
859 s->num_v_slices =
FFMIN(
s->num_v_slices, max_v_slices);
861 for (;
s->num_v_slices < 32;
s->num_v_slices++) {
862 for (
s->num_h_slices =
s->num_v_slices;
s->num_h_slices < 2*
s->num_v_slices;
s->num_h_slices++) {
863 int maxw = (
avctx->
width +
s->num_h_slices - 1) /
s->num_h_slices;
864 int maxh = (
avctx->
height +
s->num_v_slices - 1) /
s->num_v_slices;
865 if (
s->num_h_slices > max_h_slices ||
s->num_v_slices > max_v_slices)
867 if (maxw * maxh * (int64_t)(
s->bits_per_raw_sample+1) *
plane_count > 8<<24)
874 "Unsupported number %d of slices requested, please specify a "
875 "supported number with -slices (ex:4,6,9,12,16, ...)\n",
885 s->slice_count =
s->max_slice_count;
889 #define STATS_OUT_SIZE 1024 * 1024 * 6
894 for (
i = 0;
i <
s->quant_table_count;
i++)
895 for (j = 0; j <
s->max_slice_count; j++) {
919 for (j=0; j<
f->plane_count; j++) {
921 av_assert0(
f->plane[j].quant_table_index ==
f->context_model);
929 if (
f->version > 3) {
931 if (
fs->slice_coding_mode == 1)
934 if (
fs->slice_coding_mode != 1) {
943 #define NB_Y_COEFF 15
944 static const int rct_y_coeff[15][2] = {
964 int x, y,
i, p, best;
966 int lbd =
fs->bits_per_raw_sample <= 8;
968 for (y = 0; y <
h; y++) {
969 int lastr=0, lastg=0, lastb=0;
970 for (p = 0; p < 3; p++)
973 for (x = 0; x <
w; x++) {
977 unsigned v = *((
const uint32_t*)(
src[0] + x*4 +
stride[0]*y));
980 r = (v >> 16) & 0xFF;
982 b = *((
const uint16_t*)(
src[0] + x*2 +
stride[0]*y));
983 g = *((
const uint16_t*)(
src[1] + x*2 +
stride[1]*y));
984 r = *((
const uint16_t*)(
src[2] + x*2 +
stride[2]*y));
991 int bg = ag -
sample[0][x];
992 int bb = ab -
sample[1][x];
993 int br = ar -
sample[2][x];
999 stat[
i] +=
FFABS(bg + ((br*rct_y_coeff[
i][0] + bb*rct_y_coeff[
i][1])>>2));
1015 if (stat[
i] < stat[best])
1019 fs->slice_rct_by_coef = rct_y_coeff[best][1];
1020 fs->slice_rct_ry_coef = rct_y_coeff[best][0];
1029 int x =
fs->slice_x;
1030 int y =
fs->slice_y;
1031 const AVFrame *
const p =
f->cur_enc_frame;
1040 fs->slice_coding_mode = 0;
1041 if (
f->version > 3) {
1044 fs->slice_rct_by_coef = 1;
1045 fs->slice_rct_ry_coef = 1;
1051 if (
f->version > 2) {
1057 fs->c.bytestream_start +
fs->ac_byte_count,
1058 fs->c.bytestream_end -
fs->c.bytestream_start -
fs->ac_byte_count);
1064 const int cx = x >>
f->chroma_h_shift;
1065 const int cy = y >>
f->chroma_v_shift;
1069 if (
f->chroma_planes) {
1073 if (
fs->transparency)
1078 }
else if (
f->use32bit) {
1086 if (
fs->version < 4 || !
fs->ac) {
1091 fs->slice_coding_mode = 1;
1100 const AVFrame *pict,
int *got_packet)
1104 uint8_t keystate = 128;
1116 memset(
f->rc_stat, 0,
sizeof(
f->rc_stat));
1117 for (
i = 0;
i <
f->quant_table_count;
i++)
1118 memset(
f->rc_stat2[
i], 0,
f->context_count[
i] *
sizeof(*
f->rc_stat2[
i]));
1121 for (j = 0; j <
f->slice_count; j++) {
1123 for (
i = 0;
i < 256;
i++) {
1124 f->rc_stat[
i][0] +=
fs->rc_stat[
i][0];
1125 f->rc_stat[
i][1] +=
fs->rc_stat[
i][1];
1127 for (
i = 0;
i <
f->quant_table_count;
i++) {
1128 for (k = 0; k <
f->context_count[
i]; k++)
1129 for (m = 0; m < 32; m++) {
1130 f->rc_stat2[
i][k][m][0] +=
fs->rc_stat2[
i][k][m][0];
1131 f->rc_stat2[
i][k][m][1] +=
fs->rc_stat2[
i][k][m][1];
1136 for (j = 0; j < 256; j++) {
1137 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1138 f->rc_stat[j][0],
f->rc_stat[j][1]);
1143 for (
i = 0;
i <
f->quant_table_count;
i++) {
1144 for (j = 0; j <
f->context_count[
i]; j++)
1145 for (m = 0; m < 32; m++) {
1146 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1147 f->rc_stat2[
i][j][m][0],
f->rc_stat2[
i][j][m][1]);
1151 snprintf(p, end - p,
"%d\n",
f->gob_count);
1170 f->cur_enc_frame = pict;
1184 for (
i = 1;
i < 256;
i++) {
1185 c->one_state[
i] =
f->state_transition[
i];
1186 c->zero_state[256 -
i] = 256 -
c->one_state[
i];
1190 for (
i = 0;
i <
f->slice_count;
i++) {
1199 fs->c.bytestream_end =
fs->c.bytestream_start +
len;
1203 f->slice_count,
sizeof(
void *));
1206 for (
i = 0;
i <
f->slice_count;
i++) {
1216 if (
i > 0 ||
f->version > 2) {
1218 memmove(buf_p,
fs->c.bytestream_start, bytes);
1220 AV_WB24(buf_p + bytes, bytes);
1236 f->picture_number++;
1244 #define OFFSET(x) offsetof(FFV1Context, x)
1245 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
1249 { .i64 = 0 }, -2, 2,
VE,
"coder" },
1256 {
"ac",
"Range with custom table (the ac option exists for compatibility and is deprecated)", 0,
AV_OPT_TYPE_CONST,
1257 { .i64 = 1 }, INT_MIN, INT_MAX,
VE,
"coder" },
1259 { .i64 = 0 }, 0, 1,
VE },