Go to the documentation of this file.
38 #define input_pixel(pos) (isBE(origin) ? AV_RB16(pos) : AV_RL16(pos))
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(pattern, BE_LE, origin) \
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) \
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); \
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) \
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); \
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) \
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); \
148 const uint16_t *
src1,
149 const uint16_t *src2,
170 const uint16_t *
src1,
171 const uint16_t *src2,
197 #define rgb48funcs(pattern, BE_LE, origin) \
198 static void pattern ## 48 ## BE_LE ## ToY_c(uint8_t *_dst, \
199 const uint8_t *_src, \
200 const uint8_t *unused0, const uint8_t *unused1,\
204 const uint16_t *src = (const uint16_t *)_src; \
205 uint16_t *dst = (uint16_t *)_dst; \
206 rgb48ToY_c_template(dst, src, width, origin, rgb2yuv); \
209 static void pattern ## 48 ## BE_LE ## ToUV_c(uint8_t *_dstU, \
211 const uint8_t *unused0, \
212 const uint8_t *_src1, \
213 const uint8_t *_src2, \
217 const uint16_t *src1 = (const uint16_t *)_src1, \
218 *src2 = (const uint16_t *)_src2; \
219 uint16_t *dstU = (uint16_t *)_dstU, \
220 *dstV = (uint16_t *)_dstV; \
221 rgb48ToUV_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv); \
224 static void pattern ## 48 ## BE_LE ## ToUV_half_c(uint8_t *_dstU, \
226 const uint8_t *unused0, \
227 const uint8_t *_src1, \
228 const uint8_t *_src2, \
232 const uint16_t *src1 = (const uint16_t *)_src1, \
233 *src2 = (const uint16_t *)_src2; \
234 uint16_t *dstU = (uint16_t *)_dstU, \
235 *dstV = (uint16_t *)_dstV; \
236 rgb48ToUV_half_c_template(dstU, dstV, src1, src2, width, origin, rgb2yuv); \
244 #define input_pixel(i) ((origin == AV_PIX_FMT_RGBA || \
245 origin == AV_PIX_FMT_BGRA || \
246 origin == AV_PIX_FMT_ARGB || \
247 origin == AV_PIX_FMT_ABGR) \
248 ? AV_RN32A(&src[(i) * 4]) \
249 : (isBE(origin) ? AV_RB16(&src[(i) * 2]) \
250 : AV_RL16(&src[(i) * 2])))
258 int maskr,
int maskg,
260 int gsh,
int bsh,
int S,
264 const unsigned rnd = (32<<((
S)-1)) + (1<<(
S-7));
269 int b = (px & maskb) >> shb;
270 int g = (px & maskg) >> shg;
271 int r = (px & maskr) >> shr;
273 dst[
i] = (ry *
r + gy *
g + by *
b +
rnd) >> ((
S)-6);
284 int maskr,
int maskg,
286 int gsh,
int bsh,
int S,
291 const unsigned rnd = (256
u<<((
S)-1)) + (1<<(
S-7));
296 int b = (px & maskb) >> shb;
297 int g = (px & maskg) >> shg;
298 int r = (px & maskr) >> shr;
300 dstU[
i] = (ru *
r + gu *
g + bu *
b +
rnd) >> ((
S)-6);
301 dstV[
i] = (rv *
r + gv *
g + bv *
b +
rnd) >> ((
S)-6);
312 int maskr,
int maskg,
314 int gsh,
int bsh,
int S,
319 maskgx = ~(maskr | maskb);
320 const unsigned rnd = (256
U<<(
S)) + (1<<(
S-6));
329 int b,
r,
g = (px0 & maskgx) + (px1 & maskgx);
330 int rb = px0 + px1 -
g;
332 b = (rb & maskb) >> shb;
338 g = (
g & maskg) >> shg;
340 r = (rb & maskr) >> shr;
342 dstU[
i] = (ru *
r + gu *
g + bu *
b + (unsigned)
rnd) >> ((
S)-6+1);
343 dstV[
i] = (rv *
r + gv *
g + bv *
b + (unsigned)
rnd) >> ((
S)-6+1);
349 #define rgb16_32_wrapper(fmt, name, shr, shg, shb, shp, maskr, \
350 maskg, maskb, rsh, gsh, bsh, S) \
351 static void name ## ToY_c(uint8_t *dst, const uint8_t *src, const uint8_t *unused1, const uint8_t *unused2, \
352 int width, uint32_t *tab) \
354 rgb16_32ToY_c_template((int16_t*)dst, src, width, fmt, shr, shg, shb, shp, \
355 maskr, maskg, maskb, rsh, gsh, bsh, S, tab); \
358 static void name ## ToUV_c(uint8_t *dstU, uint8_t *dstV, \
359 const uint8_t *unused0, const uint8_t *src, const uint8_t *dummy, \
360 int width, uint32_t *tab) \
362 rgb16_32ToUV_c_template((int16_t*)dstU, (int16_t*)dstV, src, width, fmt, \
363 shr, shg, shb, shp, \
364 maskr, maskg, maskb, rsh, gsh, bsh, S, tab);\
367 static void name ## ToUV_half_c(uint8_t *dstU, uint8_t *dstV, \
368 const uint8_t *unused0, const uint8_t *src, \
369 const uint8_t *dummy, \
370 int width, uint32_t *tab) \
372 rgb16_32ToUV_half_c_template((int16_t*)dstU, (int16_t*)dstV, src, width, fmt, \
373 shr, shg, shb, shp, \
374 maskr, maskg, maskb, \
375 rsh, gsh, bsh, S, tab); \
378 rgb16_32_wrapper(
AV_PIX_FMT_BGR32, bgr32, 16, 0, 0, 0, 0xFF0000, 0xFF00, 0x00FF, 8, 0, 8,
RGB2YUV_SHIFT + 8)
379 rgb16_32_wrapper(
AV_PIX_FMT_BGR32_1,
bgr321, 16, 0, 0, 8, 0xFF0000, 0xFF00, 0x00FF, 8, 0, 8,
RGB2YUV_SHIFT + 8)
380 rgb16_32_wrapper(
AV_PIX_FMT_RGB32, rgb32, 0, 0, 16, 0, 0x00FF, 0xFF00, 0xFF0000, 8, 0, 8,
RGB2YUV_SHIFT + 8)
381 rgb16_32_wrapper(
AV_PIX_FMT_RGB32_1,
rgb321, 0, 0, 16, 8, 0x00FF, 0xFF00, 0xFF0000, 8, 0, 8,
RGB2YUV_SHIFT + 8)
382 rgb16_32_wrapper(
AV_PIX_FMT_BGR565LE, bgr16le, 0, 0, 0, 0, 0x001F, 0x07E0, 0xF800, 11, 5, 0,
RGB2YUV_SHIFT + 8)
383 rgb16_32_wrapper(
AV_PIX_FMT_BGR555LE,
bgr15le, 0, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, 10, 5, 0,
RGB2YUV_SHIFT + 7)
384 rgb16_32_wrapper(
AV_PIX_FMT_BGR444LE, bgr12le, 0, 0, 0, 0, 0x000F, 0x00F0, 0x0F00, 8, 4, 0,
RGB2YUV_SHIFT + 4)
385 rgb16_32_wrapper(
AV_PIX_FMT_RGB565LE,
rgb16le, 0, 0, 0, 0, 0xF800, 0x07E0, 0x001F, 0, 5, 11,
RGB2YUV_SHIFT + 8)
386 rgb16_32_wrapper(
AV_PIX_FMT_RGB555LE, rgb15le, 0, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, 0, 5, 10,
RGB2YUV_SHIFT + 7)
387 rgb16_32_wrapper(
AV_PIX_FMT_RGB444LE,
rgb12le, 0, 0, 0, 0, 0x0F00, 0x00F0, 0x000F, 0, 4, 8,
RGB2YUV_SHIFT + 4)
388 rgb16_32_wrapper(
AV_PIX_FMT_BGR565BE, bgr16be, 0, 0, 0, 0, 0x001F, 0x07E0, 0xF800, 11, 5, 0,
RGB2YUV_SHIFT + 8)
389 rgb16_32_wrapper(
AV_PIX_FMT_BGR555BE,
bgr15be, 0, 0, 0, 0, 0x001F, 0x03E0, 0x7C00, 10, 5, 0,
RGB2YUV_SHIFT + 7)
390 rgb16_32_wrapper(
AV_PIX_FMT_BGR444BE, bgr12be, 0, 0, 0, 0, 0x000F, 0x00F0, 0x0F00, 8, 4, 0,
RGB2YUV_SHIFT + 4)
391 rgb16_32_wrapper(
AV_PIX_FMT_RGB565BE,
rgb16be, 0, 0, 0, 0, 0xF800, 0x07E0, 0x001F, 0, 5, 11,
RGB2YUV_SHIFT + 8)
392 rgb16_32_wrapper(
AV_PIX_FMT_RGB555BE, rgb15be, 0, 0, 0, 0, 0x7C00, 0x03E0, 0x001F, 0, 5, 10,
RGB2YUV_SHIFT + 7)
393 rgb16_32_wrapper(
AV_PIX_FMT_RGB444BE,
rgb12be, 0, 0, 0, 0, 0x0F00, 0x00F0, 0x000F, 0, 4, 8,
RGB2YUV_SHIFT + 4)
399 uint16_t *dstU = (uint16_t *)_dstU;
400 uint16_t *dstV = (uint16_t *)_dstV;
406 unsigned int g = gsrc[2*
i] + gsrc[2*
i+1];
407 unsigned int b = bsrc[2*
i] + bsrc[2*
i+1];
408 unsigned int r = rsrc[2*
i] + rsrc[2*
i+1];
418 int16_t *dst = (int16_t *)_dst;
419 const uint16_t *
src = (
const uint16_t *)_src;
428 int16_t *dst = (int16_t *)_dst;
429 const uint16_t *
src = (
const uint16_t *)_src;
437 int16_t *dst = (int16_t *)_dst;
446 int16_t *dst = (int16_t *)_dst;
449 dst[
i]=
src[4*
i+3]<<6;
455 int16_t *dst = (int16_t *)_dst;
460 dst[
i]= (pal[d] >> 24)<<6;
466 int16_t *dst = (int16_t *)_dst;
471 dst[
i] = (pal[d] & 0xFF)<<6;
477 int width, uint32_t *pal)
479 uint16_t *dstU = (uint16_t *)_dstU;
480 int16_t *dstV = (int16_t *)_dstV;
484 int p = pal[
src1[
i]];
493 int16_t *dst = (int16_t *)_dst;
498 for (j = 0; j < 8; j++)
499 dst[8*
i+j]= ((d>>(7-j))&1) * 16383;
503 for (j = 0; j < (
width&7); j++)
504 dst[8*
i+j]= ((d>>(7-j))&1) * 16383;
510 int16_t *dst = (int16_t *)_dst;
515 for (j = 0; j < 8; j++)
516 dst[8*
i+j]= ((d>>(7-j))&1) * 16383;
520 for (j = 0; j < (
width&7); j++)
521 dst[8*
i+j] = ((d>>(7-j))&1) * 16383;
538 dstU[
i] =
src1[4 *
i + 1];
539 dstV[
i] =
src1[4 *
i + 3];
549 dstV[
i] =
src1[4 *
i + 1];
550 dstU[
i] =
src1[4 *
i + 3];
559 const uint16_t *
src = (
const uint16_t *)_src;
560 uint16_t *dst = (uint16_t *)_dst;
569 const uint16_t *
src1 = (
const uint16_t *)_src1,
570 *src2 = (
const uint16_t *)_src2;
571 uint16_t *dstU = (uint16_t *)_dstU, *dstV = (uint16_t *)_dstV;
644 dst[
i] =
src[2 *
i + 1];
652 dstU[
i] =
src1[4 *
i + 0];
653 dstV[
i] =
src1[4 *
i + 2];
663 dst1[
i] =
src[2 *
i + 0];
664 dst2[
i] =
src[2 *
i + 1];
670 int width, uint32_t *unused)
677 int width, uint32_t *unused)
702 int width, uint32_t *unused)
713 int width, uint32_t *unused)
724 int width, uint32_t *unused)
735 int width, uint32_t *unused)
744 #define input_pixel(pos) (isBE(origin) ? AV_RB16(pos) : AV_RL16(pos))
749 int16_t *dst = (int16_t *)_dst;
753 int b =
src[
i * 3 + 0];
754 int g =
src[
i * 3 + 1];
755 int r =
src[
i * 3 + 2];
764 int16_t *dstU = (int16_t *)_dstU;
765 int16_t *dstV = (int16_t *)_dstV;
783 int16_t *dstU = (int16_t *)_dstU;
784 int16_t *dstV = (int16_t *)_dstV;
802 int16_t *dst = (int16_t *)_dst;
806 int r =
src[
i * 3 + 0];
807 int g =
src[
i * 3 + 1];
808 int b =
src[
i * 3 + 2];
817 int16_t *dstU = (int16_t *)_dstU;
818 int16_t *dstV = (int16_t *)_dstV;
836 int16_t *dstU = (int16_t *)_dstU;
837 int16_t *dstV = (int16_t *)_dstV;
854 uint16_t *dst = (uint16_t *)_dst;
868 uint16_t *dst = (uint16_t *)_dst;
871 dst[
i] =
src[3][
i] << 6;
876 uint16_t *dstU = (uint16_t *)_dstU;
877 uint16_t *dstV = (uint16_t *)_dstV;
892 is_be ? AV_RB16(src) : AV_RL16(src)
897 const uint16_t **
src = (
const uint16_t **)_src;
898 uint16_t *dst = (uint16_t *)_dst;
900 int shift = bpc < 16 ? bpc : 14;
914 const uint16_t **
src = (
const uint16_t **)_src;
915 uint16_t *dst = (uint16_t *)_dst;
916 int shift = bpc < 16 ? bpc : 14;
928 const uint16_t **
src = (
const uint16_t **)_src;
929 uint16_t *dstU = (uint16_t *)_dstU;
930 uint16_t *dstV = (uint16_t *)_dstV;
933 int shift = bpc < 16 ? bpc : 14;
949 const float *
src = (
const float *)_src;
950 uint16_t *dst = (uint16_t *)_dst;
961 const uint32_t *
src = (
const uint32_t *)_src;
962 uint16_t *dst = (uint16_t *)_dst;
969 #define rgb9plus_planar_funcs_endian(nbits, endian_name, endian) \
970 static void planar_rgb##nbits##endian_name##_to_y(uint8_t *dst, const uint8_t *src[4], \
971 int w, int32_t *rgb2yuv) \
973 planar_rgb16_to_y(dst, src, w, nbits, endian, rgb2yuv); \
975 static void planar_rgb##nbits##endian_name##_to_uv(uint8_t *dstU, uint8_t *dstV, \
976 const uint8_t *src[4], int w, int32_t *rgb2yuv) \
978 planar_rgb16_to_uv(dstU, dstV, src, w, nbits, endian, rgb2yuv); \
981 #define rgb9plus_planar_transparency_funcs(nbits) \
982 static void planar_rgb##nbits##le_to_a(uint8_t *dst, const uint8_t *src[4], \
983 int w, int32_t *rgb2yuv) \
985 planar_rgb16_to_a(dst, src, w, nbits, 0, rgb2yuv); \
987 static void planar_rgb##nbits##be_to_a(uint8_t *dst, const uint8_t *src[4], \
988 int w, int32_t *rgb2yuv) \
990 planar_rgb16_to_a(dst, src, w, nbits, 1, rgb2yuv); \
993 #define rgb9plus_planar_funcs(nbits) \
994 rgb9plus_planar_funcs_endian(nbits, le, 0) \
995 rgb9plus_planar_funcs_endian(nbits, be, 1)
1011 c->chrToYV12 =
NULL;
1012 switch (srcFormat) {
1038 c->readChrPlanar = planar_rgb9le_to_uv;
1042 c->readChrPlanar = planar_rgb10le_to_uv;
1046 c->readChrPlanar = planar_rgb12le_to_uv;
1049 c->readChrPlanar = planar_rgb14le_to_uv;
1053 c->readChrPlanar = planar_rgb16le_to_uv;
1056 c->readChrPlanar = planar_rgb9be_to_uv;
1060 c->readChrPlanar = planar_rgb10be_to_uv;
1064 c->readChrPlanar = planar_rgb12be_to_uv;
1067 c->readChrPlanar = planar_rgb14be_to_uv;
1071 c->readChrPlanar = planar_rgb16be_to_uv;
1158 if (
c->chrSrcHSubSample) {
1159 switch (srcFormat) {
1161 c->chrToYV12 = rgb64BEToUV_half_c;
1164 c->chrToYV12 = rgb64LEToUV_half_c;
1167 c->chrToYV12 = bgr64BEToUV_half_c;
1170 c->chrToYV12 = bgr64LEToUV_half_c;
1173 c->chrToYV12 = rgb48BEToUV_half_c;
1176 c->chrToYV12 = rgb48LEToUV_half_c;
1179 c->chrToYV12 = bgr48BEToUV_half_c;
1182 c->chrToYV12 = bgr48LEToUV_half_c;
1185 c->chrToYV12 = bgr32ToUV_half_c;
1188 c->chrToYV12 = bgr321ToUV_half_c;
1194 c->chrToYV12 = bgr16leToUV_half_c;
1197 c->chrToYV12 = bgr16beToUV_half_c;
1200 c->chrToYV12 = bgr15leToUV_half_c;
1203 c->chrToYV12 = bgr15beToUV_half_c;
1210 c->chrToYV12 = bgr12leToUV_half_c;
1213 c->chrToYV12 = bgr12beToUV_half_c;
1216 c->chrToYV12 = rgb32ToUV_half_c;
1219 c->chrToYV12 = rgb321ToUV_half_c;
1225 c->chrToYV12 = rgb16leToUV_half_c;
1228 c->chrToYV12 = rgb16beToUV_half_c;
1231 c->chrToYV12 = rgb15leToUV_half_c;
1234 c->chrToYV12 = rgb15beToUV_half_c;
1237 c->chrToYV12 = rgb12leToUV_half_c;
1240 c->chrToYV12 = rgb12beToUV_half_c;
1244 switch (srcFormat) {
1246 c->chrToYV12 = rgb64BEToUV_c;
1249 c->chrToYV12 = rgb64LEToUV_c;
1252 c->chrToYV12 = bgr64BEToUV_c;
1255 c->chrToYV12 = bgr64LEToUV_c;
1258 c->chrToYV12 = rgb48BEToUV_c;
1261 c->chrToYV12 = rgb48LEToUV_c;
1264 c->chrToYV12 = bgr48BEToUV_c;
1267 c->chrToYV12 = bgr48LEToUV_c;
1270 c->chrToYV12 = bgr32ToUV_c;
1273 c->chrToYV12 = bgr321ToUV_c;
1279 c->chrToYV12 = bgr16leToUV_c;
1282 c->chrToYV12 = bgr16beToUV_c;
1285 c->chrToYV12 = bgr15leToUV_c;
1288 c->chrToYV12 = bgr15beToUV_c;
1291 c->chrToYV12 = bgr12leToUV_c;
1294 c->chrToYV12 = bgr12beToUV_c;
1297 c->chrToYV12 = rgb32ToUV_c;
1300 c->chrToYV12 = rgb321ToUV_c;
1306 c->chrToYV12 = rgb16leToUV_c;
1309 c->chrToYV12 = rgb16beToUV_c;
1312 c->chrToYV12 = rgb15leToUV_c;
1315 c->chrToYV12 = rgb15beToUV_c;
1318 c->chrToYV12 = rgb12leToUV_c;
1321 c->chrToYV12 = rgb12beToUV_c;
1326 c->lumToYV12 =
NULL;
1327 c->alpToYV12 =
NULL;
1328 switch (srcFormat) {
1330 c->readLumPlanar = planar_rgb9le_to_y;
1333 c->readAlpPlanar = planar_rgb10le_to_a;
1335 c->readLumPlanar = planar_rgb10le_to_y;
1338 c->readAlpPlanar = planar_rgb12le_to_a;
1340 c->readLumPlanar = planar_rgb12le_to_y;
1343 c->readLumPlanar = planar_rgb14le_to_y;
1346 c->readAlpPlanar = planar_rgb16le_to_a;
1348 c->readLumPlanar = planar_rgb16le_to_y;
1351 c->readLumPlanar = planar_rgb9be_to_y;
1354 c->readAlpPlanar = planar_rgb10be_to_a;
1356 c->readLumPlanar = planar_rgb10be_to_y;
1359 c->readAlpPlanar = planar_rgb12be_to_a;
1361 c->readLumPlanar = planar_rgb12be_to_y;
1364 c->readLumPlanar = planar_rgb14be_to_y;
1367 c->readAlpPlanar = planar_rgb16be_to_a;
1369 c->readLumPlanar = planar_rgb16be_to_y;
1482 c->lumToYV12 = bgr16leToY_c;
1485 c->lumToYV12 = bgr16beToY_c;
1488 c->lumToYV12 = bgr15leToY_c;
1491 c->lumToYV12 = bgr15beToY_c;
1494 c->lumToYV12 = bgr12leToY_c;
1497 c->lumToYV12 = bgr12beToY_c;
1503 c->lumToYV12 = rgb16leToY_c;
1506 c->lumToYV12 = rgb16beToY_c;
1509 c->lumToYV12 = rgb15leToY_c;
1512 c->lumToYV12 = rgb15beToY_c;
1515 c->lumToYV12 = rgb12leToY_c;
1518 c->lumToYV12 = rgb12beToY_c;
1534 c->lumToYV12 = bgr32ToY_c;
1537 c->lumToYV12 = bgr321ToY_c;
1540 c->lumToYV12 = rgb32ToY_c;
1543 c->lumToYV12 = rgb321ToY_c;
1546 c->lumToYV12 = rgb48BEToY_c;
1549 c->lumToYV12 = rgb48LEToY_c;
1552 c->lumToYV12 = bgr48BEToY_c;
1555 c->lumToYV12 = bgr48LEToY_c;
1558 c->lumToYV12 = rgb64BEToY_c;
1561 c->lumToYV12 = rgb64LEToY_c;
1564 c->lumToYV12 = bgr64BEToY_c;
1567 c->lumToYV12 = bgr64LEToY_c;
1592 if (HAVE_BIGENDIAN == !
isBE(srcFormat) && !
c->readAlpPlanar)
1595 switch (srcFormat) {
@ 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_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...
static void fn() rgb2yuv(uint8_t *_yuv[3], const ptrdiff_t yuv_stride[3], int16_t *rgb[3], ptrdiff_t s, int w, int h, const int16_t rgb2yuv_coeffs[3][3][8], const int16_t yuv_offset[8])
@ 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
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,...
@ 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
static av_always_inline float av_int2float(uint32_t i)
Reinterpret a 32-bit integer as a float.
@ 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_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_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_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_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_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_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_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_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_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_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_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