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,
139 const uint8_t one_state[256])
144 for (
i = 1;
i < 256;
i++)
145 l2tab[
i] = -
log2(
i / 256.0) * ((1
U << 31) / 8);
147 for (
i = 0;
i < 256;
i++) {
148 uint64_t best_len[256];
150 for (j = 0; j < 256; j++)
151 best_len[j] = UINT64_MAX;
153 for (j =
FFMAX(
i - 10, 1); j <
FFMIN(
i + 11, 256); j++) {
154 uint32_t occ[256] = { 0 };
161 for (k = 0; k < 256; k++) {
162 uint32_t newocc[256] = { 0 };
163 for (m = 1; m < 256; m++)
165 len += (occ[m]*((
i *(uint64_t)l2tab[ m]
166 + (256-
i)*(uint64_t)l2tab[256-m])>>8)) >> 8;
168 if (
len < best_len[k]) {
170 best_state[
i][k] = j;
172 for (m = 1; m < 256; m++)
174 newocc[ one_state[ m]] += occ[m] * (uint64_t)
i >> 8;
175 newocc[256 - one_state[256 - m]] += occ[m] * (uint64_t)(256 -
i) >> 8;
177 memcpy(occ, newocc,
sizeof(occ));
184 uint8_t *
state,
int v,
191 #define put_rac(C, S, B) \
194 rc_stat[*(S)][B]++; \
195 rc_stat2[(S) - state][B]++; \
205 for (
i = 0;
i < e;
i++)
209 for (
i = e - 1;
i >= 0;
i--)
215 for (
i = 0;
i < e;
i++)
219 for (
i = e - 1;
i >= 0;
i--)
232 int v,
int is_signed)
246 while (i < state->error_sum) {
255 ff_dlog(
NULL,
"v:%d/%d bias:%d error:%d drift:%d count:%d k:%d\n", v,
code,
263 #define RENAME(name) name
269 #define RENAME(name) name ## 32
273 int stride,
int plane_index,
int pixel_stride)
276 const int ring_size =
s->context_model ? 3 : 2;
280 memset(
s->sample_buffer, 0,
ring_size * (
w + 6) *
sizeof(*
s->sample_buffer));
282 for (y = 0; y <
h; y++) {
288 if (
s->bits_per_raw_sample <= 8) {
289 for (x = 0; x <
w; x++)
294 if (
s->packed_at_lsb) {
295 for (x = 0; x <
w; x++) {
299 for (x = 0; x <
w; x++) {
300 sample[0][x] = ((uint16_t*)(
src +
stride*y))[x] >> (16 -
s->bits_per_raw_sample);
317 for (
i = 1;
i < 128;
i++)
329 for (
i = 0;
i < 5;
i++)
338 for (
int i = 0;
i < nb_contexts;
i++)
340 if (initial_state[
i][j] != 128)
353 if (
f->version < 2) {
357 for (
i = 1;
i < 256;
i++)
359 f->state_transition[
i] -
c->one_state[
i], 1);
370 }
else if (
f->version < 3) {
372 for (
i = 0;
i <
f->slice_count;
i++) {
375 (
fs->slice_x + 1) *
f->num_h_slices /
f->width, 0);
377 (
fs->slice_y + 1) *
f->num_v_slices /
f->height, 0);
379 (
fs->slice_width + 1) *
f->num_h_slices /
f->width - 1,
382 (
fs->slice_height + 1) *
f->num_v_slices /
f->height - 1,
384 for (j = 0; j <
f->plane_count; j++) {
386 av_assert0(
f->plane[j].quant_table_index ==
f->context_model);
400 memset(state2, 128,
sizeof(state2));
403 f->avctx->extradata_size = 10000 + 4 +
404 (11 * 11 * 5 * 5 * 5 + 11 * 11 * 11) * 32;
406 if (!
f->avctx->extradata)
412 if (
f->version > 2) {
413 if (
f->version == 3) {
414 f->micro_version = 4;
415 }
else if (
f->version == 4)
416 f->micro_version = 2;
422 for (
i = 1;
i < 256;
i++)
435 for (
i = 0;
i <
f->quant_table_count;
i++)
438 for (
i = 0;
i <
f->quant_table_count;
i++) {
441 for (j = 0; j <
f->context_count[
i]; j++)
443 int pred = j ?
f->initial_states[
i][j - 1][k] : 128;
445 (int8_t)(
f->initial_states[
i][j][k] -
pred), 1);
452 if (
f->version > 2) {
459 AV_WL32(
f->avctx->extradata +
f->avctx->extradata_size, v);
460 f->avctx->extradata_size += 4;
467 int i, i2, changed,
print = 0;
471 for (
i = 12;
i < 244;
i++) {
472 for (i2 =
i + 1; i2 < 245 && i2 <
i + 4; i2++) {
474 #define COST(old, new) \
475 s->rc_stat[old][0] * -log2((256 - (new)) / 256.0) + \
476 s->rc_stat[old][1] * -log2((new) / 256.0)
478 #define COST2(old, new) \
479 COST(old, new) + COST(256 - (old), 256 - (new))
483 if (size0 - sizeX > size0*(1e-14) &&
i != 128 && i2 != 128) {
486 FFSWAP(
int,
s->rc_stat[
i][0],
s->rc_stat[i2][0]);
487 FFSWAP(
int,
s->rc_stat[
i][1],
s->rc_stat[i2][1]);
489 FFSWAP(
int, stt[256 -
i], stt[256 - i2]);
490 FFSWAP(
int,
s->rc_stat[256 -
i][0],
s->rc_stat[256 - i2][0]);
491 FFSWAP(
int,
s->rc_stat[256 -
i][1],
s->rc_stat[256 - i2][1]);
493 for (j = 1; j < 256; j++) {
496 else if (stt[j] == i2)
499 if (stt[256 - j] == 256 -
i)
500 stt[256 - j] = 256 - i2;
501 else if (stt[256 - j] == 256 - i2)
502 stt[256 - j] = 256 -
i;
526 s->version =
FFMAX(
s->version, 2);
530 s->version =
FFMAX(
s->version, 2);
544 s->ec = (
s->version >= 3);
549 s->version =
FFMAX(
s->version, 3);
552 av_log(
avctx,
AV_LOG_ERROR,
"Version 2 needed for requested features but version 2 is experimental and not enabled\n");
571 s->bits_per_raw_sample = 9;
581 s->bits_per_raw_sample = 10;
590 s->bits_per_raw_sample = 12;
596 s->bits_per_raw_sample = 14;
597 s->packed_at_lsb = 1;
606 s->bits_per_raw_sample = 16;
607 }
else if (!
s->bits_per_raw_sample) {
610 if (
s->bits_per_raw_sample <= 8) {
614 s->version =
FFMAX(
s->version, 1);
626 s->chroma_planes =
desc->nb_components < 3 ? 0 : 1;
630 s->bits_per_raw_sample = 8;
631 else if (!
s->bits_per_raw_sample)
632 s->bits_per_raw_sample = 8;
637 s->chroma_planes = 1;
638 s->bits_per_raw_sample = 8;
643 s->chroma_planes = 1;
644 s->bits_per_raw_sample = 16;
646 s->version =
FFMAX(
s->version, 1);
650 s->chroma_planes = 1;
651 s->bits_per_raw_sample = 16;
653 s->version =
FFMAX(
s->version, 1);
657 s->chroma_planes = 1;
658 s->bits_per_raw_sample = 8;
662 s->bits_per_raw_sample = 9;
666 s->bits_per_raw_sample = 10;
670 s->bits_per_raw_sample = 12;
674 s->bits_per_raw_sample = 14;
678 s->bits_per_raw_sample = 16;
679 else if (!
s->bits_per_raw_sample)
683 s->chroma_planes = 1;
684 if (
s->bits_per_raw_sample >= 16) {
687 s->version =
FFMAX(
s->version, 1);
695 if (
s->bits_per_raw_sample > 8) {
698 "bits_per_raw_sample > 8, forcing range coder\n");
704 for (
i = 1;
i < 256;
i++)
709 for (
i = 1;
i < 256;
i++)
710 s->state_transition[
i] =
c.one_state[
i];
713 for (
i = 0;
i < 256;
i++) {
714 s->quant_table_count = 2;
715 if (
s->bits_per_raw_sample <= 8) {
721 s->quant_tables[1][2][
i]= 11*11*
quant5 [
i];
722 s->quant_tables[1][3][
i]= 5*11*11*
quant5 [
i];
723 s->quant_tables[1][4][
i]= 5*5*11*11*
quant5 [
i];
735 s->context_count[0] = (11 * 11 * 11 + 1) / 2;
736 s->context_count[1] = (11 * 11 * 5 * 5 * 5 + 1) / 2;
737 memcpy(
s->quant_table,
s->quant_tables[
s->context_model],
738 sizeof(
s->quant_table));
740 for (
i = 0;
i <
s->plane_count;
i++) {
751 if (!
s->transparency)
753 if (!
s->chroma_planes &&
s->version > 3)
760 s->picture_number = 0;
763 for (
i = 0;
i <
s->quant_table_count;
i++) {
765 sizeof(*
s->rc_stat2[
i]));
781 for (j = 0; j < 256; j++)
782 for (
i = 0;
i < 2;
i++) {
783 s->rc_stat[j][
i] = strtol(p, &next, 0);
786 "2Pass file invalid at %d %d [%s]\n", j,
i, p);
792 for (
i = 0;
i <
s->quant_table_count;
i++)
793 for (j = 0; j <
s->context_count[
i]; j++) {
794 for (k = 0; k < 32; k++)
795 for (m = 0; m < 2; m++) {
796 s->rc_stat2[
i][j][k][m] = strtol(p, &next, 0);
799 "2Pass file invalid at %d %d %d %d [%s]\n",
814 while (*p ==
'\n' || *p ==
' ')
824 for (
i = 0;
i <
s->quant_table_count;
i++) {
825 for (k = 0; k < 32; k++) {
828 for (j = 0; j <
s->context_count[
i]; j++) {
830 if (
s->rc_stat2[
i][j][k][0] +
s->rc_stat2[
i][j][k][1] > 200 && j ||
a+
b > 200) {
832 p = 256.0 *
b / (
a +
b);
833 s->initial_states[
i][jp][k] =
835 for(jp++; jp<j; jp++)
836 s->initial_states[
i][jp][k] =
s->initial_states[
i][jp-1][k];
839 a +=
s->rc_stat2[
i][j][k][0];
840 b +=
s->rc_stat2[
i][j][k][1];
842 p = 256.0 *
b / (
a +
b);
844 s->initial_states[
i][j][k] =
852 if (
s->version > 1) {
858 s->num_v_slices =
FFMIN(
s->num_v_slices, max_v_slices);
860 for (;
s->num_v_slices < 32;
s->num_v_slices++) {
861 for (
s->num_h_slices =
s->num_v_slices;
s->num_h_slices < 2*
s->num_v_slices;
s->num_h_slices++) {
862 int maxw = (
avctx->
width +
s->num_h_slices - 1) /
s->num_h_slices;
863 int maxh = (
avctx->
height +
s->num_v_slices - 1) /
s->num_v_slices;
864 if (
s->num_h_slices > max_h_slices ||
s->num_v_slices > max_v_slices)
866 if (maxw * maxh * (int64_t)(
s->bits_per_raw_sample+1) *
plane_count > 8<<24)
873 "Unsupported number %d of slices requested, please specify a "
874 "supported number with -slices (ex:4,6,9,12,16, ...)\n",
884 s->slice_count =
s->max_slice_count;
888 #define STATS_OUT_SIZE 1024 * 1024 * 6
893 for (
i = 0;
i <
s->quant_table_count;
i++)
894 for (j = 0; j <
s->max_slice_count; j++) {
918 for (j=0; j<
f->plane_count; j++) {
920 av_assert0(
f->plane[j].quant_table_index ==
f->context_model);
928 if (
f->version > 3) {
930 if (
fs->slice_coding_mode == 1)
933 if (
fs->slice_coding_mode != 1) {
942 #define NB_Y_COEFF 15
943 static const int rct_y_coeff[15][2] = {
963 int x, y,
i, p, best;
965 int lbd =
fs->bits_per_raw_sample <= 8;
967 for (y = 0; y <
h; y++) {
968 int lastr=0, lastg=0, lastb=0;
969 for (p = 0; p < 3; p++)
972 for (x = 0; x <
w; x++) {
976 unsigned v = *((
const uint32_t*)(
src[0] + x*4 +
stride[0]*y));
979 r = (v >> 16) & 0xFF;
981 b = *((
const uint16_t*)(
src[0] + x*2 +
stride[0]*y));
982 g = *((
const uint16_t*)(
src[1] + x*2 +
stride[1]*y));
983 r = *((
const uint16_t*)(
src[2] + x*2 +
stride[2]*y));
990 int bg = ag -
sample[0][x];
991 int bb = ab -
sample[1][x];
992 int br = ar -
sample[2][x];
998 stat[
i] +=
FFABS(bg + ((br*rct_y_coeff[
i][0] + bb*rct_y_coeff[
i][1])>>2));
1014 if (stat[
i] < stat[best])
1018 fs->slice_rct_by_coef = rct_y_coeff[best][1];
1019 fs->slice_rct_ry_coef = rct_y_coeff[best][0];
1028 int x =
fs->slice_x;
1029 int y =
fs->slice_y;
1030 const AVFrame *
const p =
f->cur_enc_frame;
1039 fs->slice_coding_mode = 0;
1040 if (
f->version > 3) {
1043 fs->slice_rct_by_coef = 1;
1044 fs->slice_rct_ry_coef = 1;
1050 if (
f->version > 2) {
1056 fs->c.bytestream_start +
fs->ac_byte_count,
1057 fs->c.bytestream_end -
fs->c.bytestream_start -
fs->ac_byte_count);
1063 const int cx = x >>
f->chroma_h_shift;
1064 const int cy = y >>
f->chroma_v_shift;
1068 if (
f->chroma_planes) {
1072 if (
fs->transparency)
1077 }
else if (
f->use32bit) {
1085 if (
fs->version < 4 || !
fs->ac) {
1090 fs->slice_coding_mode = 1;
1099 const AVFrame *pict,
int *got_packet)
1103 uint8_t keystate = 128;
1115 memset(
f->rc_stat, 0,
sizeof(
f->rc_stat));
1116 for (
i = 0;
i <
f->quant_table_count;
i++)
1117 memset(
f->rc_stat2[
i], 0,
f->context_count[
i] *
sizeof(*
f->rc_stat2[
i]));
1120 for (j = 0; j <
f->slice_count; j++) {
1122 for (
i = 0;
i < 256;
i++) {
1123 f->rc_stat[
i][0] +=
fs->rc_stat[
i][0];
1124 f->rc_stat[
i][1] +=
fs->rc_stat[
i][1];
1126 for (
i = 0;
i <
f->quant_table_count;
i++) {
1127 for (k = 0; k <
f->context_count[
i]; k++)
1128 for (m = 0; m < 32; m++) {
1129 f->rc_stat2[
i][k][m][0] +=
fs->rc_stat2[
i][k][m][0];
1130 f->rc_stat2[
i][k][m][1] +=
fs->rc_stat2[
i][k][m][1];
1135 for (j = 0; j < 256; j++) {
1136 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1137 f->rc_stat[j][0],
f->rc_stat[j][1]);
1142 for (
i = 0;
i <
f->quant_table_count;
i++) {
1143 for (j = 0; j <
f->context_count[
i]; j++)
1144 for (m = 0; m < 32; m++) {
1145 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1146 f->rc_stat2[
i][j][m][0],
f->rc_stat2[
i][j][m][1]);
1150 snprintf(p, end - p,
"%d\n",
f->gob_count);
1169 f->cur_enc_frame = pict;
1183 for (
i = 1;
i < 256;
i++) {
1184 c->one_state[
i] =
f->state_transition[
i];
1185 c->zero_state[256 -
i] = 256 -
c->one_state[
i];
1189 for (
i = 0;
i <
f->slice_count;
i++) {
1198 fs->c.bytestream_end =
fs->c.bytestream_start +
len;
1202 f->slice_count,
sizeof(
void *));
1205 for (
i = 0;
i <
f->slice_count;
i++) {
1215 if (
i > 0 ||
f->version > 2) {
1217 memmove(buf_p,
fs->c.bytestream_start, bytes);
1219 AV_WB24(buf_p + bytes, bytes);
1235 f->picture_number++;
1243 #define OFFSET(x) offsetof(FFV1Context, x)
1244 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
1248 { .i64 = 0 }, -2, 2,
VE, .unit =
"coder" },
1255 {
"ac",
"Range with custom table (the ac option exists for compatibility and is deprecated)", 0,
AV_OPT_TYPE_CONST,
1256 { .i64 = 1 }, INT_MIN, INT_MAX,
VE, .unit =
"coder" },
1258 { .i64 = 0 }, 0, 1,
VE },