Go to the documentation of this file.
37 #define input_pixel(pos) (isBE(origin) ? AV_RB16(pos) : AV_RL16(pos))
39 #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)
40 #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)
59 const uint16_t *
src1,
const uint16_t *src2,
78 const uint16_t *
src1,
const uint16_t *src2,
95 #define rgb64funcs(pattern, BE_LE, origin) \
96 static void pattern ## 64 ## BE_LE ## ToY_c(uint8_t *_dst, const uint8_t *_src, const uint8_t *unused0, const uint8_t *unused1,\
97 int width, uint32_t *rgb2yuv) \
99 const uint16_t *src = (const uint16_t *) _src; \
100 uint16_t *dst = (uint16_t *) _dst; \
101 rgb64ToY_c_template(dst, src, width, origin, rgb2yuv); \
104 static void pattern ## 64 ## BE_LE ## ToUV_c(uint8_t *_dstU, uint8_t *_dstV, \
105 const uint8_t *unused0, const uint8_t *_src1, const uint8_t *_src2, \
106 int width, uint32_t *rgb2yuv) \
108 const uint16_t *src1 = (const uint16_t *) _src1, \
109 *src2 = (const uint16_t *) _src2; \
110 uint16_t *dstU = (uint16_t *) _dstU, *dstV = (uint16_t *) _dstV; \
111 rgb64ToUV_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv); \
114 static void pattern ## 64 ## BE_LE ## ToUV_half_c(uint8_t *_dstU, uint8_t *_dstV, \
115 const uint8_t *unused0, const uint8_t *_src1, const uint8_t *_src2, \
116 int width, uint32_t *rgb2yuv) \
118 const uint16_t *src1 = (const uint16_t *) _src1, \
119 *src2 = (const uint16_t *) _src2; \
120 uint16_t *dstU = (uint16_t *) _dstU, *dstV = (uint16_t *) _dstV; \
121 rgb64ToUV_half_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv); \
147 const uint16_t *
src1,
148 const uint16_t *src2,
169 const uint16_t *
src1,
170 const uint16_t *src2,
196 #define rgb48funcs(pattern, BE_LE, origin) \
197 static void pattern ## 48 ## BE_LE ## ToY_c(uint8_t *_dst, \
198 const uint8_t *_src, \
199 const uint8_t *unused0, const uint8_t *unused1,\
203 const uint16_t *src = (const uint16_t *)_src; \
204 uint16_t *dst = (uint16_t *)_dst; \
205 rgb48ToY_c_template(dst, src, width, origin, rgb2yuv); \
208 static void pattern ## 48 ## BE_LE ## ToUV_c(uint8_t *_dstU, \
210 const uint8_t *unused0, \
211 const uint8_t *_src1, \
212 const uint8_t *_src2, \
216 const uint16_t *src1 = (const uint16_t *)_src1, \
217 *src2 = (const uint16_t *)_src2; \
218 uint16_t *dstU = (uint16_t *)_dstU, \
219 *dstV = (uint16_t *)_dstV; \
220 rgb48ToUV_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv); \
223 static void pattern ## 48 ## BE_LE ## ToUV_half_c(uint8_t *_dstU, \
225 const uint8_t *unused0, \
226 const uint8_t *_src1, \
227 const uint8_t *_src2, \
231 const uint16_t *src1 = (const uint16_t *)_src1, \
232 *src2 = (const uint16_t *)_src2; \
233 uint16_t *dstU = (uint16_t *)_dstU, \
234 *dstV = (uint16_t *)_dstV; \
235 rgb48ToUV_half_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv); \
243 #define input_pixel(i) ((origin == AV_PIX_FMT_RGBA || \
244 origin == AV_PIX_FMT_BGRA || \
245 origin == AV_PIX_FMT_ARGB || \
246 origin == AV_PIX_FMT_ABGR) \
247 ? AV_RN32A(&src[(i) * 4]) \
248 : ((origin == AV_PIX_FMT_X2RGB10LE || \
249 origin == AV_PIX_FMT_X2BGR10LE) \
250 ? AV_RL32(&src[(i) * 4]) \
251 : (isBE(origin) ? AV_RB16(&src[(i) * 2]) \
252 : AV_RL16(&src[(i) * 2]))))
260 int maskr,
int maskg,
262 int gsh,
int bsh,
int S,
266 const unsigned rnd = (32<<((
S)-1)) + (1<<(
S-7));
271 int b = (px & maskb) >> shb;
272 int g = (px & maskg) >> shg;
273 int r = (px & maskr) >> shr;
275 dst[
i] = (ry *
r + gy *
g + by *
b +
rnd) >> ((
S)-6);
286 int maskr,
int maskg,
288 int gsh,
int bsh,
int S,
293 const unsigned rnd = (256
u<<((
S)-1)) + (1<<(
S-7));
298 int b = (px & maskb) >> shb;
299 int g = (px & maskg) >> shg;
300 int r = (px & maskr) >> shr;
302 dstU[
i] = (ru *
r + gu *
g + bu *
b +
rnd) >> ((
S)-6);
303 dstV[
i] = (rv *
r + gv *
g + bv *
b +
rnd) >> ((
S)-6);
314 int maskr,
int maskg,
316 int gsh,
int bsh,
int S,
321 maskgx = ~(maskr | maskb);
322 const unsigned rnd = (256
U<<(
S)) + (1<<(
S-6));
331 int b,
r,
g = (px0 & maskgx) + (px1 & maskgx);
332 int rb = px0 + px1 -
g;
334 b = (rb & maskb) >> shb;
340 g = (
g & maskg) >> shg;
342 r = (rb & maskr) >> shr;
344 dstU[
i] = (ru *
r + gu *
g + bu *
b + (unsigned)
rnd) >> ((
S)-6+1);
345 dstV[
i] = (rv *
r + gv *
g + bv *
b + (unsigned)
rnd) >> ((
S)-6+1);
351 #define rgb16_32_wrapper(fmt, name, shr, shg, shb, shp, maskr, \
352 maskg, maskb, rsh, gsh, bsh, S) \
353 static void name ## ToY_c(uint8_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, \
354 int width, uint32_t *tab) \
356 rgb16_32ToY_c_template((int16_t*)dst, src, width, fmt, shr, shg, shb, shp, \
357 maskr, maskg, maskb, rsh, gsh, bsh, S, tab); \
360 static void name ## ToUV_c(uint8_t *dstU, uint8_t *dstV, \
361 const uint8_t *unused0, const uint8_t *src, const uint8_t *dummy, \
362 int width, uint32_t *tab) \
364 rgb16_32ToUV_c_template((int16_t*)dstU, (int16_t*)dstV, src, width, fmt, \
365 shr, shg, shb, shp, \
366 maskr, maskg, maskb, rsh, gsh, bsh, S, tab);\
369 static void name ## ToUV_half_c(uint8_t *dstU, uint8_t *dstV, \
370 const uint8_t *unused0, const uint8_t *src, \
371 const uint8_t *dummy, \
372 int width, uint32_t *tab) \
374 rgb16_32ToUV_half_c_template((int16_t*)dstU, (int16_t*)dstV, src, width, fmt, \
375 shr, shg, shb, shp, \
376 maskr, maskg, maskb, \
377 rsh, gsh, bsh, S, tab); \
380 rgb16_32_wrapper(
AV_PIX_FMT_BGR32, bgr32, 16, 0, 0, 0, 0xFF0000, 0xFF00, 0x00FF, 8, 0, 8,
RGB2YUV_SHIFT + 8)
381 rgb16_32_wrapper(
AV_PIX_FMT_BGR32_1,
bgr321, 16, 0, 0, 8, 0xFF0000, 0xFF00, 0x00FF, 8, 0, 8,
RGB2YUV_SHIFT + 8)
382 rgb16_32_wrapper(
AV_PIX_FMT_RGB32, rgb32, 0, 0, 16, 0, 0x00FF, 0xFF00, 0xFF0000, 8, 0, 8,
RGB2YUV_SHIFT + 8)
383 rgb16_32_wrapper(
AV_PIX_FMT_RGB32_1,
rgb321, 0, 0, 16, 8, 0x00FF, 0xFF00, 0xFF0000, 8, 0, 8,
RGB2YUV_SHIFT + 8)
384 rgb16_32_wrapper(
AV_PIX_FMT_BGR565LE, bgr16le, 0, 0, 0, 0, 0x001F, 0x07E0, 0xF800, 11, 5, 0,
RGB2YUV_SHIFT + 8)
385 rgb16_32_wrapper(
AV_PIX_FMT_BGR555LE,
bgr15le, 0, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, 10, 5, 0,
RGB2YUV_SHIFT + 7)
386 rgb16_32_wrapper(
AV_PIX_FMT_BGR444LE, bgr12le, 0, 0, 0, 0, 0x000F, 0x00F0, 0x0F00, 8, 4, 0,
RGB2YUV_SHIFT + 4)
387 rgb16_32_wrapper(
AV_PIX_FMT_RGB565LE,
rgb16le, 0, 0, 0, 0, 0xF800, 0x07E0, 0x001F, 0, 5, 11,
RGB2YUV_SHIFT + 8)
388 rgb16_32_wrapper(
AV_PIX_FMT_RGB555LE, rgb15le, 0, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, 0, 5, 10,
RGB2YUV_SHIFT + 7)
389 rgb16_32_wrapper(
AV_PIX_FMT_RGB444LE,
rgb12le, 0, 0, 0, 0, 0x0F00, 0x00F0, 0x000F, 0, 4, 8,
RGB2YUV_SHIFT + 4)
390 rgb16_32_wrapper(
AV_PIX_FMT_BGR565BE, bgr16be, 0, 0, 0, 0, 0x001F, 0x07E0, 0xF800, 11, 5, 0,
RGB2YUV_SHIFT + 8)
391 rgb16_32_wrapper(
AV_PIX_FMT_BGR555BE,
bgr15be, 0, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, 10, 5, 0,
RGB2YUV_SHIFT + 7)
392 rgb16_32_wrapper(
AV_PIX_FMT_BGR444BE, bgr12be, 0, 0, 0, 0, 0x000F, 0x00F0, 0x0F00, 8, 4, 0,
RGB2YUV_SHIFT + 4)
393 rgb16_32_wrapper(
AV_PIX_FMT_RGB565BE,
rgb16be, 0, 0, 0, 0, 0xF800, 0x07E0, 0x001F, 0, 5, 11,
RGB2YUV_SHIFT + 8)
394 rgb16_32_wrapper(
AV_PIX_FMT_RGB555BE, rgb15be, 0, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, 0, 5, 10,
RGB2YUV_SHIFT + 7)
395 rgb16_32_wrapper(
AV_PIX_FMT_RGB444BE,
rgb12be, 0, 0, 0, 0, 0x0F00, 0x00F0, 0x000F, 0, 4, 8,
RGB2YUV_SHIFT + 4)
396 rgb16_32_wrapper(
AV_PIX_FMT_X2RGB10LE, rgb30le, 16, 6, 0, 0, 0x3FF00000, 0xFFC00, 0x3FF, 0, 0, 4,
RGB2YUV_SHIFT + 6)
397 rgb16_32_wrapper(
AV_PIX_FMT_X2BGR10LE,
bgr30le, 0, 6, 16, 0, 0x3FF, 0xFFC00, 0x3FF00000, 4, 0, 0,
RGB2YUV_SHIFT + 6)
400 const uint8_t *gsrc, const uint8_t *bsrc, const uint8_t *rsrc,
403 uint16_t *dstU = (uint16_t *)_dstU;
404 uint16_t *dstV = (uint16_t *)_dstV;
410 unsigned int g = gsrc[2*
i] + gsrc[2*
i+1];
411 unsigned int b = bsrc[2*
i] + bsrc[2*
i+1];
412 unsigned int r = rsrc[2*
i] + rsrc[2*
i+1];
419 static void rgba64leToA_c(uint8_t *_dst,
const uint8_t *_src,
const uint8_t *unused1,
420 const uint8_t *unused2,
int width, uint32_t *unused)
422 int16_t *dst = (int16_t *)_dst;
423 const uint16_t *
src = (
const uint16_t *)_src;
429 static void rgba64beToA_c(uint8_t *_dst,
const uint8_t *_src,
const uint8_t *unused1,
430 const uint8_t *unused2,
int width, uint32_t *unused)
432 int16_t *dst = (int16_t *)_dst;
433 const uint16_t *
src = (
const uint16_t *)_src;
439 static void abgrToA_c(uint8_t *_dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width, uint32_t *unused)
441 int16_t *dst = (int16_t *)_dst;
448 static void rgbaToA_c(uint8_t *_dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width, uint32_t *unused)
450 int16_t *dst = (int16_t *)_dst;
457 static void palToA_c(uint8_t *_dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width, uint32_t *pal)
459 int16_t *dst = (int16_t *)_dst;
464 dst[
i]= (pal[
d] >> 24)<<6 | pal[
d]>>26;
468 static void palToY_c(uint8_t *_dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width, uint32_t *pal)
470 int16_t *dst = (int16_t *)_dst;
475 dst[
i] = (pal[
d] & 0xFF)<<6;
480 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *src2,
481 int width, uint32_t *pal)
483 uint16_t *dstU = (uint16_t *)_dstU;
484 int16_t *dstV = (int16_t *)_dstV;
488 int p = pal[
src1[
i]];
490 dstU[
i] = (uint8_t)(p>> 8)<<6;
491 dstV[
i] = (uint8_t)(p>>16)<<6;
495 static void monowhite2Y_c(uint8_t *_dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width, uint32_t *unused)
497 int16_t *dst = (int16_t *)_dst;
502 for (j = 0; j < 8; j++)
503 dst[8*
i+j]= ((
d>>(7-j))&1) * 16383;
507 for (j = 0; j < (
width&7); j++)
508 dst[8*
i+j]= ((
d>>(7-j))&1) * 16383;
512 static void monoblack2Y_c(uint8_t *_dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width, uint32_t *unused)
514 int16_t *dst = (int16_t *)_dst;
519 for (j = 0; j < 8; j++)
520 dst[8*
i+j]= ((
d>>(7-j))&1) * 16383;
524 for (j = 0; j < (
width&7); j++)
525 dst[8*
i+j] = ((
d>>(7-j))&1) * 16383;
529 static void yuy2ToY_c(uint8_t *dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width,
537 static void yuy2ToUV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src1,
538 const uint8_t *src2,
int width, uint32_t *unused)
542 dstU[
i] =
src1[4 *
i + 1];
543 dstV[
i] =
src1[4 *
i + 3];
548 static void yvy2ToUV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src1,
549 const uint8_t *src2,
int width, uint32_t *unused)
553 dstV[
i] =
src1[4 *
i + 1];
554 dstU[
i] =
src1[4 *
i + 3];
559 static void y210le_UV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src,
560 const uint8_t *unused1,
int width, uint32_t *unused2)
569 static void y210le_Y_c(uint8_t *dst,
const uint8_t *
src,
const uint8_t *unused0,
570 const uint8_t *unused1,
int width, uint32_t *unused2)
577 static void bswap16Y_c(uint8_t *_dst,
const uint8_t *_src,
const uint8_t *unused1,
const uint8_t *unused2,
int width,
581 const uint16_t *
src = (
const uint16_t *)_src;
582 uint16_t *dst = (uint16_t *)_dst;
587 static void bswap16UV_c(uint8_t *_dstU, uint8_t *_dstV,
const uint8_t *unused0,
const uint8_t *_src1,
588 const uint8_t *_src2,
int width, uint32_t *unused)
591 const uint16_t *
src1 = (
const uint16_t *)_src1,
592 *src2 = (
const uint16_t *)_src2;
593 uint16_t *dstU = (uint16_t *)_dstU, *dstV = (uint16_t *)_dstV;
642 const uint8_t *unused1,
int width, uint32_t *unused2)
661 static void uyvyToY_c(uint8_t *dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width,
666 dst[
i] =
src[2 *
i + 1];
669 static void uyvyToUV_c(uint8_t *dstU, uint8_t *dstV,
const uint8_t *unused0,
const uint8_t *
src1,
670 const uint8_t *src2,
int width, uint32_t *unused)
674 dstU[
i] =
src1[4 *
i + 0];
675 dstV[
i] =
src1[4 *
i + 2];
685 dst1[
i] =
src[2 *
i + 0];
686 dst2[
i] =
src[2 *
i + 1];
691 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *src2,
692 int width, uint32_t *unused)
698 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *src2,
699 int width, uint32_t *unused)
704 static void p010LEToY_c(uint8_t *dst,
const uint8_t *
src,
const uint8_t *unused1,
705 const uint8_t *unused2,
int width, uint32_t *unused)
713 static void p010BEToY_c(uint8_t *dst,
const uint8_t *
src,
const uint8_t *unused1,
714 const uint8_t *unused2,
int width, uint32_t *unused)
723 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *src2,
724 int width, uint32_t *unused)
734 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *src2,
735 int width, uint32_t *unused)
745 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *src2,
746 int width, uint32_t *unused)
756 const uint8_t *unused0,
const uint8_t *
src1,
const uint8_t *src2,
757 int width, uint32_t *unused)
766 #define input_pixel(pos) (isBE(origin) ? AV_RB16(pos) : AV_RL16(pos))
768 static void bgr24ToY_c(uint8_t *_dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
771 int16_t *dst = (int16_t *)_dst;
775 int b =
src[
i * 3 + 0];
776 int g =
src[
i * 3 + 1];
777 int r =
src[
i * 3 + 2];
783 static void bgr24ToUV_c(uint8_t *_dstU, uint8_t *_dstV,
const uint8_t *unused0,
const uint8_t *
src1,
786 int16_t *dstU = (int16_t *)_dstU;
787 int16_t *dstV = (int16_t *)_dstV;
805 int16_t *dstU = (int16_t *)_dstU;
806 int16_t *dstV = (int16_t *)_dstV;
821 static void rgb24ToY_c(uint8_t *_dst,
const uint8_t *
src,
const uint8_t *unused1,
const uint8_t *unused2,
int width,
824 int16_t *dst = (int16_t *)_dst;
828 int r =
src[
i * 3 + 0];
829 int g =
src[
i * 3 + 1];
830 int b =
src[
i * 3 + 2];
836 static void rgb24ToUV_c(uint8_t *_dstU, uint8_t *_dstV,
const uint8_t *unused0,
const uint8_t *
src1,
839 int16_t *dstU = (int16_t *)_dstU;
840 int16_t *dstV = (int16_t *)_dstV;
858 int16_t *dstU = (int16_t *)_dstU;
859 int16_t *dstV = (int16_t *)_dstV;
876 uint16_t *dst = (uint16_t *)_dst;
890 uint16_t *dst = (uint16_t *)_dst;
893 dst[
i] =
src[3][
i] << 6;
898 uint16_t *dstU = (uint16_t *)_dstU;
899 uint16_t *dstV = (uint16_t *)_dstV;
914 (is_be ? AV_RB16(src) : AV_RL16(src))
919 const uint16_t **
src = (
const uint16_t **)_src;
920 uint16_t *dst = (uint16_t *)_dst;
922 int shift = bpc < 16 ? bpc : 14;
936 const uint16_t **
src = (
const uint16_t **)_src;
937 uint16_t *dst = (uint16_t *)_dst;
938 int shift = bpc < 16 ? bpc : 14;
946 const uint8_t *_src[4],
int width,
950 const uint16_t **
src = (
const uint16_t **)_src;
951 uint16_t *dstU = (uint16_t *)_dstU;
952 uint16_t *dstV = (uint16_t *)_dstV;
955 int shift = bpc < 16 ? bpc : 14;
967 #define rdpx(src) (is_be ? av_int2float(AV_RB32(src)): av_int2float(AV_RL32(src)))
972 const float **
src = (
const float **)_src;
973 uint16_t *dst = (uint16_t *)_dst;
983 const float **
src = (
const float **)_src;
984 uint16_t *dstU = (uint16_t *)_dstU;
985 uint16_t *dstV = (uint16_t *)_dstV;
1002 const float **
src = (
const float **)_src;
1003 uint16_t *dst = (uint16_t *)_dst;
1017 const uint8_t *unused2,
int width,
int is_be, uint32_t *unused)
1020 const float *
src = (
const float *)_src;
1021 uint16_t *dst = (uint16_t *)_dst;
1030 #define rgb9plus_planar_funcs_endian(nbits, endian_name, endian) \
1031 static void planar_rgb##nbits##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \
1032 int w, int32_t *rgb2yuv) \
1034 planar_rgb16_to_y(dst, src, w, nbits, endian, rgb2yuv); \
1036 static void planar_rgb##nbits##endian_name##_to_uv(uint8_t *dstU, uint8_t *dstV, \
1037 const uint8_t *src[4], int w, int32_t *rgb2yuv) \
1039 planar_rgb16_to_uv(dstU, dstV, src, w, nbits, endian, rgb2yuv); \
1042 #define rgb9plus_planar_transparency_funcs(nbits) \
1043 static void planar_rgb##nbits##le_to_a(uint8_t *dst, const uint8_t *src[4], \
1044 int w, int32_t *rgb2yuv) \
1046 planar_rgb16_to_a(dst, src, w, nbits, 0, rgb2yuv); \
1048 static void planar_rgb##nbits##be_to_a(uint8_t *dst, const uint8_t *src[4], \
1049 int w, int32_t *rgb2yuv) \
1051 planar_rgb16_to_a(dst, src, w, nbits, 1, rgb2yuv); \
1054 #define rgb9plus_planar_funcs(nbits) \
1055 rgb9plus_planar_funcs_endian(nbits, le, 0) \
1056 rgb9plus_planar_funcs_endian(nbits, be, 1)
1068 #define rgbf32_planar_funcs_endian(endian_name, endian) \
1069 static void planar_rgbf32##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \
1070 int w, int32_t *rgb2yuv) \
1072 planar_rgbf32_to_y(dst, src, w, endian, rgb2yuv); \
1074 static void planar_rgbf32##endian_name##_to_uv(uint8_t *dstU, uint8_t *dstV, \
1075 const uint8_t *src[4], int w, int32_t *rgb2yuv) \
1077 planar_rgbf32_to_uv(dstU, dstV, src, w, endian, rgb2yuv); \
1079 static void planar_rgbf32##endian_name##_to_a(uint8_t *dst, const uint8_t *src[4], \
1080 int w, int32_t *rgb2yuv) \
1082 planar_rgbf32_to_a(dst, src, w, endian, rgb2yuv); \
1084 static void grayf32##endian_name##ToY16_c(uint8_t *dst, const uint8_t *src, \
1085 const uint8_t *unused1, const uint8_t *unused2, \
1086 int width, uint32_t *unused) \
1088 grayf32ToY16_c(dst, src, unused1, unused2, width, endian, unused); \
1098 c->chrToYV12 =
NULL;
1099 switch (srcFormat) {
1125 c->readChrPlanar = planar_rgb9le_to_uv;
1129 c->readChrPlanar = planar_rgb10le_to_uv;
1133 c->readChrPlanar = planar_rgb12le_to_uv;
1136 c->readChrPlanar = planar_rgb14le_to_uv;
1140 c->readChrPlanar = planar_rgb16le_to_uv;
1144 c->readChrPlanar = planar_rgbf32le_to_uv;
1147 c->readChrPlanar = planar_rgb9be_to_uv;
1151 c->readChrPlanar = planar_rgb10be_to_uv;
1155 c->readChrPlanar = planar_rgb12be_to_uv;
1158 c->readChrPlanar = planar_rgb14be_to_uv;
1162 c->readChrPlanar = planar_rgb16be_to_uv;
1166 c->readChrPlanar = planar_rgbf32be_to_uv;
1264 if (
c->chrSrcHSubSample) {
1265 switch (srcFormat) {
1267 c->chrToYV12 = rgb64BEToUV_half_c;
1270 c->chrToYV12 = rgb64LEToUV_half_c;
1273 c->chrToYV12 = bgr64BEToUV_half_c;
1276 c->chrToYV12 = bgr64LEToUV_half_c;
1279 c->chrToYV12 = rgb48BEToUV_half_c;
1282 c->chrToYV12 = rgb48LEToUV_half_c;
1285 c->chrToYV12 = bgr48BEToUV_half_c;
1288 c->chrToYV12 = bgr48LEToUV_half_c;
1291 c->chrToYV12 = bgr32ToUV_half_c;
1294 c->chrToYV12 = bgr321ToUV_half_c;
1300 c->chrToYV12 = bgr16leToUV_half_c;
1303 c->chrToYV12 = bgr16beToUV_half_c;
1306 c->chrToYV12 = bgr15leToUV_half_c;
1309 c->chrToYV12 = bgr15beToUV_half_c;
1316 c->chrToYV12 = bgr12leToUV_half_c;
1319 c->chrToYV12 = bgr12beToUV_half_c;
1322 c->chrToYV12 = rgb32ToUV_half_c;
1325 c->chrToYV12 = rgb321ToUV_half_c;
1331 c->chrToYV12 = rgb16leToUV_half_c;
1334 c->chrToYV12 = rgb16beToUV_half_c;
1337 c->chrToYV12 = rgb15leToUV_half_c;
1340 c->chrToYV12 = rgb15beToUV_half_c;
1343 c->chrToYV12 = rgb12leToUV_half_c;
1346 c->chrToYV12 = rgb12beToUV_half_c;
1349 c->chrToYV12 = rgb30leToUV_half_c;
1352 c->chrToYV12 = bgr30leToUV_half_c;
1356 switch (srcFormat) {
1358 c->chrToYV12 = rgb64BEToUV_c;
1361 c->chrToYV12 = rgb64LEToUV_c;
1364 c->chrToYV12 = bgr64BEToUV_c;
1367 c->chrToYV12 = bgr64LEToUV_c;
1370 c->chrToYV12 = rgb48BEToUV_c;
1373 c->chrToYV12 = rgb48LEToUV_c;
1376 c->chrToYV12 = bgr48BEToUV_c;
1379 c->chrToYV12 = bgr48LEToUV_c;
1382 c->chrToYV12 = bgr32ToUV_c;
1385 c->chrToYV12 = bgr321ToUV_c;
1391 c->chrToYV12 = bgr16leToUV_c;
1394 c->chrToYV12 = bgr16beToUV_c;
1397 c->chrToYV12 = bgr15leToUV_c;
1400 c->chrToYV12 = bgr15beToUV_c;
1403 c->chrToYV12 = bgr12leToUV_c;
1406 c->chrToYV12 = bgr12beToUV_c;
1409 c->chrToYV12 = rgb32ToUV_c;
1412 c->chrToYV12 = rgb321ToUV_c;
1418 c->chrToYV12 = rgb16leToUV_c;
1421 c->chrToYV12 = rgb16beToUV_c;
1424 c->chrToYV12 = rgb15leToUV_c;
1427 c->chrToYV12 = rgb15beToUV_c;
1430 c->chrToYV12 = rgb12leToUV_c;
1433 c->chrToYV12 = rgb12beToUV_c;
1436 c->chrToYV12 = rgb30leToUV_c;
1439 c->chrToYV12 = bgr30leToUV_c;
1444 c->lumToYV12 =
NULL;
1445 c->alpToYV12 =
NULL;
1446 switch (srcFormat) {
1448 c->readLumPlanar = planar_rgb9le_to_y;
1451 c->readAlpPlanar = planar_rgb10le_to_a;
1453 c->readLumPlanar = planar_rgb10le_to_y;
1456 c->readAlpPlanar = planar_rgb12le_to_a;
1458 c->readLumPlanar = planar_rgb12le_to_y;
1461 c->readLumPlanar = planar_rgb14le_to_y;
1464 c->readAlpPlanar = planar_rgb16le_to_a;
1466 c->readLumPlanar = planar_rgb16le_to_y;
1469 c->readAlpPlanar = planar_rgbf32le_to_a;
1471 c->readLumPlanar = planar_rgbf32le_to_y;
1474 c->readLumPlanar = planar_rgb9be_to_y;
1477 c->readAlpPlanar = planar_rgb10be_to_a;
1479 c->readLumPlanar = planar_rgb10be_to_y;
1482 c->readAlpPlanar = planar_rgb12be_to_a;
1484 c->readLumPlanar = planar_rgb12be_to_y;
1487 c->readLumPlanar = planar_rgb14be_to_y;
1490 c->readAlpPlanar = planar_rgb16be_to_a;
1492 c->readLumPlanar = planar_rgb16be_to_y;
1495 c->readAlpPlanar = planar_rgbf32be_to_a;
1497 c->readLumPlanar = planar_rgbf32be_to_y;
1614 c->lumToYV12 = bgr16leToY_c;
1617 c->lumToYV12 = bgr16beToY_c;
1620 c->lumToYV12 = bgr15leToY_c;
1623 c->lumToYV12 = bgr15beToY_c;
1626 c->lumToYV12 = bgr12leToY_c;
1629 c->lumToYV12 = bgr12beToY_c;
1635 c->lumToYV12 = rgb16leToY_c;
1638 c->lumToYV12 = rgb16beToY_c;
1641 c->lumToYV12 = rgb15leToY_c;
1644 c->lumToYV12 = rgb15beToY_c;
1647 c->lumToYV12 = rgb12leToY_c;
1650 c->lumToYV12 = rgb12beToY_c;
1666 c->lumToYV12 = bgr32ToY_c;
1669 c->lumToYV12 = bgr321ToY_c;
1672 c->lumToYV12 = rgb32ToY_c;
1675 c->lumToYV12 = rgb321ToY_c;
1678 c->lumToYV12 = rgb48BEToY_c;
1681 c->lumToYV12 = rgb48LEToY_c;
1684 c->lumToYV12 = bgr48BEToY_c;
1687 c->lumToYV12 = bgr48LEToY_c;
1690 c->lumToYV12 = rgb64BEToY_c;
1693 c->lumToYV12 = rgb64LEToY_c;
1696 c->lumToYV12 = bgr64BEToY_c;
1699 c->lumToYV12 = bgr64LEToY_c;
1712 c->lumToYV12 = grayf32leToY16_c;
1715 c->lumToYV12 = grayf32beToY16_c;
1721 c->lumToYV12 = rgb30leToY_c;
1724 c->lumToYV12 = bgr30leToY_c;
1729 if (HAVE_BIGENDIAN == !
isBE(srcFormat) && !
c->readAlpPlanar)
1732 switch (srcFormat) {
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_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_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.
void ff_sws_init_input_funcs(SwsContext *c)
@ 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_RGB555BE
packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined
@ 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_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)
@ 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_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
@ AV_PIX_FMT_RGB565LE
packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), 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_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
@ 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)2R 3G 3B(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
@ 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_YUV420P9BE
The following 12 formats have the disadvantage of needing 1 format for each bit depth.
static av_always_inline int isBE(enum AVPixelFormat pix_fmt)
@ 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
@ 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_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.
@ 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_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_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_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_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
@ 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_assert1(cond)
assert() equivalent, that does not lie in speed critical code.
@ AV_PIX_FMT_NV21
as above, but U and V bytes are swapped
@ 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
@ 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_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_GBRP12BE
planar GBR 4:4:4 36bpp, big-endian
@ AV_PIX_FMT_UYVY422
packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
@ AV_PIX_FMT_YUV444P12BE
planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
@ 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, liddle-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
static int shift(int a, int b)
@ 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_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_P010LE
like NV12, with 10bpp per component, data in the high bits, zeros in the low bits,...
@ 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_GRAY14LE
Y , 14bpp, 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_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
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