Go to the documentation of this file.
31 #define input_pixel(pos) (is_be ? AV_RB16(pos) : AV_RL16(pos))
38 #define IS_BE(ENDIAN_IDENTIFIER) IS_BE_ ## ENDIAN_IDENTIFIER
40 #define r ((origin == AV_PIX_FMT_BGR48BE || origin == AV_PIX_FMT_BGR48LE || origin == AV_PIX_FMT_BGRA64BE || origin == AV_PIX_FMT_BGRA64LE) ? b_r : r_b)
41 #define b ((origin == AV_PIX_FMT_BGR48BE || origin == AV_PIX_FMT_BGR48LE || origin == AV_PIX_FMT_BGRA64BE || origin == AV_PIX_FMT_BGRA64LE) ? r_b : b_r)
60 const uint16_t *
src1,
const uint16_t *
src2,
79 const uint16_t *
src1,
const uint16_t *
src2,
96 #define RGB64FUNCS_EXT(pattern, BE_LE, origin, is_be) \
97 static void pattern ## 64 ## BE_LE ## ToY_c(uint8_t *_dst, const uint8_t *_src, const uint8_t *unused0, const uint8_t *unused1,\
98 int width, uint32_t *rgb2yuv, void *opq) \
100 const uint16_t *src = (const uint16_t *) _src; \
101 uint16_t *dst = (uint16_t *) _dst; \
102 rgb64ToY_c_template(dst, src, width, origin, rgb2yuv, is_be); \
105 static void pattern ## 64 ## BE_LE ## ToUV_c(uint8_t *_dstU, uint8_t *_dstV, \
106 const uint8_t *unused0, const uint8_t *_src1, const uint8_t *_src2, \
107 int width, uint32_t *rgb2yuv, void *opq) \
109 const uint16_t *src1 = (const uint16_t *) _src1, \
110 *src2 = (const uint16_t *) _src2; \
111 uint16_t *dstU = (uint16_t *) _dstU, *dstV = (uint16_t *) _dstV; \
112 rgb64ToUV_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv, is_be); \
115 static void pattern ## 64 ## BE_LE ## ToUV_half_c(uint8_t *_dstU, uint8_t *_dstV, \
116 const uint8_t *unused0, const uint8_t *_src1, const uint8_t *_src2, \
117 int width, uint32_t *rgb2yuv, void *opq) \
119 const uint16_t *src1 = (const uint16_t *) _src1, \
120 *src2 = (const uint16_t *) _src2; \
121 uint16_t *dstU = (uint16_t *) _dstU, *dstV = (uint16_t *) _dstV; \
122 rgb64ToUV_half_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv, is_be); \
124 #define RGB64FUNCS(pattern, endianness, base_fmt) \
125 RGB64FUNCS_EXT(pattern, endianness, base_fmt ## endianness, IS_BE(endianness))
150 const uint16_t *
src1,
151 const uint16_t *
src2,
172 const uint16_t *
src1,
173 const uint16_t *
src2,
199 #define RGB48FUNCS_EXT(pattern, BE_LE, origin, is_be) \
200 static void pattern ## 48 ## BE_LE ## ToY_c(uint8_t *_dst, \
201 const uint8_t *_src, \
202 const uint8_t *unused0, const uint8_t *unused1,\
207 const uint16_t *src = (const uint16_t *)_src; \
208 uint16_t *dst = (uint16_t *)_dst; \
209 rgb48ToY_c_template(dst, src, width, origin, rgb2yuv, is_be); \
212 static void pattern ## 48 ## BE_LE ## ToUV_c(uint8_t *_dstU, \
214 const uint8_t *unused0, \
215 const uint8_t *_src1, \
216 const uint8_t *_src2, \
221 const uint16_t *src1 = (const uint16_t *)_src1, \
222 *src2 = (const uint16_t *)_src2; \
223 uint16_t *dstU = (uint16_t *)_dstU, \
224 *dstV = (uint16_t *)_dstV; \
225 rgb48ToUV_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv, is_be); \
228 static void pattern ## 48 ## BE_LE ## ToUV_half_c(uint8_t *_dstU, \
230 const uint8_t *unused0, \
231 const uint8_t *_src1, \
232 const uint8_t *_src2, \
237 const uint16_t *src1 = (const uint16_t *)_src1, \
238 *src2 = (const uint16_t *)_src2; \
239 uint16_t *dstU = (uint16_t *)_dstU, \
240 *dstV = (uint16_t *)_dstV; \
241 rgb48ToUV_half_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv, is_be); \
243 #define RGB48FUNCS(pattern, endianness, base_fmt) \
244 RGB48FUNCS_EXT(pattern, endianness, base_fmt ## endianness, IS_BE(endianness))
251 #define input_pixel(i) ((origin == AV_PIX_FMT_RGBA || \
252 origin == AV_PIX_FMT_BGRA || \
253 origin == AV_PIX_FMT_ARGB || \
254 origin == AV_PIX_FMT_ABGR) \
255 ? AV_RN32A(&src[(i) * 4]) \
256 : ((origin == AV_PIX_FMT_X2RGB10LE || \
257 origin == AV_PIX_FMT_X2BGR10LE) \
258 ? AV_RL32(&src[(i) * 4]) \
259 : (is_be ? AV_RB16(&src[(i) * 2]) \
260 : AV_RL16(&src[(i) * 2]))))
268 int maskr,
int maskg,
270 int gsh,
int bsh,
int S,
274 const unsigned rnd = (32<<((
S)-1)) + (1<<(
S-7));
279 int b = (px & maskb) >> shb;
280 int g = (px & maskg) >> shg;
281 int r = (px & maskr) >> shr;
283 dst[
i] = (ry *
r + gy *
g + by *
b +
rnd) >> ((
S)-6);
294 int maskr,
int maskg,
296 int gsh,
int bsh,
int S,
301 const unsigned rnd = (256
u<<((
S)-1)) + (1<<(
S-7));
306 int b = (px & maskb) >> shb;
307 int g = (px & maskg) >> shg;
308 int r = (px & maskr) >> shr;
310 dstU[
i] = (ru *
r + gu *
g + bu *
b +
rnd) >> ((
S)-6);
311 dstV[
i] = (rv *
r + gv *
g + bv *
b +
rnd) >> ((
S)-6);
322 int maskr,
int maskg,
324 int gsh,
int bsh,
int S,
329 maskgx = ~(maskr | maskb);
330 const unsigned rnd = (256
U<<(
S)) + (1<<(
S-6));
339 int b,
r,
g = (px0 & maskgx) + (px1 & maskgx);
340 int rb = px0 + px1 -
g;
342 b = (rb & maskb) >> shb;
348 g = (
g & maskg) >> shg;
350 r = (rb & maskr) >> shr;
352 dstU[
i] = (ru *
r + gu *
g + bu *
b + (unsigned)
rnd) >> ((
S)-6+1);
353 dstV[
i] = (rv *
r + gv *
g + bv *
b + (unsigned)
rnd) >> ((
S)-6+1);
359 #define RGB16_32FUNCS_EXT(fmt, name, shr, shg, shb, shp, maskr, \
360 maskg, maskb, rsh, gsh, bsh, S, is_be) \
361 static void name ## ToY_c(uint8_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, \
362 int width, uint32_t *tab, void *opq) \
364 rgb16_32ToY_c_template((int16_t*)dst, src, width, fmt, shr, shg, shb, shp, \
365 maskr, maskg, maskb, rsh, gsh, bsh, S, tab, is_be); \
368 static void name ## ToUV_c(uint8_t *dstU, uint8_t *dstV, \
369 const uint8_t *unused0, const uint8_t *src, const uint8_t *dummy, \
370 int width, uint32_t *tab, void *opq) \
372 rgb16_32ToUV_c_template((int16_t*)dstU, (int16_t*)dstV, src, width, fmt, \
373 shr, shg, shb, shp, \
374 maskr, maskg, maskb, rsh, gsh, bsh, S, tab, is_be); \
377 static void name ## ToUV_half_c(uint8_t *dstU, uint8_t *dstV, \
378 const uint8_t *unused0, const uint8_t *src, \
379 const uint8_t *dummy, \
380 int width, uint32_t *tab, void *opq) \
382 rgb16_32ToUV_half_c_template((int16_t*)dstU, (int16_t*)dstV, src, width, fmt, \
383 shr, shg, shb, shp, \
384 maskr, maskg, maskb, \
385 rsh, gsh, bsh, S, tab, is_be); \
388 #define RGB16_32FUNCS(base_fmt, endianness, name, shr, shg, shb, shp, maskr, \
389 maskg, maskb, rsh, gsh, bsh, S) \
390 RGB16_32FUNCS_EXT(base_fmt ## endianness, name, shr, shg, shb, shp, maskr, \
391 maskg, maskb, rsh, gsh, bsh, S, IS_BE(endianness))
393 RGB16_32FUNCS(
AV_PIX_FMT_BGR32, , bgr32, 16, 0, 0, 0, 0xFF0000, 0xFF00, 0x00FF, 8, 0, 8,
RGB2YUV_SHIFT + 8)
394 RGB16_32FUNCS(
AV_PIX_FMT_BGR32_1, , bgr321, 16, 0, 0, 8, 0xFF0000, 0xFF00, 0x00FF, 8, 0, 8,
RGB2YUV_SHIFT + 8)
395 RGB16_32FUNCS(
AV_PIX_FMT_RGB32, , rgb32, 0, 0, 16, 0, 0x00FF, 0xFF00, 0xFF0000, 8, 0, 8,
RGB2YUV_SHIFT + 8)
396 RGB16_32FUNCS(
AV_PIX_FMT_RGB32_1, , rgb321, 0, 0, 16, 8, 0x00FF, 0xFF00, 0xFF0000, 8, 0, 8,
RGB2YUV_SHIFT + 8)
397 RGB16_32FUNCS(
AV_PIX_FMT_BGR565, LE, bgr16le, 0, 0, 0, 0, 0x001F, 0x07E0, 0xF800, 11, 5, 0,
RGB2YUV_SHIFT + 8)
398 RGB16_32FUNCS(
AV_PIX_FMT_BGR555, LE, bgr15le, 0, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, 10, 5, 0,
RGB2YUV_SHIFT + 7)
399 RGB16_32FUNCS(
AV_PIX_FMT_BGR444, LE, bgr12le, 0, 0, 0, 0, 0x000F, 0x00F0, 0x0F00, 8, 4, 0,
RGB2YUV_SHIFT + 4)
400 RGB16_32FUNCS(
AV_PIX_FMT_RGB565, LE, rgb16le, 0, 0, 0, 0, 0xF800, 0x07E0, 0x001F, 0, 5, 11,
RGB2YUV_SHIFT + 8)
401 RGB16_32FUNCS(
AV_PIX_FMT_RGB555, LE, rgb15le, 0, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, 0, 5, 10,
RGB2YUV_SHIFT + 7)
402 RGB16_32FUNCS(
AV_PIX_FMT_RGB444, LE, rgb12le, 0, 0, 0, 0, 0x0F00, 0x00F0, 0x000F, 0, 4, 8,
RGB2YUV_SHIFT + 4)
403 RGB16_32FUNCS(
AV_PIX_FMT_BGR565, BE, bgr16be, 0, 0, 0, 0, 0x001F, 0x07E0, 0xF800, 11, 5, 0,
RGB2YUV_SHIFT + 8)
404 RGB16_32FUNCS(
AV_PIX_FMT_BGR555, BE, bgr15be, 0, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, 10, 5, 0,
RGB2YUV_SHIFT + 7)
405 RGB16_32FUNCS(
AV_PIX_FMT_BGR444, BE, bgr12be, 0, 0, 0, 0, 0x000F, 0x00F0, 0x0F00, 8, 4, 0,
RGB2YUV_SHIFT + 4)
406 RGB16_32FUNCS(
AV_PIX_FMT_RGB565, BE, rgb16be, 0, 0, 0, 0, 0xF800, 0x07E0, 0x001F, 0, 5, 11,
RGB2YUV_SHIFT + 8)
407 RGB16_32FUNCS(
AV_PIX_FMT_RGB555, BE, rgb15be, 0, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, 0, 5, 10,
RGB2YUV_SHIFT + 7)
408 RGB16_32FUNCS(
AV_PIX_FMT_RGB444, BE, rgb12be, 0, 0, 0, 0, 0x0F00, 0x00F0, 0x000F, 0, 4, 8,
RGB2YUV_SHIFT + 4)
409 RGB16_32FUNCS(
AV_PIX_FMT_X2RGB10, LE, rgb30le, 16, 6, 0, 0, 0x3FF00000, 0xFFC00, 0x3FF, 0, 0, 4,
RGB2YUV_SHIFT + 6)
410 RGB16_32FUNCS(
AV_PIX_FMT_X2BGR10, LE, bgr30le, 0, 6, 16, 0, 0x3FF, 0xFFC00, 0x3FF00000, 4, 0, 0,
RGB2YUV_SHIFT + 6)
413 const uint8_t *gsrc, const uint8_t *bsrc, const uint8_t *rsrc,
416 uint16_t *dstU = (uint16_t *)_dstU;
417 uint16_t *dstV = (uint16_t *)_dstV;
423 unsigned int g = gsrc[2*
i] + gsrc[2*
i+1];
424 unsigned int b = bsrc[2*
i] + bsrc[2*
i+1];
425 unsigned int r = rsrc[2*
i] + rsrc[2*
i+1];
433 const uint8_t *unused2,
int width, uint32_t *unused,
void *opq)
435 int16_t *
dst = (int16_t *)
_dst;
436 const uint16_t *
src = (
const uint16_t *)
_src;
443 const uint8_t *unused2,
int width, uint32_t *unused,
void *opq)
445 int16_t *
dst = (int16_t *)
_dst;
446 const uint16_t *
src = (
const uint16_t *)
_src;
453 const uint8_t *unused2,
int width, uint32_t *unused,
void *opq)
455 int16_t *
dst = (int16_t *)
_dst;
463 const uint8_t *unused2,
int width, uint32_t *unused,
void *opq)
465 int16_t *
dst = (int16_t *)
_dst;
473 const uint8_t *unused2,
int width, uint32_t *pal,
void *opq)
475 int16_t *
dst = (int16_t *)
_dst;
480 dst[
i]= (pal[d] >> 24)<<6 | pal[d]>>26;
485 const uint8_t *unused2,
int width, uint32_t *pal,
void *opq)
487 int16_t *
dst = (int16_t *)
_dst;
492 dst[
i] = (pal[d] & 0xFF)<<6;
497 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *
src2,
498 int width, uint32_t *pal,
void *opq)
500 uint16_t *dstU = (uint16_t *)_dstU;
501 int16_t *dstV = (int16_t *)_dstV;
505 int p = pal[
src1[
i]];
507 dstU[
i] = (uint8_t)(p>> 8)<<6;
508 dstV[
i] = (uint8_t)(p>>16)<<6;
513 const uint8_t *unused2,
int width, uint32_t *unused,
void *opq)
515 int16_t *
dst = (int16_t *)
_dst;
520 for (j = 0; j < 8; j++)
521 dst[8*
i+j]= ((d>>(7-j))&1) * 16383;
525 for (j = 0; j < (
width&7); j++)
526 dst[8*
i+j]= ((d>>(7-j))&1) * 16383;
531 const uint8_t *unused2,
int width, uint32_t *unused,
void *opq)
533 int16_t *
dst = (int16_t *)
_dst;
538 for (j = 0; j < 8; j++)
539 dst[8*
i+j]= ((d>>(7-j))&1) * 16383;
543 for (j = 0; j < (
width&7); j++)
544 dst[8*
i+j] = ((d>>(7-j))&1) * 16383;
548 static void yuy2ToY_c(uint8_t *
dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width,
549 uint32_t *unused,
void *opq)
556 static void yuy2ToUV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src1,
557 const uint8_t *
src2,
int width, uint32_t *unused,
void *opq)
561 dstU[
i] =
src1[4 *
i + 1];
562 dstV[
i] =
src1[4 *
i + 3];
567 static void yvy2ToUV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src1,
568 const uint8_t *
src2,
int width, uint32_t *unused,
void *opq)
572 dstV[
i] =
src1[4 *
i + 1];
573 dstU[
i] =
src1[4 *
i + 3];
578 #define y21xle_wrapper(bits, shift) \
579 static void y2 ## bits ## le_UV_c(uint8_t *dstU, uint8_t *dstV, \
580 const uint8_t *unused0, \
581 const uint8_t *src, \
582 const uint8_t *unused1, int width, \
583 uint32_t *unused2, void *opq) \
586 for (i = 0; i < width; i++) { \
587 AV_WN16(dstU + i * 2, AV_RL16(src + i * 8 + 2) >> shift); \
588 AV_WN16(dstV + i * 2, AV_RL16(src + i * 8 + 6) >> shift); \
592 static void y2 ## bits ## le_Y_c(uint8_t *dst, const uint8_t *src, \
593 const uint8_t *unused0, \
594 const uint8_t *unused1, int width, \
595 uint32_t *unused2, void *opq) \
598 for (i = 0; i < width; i++) \
599 AV_WN16(dst + i * 2, AV_RL16(src + i * 4) >> shift); \
606 static
void bswap16Y_c(uint8_t *
_dst, const uint8_t *
_src, const uint8_t *unused1, const uint8_t *unused2,
int width,
607 uint32_t *unused,
void *opq)
610 const uint16_t *
src = (
const uint16_t *)
_src;
611 uint16_t *
dst = (uint16_t *)
_dst;
616 static void bswap16UV_c(uint8_t *_dstU, uint8_t *_dstV,
const uint8_t *unused0,
const uint8_t *_src1,
617 const uint8_t *_src2,
int width, uint32_t *unused,
void *opq)
620 const uint16_t *
src1 = (
const uint16_t *)_src1,
621 *
src2 = (
const uint16_t *)_src2;
622 uint16_t *dstU = (uint16_t *)_dstU, *dstV = (uint16_t *)_dstV;
630 uint32_t *unused,
void *opq)
638 uint32_t *unused,
void *opq)
646 uint32_t *unused,
void *opq)
654 uint32_t *unused,
void *opq)
662 uint32_t *unused2,
void *opq)
670 uint32_t *unused2,
void *opq)
678 int u_offset,
int v_offset)
688 int u_offset,
int v_offset)
697 #define ayuv64_UV_funcs(pixfmt, U, V) \
698 static void read_ ## pixfmt ## le_UV_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *unused0, const uint8_t *src, \
699 const uint8_t *unused1, int width, uint32_t *unused2, void *opq) \
701 ayuv64le_UV_c(dstU, dstV, src, width, U, V); \
704 static void read_ ## pixfmt ## be_UV_c(uint8_t *dstU, uint8_t *dstV, const uint8_t *unused0, const uint8_t *src, \
705 const uint8_t *unused1, int width, uint32_t *unused2, void *opq) \
707 ayuv64be_UV_c(dstU, dstV, src, width, U, V); \
713 static
void read_ayuv64le_A_c(uint8_t *
dst, const uint8_t *
src, const uint8_t *unused0, const uint8_t *unused1,
int width,
714 uint32_t *unused2,
void *opq)
722 uint32_t *unused2,
void *opq)
729 static void read_vuyx_UV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src,
730 const uint8_t *unused1,
int width, uint32_t *unused2,
void *opq)
734 dstU[
i] =
src[
i * 4 + 1];
735 dstV[
i] =
src[
i * 4];
740 uint32_t *unused2,
void *opq)
748 uint32_t *unused2,
void *opq)
755 static void read_ayuv_UV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src,
756 const uint8_t *unused1,
int width, uint32_t *unused2,
void *opq)
760 dstU[
i] =
src[
i * 4 + 2];
761 dstV[
i] =
src[
i * 4 + 3];
766 uint32_t *unused2,
void *opq)
774 uint32_t *unused2,
void *opq)
781 static void read_uyva_UV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src,
782 const uint8_t *unused1,
int width, uint32_t *unused2,
void *opq)
786 dstU[
i] =
src[
i * 4];
787 dstV[
i] =
src[
i * 4 + 2];
791 static void vyuToY_c(uint8_t *
dst,
const uint8_t *
src,
const uint8_t *unused0,
const uint8_t *unused1,
int width,
792 uint32_t *unused2,
void *opq)
799 static void vyuToUV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src,
800 const uint8_t *unused1,
int width, uint32_t *unused2,
void *opq)
804 dstU[
i] =
src[
i * 3 + 2];
805 dstV[
i] =
src[
i * 3];
810 uint32_t *unused2,
void *opq)
819 const uint8_t *unused1,
int width, uint32_t *unused2,
void *opq)
824 AV_WN16(dstU +
i * 2, (uv >> 2) & 0x3FFu);
825 AV_WN16(dstV +
i * 2, (uv >> 22) & 0x3FFu);
830 uint32_t *unused2,
void *opq)
839 const uint8_t *unused1,
int width, uint32_t *unused2,
void *opq)
849 uint32_t *unused2,
void *opq)
858 const uint8_t *unused1,
int width, uint32_t *unused2,
void *opq)
868 uint32_t *unused2,
void *opq)
877 const uint8_t *unused1,
int width, uint32_t *unused2,
void *opq)
888 static void uyvyToY_c(uint8_t *
dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width,
889 uint32_t *unused,
void *opq)
896 static void uyvyToUV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src1,
897 const uint8_t *
src2,
int width, uint32_t *unused,
void *opq)
901 dstU[
i] =
src1[4 *
i + 0];
902 dstV[
i] =
src1[4 *
i + 2];
912 dst1[
i] =
src[2 *
i + 0];
913 dst2[
i] =
src[2 *
i + 1];
918 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *
src2,
919 int width, uint32_t *unused,
void *opq)
925 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *
src2,
926 int width, uint32_t *unused,
void *opq)
931 #define p01x_uv_wrapper(bits, shift) \
932 static void p0 ## bits ## LEToUV_c(uint8_t *dstU, uint8_t *dstV, \
933 const uint8_t *unused0, \
934 const uint8_t *src1, \
935 const uint8_t *src2, int width, \
936 uint32_t *unused, void *opq) \
939 for (i = 0; i < width; i++) { \
940 AV_WN16(dstU + i * 2, AV_RL16(src1 + i * 4 + 0) >> shift); \
941 AV_WN16(dstV + i * 2, AV_RL16(src1 + i * 4 + 2) >> shift); \
945 static void p0 ## bits ## BEToUV_c(uint8_t *dstU, uint8_t *dstV, \
946 const uint8_t *unused0, \
947 const uint8_t *src1, \
948 const uint8_t *src2, int width, \
949 uint32_t *unused, void *opq) \
952 for (i = 0; i < width; i++) { \
953 AV_WN16(dstU + i * 2, AV_RB16(src1 + i * 4 + 0) >> shift); \
954 AV_WN16(dstV + i * 2, AV_RB16(src1 + i * 4 + 2) >> shift); \
958 #define p01x_wrapper(bits, shift) \
959 static void p0 ## bits ## LEToY_c(uint8_t *dst, const uint8_t *src, \
960 const uint8_t *unused1, \
961 const uint8_t *unused2, int width, \
962 uint32_t *unused, void *opq) \
965 for (i = 0; i < width; i++) { \
966 AV_WN16(dst + i * 2, AV_RL16(src + i * 2) >> shift); \
970 static void p0 ## bits ## BEToY_c(uint8_t *dst, const uint8_t *src, \
971 const uint8_t *unused1, \
972 const uint8_t *unused2, int width, \
973 uint32_t *unused, void *opq) \
976 for (i = 0; i < width; i++) { \
977 AV_WN16(dst + i * 2, AV_RB16(src + i * 2) >> shift); \
980 p01x_uv_wrapper(bits, shift)
986 static
void bgr24ToY_c(uint8_t *
_dst, const uint8_t *
src, const uint8_t *unused1, const uint8_t *unused2,
989 int16_t *
dst = (int16_t *)
_dst;
993 int b =
src[
i * 3 + 0];
994 int g =
src[
i * 3 + 1];
995 int r =
src[
i * 3 + 2];
1001 static void bgr24ToUV_c(uint8_t *_dstU, uint8_t *_dstV,
const uint8_t *unused0,
const uint8_t *
src1,
1004 int16_t *dstU = (int16_t *)_dstU;
1005 int16_t *dstV = (int16_t *)_dstV;
1023 int16_t *dstU = (int16_t *)_dstU;
1024 int16_t *dstV = (int16_t *)_dstV;
1042 int16_t *
dst = (int16_t *)
_dst;
1046 int r =
src[
i * 3 + 0];
1047 int g =
src[
i * 3 + 1];
1048 int b =
src[
i * 3 + 2];
1054 static void rgb24ToUV_c(uint8_t *_dstU, uint8_t *_dstV,
const uint8_t *unused0,
const uint8_t *
src1,
1057 int16_t *dstU = (int16_t *)_dstU;
1058 int16_t *dstV = (int16_t *)_dstV;
1076 int16_t *dstU = (int16_t *)_dstU;
1077 int16_t *dstV = (int16_t *)_dstV;
1094 uint16_t *
dst = (uint16_t *)
_dst;
1108 uint16_t *
dst = (uint16_t *)
_dst;
1116 uint16_t *dstU = (uint16_t *)_dstU;
1117 uint16_t *dstV = (uint16_t *)_dstV;
1132 (is_be ? AV_RB16(src) : AV_RL16(src))
1137 const uint16_t **
src = (
const uint16_t **)
_src;
1138 uint16_t *
dst = (uint16_t *)
_dst;
1140 int shift = bpc < 16 ? bpc : 14;
1154 const uint16_t **
src = (
const uint16_t **)
_src;
1155 uint16_t *
dst = (uint16_t *)
_dst;
1156 int shift = bpc < 16 ? bpc : 14;
1168 const uint16_t **
src = (
const uint16_t **)
_src;
1169 uint16_t *dstU = (uint16_t *)_dstU;
1170 uint16_t *dstV = (uint16_t *)_dstV;
1173 int shift = bpc < 16 ? bpc : 14;
1185 #define rdpx(src) (is_be ? av_int2float(AV_RB32(src)): av_int2float(AV_RL32(src)))
1190 const float **
src = (
const float **)
_src;
1191 uint16_t *
dst = (uint16_t *)
_dst;
1201 const float **
src = (
const float **)
_src;
1202 uint16_t *dstU = (uint16_t *)_dstU;
1203 uint16_t *dstV = (uint16_t *)_dstV;
1220 const float **
src = (
const float **)
_src;
1221 uint16_t *
dst = (uint16_t *)
_dst;
1235 const uint8_t *
_src,
const uint8_t *unused2,
1239 const float *
src = (
const float *)
_src;
1240 uint16_t *dstU = (uint16_t *)_dstU;
1241 uint16_t *dstV = (uint16_t *)_dstV;
1256 const uint8_t *unused1,
const uint8_t *unused2,
1260 const float *
src = (
const float *)
_src;
1261 uint16_t *
dst = (uint16_t *)
_dst;
1275 const uint8_t *unused2,
int width,
int is_be, uint32_t *unused)
1278 const float *
src = (
const float *)
_src;
1279 uint16_t *
dst = (uint16_t *)
_dst;
1288 #define rgb9plus_planar_funcs_endian(nbits, endian_name, endian) \
1289 static void planar_rgb##nbits##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \
1290 int w, int32_t *rgb2yuv, void *opq) \
1292 planar_rgb16_to_y(dst, src, w, nbits, endian, rgb2yuv); \
1294 static void planar_rgb##nbits##endian_name##_to_uv(uint8_t *dstU, uint8_t *dstV, \
1295 const uint8_t *src[4], int w, int32_t *rgb2yuv, \
1298 planar_rgb16_to_uv(dstU, dstV, src, w, nbits, endian, rgb2yuv); \
1301 #define rgb9plus_planar_transparency_funcs(nbits) \
1302 static void planar_rgb##nbits##le_to_a(uint8_t *dst, const uint8_t *src[4], \
1303 int w, int32_t *rgb2yuv, \
1306 planar_rgb16_to_a(dst, src, w, nbits, 0, rgb2yuv); \
1308 static void planar_rgb##nbits##be_to_a(uint8_t *dst, const uint8_t *src[4], \
1309 int w, int32_t *rgb2yuv, \
1312 planar_rgb16_to_a(dst, src, w, nbits, 1, rgb2yuv); \
1315 #define rgb9plus_planar_funcs(nbits) \
1316 rgb9plus_planar_funcs_endian(nbits, le, 0) \
1317 rgb9plus_planar_funcs_endian(nbits, be, 1)
1330 #define rgbf32_funcs_endian(endian_name, endian) \
1331 static void planar_rgbf32##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \
1332 int w, int32_t *rgb2yuv, void *opq) \
1334 planar_rgbf32_to_y(dst, src, w, endian, rgb2yuv); \
1336 static void planar_rgbf32##endian_name##_to_uv(uint8_t *dstU, uint8_t *dstV, \
1337 const uint8_t *src[4], int w, int32_t *rgb2yuv, \
1340 planar_rgbf32_to_uv(dstU, dstV, src, w, endian, rgb2yuv); \
1342 static void planar_rgbf32##endian_name##_to_a(uint8_t *dst, const uint8_t *src[4], \
1343 int w, int32_t *rgb2yuv, void *opq) \
1345 planar_rgbf32_to_a(dst, src, w, endian, rgb2yuv); \
1347 static void rgbf32##endian_name##_to_y_c(uint8_t *dst, const uint8_t *src, \
1348 const uint8_t *unused1, const uint8_t *unused2, \
1349 int w, uint32_t *rgb2yuv, void *opq) \
1351 rgbf32_to_y_c(dst, src, unused1, unused2, w, endian, rgb2yuv); \
1353 static void rgbf32##endian_name##_to_uv_c(uint8_t *dstU, uint8_t *dstV, \
1354 const uint8_t *unused1, \
1355 const uint8_t *src, const uint8_t *unused2, \
1356 int w, uint32_t *rgb2yuv, \
1359 rgbf32_to_uv_c(dstU, dstV, unused1, src, unused2, w, endian, rgb2yuv); \
1361 static void grayf32##endian_name##ToY16_c(uint8_t *dst, const uint8_t *src, \
1362 const uint8_t *unused1, const uint8_t *unused2, \
1363 int width, uint32_t *unused, void *opq) \
1365 grayf32ToY16_c(dst, src, unused1, unused2, width, endian, unused); \
1371 #define rdpx(src) av_int2float(half2float(is_be ? AV_RB16(&src) : AV_RL16(&src), h2f_tbl))
1373 static av_always_inline void rgbaf16ToUV_half_endian(uint16_t *dstU, uint16_t *dstV,
int is_be,
1486 #define rgbaf16_funcs_endian(endian_name, endian) \
1487 static void rgbaf16##endian_name##ToUV_half_c(uint8_t *_dstU, uint8_t *_dstV, const uint8_t *unused, \
1488 const uint8_t *src1, const uint8_t *src2, \
1489 int width, uint32_t *_rgb2yuv, void *opq) \
1491 const uint16_t *src = (const uint16_t*)src1; \
1492 uint16_t *dstU = (uint16_t*)_dstU; \
1493 uint16_t *dstV = (uint16_t*)_dstV; \
1494 int32_t *rgb2yuv = (int32_t*)_rgb2yuv; \
1495 av_assert1(src1==src2); \
1496 rgbaf16ToUV_half_endian(dstU, dstV, endian, src, width, rgb2yuv, opq); \
1498 static void rgbaf16##endian_name##ToUV_c(uint8_t *_dstU, uint8_t *_dstV, const uint8_t *unused, \
1499 const uint8_t *src1, const uint8_t *src2, \
1500 int width, uint32_t *_rgb2yuv, void *opq) \
1502 const uint16_t *src = (const uint16_t*)src1; \
1503 uint16_t *dstU = (uint16_t*)_dstU; \
1504 uint16_t *dstV = (uint16_t*)_dstV; \
1505 int32_t *rgb2yuv = (int32_t*)_rgb2yuv; \
1506 av_assert1(src1==src2); \
1507 rgbaf16ToUV_endian(dstU, dstV, endian, src, width, rgb2yuv, opq); \
1509 static void rgbaf16##endian_name##ToY_c(uint8_t *_dst, const uint8_t *_src, const uint8_t *unused0, \
1510 const uint8_t *unused1, int width, uint32_t *_rgb2yuv, void *opq) \
1512 const uint16_t *src = (const uint16_t*)_src; \
1513 uint16_t *dst = (uint16_t*)_dst; \
1514 int32_t *rgb2yuv = (int32_t*)_rgb2yuv; \
1515 rgbaf16ToY_endian(dst, src, endian, width, rgb2yuv, opq); \
1517 static void rgbaf16##endian_name##ToA_c(uint8_t *_dst, const uint8_t *_src, const uint8_t *unused0, \
1518 const uint8_t *unused1, int width, uint32_t *unused2, void *opq) \
1520 const uint16_t *src = (const uint16_t*)_src; \
1521 uint16_t *dst = (uint16_t*)_dst; \
1522 rgbaf16ToA_endian(dst, src, endian, width, opq); \
1524 static void rgbf16##endian_name##ToUV_half_c(uint8_t *_dstU, uint8_t *_dstV, const uint8_t *unused, \
1525 const uint8_t *src1, const uint8_t *src2, \
1526 int width, uint32_t *_rgb2yuv, void *opq) \
1528 const uint16_t *src = (const uint16_t*)src1; \
1529 uint16_t *dstU = (uint16_t*)_dstU; \
1530 uint16_t *dstV = (uint16_t*)_dstV; \
1531 int32_t *rgb2yuv = (int32_t*)_rgb2yuv; \
1532 av_assert1(src1==src2); \
1533 rgbf16ToUV_half_endian(dstU, dstV, endian, src, width, rgb2yuv, opq); \
1535 static void rgbf16##endian_name##ToUV_c(uint8_t *_dstU, uint8_t *_dstV, const uint8_t *unused, \
1536 const uint8_t *src1, const uint8_t *src2, \
1537 int width, uint32_t *_rgb2yuv, void *opq) \
1539 const uint16_t *src = (const uint16_t*)src1; \
1540 uint16_t *dstU = (uint16_t*)_dstU; \
1541 uint16_t *dstV = (uint16_t*)_dstV; \
1542 int32_t *rgb2yuv = (int32_t*)_rgb2yuv; \
1543 av_assert1(src1==src2); \
1544 rgbf16ToUV_endian(dstU, dstV, endian, src, width, rgb2yuv, opq); \
1546 static void rgbf16##endian_name##ToY_c(uint8_t *_dst, const uint8_t *_src, const uint8_t *unused0, \
1547 const uint8_t *unused1, int width, uint32_t *_rgb2yuv, void *opq) \
1549 const uint16_t *src = (const uint16_t*)_src; \
1550 uint16_t *dst = (uint16_t*)_dst; \
1551 int32_t *rgb2yuv = (int32_t*)_rgb2yuv; \
1552 rgbf16ToY_endian(dst, src, endian, width, rgb2yuv, opq); \
1569 switch (srcFormat) {
1599 *readChrPlanar = planar_rgb9le_to_uv;
1603 *readChrPlanar = planar_rgb10le_to_uv;
1607 *readChrPlanar = planar_rgb12le_to_uv;
1611 *readChrPlanar = planar_rgb14le_to_uv;
1615 *readChrPlanar = planar_rgb16le_to_uv;
1619 *readChrPlanar = planar_rgbf32le_to_uv;
1622 *readChrPlanar = planar_rgb9be_to_uv;
1626 *readChrPlanar = planar_rgb10be_to_uv;
1630 *readChrPlanar = planar_rgb12be_to_uv;
1634 *readChrPlanar = planar_rgb14be_to_uv;
1638 *readChrPlanar = planar_rgb16be_to_uv;
1642 *readChrPlanar = planar_rgbf32be_to_uv;
1727 *chrToYV12 = read_ayuv64le_UV_c;
1730 *chrToYV12 = read_ayuv64be_UV_c;
1742 *chrToYV12 = read_xv48le_UV_c;
1745 *chrToYV12 = read_xv48be_UV_c;
1750 *chrToYV12 = p010LEToUV_c;
1755 *chrToYV12 = p010BEToUV_c;
1760 *chrToYV12 = p012LEToUV_c;
1765 *chrToYV12 = p012BEToUV_c;
1770 *chrToYV12 = p016LEToUV_c;
1775 *chrToYV12 = p016BEToUV_c;
1778 *chrToYV12 = y210le_UV_c;
1781 *chrToYV12 = y212le_UV_c;
1784 *chrToYV12 = y216le_UV_c;
1787 *chrToYV12 = rgbf32le_to_uv_c;
1790 *chrToYV12 = rgbf32be_to_uv_c;
1793 if (
c->chrSrcHSubSample) {
1794 switch (srcFormat) {
1796 *chrToYV12 = rgb64BEToUV_half_c;
1799 *chrToYV12 = rgb64LEToUV_half_c;
1802 *chrToYV12 = bgr64BEToUV_half_c;
1805 *chrToYV12 = bgr64LEToUV_half_c;
1808 *chrToYV12 = rgb48BEToUV_half_c;
1811 *chrToYV12 = rgb48LEToUV_half_c;
1814 *chrToYV12 = bgr48BEToUV_half_c;
1817 *chrToYV12 = bgr48LEToUV_half_c;
1820 *chrToYV12 = bgr32ToUV_half_c;
1823 *chrToYV12 = bgr321ToUV_half_c;
1829 *chrToYV12 = bgr16leToUV_half_c;
1832 *chrToYV12 = bgr16beToUV_half_c;
1835 *chrToYV12 = bgr15leToUV_half_c;
1838 *chrToYV12 = bgr15beToUV_half_c;
1845 *chrToYV12 = bgr12leToUV_half_c;
1848 *chrToYV12 = bgr12beToUV_half_c;
1851 *chrToYV12 = rgb32ToUV_half_c;
1854 *chrToYV12 = rgb321ToUV_half_c;
1860 *chrToYV12 = rgb16leToUV_half_c;
1863 *chrToYV12 = rgb16beToUV_half_c;
1866 *chrToYV12 = rgb15leToUV_half_c;
1869 *chrToYV12 = rgb15beToUV_half_c;
1872 *chrToYV12 = rgb12leToUV_half_c;
1875 *chrToYV12 = rgb12beToUV_half_c;
1878 *chrToYV12 = rgb30leToUV_half_c;
1881 *chrToYV12 = bgr30leToUV_half_c;
1884 *chrToYV12 = rgbaf16beToUV_half_c;
1887 *chrToYV12 = rgbaf16leToUV_half_c;
1890 *chrToYV12 = rgbf16beToUV_half_c;
1893 *chrToYV12 = rgbf16leToUV_half_c;
1897 switch (srcFormat) {
1899 *chrToYV12 = rgb64BEToUV_c;
1902 *chrToYV12 = rgb64LEToUV_c;
1905 *chrToYV12 = bgr64BEToUV_c;
1908 *chrToYV12 = bgr64LEToUV_c;
1911 *chrToYV12 = rgb48BEToUV_c;
1914 *chrToYV12 = rgb48LEToUV_c;
1917 *chrToYV12 = bgr48BEToUV_c;
1920 *chrToYV12 = bgr48LEToUV_c;
1923 *chrToYV12 = bgr32ToUV_c;
1926 *chrToYV12 = bgr321ToUV_c;
1932 *chrToYV12 = bgr16leToUV_c;
1935 *chrToYV12 = bgr16beToUV_c;
1938 *chrToYV12 = bgr15leToUV_c;
1941 *chrToYV12 = bgr15beToUV_c;
1944 *chrToYV12 = bgr12leToUV_c;
1947 *chrToYV12 = bgr12beToUV_c;
1950 *chrToYV12 = rgb32ToUV_c;
1953 *chrToYV12 = rgb321ToUV_c;
1959 *chrToYV12 = rgb16leToUV_c;
1962 *chrToYV12 = rgb16beToUV_c;
1965 *chrToYV12 = rgb15leToUV_c;
1968 *chrToYV12 = rgb15beToUV_c;
1971 *chrToYV12 = rgb12leToUV_c;
1974 *chrToYV12 = rgb12beToUV_c;
1977 *chrToYV12 = rgb30leToUV_c;
1980 *chrToYV12 = bgr30leToUV_c;
1983 *chrToYV12 = rgbaf16beToUV_c;
1986 *chrToYV12 = rgbaf16leToUV_c;
1989 *chrToYV12 = rgbf16beToUV_c;
1992 *chrToYV12 = rgbf16leToUV_c;
1999 switch (srcFormat) {
2001 *readLumPlanar = planar_rgb9le_to_y;
2004 *readAlpPlanar = planar_rgb10le_to_a;
2006 *readLumPlanar = planar_rgb10le_to_y;
2009 *readAlpPlanar = planar_rgb12le_to_a;
2011 *readLumPlanar = planar_rgb12le_to_y;
2014 *readAlpPlanar = planar_rgb14le_to_a;
2016 *readLumPlanar = planar_rgb14le_to_y;
2019 *readAlpPlanar = planar_rgb16le_to_a;
2021 *readLumPlanar = planar_rgb16le_to_y;
2024 *readAlpPlanar = planar_rgbf32le_to_a;
2026 *readLumPlanar = planar_rgbf32le_to_y;
2029 *readLumPlanar = planar_rgb9be_to_y;
2032 *readAlpPlanar = planar_rgb10be_to_a;
2034 *readLumPlanar = planar_rgb10be_to_y;
2037 *readAlpPlanar = planar_rgb12be_to_a;
2039 *readLumPlanar = planar_rgb12be_to_y;
2042 *readAlpPlanar = planar_rgb14be_to_a;
2044 *readLumPlanar = planar_rgb14be_to_y;
2047 *readAlpPlanar = planar_rgb16be_to_a;
2049 *readLumPlanar = planar_rgb16be_to_y;
2052 *readAlpPlanar = planar_rgbf32be_to_a;
2054 *readLumPlanar = planar_rgbf32be_to_y;
2089 *lumToYV12 = bswap16Y_c;
2102 *lumToYV12 = bswap16Y_c;
2103 *alpToYV12 = bswap16Y_c;
2133 *lumToYV12 = bswap16Y_c;
2146 *lumToYV12 = bswap16Y_c;
2147 *alpToYV12 = bswap16Y_c;
2196 *lumToYV12 = bgr24ToY_c;
2199 *lumToYV12 = bgr16leToY_c;
2202 *lumToYV12 = bgr16beToY_c;
2205 *lumToYV12 = bgr15leToY_c;
2208 *lumToYV12 = bgr15beToY_c;
2211 *lumToYV12 = bgr12leToY_c;
2214 *lumToYV12 = bgr12beToY_c;
2220 *lumToYV12 = rgb16leToY_c;
2223 *lumToYV12 = rgb16beToY_c;
2226 *lumToYV12 = rgb15leToY_c;
2229 *lumToYV12 = rgb15beToY_c;
2232 *lumToYV12 = rgb12leToY_c;
2235 *lumToYV12 = rgb12beToY_c;
2251 *lumToYV12 = bgr32ToY_c;
2254 *lumToYV12 = bgr321ToY_c;
2257 *lumToYV12 = rgb32ToY_c;
2260 *lumToYV12 = rgb321ToY_c;
2263 *lumToYV12 = rgb48BEToY_c;
2266 *lumToYV12 = rgb48LEToY_c;
2269 *lumToYV12 = bgr48BEToY_c;
2272 *lumToYV12 = bgr48LEToY_c;
2275 *lumToYV12 = rgb64BEToY_c;
2278 *lumToYV12 = rgb64LEToY_c;
2281 *lumToYV12 = bgr64BEToY_c;
2284 *lumToYV12 = bgr64LEToY_c;
2289 *lumToYV12 = p010LEToY_c;
2294 *lumToYV12 = p010BEToY_c;
2299 *lumToYV12 = p012LEToY_c;
2304 *lumToYV12 = p012BEToY_c;
2307 *lumToYV12 = grayf32leToY16_c;
2310 *lumToYV12 = grayf32beToY16_c;
2313 *lumToYV12 = y210le_Y_c;
2316 *lumToYV12 = y212le_Y_c;
2319 *lumToYV12 = y216le_Y_c;
2322 *lumToYV12 = rgb30leToY_c;
2325 *lumToYV12 = bgr30leToY_c;
2328 *lumToYV12 = rgbaf16beToY_c;
2331 *lumToYV12 = rgbaf16leToY_c;
2334 *lumToYV12 = rgbf16beToY_c;
2337 *lumToYV12 = rgbf16leToY_c;
2340 *lumToYV12 = rgbf32le_to_y_c;
2343 *lumToYV12 = rgbf32be_to_y_c;
2348 if (HAVE_BIGENDIAN == !
isBE(srcFormat) && !*readAlpPlanar)
2349 *alpToYV12 = bswap16Y_c;
2351 switch (srcFormat) {
2365 *alpToYV12 = rgbaf16beToA_c;
2368 *alpToYV12 = rgbaf16leToA_c;
2387 *alpToYV12 = read_ayuv64le_A_c;
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it be(in the first position) for now. Options ------- Then comes the options array. This is what will define the user accessible options. For example
@ AV_PIX_FMT_YUV420P9LE
planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
@ AV_PIX_FMT_XV30LE
packed XVYU 4:4:4, 32bpp, (msb)2X 10V 10Y 10U(lsb), little-endian, variant of Y410 where alpha channe...
@ AV_PIX_FMT_GRAY10BE
Y , 10bpp, big-endian.
AVPixelFormat
Pixel format.
@ AV_PIX_FMT_BGR48LE
packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as lit...
@ AV_PIX_FMT_P416BE
interleaved chroma YUV 4:4:4, 48bpp, big-endian
@ AV_PIX_FMT_YA8
8 bits gray, 8 bits alpha
@ AV_PIX_FMT_BGRA64BE
packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is st...
@ AV_PIX_FMT_RGB444LE
packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, X=unused/undefined
#define u(width, name, range_min, range_max)
@ AV_PIX_FMT_GBRP16BE
planar GBR 4:4:4 48bpp, big-endian
@ AV_PIX_FMT_GBRP10BE
planar GBR 4:4:4 30bpp, big-endian
@ AV_PIX_FMT_YUV422P14LE
planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
@ AV_PIX_FMT_RGBF16LE
IEEE-754 half precision packed RGB 16:16:16, 48bpp, RGBRGB..., little-endian.
@ AV_PIX_FMT_YUVA444P10BE
planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
@ AV_PIX_FMT_RGBA64BE
packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is st...
@ AV_PIX_FMT_YUV440P12BE
planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
@ AV_PIX_FMT_GBRAPF32LE
IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, little-endian.
@ AV_PIX_FMT_GBRPF32BE
IEEE-754 single precision planar GBR 4:4:4, 96bpp, big-endian.
@ AV_PIX_FMT_P412BE
interleaved chroma YUV 4:4:4, 36bpp, data in the high bits, big-endian
@ AV_PIX_FMT_MONOWHITE
Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb.
@ AV_PIX_FMT_P010BE
like NV12, with 10bpp per component, data in the high bits, zeros in the low bits,...
static const char rgb2yuv[]
@ AV_PIX_FMT_YUV420P14BE
planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
@ AV_PIX_FMT_YUV420P16LE
planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
#define AV_PIX_FMT_RGB32_1
@ AV_PIX_FMT_GBRP14BE
planar GBR 4:4:4 42bpp, big-endian
@ AV_PIX_FMT_BGR24
packed RGB 8:8:8, 24bpp, BGRBGR...
@ AV_PIX_FMT_BGRA
packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
@ AV_PIX_FMT_YUVA444P9BE
planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
@ AV_PIX_FMT_YUV422P9BE
planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
@ AV_PIX_FMT_GRAY10LE
Y , 10bpp, little-endian.
@ AV_PIX_FMT_GRAYF32LE
IEEE-754 single precision Y, 32bpp, little-endian.
@ AV_PIX_FMT_GBRAP14BE
planar GBR 4:4:4:4 56bpp, big-endian
@ AV_PIX_FMT_RGB555BE
packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined
@ AV_PIX_FMT_RGBAF16LE
IEEE-754 half precision packed RGBA 16:16:16:16, 64bpp, RGBARGBA..., little-endian.
uint8_t ptrdiff_t const uint8_t * _src
@ AV_PIX_FMT_AYUV64LE
packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
@ AV_PIX_FMT_YUV444P16LE
planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
@ AV_PIX_FMT_AYUV64BE
packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
@ AV_PIX_FMT_GBRAP12LE
planar GBR 4:4:4:4 48bpp, little-endian
@ AV_PIX_FMT_GRAY16BE
Y , 16bpp, big-endian.
static av_always_inline int is16BPS(enum AVPixelFormat pix_fmt)
void ff_sws_init_input_funcs(SwsInternal *c, planar1_YV12_fn *lumToYV12, planar1_YV12_fn *alpToYV12, planar2_YV12_fn *chrToYV12, planarX_YV12_fn *readLumPlanar, planarX_YV12_fn *readAlpPlanar, planarX2_YV12_fn *readChrPlanar)
@ AV_PIX_FMT_GBRAP
planar GBRA 4:4:4:4 32bpp
@ AV_PIX_FMT_YUV420P12LE
planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
@ AV_PIX_FMT_GRAY9LE
Y , 9bpp, little-endian.
static av_always_inline int isNBPS(enum AVPixelFormat pix_fmt)
@ AV_PIX_FMT_YUVA444P16BE
planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
@ AV_PIX_FMT_YUV444P10BE
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
@ AV_PIX_FMT_YUV420P10LE
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
@ AV_PIX_FMT_VUYA
packed VUYA 4:4:4:4, 32bpp (1 Cr & Cb sample per 1x1 Y & A samples), VUYAVUYA...
@ AV_PIX_FMT_YUV444P12LE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
@ AV_PIX_FMT_YUV422P12BE
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
@ AV_PIX_FMT_YUV444P14LE
planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
@ AV_PIX_FMT_BGR8
packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
@ AV_PIX_FMT_GBRAP16BE
planar GBRA 4:4:4:4 64bpp, big-endian
@ AV_PIX_FMT_GBRP16LE
planar GBR 4:4:4 48bpp, little-endian
@ AV_PIX_FMT_P416LE
interleaved chroma YUV 4:4:4, 48bpp, little-endian
@ AV_PIX_FMT_P210LE
interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, little-endian
@ AV_PIX_FMT_P016BE
like NV12, with 16bpp per component, big-endian
@ AV_PIX_FMT_GBRP12LE
planar GBR 4:4:4 36bpp, little-endian
@ AV_PIX_FMT_YUVA420P16BE
planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_RL16
@ AV_PIX_FMT_GBRP10LE
planar GBR 4:4:4 30bpp, little-endian
#define AV_PIX_FMT_BGR32_1
@ AV_PIX_FMT_RGBA
packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
@ AV_PIX_FMT_YUV444P10LE
planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
@ AV_PIX_FMT_YUVA422P10LE
planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
@ AV_PIX_FMT_YUV444P9BE
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
@ AV_PIX_FMT_YUV422P10BE
planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
@ AV_PIX_FMT_YUV422P16LE
planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
#define AV_PIX_FMT_RGBA64
@ AV_PIX_FMT_RGB565LE
packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian
@ AV_PIX_FMT_Y216LE
packed YUV 4:2:2 like YUYV422, 32bpp, little-endian
@ AV_PIX_FMT_GBRAPF32BE
IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, big-endian.
@ AV_PIX_FMT_GBRAP12BE
planar GBR 4:4:4:4 48bpp, big-endian
@ AV_PIX_FMT_P012LE
like NV12, with 12bpp per component, data in the high bits, zeros in the low bits,...
void(* planarX_YV12_fn)(uint8_t *dst, const uint8_t *src[4], int width, int32_t *rgb2yuv, void *opaque)
Unscaled conversion of arbitrary planar data (e.g.
@ AV_PIX_FMT_YUYV422
packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
@ AV_PIX_FMT_P210BE
interleaved chroma YUV 4:2:2, 20bpp, data in the high bits, big-endian
@ AV_PIX_FMT_RGB48LE
packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as lit...
@ AV_PIX_FMT_YA16LE
16 bits gray, 16 bits alpha (little-endian)
@ AV_PIX_FMT_MONOBLACK
Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb.
@ AV_PIX_FMT_YUVA422P12LE
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, little-endian
@ AV_PIX_FMT_BGR565LE
packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian
@ AV_PIX_FMT_RGBA64LE
packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is st...
@ AV_PIX_FMT_YUVA444P12BE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, big-endian
void(* planarX2_YV12_fn)(uint8_t *dst, uint8_t *dst2, const uint8_t *src[4], int width, int32_t *rgb2yuv, void *opaque)
@ AV_PIX_FMT_YUVA444P9LE
planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
@ AV_PIX_FMT_Y210LE
packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, little-endian
@ AV_PIX_FMT_YUVA420P16LE
planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
@ AV_PIX_FMT_RGB8
packed RGB 3:3:2, 8bpp, (msb)3R 3G 2B(lsb)
@ AV_PIX_FMT_YUV440P10LE
planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
@ AV_PIX_FMT_BGR555BE
packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined
@ AV_PIX_FMT_YUVA420P9LE
planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian
void(* planar2_YV12_fn)(uint8_t *dst, uint8_t *dst2, const uint8_t *src, const uint8_t *src2, const uint8_t *src3, int width, uint32_t *pal, void *opaque)
Unscaled conversion of chroma plane to YV12 for horizontal scaler.
@ AV_PIX_FMT_ABGR
packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
@ AV_PIX_FMT_YUV420P14LE
planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
@ AV_PIX_FMT_YUV444P14BE
planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
@ AV_PIX_FMT_BGR4_BYTE
packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb)
@ AV_PIX_FMT_X2RGB10LE
packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), little-endian, X=unused/undefined
@ AV_PIX_FMT_P212LE
interleaved chroma YUV 4:2:2, 24bpp, data in the high bits, little-endian
@ AV_PIX_FMT_YUV420P9BE
The following 12 formats have the disadvantage of needing 1 format for each bit depth.
#define AV_PIX_FMT_X2BGR10
static av_always_inline int isBE(enum AVPixelFormat pix_fmt)
@ AV_PIX_FMT_RGBF32BE
IEEE-754 single precision packed RGB 32:32:32, 96bpp, RGBRGB..., big-endian.
@ AV_PIX_FMT_RGB24
packed RGB 8:8:8, 24bpp, RGBRGB...
@ AV_PIX_FMT_YUV440P12LE
planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
static int shift(int a, int b)
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
@ AV_PIX_FMT_YUV420P12BE
planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
@ AV_PIX_FMT_YUV422P10LE
planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
@ AV_PIX_FMT_RGB444BE
packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, X=unused/undefined
@ AV_PIX_FMT_XV36BE
packed XVYU 4:4:4, 48bpp, data in the high bits, zeros in the low bits, big-endian,...
@ AV_PIX_FMT_YUV422P14BE
planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
@ AV_PIX_FMT_YA16BE
16 bits gray, 16 bits alpha (big-endian)
@ AV_PIX_FMT_GRAY12LE
Y , 12bpp, little-endian.
void(* planar1_YV12_fn)(uint8_t *dst, const uint8_t *src, const uint8_t *src2, const uint8_t *src3, int width, uint32_t *pal, void *opaque)
Unscaled conversion of luma/alpha plane to YV12 for horizontal scaler.
#define AV_PIX_FMT_BGR555
@ AV_PIX_FMT_GBRP9BE
planar GBR 4:4:4 27bpp, big-endian
@ AV_PIX_FMT_YUV420P10BE
planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
@ AV_PIX_FMT_RGBAF16BE
IEEE-754 half precision packed RGBA 16:16:16:16, 64bpp, RGBARGBA..., big-endian.
@ AV_PIX_FMT_NV16
interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
@ AV_PIX_FMT_BGR444BE
packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, X=unused/undefined
@ AV_PIX_FMT_GBRP9LE
planar GBR 4:4:4 27bpp, little-endian
@ AV_PIX_FMT_GBRAP10LE
planar GBR 4:4:4:4 40bpp, little-endian
@ AV_PIX_FMT_BGR565BE
packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian
@ AV_PIX_FMT_P012BE
like NV12, with 12bpp per component, data in the high bits, zeros in the low bits,...
@ AV_PIX_FMT_P410LE
interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, little-endian
@ AV_PIX_FMT_YUVA420P10LE
planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
@ AV_PIX_FMT_AYUV
packed AYUV 4:4:4:4, 32bpp (1 Cr & Cb sample per 1x1 Y & A samples), AYUVAYUV...
@ AV_PIX_FMT_ARGB
packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
@ AV_PIX_FMT_BGRA64LE
packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is st...
@ AV_PIX_FMT_YUVA422P10BE
planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
@ AV_PIX_FMT_UYVA
packed UYVA 4:4:4:4, 32bpp (1 Cr & Cb sample per 1x1 Y & A samples), UYVAUYVA...
@ AV_PIX_FMT_YUVA444P12LE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), 12b alpha, little-endian
@ AV_PIX_FMT_YUVA422P9BE
planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian
#define AV_PIX_FMT_BGRA64
@ AV_PIX_FMT_RGB555LE
packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined
@ AV_PIX_FMT_RGB48BE
packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big...
#define i(width, name, range_min, range_max)
@ AV_PIX_FMT_GRAY9BE
Y , 9bpp, big-endian.
@ AV_PIX_FMT_NV24
planar YUV 4:4:4, 24bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (firs...
#define AV_PIX_FMT_BGR444
#define av_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
#define AV_PIX_FMT_RGB555
#define AV_PIX_FMT_X2RGB10
@ AV_PIX_FMT_NV21
as above, but U and V bytes are swapped
#define AV_PIX_FMT_BGR565
@ AV_PIX_FMT_RGB4_BYTE
packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb)
@ AV_PIX_FMT_YUV444P16BE
planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
@ AV_PIX_FMT_GBRPF32LE
IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian.
@ AV_PIX_FMT_NV42
as above, but U and V bytes are swapped
#define AV_PIX_FMT_RGB565
@ AV_PIX_FMT_GBRAP16LE
planar GBRA 4:4:4:4 64bpp, little-endian
@ AV_PIX_FMT_PAL8
8 bits with AV_PIX_FMT_RGB32 palette
@ AV_PIX_FMT_GRAY12BE
Y , 12bpp, big-endian.
@ AV_PIX_FMT_YVYU422
packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb
@ AV_PIX_FMT_NV12
planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (firs...
@ AV_PIX_FMT_Y212LE
packed YUV 4:2:2 like YUYV422, 24bpp, data in the high bits, zeros in the low bits,...
@ AV_PIX_FMT_P410BE
interleaved chroma YUV 4:4:4, 30bpp, data in the high bits, big-endian
@ AV_PIX_FMT_P016LE
like NV12, with 16bpp per component, little-endian
@ AV_PIX_FMT_GRAYF32BE
IEEE-754 single precision Y, 32bpp, big-endian.
@ AV_PIX_FMT_RGBF16BE
IEEE-754 half precision packed RGB 16:16:16, 48bpp, RGBRGB..., big-endian.
@ AV_PIX_FMT_GBRP12BE
planar GBR 4:4:4 36bpp, big-endian
@ AV_PIX_FMT_UYVY422
packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_RL32
@ AV_PIX_FMT_YUV444P12BE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
@ AV_PIX_FMT_XV48LE
packed XVYU 4:4:4, 64bpp, little-endian, variant of Y416 where alpha channel is left undefined
@ AV_PIX_FMT_YUV444P9LE
planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
@ AV_PIX_FMT_P216LE
interleaved chroma YUV 4:2:2, 32bpp, little-endian
@ AV_PIX_FMT_RGBF32LE
IEEE-754 single precision packed RGB 32:32:32, 96bpp, RGBRGB..., little-endian.
@ AV_PIX_FMT_YUVA420P10BE
planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
@ AV_PIX_FMT_RGB565BE
packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian
@ AV_PIX_FMT_YUV420P16BE
planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
@ AV_PIX_FMT_GBRP
planar GBR 4:4:4 24bpp
@ AV_PIX_FMT_YUV422P16BE
planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
@ AV_PIX_FMT_P212BE
interleaved chroma YUV 4:2:2, 24bpp, data in the high bits, big-endian
@ AV_PIX_FMT_GRAY16LE
Y , 16bpp, little-endian.
@ AV_PIX_FMT_X2BGR10LE
packed BGR 10:10:10, 30bpp, (msb)2X 10B 10G 10R(lsb), little-endian, X=unused/undefined
@ AV_PIX_FMT_V30XLE
packed VYUX 4:4:4 like XV30, 32bpp, (msb)10V 10Y 10U 2X(lsb), little-endian
@ AV_PIX_FMT_P010LE
like NV12, with 10bpp per component, data in the high bits, zeros in the low bits,...
@ AV_PIX_FMT_XV48BE
packed XVYU 4:4:4, 64bpp, big-endian, variant of Y416 where alpha channel is left undefined
@ AV_PIX_FMT_YUVA444P10LE
planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
@ AV_PIX_FMT_BGR555LE
packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined
@ AV_PIX_FMT_P216BE
interleaved chroma YUV 4:2:2, 32bpp, big-endian
@ AV_PIX_FMT_P412LE
interleaved chroma YUV 4:4:4, 36bpp, data in the high bits, little-endian
@ AV_PIX_FMT_GRAY14LE
Y , 14bpp, little-endian.
@ AV_PIX_FMT_XV36LE
packed XVYU 4:4:4, 48bpp, data in the high bits, zeros in the low bits, little-endian,...
@ AV_PIX_FMT_GRAY14BE
Y , 14bpp, big-endian.
@ AV_PIX_FMT_YUVA422P16BE
planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
@ AV_PIX_FMT_YUV440P10BE
planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
@ AV_PIX_FMT_YUV422P9LE
planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
@ AV_PIX_FMT_YUVA422P16LE
planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
@ AV_PIX_FMT_GBRP14LE
planar GBR 4:4:4 42bpp, little-endian
@ AV_PIX_FMT_GBRAP10BE
planar GBR 4:4:4:4 40bpp, big-endian
@ AV_PIX_FMT_YUVA444P16LE
planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
@ AV_PIX_FMT_VUYX
packed VUYX 4:4:4:4, 32bpp, Variant of VUYA where alpha channel is left undefined
@ AV_PIX_FMT_VYU444
packed VYU 4:4:4, 24bpp (1 Cr & Cb sample per 1x1 Y), VYUVYU...
@ AV_PIX_FMT_YUVA422P12BE
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), 12b alpha, big-endian
@ AV_PIX_FMT_BGR444LE
packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, X=unused/undefined
@ AV_PIX_FMT_YUV422P12LE
planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
@ AV_PIX_FMT_YUVA420P9BE
planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian
@ AV_PIX_FMT_GBRAP14LE
planar GBR 4:4:4:4 56bpp, little-endian
uint64_t_TMPL AV_WL64 unsigned int_TMPL AV_WL32 unsigned int_TMPL AV_WL24 unsigned int_TMPL AV_WL16 uint64_t_TMPL AV_WB64 unsigned int_TMPL AV_WB32 unsigned int_TMPL AV_WB24 unsigned int_TMPL AV_RB16
@ AV_PIX_FMT_BGR48BE
packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big...
@ AV_PIX_FMT_YUVA422P9LE
planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian
#define AV_PIX_FMT_RGB444