43 { 1, 0x00000000 }, { 2, 0x00000002 }, { 3, 0x00000007 }, { 5, 0x00000019 }, { 6, 0x00000030 },
44 { 6, 0x00000036 }, { 7, 0x00000063 }, { 7, 0x0000006B }, { 7, 0x0000006F }, { 8, 0x000000D4 },
45 { 8, 0x000000DC }, { 9, 0x00000189 }, { 9, 0x000001A0 }, { 9, 0x000001AB }, {10, 0x00000310 },
46 {10, 0x00000316 }, {10, 0x00000354 }, {10, 0x00000375 }, {10, 0x00000377 }, {11, 0x00000623 },
47 {11, 0x00000684 }, {11, 0x000006AB }, {11, 0x000006EC }, {12, 0x00000C44 }, {12, 0x00000C5C },
48 {12, 0x00000C5E }, {12, 0x00000D55 }, {12, 0x00000DD1 }, {12, 0x00000DD3 }, {12, 0x00000DDB },
49 {13, 0x0000188B }, {13, 0x000018BB }, {13, 0x00001AA8 }, {13, 0x00001BA0 }, {13, 0x00001BA4 },
50 {13, 0x00001BB5 }, {14, 0x00003115 }, {14, 0x00003175 }, {14, 0x0000317D }, {14, 0x00003553 },
51 {14, 0x00003768 }, {15, 0x00006228 }, {15, 0x000062E8 }, {15, 0x000062F8 }, {15, 0x00006AA4 },
52 {15, 0x00006E85 }, {15, 0x00006E87 }, {15, 0x00006ED3 }, {16, 0x0000C453 }, {16, 0x0000C5D3 },
53 {16, 0x0000C5F3 }, {16, 0x0000DD08 }, {16, 0x0000DD0C }, {16, 0x0000DDA4 }, {17, 0x000188A4 },
54 {17, 0x00018BA5 }, {17, 0x00018BE5 }, {17, 0x0001AA95 }, {17, 0x0001AA97 }, {17, 0x0001BA13 },
55 {17, 0x0001BB4A }, {17, 0x0001BB4B }, {18, 0x00031748 }, {18, 0x000317C8 }, {18, 0x00035528 },
56 {18, 0x0003552C }, {18, 0x00037424 }, {18, 0x00037434 }, {18, 0x00037436 }, {19, 0x00062294 },
57 {19, 0x00062E92 }, {19, 0x00062F92 }, {19, 0x0006AA52 }, {19, 0x0006AA5A }, {19, 0x0006E84A },
58 {19, 0x0006E86A }, {19, 0x0006E86E }, {20, 0x000C452A }, {20, 0x000C5D27 }, {20, 0x000C5F26 },
59 {20, 0x000D54A6 }, {20, 0x000D54B6 }, {20, 0x000DD096 }, {20, 0x000DD0D6 }, {20, 0x000DD0DE },
60 {21, 0x00188A56 }, {21, 0x0018BA4D }, {21, 0x0018BE4E }, {21, 0x0018BE4F }, {21, 0x001AA96E },
61 {21, 0x001BA12E }, {21, 0x001BA12F }, {21, 0x001BA1AF }, {21, 0x001BA1BF }, {22, 0x00317498 },
62 {22, 0x0035529C }, {22, 0x0035529D }, {22, 0x003552DE }, {22, 0x003552DF }, {22, 0x0037435D },
63 {22, 0x0037437D }, {23, 0x0062295D }, {23, 0x0062E933 }, {23, 0x006AA53D }, {23, 0x006AA53E },
64 {23, 0x006AA53F }, {23, 0x006E86B9 }, {23, 0x006E86F8 }, {24, 0x00C452B8 }, {24, 0x00C5D265 },
65 {24, 0x00D54A78 }, {24, 0x00D54A79 }, {24, 0x00DD0D70 }, {24, 0x00DD0D71 }, {24, 0x00DD0DF2 },
66 {24, 0x00DD0DF3 }, {26, 0x03114BA2 }, {25, 0x0188A5B1 }, {25, 0x0188A58B }, {25, 0x0188A595 },
67 {25, 0x0188A5D6 }, {25, 0x0188A5D7 }, {25, 0x0188A5A8 }, {25, 0x0188A5AE }, {25, 0x0188A5AF },
68 {25, 0x0188A5C4 }, {25, 0x0188A5C5 }, {25, 0x0188A587 }, {25, 0x0188A584 }, {25, 0x0188A585 },
69 {25, 0x0188A5C6 }, {25, 0x0188A5C7 }, {25, 0x0188A5CC }, {25, 0x0188A5CD }, {25, 0x0188A581 },
70 {25, 0x0188A582 }, {25, 0x0188A583 }, {25, 0x0188A5CE }, {25, 0x0188A5CF }, {25, 0x0188A5C2 },
71 {25, 0x0188A5C3 }, {25, 0x0188A5C1 }, {25, 0x0188A5B4 }, {25, 0x0188A5B5 }, {25, 0x0188A5E6 },
72 {25, 0x0188A5E7 }, {25, 0x0188A5E4 }, {25, 0x0188A5E5 }, {25, 0x0188A5AB }, {25, 0x0188A5E0 },
73 {25, 0x0188A5E1 }, {25, 0x0188A5E2 }, {25, 0x0188A5E3 }, {25, 0x0188A5B6 }, {25, 0x0188A5B7 },
74 {25, 0x0188A5FD }, {25, 0x0188A57E }, {25, 0x0188A57F }, {25, 0x0188A5EC }, {25, 0x0188A5ED },
75 {25, 0x0188A5FE }, {25, 0x0188A5FF }, {25, 0x0188A57D }, {25, 0x0188A59C }, {25, 0x0188A59D },
76 {25, 0x0188A5E8 }, {25, 0x0188A5E9 }, {25, 0x0188A5EA }, {25, 0x0188A5EB }, {25, 0x0188A5EF },
77 {25, 0x0188A57A }, {25, 0x0188A57B }, {25, 0x0188A578 }, {25, 0x0188A579 }, {25, 0x0188A5BA },
78 {25, 0x0188A5BB }, {25, 0x0188A5B8 }, {25, 0x0188A5B9 }, {25, 0x0188A588 }, {25, 0x0188A589 },
79 {25, 0x018BA4C8 }, {25, 0x018BA4C9 }, {25, 0x0188A5FA }, {25, 0x0188A5FB }, {25, 0x0188A5BC },
80 {25, 0x0188A5BD }, {25, 0x0188A598 }, {25, 0x0188A599 }, {25, 0x0188A5F4 }, {25, 0x0188A5F5 },
81 {25, 0x0188A59B }, {25, 0x0188A5DE }, {25, 0x0188A5DF }, {25, 0x0188A596 }, {25, 0x0188A597 },
82 {25, 0x0188A5F8 }, {25, 0x0188A5F9 }, {25, 0x0188A5F1 }, {25, 0x0188A58E }, {25, 0x0188A58F },
83 {25, 0x0188A5DC }, {25, 0x0188A5DD }, {25, 0x0188A5F2 }, {25, 0x0188A5F3 }, {25, 0x0188A58C },
84 {25, 0x0188A58D }, {25, 0x0188A5A4 }, {25, 0x0188A5F0 }, {25, 0x0188A5A5 }, {25, 0x0188A5A6 },
85 {25, 0x0188A5A7 }, {25, 0x0188A59A }, {25, 0x0188A5A2 }, {25, 0x0188A5A3 }, {25, 0x0188A58A },
86 {25, 0x0188A5B0 }, {25, 0x0188A5A0 }, {25, 0x0188A5A1 }, {25, 0x0188A5DA }, {25, 0x0188A5DB },
87 {25, 0x0188A59E }, {25, 0x0188A59F }, {25, 0x0188A5D8 }, {25, 0x0188A5EE }, {25, 0x0188A5D9 },
88 {25, 0x0188A5F6 }, {25, 0x0188A5F7 }, {25, 0x0188A57C }, {25, 0x0188A5C8 }, {25, 0x0188A5C9 },
89 {25, 0x0188A594 }, {25, 0x0188A5FC }, {25, 0x0188A5CA }, {25, 0x0188A5CB }, {25, 0x0188A5B2 },
90 {25, 0x0188A5AA }, {25, 0x0188A5B3 }, {25, 0x0188A572 }, {25, 0x0188A573 }, {25, 0x0188A5C0 },
91 {25, 0x0188A5BE }, {25, 0x0188A5BF }, {25, 0x0188A592 }, {25, 0x0188A580 }, {25, 0x0188A593 },
92 {25, 0x0188A590 }, {25, 0x0188A591 }, {25, 0x0188A586 }, {25, 0x0188A5A9 }, {25, 0x0188A5D2 },
93 {25, 0x0188A5D3 }, {25, 0x0188A5D4 }, {25, 0x0188A5D5 }, {25, 0x0188A5AC }, {25, 0x0188A5AD },
99 {1, 0x0000, 1}, {2, 0x0000, 2}, {3, 0x0000, 3}, {4, 0x0000, 4},
100 {5, 0x0000, 5}, {6, 0x0000, 6}, {7, 0x0000, 7}, {8, 0x0000, 8},
101 {9, 0x0000, 9}, {10, 0x0000, 10}, {11, 0x0000, 11},
102 {7, 0x0069, 12}, {8, 0x00D1, 20}, {9, 0x018A, 32},
103 {10, 0x0343, 60}, {11, 0x0685, 100}, {13, 0x18BF, 180}, {13, 0x1BA5, 320},
112 { 16, 16, 8, 4, 4, 2, 6, 6, 9, },
113 { 16, 16, 8, 4, 4, 2, 6, 6, 9, },
114 { 16, 16, 8, 4, 4, 2, 7, 7, 10, },
115 { 16, 16, 8, 4, 4, 2, 8, 8, 12, },
116 { 16, 16, 8, 4, 4, 2, 16, 16, 26, },
117 { 24, 24, 12, 6, 6, 3, 24, 24, 36, },
118 { 24, 24, 12, 6, 6, 3, 24, 24, 36, },
119 { 32, 32, 24, 8, 8, 6, 32, 32, 48, },
120 { 32, 32, 24, 8, 8, 6, 32, 32, 48, },
121 { 48, 48, 32, 12, 12, 8, 64, 64, 96, },
122 { 48, 48, 32, 12, 12, 8, 64, 64, 96, },
123 { 64, 64, 48, 16, 16, 12, 96, 96, 144, },
124 { 64, 64, 48, 16, 16, 12, 128, 128, 192, },
127 { 16, 16, 8, 4, 4, 2, 6, 6, 9, },
128 { 16, 16, 8, 4, 4, 2, 6, 6, 12, },
129 { 16, 16, 8, 4, 4, 2, 7, 7, 14, },
130 { 16, 16, 8, 4, 4, 2, 8, 8, 16, },
131 { 16, 16, 8, 4, 4, 2, 16, 16, 26, },
132 { 24, 24, 12, 6, 6, 3, 24, 24, 36, },
133 { 24, 24, 12, 6, 6, 3, 24, 24, 48, },
134 { 32, 32, 24, 8, 8, 6, 32, 32, 48, },
135 { 48, 48, 32, 12, 12, 8, 32, 32, 64, },
136 { 48, 48, 32, 12, 12, 8, 64, 64, 96, },
137 { 48, 48, 32, 12, 12, 8, 64, 64, 128, },
138 { 64, 64, 48, 16, 16, 12, 96, 96, 160, },
139 { 64, 64, 48, 16, 16, 12, 128, 128, 192, },
142 { 16, 16, 8, 4, 4, 2, 6, 6, 9, },
143 { 16, 16, 8, 4, 4, 2, 6, 6, 12, },
144 { 16, 16, 8, 4, 4, 2, 7, 7, 14, },
145 { 16, 16, 8, 4, 4, 2, 8, 8, 16, },
146 { 16, 16, 8, 4, 4, 2, 16, 16, 26, },
147 { 24, 24, 12, 6, 6, 3, 24, 24, 36, },
148 { 24, 24, 12, 6, 6, 3, 24, 24, 48, },
149 { 32, 32, 24, 8, 8, 6, 32, 32, 48, },
150 { 48, 48, 32, 12, 12, 8, 32, 32, 64, },
151 { 48, 48, 32, 12, 12, 8, 64, 64, 96, },
152 { 48, 48, 32, 12, 12, 8, 64, 64, 128, },
153 { 64, 64, 48, 16, 16, 12, 96, 96, 160, },
154 { 64, 64, 48, 16, 16, 12, 128, 128, 192, },
157 { 16, 16, 8, 16, 16, 8, 24, 24, 36, },
158 { 16, 16, 8, 16, 16, 8, 24, 24, 36, },
159 { 16, 16, 8, 16, 16, 8, 32, 32, 48, },
160 { 16, 16, 8, 16, 16, 8, 32, 32, 48, },
161 { 16, 16, 8, 20, 20, 10, 80, 80, 128, },
162 { 24, 24, 12, 24, 24, 12, 96, 96, 144, },
163 { 24, 24, 12, 24, 24, 12, 96, 96, 144, },
164 { 32, 32, 24, 32, 32, 24, 128, 128, 192, },
165 { 32, 32, 24, 32, 32, 24, 128, 128, 192, },
166 { 48, 48, 32, 48, 48, 32, 256, 256, 384, },
167 { 48, 48, 32, 48, 48, 32, 256, 256, 384, },
168 { 56, 56, 40, 56, 56, 40, 512, 512, 768, },
169 { 64, 64, 48, 64, 64, 48, 512, 512, 768, },
172 { 16, 16, 8, 16, 16, 8, 24, 24, 36, },
173 { 16, 16, 8, 16, 16, 8, 48, 48, 72, },
174 { 16, 16, 8, 16, 16, 8, 48, 48, 72, },
175 { 16, 16, 8, 16, 16, 8, 64, 64, 96, },
176 { 16, 16, 8, 20, 20, 10, 80, 80, 128, },
177 { 24, 24, 12, 24, 24, 12, 96, 96, 144, },
178 { 24, 24, 12, 24, 24, 12, 192, 192, 288, },
179 { 32, 32, 24, 32, 32, 24, 128, 128, 192, },
180 { 32, 32, 24, 32, 32, 24, 256, 256, 384, },
181 { 48, 48, 32, 48, 48, 32, 256, 256, 384, },
182 { 48, 48, 32, 48, 48, 32, 512, 512, 768, },
183 { 56, 56, 40, 56, 56, 40, 512, 512, 768, },
184 { 64, 64, 48, 64, 64, 48,1024,1024,1536, },
187 { 16, 16, 8, 16, 16, 8, 24, 24, 36, },
188 { 16, 16, 8, 16, 16, 8, 48, 48, 72, },
189 { 16, 16, 8, 16, 16, 8, 48, 48, 72, },
190 { 16, 16, 8, 16, 16, 8, 64, 64, 96, },
191 { 16, 16, 10, 20, 20, 10, 80, 80, 128, },
192 { 24, 24, 12, 24, 24, 12, 96, 96, 144, },
193 { 24, 24, 12, 24, 24, 12, 192, 192, 288, },
194 { 32, 32, 24, 32, 32, 24, 128, 128, 192, },
195 { 32, 32, 24, 32, 32, 24, 256, 256, 384, },
196 { 48, 48, 32, 48, 48, 32, 256, 256, 384, },
197 { 48, 48, 32, 48, 48, 32, 512, 512, 768, },
198 { 56, 56, 40, 56, 56, 40, 512, 512, 768, },
199 { 64, 64, 48, 64, 64, 48,1024,1024,1536, },
250 const int sign_mask = 256;
251 const int twos_complement = -sign_mask;
252 const int mag_mask = sign_mask - 1;
261 if (avctx->
width & 15) {
269 int w8, h8, w4, h4, w2, h2;
275 w8 =
FFALIGN(width / 8, 8) + 64;
320 for (
int i = 0;
i < 512;
i++) {
321 int value = (
i & sign_mask) ? twos_complement + (
i & mag_mask):
i;
333 s->
cb[512].
bits = 0x3114ba3;
338 for (
int i = 1, j = 0;
i < 320 && j < 17; j++) {
351 s->
rb[320].
run = 320;
353 for (
int i = 0;
i < 256;
i++) {
354 int idx =
i + ((768LL *
i *
i *
i) / (256 * 256 * 256));
358 for (
int i = 0;
i < 1024;
i++) {
378 int height,
unsigned quantization)
380 const int16_t
factor = (uint32_t)(1
U << 15) / quantization;
383 for (
int j = 0; j <
width; j++)
404 for (
int j = 0; j <
width; j++) {
407 if (alpha > 0 && alpha < 4080) {
431 const uint16_t *lut = s->
lut;
435 for (
int plane = 0; plane < s->
planes; plane++) {
439 int act_plane = plane == 1 ? 2 : plane == 2 ? 1 : plane;
440 int16_t *
input = (int16_t *)frame->
data[act_plane];
441 int16_t *low = s->
plane[plane].
l_h[6];
442 int16_t *high = s->
plane[plane].
l_h[7];
443 ptrdiff_t in_stride = frame->
linesize[act_plane] / 2;
444 int low_stride, high_stride;
448 in_stride, s->
alpha);
450 in_stride = avctx->
width;
454 in_stride, a_width, a_width,
455 width * 2, height * 2);
464 a_width, low_stride, high_stride,
472 a_width, low_stride, high_stride,
484 for (
int i = 0;
i < height * 2;
i++) {
485 for (
int j = 0; j < width * 2; j++)
487 input += a_width * 2;
492 a_width * 2, low_stride, high_stride,
493 width * 2, height * 2);
500 a_width, low_stride, high_stride,
508 a_width, low_stride, high_stride,
521 for (
int i = 0;
i < height * 2;
i++) {
522 for (
int j = 0; j < width * 2; j++)
524 input += a_width * 2;
530 a_width * 2, low_stride, high_stride,
531 width * 2, height * 2);
538 a_width, low_stride, high_stride,
546 a_width, low_stride, high_stride,
557 bytestream2_put_be16(pby, 9);
560 bytestream2_put_be16(pby, s->
planes);
563 bytestream2_put_be32(pby, 0);
566 bytestream2_put_be16(pby, 0);
569 bytestream2_put_be16(pby, 1);
572 bytestream2_put_be16(pby, s->
planes);
578 bytestream2_put_be16(pby, 3);
584 bytestream2_put_be16(pby, 2);
587 bytestream2_put_be16(pby, 3);
590 bytestream2_put_be16(pby, avctx->
width);
593 bytestream2_put_be16(pby, avctx->
height);
596 bytestream2_put_be16(pby, frame->
pts & 0xFFFF);
605 bytestream2_put_be16(pby, 1);
607 for (
int p = 0; p < s->
planes; p++) {
615 bytestream2_put_be16(pby, 3);
618 bytestream2_put_be16(pby, p);
622 bytestream2_put_be16(pby, 0x1a4a);
627 bytestream2_put_be16(pby, 0);
630 bytestream2_put_be16(pby, 3);
633 bytestream2_put_be16(pby, width);
636 bytestream2_put_be16(pby, height);
639 bytestream2_put_be16(pby, 0);
642 bytestream2_put_be16(pby, 1);
645 bytestream2_put_be16(pby, 16);
648 bytestream2_put_be16(pby, 0x0f0f);
651 for (
int j = 0; j <
width; j++)
652 bytestream2_put_be16(pby, data[j]);
657 bytestream2_put_be16(pby, 0x1b4b);
659 for (
int l = 0; l < 3; l++) {
660 for (
int i = 0;
i < 3;
i++) {
665 for (
int l = 0; l < 3; l++) {
672 bytestream2_put_be16(pby, 0x0d0d);
675 bytestream2_put_be16(pby, 3 + 2 * (l == 2));
678 bytestream2_put_be16(pby, 3 - l);
681 bytestream2_put_be16(pby, 3 - l);
683 bytestream2_put_be16(pby,
NumBands);
684 bytestream2_put_be16(pby, 4);
687 bytestream2_put_be16(pby, width);
690 bytestream2_put_be16(pby, height);
693 bytestream2_put_be16(pby, 0);
696 bytestream2_put_be16(pby, 0);
699 bytestream2_put_be16(pby, 1);
702 bytestream2_put_be16(pby, 1);
704 for (
int i = 0;
i < 3;
i++) {
706 int count = 0, padd = 0;
709 bytestream2_put_be16(pby, 0x0e0e);
712 bytestream2_put_be16(pby,
i + 1);
715 bytestream2_put_be16(pby, 1);
718 bytestream2_put_be16(pby, width);
721 bytestream2_put_be16(pby, height);
724 bytestream2_put_be16(pby, 1 + l * 3 +
i);
727 bytestream2_put_be16(pby, 3);
733 bytestream2_put_be16(pby, 1);
736 bytestream2_put_be16(pby, 0);
743 for (
int m = 0; m <
height; m++) {
744 for (
int j = 0; j <
stride; j++) {
752 }
else if (count > 0) {
772 bytestream2_put_byte(pby, 0);
775 bytestream2_put_be16(pby, 0);
779 bytestream2_put_be16(pby, 0x0c0c);
786 bytestream2_put_be16(pby, 0);
812 for (
int j = 0; j < 8; j++)
821 #define OFFSET(x) offsetof(CFHDEncContext, x) 822 #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM 854 .priv_class = &cfhd_class,
#define FF_CODEC_CAP_INIT_CLEANUP
The codec allows calling the close function for deallocation even if the init function returned a fai...
static const AVClass cfhd_class
#define AVERROR_INVALIDDATA
Invalid data found when processing input.
static const unsigned codebook[256][2]
This structure describes decoded (raw) audio or video data.
ptrdiff_t const GLvoid * data
static void put_bits(Jpeg2000EncoderContext *s, int val, int n)
put n times val bit
int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
#define LIBAVUTIL_VERSION_INT
void av_shrink_packet(AVPacket *pkt, int size)
Reduce packet size, correctly zeroing padding.
static av_cold int init(AVCodecContext *avctx)
static const uint16_t quantization_per_subband[2][3][13][9]
static av_always_inline void bytestream2_init_writer(PutByteContext *p, uint8_t *buf, int buf_size)
const char * av_default_item_name(void *ptr)
Return the context name.
enum AVPixelFormat pix_fmt
Pixel format, see AV_PIX_FMT_xxx.
#define FF_ARRAY_ELEMS(a)
void * av_calloc(size_t nmemb, size_t size)
Non-inlined equivalent of av_mallocz_array().
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
int ff_alloc_packet2(AVCodecContext *avctx, AVPacket *avpkt, int64_t size, int64_t min_size)
Check AVPacket size and/or allocate data.
static double cb(void *priv, double x, double y)
SubBand band[DWT_LEVELS][4]
Multithreading support functions.
GLsizei GLboolean const GLfloat * value
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
static av_cold int cfhd_encode_init(AVCodecContext *avctx)
#define AV_PKT_FLAG_KEY
The packet contains a keyframe.
static av_cold int cfhd_encode_close(AVCodecContext *avctx)
unsigned quantization[SUBBAND_COUNT]
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
static const AVOption options[]
static av_always_inline int bytestream2_get_bytes_left_p(PutByteContext *p)
int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift)
Utility function to access log2_chroma_w log2_chroma_h from the pixel format AVPixFmtDescriptor.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
#define AV_PIX_FMT_GBRAP12
av_cold void ff_cfhdencdsp_init(CFHDEncDSPContext *c)
simple assert() macros that are a bit more flexible than ISO C assert().
const char * name
Name of the codec implementation.
static av_always_inline int bytestream2_tell_p(PutByteContext *p)
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
static int cfhd_encode_frame(AVCodecContext *avctx, AVPacket *pkt, const AVFrame *frame, int *got_packet)
int flags
A combination of AV_PKT_FLAG values.
static int put_bits_count(PutBitContext *s)
static av_always_inline void bytestream2_skip_p(PutByteContext *p, unsigned int size)
int width
picture width / height.
trying all byte sequences megabyte in length and selecting the best looking sequence will yield cases to try But a word about quality
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several the filter must be ready for frames arriving randomly on any input any filter with several inputs will most likely require some kind of queuing mechanism It is perfectly acceptable to have a limited queue and to drop frames when the inputs are too unbalanced request_frame For filters that do not use the this method is called when a frame is wanted on an output For a it should directly call filter_frame on the corresponding output For a if there are queued frames already one of these frames should be pushed If the filter should request a frame on one of its repeatedly until at least one frame has been pushed Return or at least make progress towards producing a frame
#define FFABS(a)
Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they are not representable ...
void(* horiz_filter)(int16_t *input, int16_t *low, int16_t *high, ptrdiff_t in_stride, ptrdiff_t low_stride, ptrdiff_t high_stride, int width, int height)
static av_always_inline int bytestream2_seek_p(PutByteContext *p, int offset, int whence)
Libavcodec external API header.
int linesize[AV_NUM_DATA_POINTERS]
For video, size in bytes of each picture line.
static const int16_t alpha[]
main external API structure.
Describe the class of an AVClass context structure.
static const int factor[16]
and forward the test the status of outputs and forward it to the corresponding return FFERROR_NOT_READY If the filters stores internally one or a few frame for some input
static enum AVPixelFormat pix_fmts[]
#define AV_PIX_FMT_GBRP12
#define AV_PIX_FMT_YUV422P10
static const uint16_t runbook[18][3]
uint8_t * data[AV_NUM_DATA_POINTERS]
pointer to the picture/channel planes.
GLint GLenum GLboolean GLsizei stride
common internal api header.
static void flush_put_bits(PutBitContext *s)
Pad the end of the output stream with zeros.
static void init_put_bits(PutBitContext *s, uint8_t *buffer, int buffer_size)
Initialize the PutBitContext s.
static void quantize_band(int16_t *input, int width, int a_width, int height, unsigned quantization)
void(* vert_filter)(int16_t *input, int16_t *low, int16_t *high, ptrdiff_t in_stride, ptrdiff_t low_stride, ptrdiff_t high_stride, int width, int height)
static int put_runcode(PutBitContext *pb, int count, const Runbook *const rb)
#define av_malloc_array(a, b)
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later.That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another.Frame references ownership and permissions
AVPixelFormat
Pixel format.
This structure stores compressed data.
static void process_alpha(const int16_t *src, int width, int height, ptrdiff_t stride, int16_t *dst)
int16_t * subband[SUBBAND_COUNT]
void * av_mallocz_array(size_t nmemb, size_t size)