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) {
1179 size_t maxsize = avctx->
width*avctx->
height * (1 +
f->transparency);
1180 if (
f->chroma_planes)
1182 maxsize +=
f->slice_count * 800;
1183 if (
f->version > 3) {
1184 maxsize *=
f->bits_per_raw_sample + 1;
1186 maxsize +=
f->slice_count * 2 * (avctx->
width + avctx->
height);
1187 maxsize *= 8*(2*
f->bits_per_raw_sample + 5);
1196 const AVFrame *pict,
int *got_packet)
1200 uint8_t keystate = 128;
1211 memset(
f->rc_stat, 0,
sizeof(
f->rc_stat));
1212 for (
i = 0;
i <
f->quant_table_count;
i++)
1213 memset(
f->rc_stat2[
i], 0,
f->context_count[
i] *
sizeof(*
f->rc_stat2[
i]));
1216 for (j = 0; j <
f->slice_count; j++) {
1218 for (
i = 0;
i < 256;
i++) {
1222 for (
i = 0;
i <
f->quant_table_count;
i++) {
1223 for (k = 0; k <
f->context_count[
i]; k++)
1224 for (m = 0; m < 32; m++) {
1225 f->rc_stat2[
i][k][m][0] += sc->
rc_stat2[
i][k][m][0];
1226 f->rc_stat2[
i][k][m][1] += sc->
rc_stat2[
i][k][m][1];
1231 for (j = 0; j < 256; j++) {
1232 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1233 f->rc_stat[j][0],
f->rc_stat[j][1]);
1238 for (
i = 0;
i <
f->quant_table_count;
i++) {
1239 for (j = 0; j <
f->context_count[
i]; j++)
1240 for (m = 0; m < 32; m++) {
1241 snprintf(p, end - p,
"%" PRIu64
" %" PRIu64
" ",
1242 f->rc_stat2[
i][j][m][0],
f->rc_stat2[
i][j][m][1]);
1246 snprintf(p, end - p,
"%d\n",
f->gob_count);
1255 av_log(avctx,
AV_LOG_WARNING,
"Cannot allocate worst case packet size, the encoding could fail\n");
1265 f->cur_enc_frame = pict;
1279 for (
i = 1;
i < 256;
i++) {
1280 c->one_state[
i] =
f->state_transition[
i];
1281 c->zero_state[256 -
i] = 256 -
c->one_state[
i];
1285 for (
i = 0;
i <
f->slice_count;
i++) {
1298 f->slice_count,
sizeof(*
f->slices));
1301 for (
i = 0;
i <
f->slice_count;
i++) {
1304 if (
i > 0 ||
f->version > 2) {
1308 AV_WB24(buf_p + bytes, bytes);
1324 f->picture_number++;
1332 #define OFFSET(x) offsetof(FFV1Context, x)
1333 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM
1337 { .i64 = 0 }, -2, 2,
VE, .unit =
"coder" },
1344 {
"ac",
"Range with custom table (the ac option exists for compatibility and is deprecated)", 0,
AV_OPT_TYPE_CONST,
1345 { .i64 = 1 }, INT_MIN, INT_MAX,
VE, .unit =
"coder" },
1347 { .i64 = 0 }, 0, 1,
VE },
1349 { .i64 = -1 }, -1, 2,
VE },