Go to the source code of this file.
|
void | SDL_SetYUVConversionMode (SDL_YUV_CONVERSION_MODE mode) |
| Set the YUV conversion mode. More...
|
|
SDL_YUV_CONVERSION_MODE | SDL_GetYUVConversionMode () |
| Get the YUV conversion mode. More...
|
|
SDL_YUV_CONVERSION_MODE | SDL_GetYUVConversionModeForResolution (int width, int height) |
| Get the YUV conversion mode, returning the correct mode for the resolution when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC. More...
|
|
static int | GetYUVConversionType (int width, int height, YCbCrType *yuv_type) |
|
static SDL_bool | IsPlanar2x2Format (Uint32 format) |
|
static SDL_bool | IsPacked4Format (Uint32 format) |
|
static int | GetYUVPlanes (int width, int height, Uint32 format, const void *yuv, int yuv_pitch, const Uint8 **y, const Uint8 **u, const Uint8 **v, Uint32 *y_stride, Uint32 *uv_stride) |
|
static SDL_bool | yuv_rgb_sse (Uint32 src_format, Uint32 dst_format, Uint32 width, Uint32 height, const Uint8 *y, const Uint8 *u, const Uint8 *v, Uint32 y_stride, Uint32 uv_stride, Uint8 *rgb, Uint32 rgb_stride, YCbCrType yuv_type) |
|
static SDL_bool | yuv_rgb_std (Uint32 src_format, Uint32 dst_format, Uint32 width, Uint32 height, const Uint8 *y, const Uint8 *u, const Uint8 *v, Uint32 y_stride, Uint32 uv_stride, Uint8 *rgb, Uint32 rgb_stride, YCbCrType yuv_type) |
|
int | SDL_ConvertPixels_YUV_to_RGB (int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_ARGB8888_to_YUV (int width, int height, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch) |
|
int | SDL_ConvertPixels_RGB_to_YUV (int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_YUV_to_YUV_Copy (int width, int height, Uint32 format, const void *src, int src_pitch, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_SwapUVPlanes (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_PackUVPlanes_to_NV (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch, SDL_bool reverseUV) |
|
static int | SDL_ConvertPixels_SplitNV_to_UVPlanes (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch, SDL_bool reverseUV) |
|
static int | SDL_ConvertPixels_SwapNV (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_Planar2x2_to_Planar2x2 (int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_YUY2_to_UYVY (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_YUY2_to_YVYU (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_UYVY_to_YUY2 (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_UYVY_to_YVYU (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_YVYU_to_YUY2 (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_YVYU_to_UYVY (int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_Packed4_to_Packed4 (int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_Planar2x2_to_Packed4 (int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch) |
|
static int | SDL_ConvertPixels_Packed4_to_Planar2x2 (int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch) |
|
int | SDL_ConvertPixels_YUV_to_YUV (int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch) |
|
◆ MAKE_U
#define MAKE_U |
( |
|
r, |
|
|
|
g, |
|
|
|
b |
|
) |
| (Uint8)((int)(cvt->u[0] * (r) + cvt->u[1] * (g) + cvt->u[2] * (b) + 0.5f) + 128) |
◆ MAKE_V
#define MAKE_V |
( |
|
r, |
|
|
|
g, |
|
|
|
b |
|
) |
| (Uint8)((int)(cvt->v[0] * (r) + cvt->v[1] * (g) + cvt->v[2] * (b) + 0.5f) + 128) |
◆ MAKE_Y
#define MAKE_Y |
( |
|
r, |
|
|
|
g, |
|
|
|
b |
|
) |
| (Uint8)((int)(cvt->y[0] * (r) + cvt->y[1] * (g) + cvt->y[2] * (b) + 0.5f) + cvt->y_offset) |
◆ READ_1x1_PIXEL
Value:
const
Uint32 r = (
p & 0x00ff0000) >> 16; \
const
Uint32 g = (
p & 0x0000ff00) >> 8; \
◆ READ_1x2_PIXELS
Value:
const
Uint32 r = ((p1 & 0x00ff0000) + (p2 & 0x00ff0000)) >> 17; \
const
Uint32 g = ((p1 & 0x0000ff00) + (p2 & 0x0000ff00)) >> 9; \
const
Uint32 b = ((p1 & 0x000000ff) + (p2 & 0x000000ff)) >> 1; \
◆ READ_2x1_PIXELS
Value:
const
Uint32 r = ((p1 & 0x00ff0000) + (p2 & 0x00ff0000)) >> 17; \
const
Uint32 g = ((p1 & 0x0000ff00) + (p2 & 0x0000ff00)) >> 9; \
const
Uint32 b = ((p1 & 0x000000ff) + (p2 & 0x000000ff)) >> 1; \
◆ READ_2x2_PIXELS
Value:
const
Uint32 r = ((p1 & 0x00ff0000) + (p2 & 0x00ff0000) + (p3 & 0x00ff0000) + (p4 & 0x00ff0000)) >> 18; \
const
Uint32 g = ((p1 & 0x0000ff00) + (p2 & 0x0000ff00) + (p3 & 0x0000ff00) + (p4 & 0x0000ff00)) >> 10; \
const
Uint32 b = ((p1 & 0x000000ff) + (p2 & 0x000000ff) + (p3 & 0x000000ff) + (p4 & 0x000000ff)) >> 2; \
◆ READ_ONE_RGB_PIXEL
◆ READ_TWO_RGB_PIXELS
#define READ_TWO_RGB_PIXELS |
Value:
const
Uint32 r = (
p & 0x00ff0000) >> 16; \
const
Uint32 g = (
p & 0x0000ff00) >> 8; \
const
Uint32 r1 = (p1 & 0x00ff0000) >> 16; \
const
Uint32 g1 = (p1 & 0x0000ff00) >> 8; \
const
Uint32 b1 = (p1 & 0x000000ff); \
◆ SDL_YUV_SD_THRESHOLD
#define SDL_YUV_SD_THRESHOLD 576 |
◆ GetYUVConversionType()
static int GetYUVConversionType |
( |
int |
width, |
|
|
int |
height, |
|
|
YCbCrType * |
yuv_type |
|
) |
| |
|
static |
◆ GetYUVPlanes()
static int GetYUVPlanes |
( |
int |
width, |
|
|
int |
height, |
|
|
Uint32 |
format, |
|
|
const void * |
yuv, |
|
|
int |
yuv_pitch, |
|
|
const Uint8 ** |
y, |
|
|
const Uint8 ** |
u, |
|
|
const Uint8 ** |
v, |
|
|
Uint32 * |
y_stride, |
|
|
Uint32 * |
uv_stride |
|
) |
| |
|
static |
Definition at line 94 of file SDL_yuv.c.
98 int pitches[3] = { 0, 0, 0 };
103 pitches[0] = yuv_pitch;
104 pitches[1] = (pitches[0] + 1) / 2;
105 pitches[2] = (pitches[0] + 1) / 2;
106 planes[0] = (
const Uint8 *)yuv;
107 planes[1] = planes[0] + pitches[0] *
height;
108 planes[2] = planes[1] + pitches[1] * ((
height + 1) / 2);
113 pitches[0] = yuv_pitch;
114 planes[0] = (
const Uint8 *)yuv;
118 pitches[0] = yuv_pitch;
119 pitches[1] = 2 * ((pitches[0] + 1) / 2);
120 planes[0] = (
const Uint8 *)yuv;
121 planes[1] = planes[0] + pitches[0] *
height;
130 *y_stride = pitches[0];
133 *uv_stride = pitches[1];
137 *y_stride = pitches[0];
140 *uv_stride = pitches[1];
144 *y_stride = pitches[0];
147 *uv_stride = pitches[0];
151 *y_stride = pitches[0];
154 *uv_stride = pitches[0];
158 *y_stride = pitches[0];
161 *uv_stride = pitches[0];
165 *y_stride = pitches[0];
168 *uv_stride = pitches[1];
172 *y_stride = pitches[0];
175 *uv_stride = pitches[1];
References NULL, SDL_GetPixelFormatName, SDL_PIXELFORMAT_IYUV, SDL_PIXELFORMAT_NV12, SDL_PIXELFORMAT_NV21, SDL_PIXELFORMAT_UYVY, SDL_PIXELFORMAT_YUY2, SDL_PIXELFORMAT_YV12, SDL_PIXELFORMAT_YVYU, and SDL_SetError.
Referenced by SDL_ConvertPixels_ARGB8888_to_YUV(), SDL_ConvertPixels_Packed4_to_Planar2x2(), SDL_ConvertPixels_Planar2x2_to_Packed4(), SDL_ConvertPixels_RGB_to_YUV(), and SDL_ConvertPixels_YUV_to_RGB().
◆ IsPacked4Format()
◆ IsPlanar2x2Format()
◆ SDL_ConvertPixels_ARGB8888_to_YUV()
static int SDL_ConvertPixels_ARGB8888_to_YUV |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
Uint32 |
dst_format, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 460 of file SDL_yuv.c.
462 const int src_pitch_x_2 = src_pitch * 2;
463 const int height_half =
height / 2;
464 const int height_remainder = (
height & 0x1);
465 const int width_half =
width / 2;
466 const int width_remainder = (
width & 0x1);
474 { 0.2990f, 0.5870f, 0.1140f },
475 { -0.1687f, -0.3313f, 0.5000f },
476 { 0.5000f, -0.4187f, -0.0813f },
481 { 0.2568f, 0.5041f, 0.0979f },
482 { -0.1482f, -0.2910f, 0.4392f },
483 { 0.4392f, -0.3678f, -0.0714f },
488 { 0.1826f, 0.6142f, 0.0620f },
489 {-0.1006f, -0.3386f, 0.4392f },
490 { 0.4392f, -0.3989f, -0.0403f },
495 #define MAKE_Y(r, g, b) (Uint8)((int)(cvt->y[0] * (r) + cvt->y[1] * (g) + cvt->y[2] * (b) + 0.5f) + cvt->y_offset)
496 #define MAKE_U(r, g, b) (Uint8)((int)(cvt->u[0] * (r) + cvt->u[1] * (g) + cvt->u[2] * (b) + 0.5f) + 128)
497 #define MAKE_V(r, g, b) (Uint8)((int)(cvt->v[0] * (r) + cvt->v[1] * (g) + cvt->v[2] * (b) + 0.5f) + 128)
499 #define READ_2x2_PIXELS \
500 const Uint32 p1 = ((const Uint32 *)curr_row)[2 * i]; \
501 const Uint32 p2 = ((const Uint32 *)curr_row)[2 * i + 1]; \
502 const Uint32 p3 = ((const Uint32 *)next_row)[2 * i]; \
503 const Uint32 p4 = ((const Uint32 *)next_row)[2 * i + 1]; \
504 const Uint32 r = ((p1 & 0x00ff0000) + (p2 & 0x00ff0000) + (p3 & 0x00ff0000) + (p4 & 0x00ff0000)) >> 18; \
505 const Uint32 g = ((p1 & 0x0000ff00) + (p2 & 0x0000ff00) + (p3 & 0x0000ff00) + (p4 & 0x0000ff00)) >> 10; \
506 const Uint32 b = ((p1 & 0x000000ff) + (p2 & 0x000000ff) + (p3 & 0x000000ff) + (p4 & 0x000000ff)) >> 2; \
508 #define READ_2x1_PIXELS \
509 const Uint32 p1 = ((const Uint32 *)curr_row)[2 * i]; \
510 const Uint32 p2 = ((const Uint32 *)next_row)[2 * i]; \
511 const Uint32 r = ((p1 & 0x00ff0000) + (p2 & 0x00ff0000)) >> 17; \
512 const Uint32 g = ((p1 & 0x0000ff00) + (p2 & 0x0000ff00)) >> 9; \
513 const Uint32 b = ((p1 & 0x000000ff) + (p2 & 0x000000ff)) >> 1; \
515 #define READ_1x2_PIXELS \
516 const Uint32 p1 = ((const Uint32 *)curr_row)[2 * i]; \
517 const Uint32 p2 = ((const Uint32 *)curr_row)[2 * i + 1]; \
518 const Uint32 r = ((p1 & 0x00ff0000) + (p2 & 0x00ff0000)) >> 17; \
519 const Uint32 g = ((p1 & 0x0000ff00) + (p2 & 0x0000ff00)) >> 9; \
520 const Uint32 b = ((p1 & 0x000000ff) + (p2 & 0x000000ff)) >> 1; \
522 #define READ_1x1_PIXEL \
523 const Uint32 p = ((const Uint32 *)curr_row)[2 * i]; \
524 const Uint32 r = (p & 0x00ff0000) >> 16; \
525 const Uint32 g = (p & 0x0000ff00) >> 8; \
526 const Uint32 b = (p & 0x000000ff); \
528 #define READ_TWO_RGB_PIXELS \
529 const Uint32 p = ((const Uint32 *)curr_row)[2 * i]; \
530 const Uint32 r = (p & 0x00ff0000) >> 16; \
531 const Uint32 g = (p & 0x0000ff00) >> 8; \
532 const Uint32 b = (p & 0x000000ff); \
533 const Uint32 p1 = ((const Uint32 *)curr_row)[2 * i + 1]; \
534 const Uint32 r1 = (p1 & 0x00ff0000) >> 16; \
535 const Uint32 g1 = (p1 & 0x0000ff00) >> 8; \
536 const Uint32 b1 = (p1 & 0x000000ff); \
537 const Uint32 R = (r + r1)/2; \
538 const Uint32 G = (g + g1)/2; \
539 const Uint32 B = (b + b1)/2; \
541 #define READ_ONE_RGB_PIXEL READ_1x1_PIXEL
550 const Uint8 *curr_row, *next_row;
555 Uint8 *plane_interleaved_uv;
556 Uint32 y_stride, uv_stride, y_skip, uv_skip;
559 (
const Uint8 **)&plane_y, (
const Uint8 **)&plane_u, (
const Uint8 **)&plane_v,
560 &y_stride, &uv_stride);
561 plane_interleaved_uv = (plane_y +
height * y_stride);
562 y_skip = (y_stride -
width);
570 const Uint32 r = (p1 & 0x00ff0000) >> 16;
571 const Uint32 g = (p1 & 0x0000ff00) >> 8;
572 const Uint32 b = (p1 & 0x000000ff);
576 curr_row += src_pitch;
581 next_row += src_pitch;
586 uv_skip = (uv_stride - (
width + 1)/2);
587 for (
j = 0;
j < height_half;
j++) {
588 for (
i = 0;
i < width_half;
i++) {
593 if (width_remainder) {
600 curr_row += src_pitch_x_2;
601 next_row += src_pitch_x_2;
603 if (height_remainder) {
604 for (
i = 0;
i < width_half;
i++) {
609 if (width_remainder) {
620 uv_skip = (uv_stride - ((
width + 1)/2)*2);
621 for (
j = 0;
j < height_half;
j++) {
622 for (
i = 0;
i < width_half;
i++) {
624 *plane_interleaved_uv++ =
MAKE_U(
r,
g,
b);
625 *plane_interleaved_uv++ =
MAKE_V(
r,
g,
b);
627 if (width_remainder) {
629 *plane_interleaved_uv++ =
MAKE_U(
r,
g,
b);
630 *plane_interleaved_uv++ =
MAKE_V(
r,
g,
b);
632 plane_interleaved_uv += uv_skip;
633 curr_row += src_pitch_x_2;
634 next_row += src_pitch_x_2;
636 if (height_remainder) {
637 for (
i = 0;
i < width_half;
i++) {
639 *plane_interleaved_uv++ =
MAKE_U(
r,
g,
b);
640 *plane_interleaved_uv++ =
MAKE_V(
r,
g,
b);
642 if (width_remainder) {
644 *plane_interleaved_uv++ =
MAKE_U(
r,
g,
b);
645 *plane_interleaved_uv++ =
MAKE_V(
r,
g,
b);
651 uv_skip = (uv_stride - ((
width + 1)/2)*2);
652 for (
j = 0;
j < height_half;
j++) {
653 for (
i = 0;
i < width_half;
i++) {
655 *plane_interleaved_uv++ =
MAKE_V(
r,
g,
b);
656 *plane_interleaved_uv++ =
MAKE_U(
r,
g,
b);
658 if (width_remainder) {
660 *plane_interleaved_uv++ =
MAKE_V(
r,
g,
b);
661 *plane_interleaved_uv++ =
MAKE_U(
r,
g,
b);
663 plane_interleaved_uv += uv_skip;
664 curr_row += src_pitch_x_2;
665 next_row += src_pitch_x_2;
667 if (height_remainder) {
668 for (
i = 0;
i < width_half;
i++) {
670 *plane_interleaved_uv++ =
MAKE_V(
r,
g,
b);
671 *plane_interleaved_uv++ =
MAKE_U(
r,
g,
b);
673 if (width_remainder) {
675 *plane_interleaved_uv++ =
MAKE_V(
r,
g,
b);
676 *plane_interleaved_uv++ =
MAKE_U(
r,
g,
b);
689 const int row_size = (4 * ((
width + 1) / 2));
692 if (dst_pitch < row_size) {
693 return SDL_SetError(
"Destination pitch is too small, expected at least %d\n", row_size);
695 plane_skip = (dst_pitch - row_size);
701 for (
i = 0;
i < width_half;
i++) {
706 *plane++ =
MAKE_Y(r1, g1, b1);
709 if (width_remainder) {
718 curr_row += src_pitch;
724 for (
i = 0;
i < width_half;
i++) {
730 *plane++ =
MAKE_Y(r1, g1, b1);
732 if (width_remainder) {
741 curr_row += src_pitch;
747 for (
i = 0;
i < width_half;
i++) {
752 *plane++ =
MAKE_Y(r1, g1, b1);
755 if (width_remainder) {
764 curr_row += src_pitch;
776 #undef READ_2x2_PIXELS
777 #undef READ_2x1_PIXELS
778 #undef READ_1x2_PIXELS
779 #undef READ_1x1_PIXEL
780 #undef READ_TWO_RGB_PIXELS
781 #undef READ_ONE_RGB_PIXEL
References G, GetYUVPlanes(), i, j, MAKE_U, MAKE_V, MAKE_Y, READ_1x1_PIXEL, READ_1x2_PIXELS, READ_2x1_PIXELS, READ_2x2_PIXELS, READ_ONE_RGB_PIXEL, READ_TWO_RGB_PIXELS, SDL_GetPixelFormatName, SDL_GetYUVConversionModeForResolution(), SDL_PIXELFORMAT_IYUV, SDL_PIXELFORMAT_NV12, SDL_PIXELFORMAT_NV21, SDL_PIXELFORMAT_UYVY, SDL_PIXELFORMAT_YUY2, SDL_PIXELFORMAT_YV12, SDL_PIXELFORMAT_YVYU, SDL_SetError, and SDL_YUV_CONVERSION_BT709.
Referenced by SDL_ConvertPixels_RGB_to_YUV().
◆ SDL_ConvertPixels_Packed4_to_Packed4()
static int SDL_ConvertPixels_Packed4_to_Packed4 |
( |
int |
width, |
|
|
int |
height, |
|
|
Uint32 |
src_format, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
Uint32 |
dst_format, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1498 of file SDL_yuv.c.
1502 switch (src_format) {
1504 switch (dst_format) {
1514 switch (dst_format) {
1524 switch (dst_format) {
References SDL_ConvertPixels_UYVY_to_YUY2(), SDL_ConvertPixels_UYVY_to_YVYU(), SDL_ConvertPixels_YUY2_to_UYVY(), SDL_ConvertPixels_YUY2_to_YVYU(), SDL_ConvertPixels_YVYU_to_UYVY(), SDL_ConvertPixels_YVYU_to_YUY2(), SDL_GetPixelFormatName, SDL_PIXELFORMAT_UYVY, SDL_PIXELFORMAT_YUY2, SDL_PIXELFORMAT_YVYU, and SDL_SetError.
Referenced by SDL_ConvertPixels_YUV_to_YUV().
◆ SDL_ConvertPixels_Packed4_to_Planar2x2()
static int SDL_ConvertPixels_Packed4_to_Planar2x2 |
( |
int |
width, |
|
|
int |
height, |
|
|
Uint32 |
src_format, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
Uint32 |
dst_format, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1683 of file SDL_yuv.c.
1688 const Uint8 *
srcY1, *srcY2, *srcU1, *srcU2, *srcV1, *srcV2;
1689 Uint32 srcY_pitch, srcUV_pitch;
1692 Uint32 dstY_pitch, dstUV_pitch;
1693 Uint32 dstY_pitch_left, dstUV_pitch_left, dstUV_pixel_stride;
1696 return SDL_SetError(
"Can't change YUV plane types in-place");
1700 &
srcY1, &srcU1, &srcV1, &srcY_pitch, &srcUV_pitch) < 0) {
1703 srcY2 =
srcY1 + srcY_pitch;
1704 srcU2 = srcU1 + srcUV_pitch;
1705 srcV2 = srcV1 + srcUV_pitch;
1706 src_pitch_left = (srcY_pitch - 4*((
width + 1)/2));
1710 &dstY_pitch, &dstUV_pitch) < 0) {
1713 dstY2 =
dstY1 + dstY_pitch;
1714 dstY_pitch_left = (dstY_pitch -
width);
1717 dstUV_pixel_stride = 2;
1718 dstUV_pitch_left = (dstUV_pitch - 2*((
width + 1)/2));
1720 dstUV_pixel_stride = 1;
1721 dstUV_pitch_left = (dstUV_pitch - ((
width + 1)/2));
1726 for (
x = 0;
x < (
width - 1);
x += 2) {
1746 dstU += dstUV_pixel_stride;
1747 dstV += dstUV_pixel_stride;
1771 dstU += dstUV_pixel_stride;
1772 dstV += dstUV_pixel_stride;
1775 srcY1 += src_pitch_left + srcY_pitch;
1776 srcY2 += src_pitch_left + srcY_pitch;
1777 srcU1 += src_pitch_left + srcUV_pitch;
1778 srcU2 += src_pitch_left + srcUV_pitch;
1779 srcV1 += src_pitch_left + srcUV_pitch;
1780 srcV2 += src_pitch_left + srcUV_pitch;
1781 dstY1 += dstY_pitch_left + dstY_pitch;
1782 dstY2 += dstY_pitch_left + dstY_pitch;
1783 dstU += dstUV_pitch_left;
1784 dstV += dstUV_pitch_left;
1789 for (
x = 0;
x < (
width - 1);
x += 2) {
1800 dstU += dstUV_pixel_stride;
1801 dstV += dstUV_pixel_stride;
References GetYUVPlanes(), SDL_PIXELFORMAT_NV12, SDL_PIXELFORMAT_NV21, and SDL_SetError.
Referenced by SDL_ConvertPixels_YUV_to_YUV().
◆ SDL_ConvertPixels_PackUVPlanes_to_NV()
static int SDL_ConvertPixels_PackUVPlanes_to_NV |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch, |
|
|
SDL_bool |
reverseUV |
|
) |
| |
|
static |
Definition at line 954 of file SDL_yuv.c.
957 const int UVwidth = (
width + 1)/2;
958 const int UVheight = (
height + 1)/2;
959 const int srcUVPitch = ((src_pitch + 1)/2);
960 const int srcUVPitchLeft = srcUVPitch - UVwidth;
961 const int dstUVPitch = ((dst_pitch + 1)/2)*2;
962 const int dstUVPitchLeft = dstUVPitch - UVwidth*2;
963 const Uint8 *src1, *src2;
986 src1 = src2 + UVheight * srcUVPitch;
989 src2 = src1 + UVheight * srcUVPitch;
999 __m128i
u = _mm_loadu_si128((__m128i *)src1);
1000 __m128i
v = _mm_loadu_si128((__m128i *)src2);
1001 __m128i uv1 = _mm_unpacklo_epi8(
u,
v);
1002 __m128i uv2 = _mm_unpackhi_epi8(
u,
v);
1003 _mm_storeu_si128((__m128i*)dstUV, uv1);
1004 _mm_storeu_si128((__m128i*)(dstUV + 16), uv2);
1016 src1 += srcUVPitchLeft;
1017 src2 += srcUVPitchLeft;
1018 dstUV += dstUVPitchLeft;
References NULL, SDL_free, SDL_HasSSE2, SDL_malloc, SDL_memcpy, SDL_OutOfMemory, and RGB2YUVFactors::u.
Referenced by SDL_ConvertPixels_Planar2x2_to_Planar2x2().
◆ SDL_ConvertPixels_Planar2x2_to_Packed4()
static int SDL_ConvertPixels_Planar2x2_to_Packed4 |
( |
int |
width, |
|
|
int |
height, |
|
|
Uint32 |
src_format, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
Uint32 |
dst_format, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1540 of file SDL_yuv.c.
1546 Uint32 srcY_pitch, srcUV_pitch;
1547 Uint32 srcY_pitch_left, srcUV_pitch_left, srcUV_pixel_stride;
1548 Uint8 *
dstY1, *dstY2, *dstU1, *dstU2, *dstV1, *dstV2;
1549 Uint32 dstY_pitch, dstUV_pitch;
1553 return SDL_SetError(
"Can't change YUV plane types in-place");
1557 &
srcY1, &srcU, &srcV, &srcY_pitch, &srcUV_pitch) < 0) {
1560 srcY2 =
srcY1 + srcY_pitch;
1561 srcY_pitch_left = (srcY_pitch -
width);
1564 srcUV_pixel_stride = 2;
1565 srcUV_pitch_left = (srcUV_pitch - 2*((
width + 1)/2));
1567 srcUV_pixel_stride = 1;
1568 srcUV_pitch_left = (srcUV_pitch - ((
width + 1)/2));
1573 &dstY_pitch, &dstUV_pitch) < 0) {
1576 dstY2 =
dstY1 + dstY_pitch;
1577 dstU2 = dstU1 + dstUV_pitch;
1578 dstV2 = dstV1 + dstUV_pitch;
1579 dst_pitch_left = (dstY_pitch - 4*((
width + 1)/2));
1583 for (
x = 0;
x < (
width - 1);
x += 2) {
1600 srcU += srcUV_pixel_stride;
1601 srcV += srcUV_pixel_stride;
1626 srcU += srcUV_pixel_stride;
1627 srcV += srcUV_pixel_stride;
1634 srcY1 += srcY_pitch_left + srcY_pitch;
1635 srcY2 += srcY_pitch_left + srcY_pitch;
1636 srcU += srcUV_pitch_left;
1637 srcV += srcUV_pitch_left;
1638 dstY1 += dst_pitch_left + dstY_pitch;
1639 dstY2 += dst_pitch_left + dstY_pitch;
1640 dstU1 += dst_pitch_left + dstUV_pitch;
1641 dstU2 += dst_pitch_left + dstUV_pitch;
1642 dstV1 += dst_pitch_left + dstUV_pitch;
1643 dstV2 += dst_pitch_left + dstUV_pitch;
1648 for (
x = 0;
x < (
width - 1);
x += 2) {
1657 srcU += srcUV_pixel_stride;
1658 srcV += srcUV_pixel_stride;
1673 srcU += srcUV_pixel_stride;
1674 srcV += srcUV_pixel_stride;
References GetYUVPlanes(), SDL_PIXELFORMAT_NV12, SDL_PIXELFORMAT_NV21, and SDL_SetError.
Referenced by SDL_ConvertPixels_YUV_to_YUV().
◆ SDL_ConvertPixels_Planar2x2_to_Planar2x2()
static int SDL_ConvertPixels_Planar2x2_to_Planar2x2 |
( |
int |
width, |
|
|
int |
height, |
|
|
Uint32 |
src_format, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
Uint32 |
dst_format, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1155 of file SDL_yuv.c.
1171 switch (src_format) {
1173 switch (dst_format) {
1185 switch (dst_format) {
1197 switch (dst_format) {
1209 switch (dst_format) {
References i, SDL_ConvertPixels_PackUVPlanes_to_NV(), SDL_ConvertPixels_SplitNV_to_UVPlanes(), SDL_ConvertPixels_SwapNV(), SDL_ConvertPixels_SwapUVPlanes(), SDL_FALSE, SDL_GetPixelFormatName, SDL_memcpy, SDL_PIXELFORMAT_IYUV, SDL_PIXELFORMAT_NV12, SDL_PIXELFORMAT_NV21, SDL_PIXELFORMAT_YV12, SDL_SetError, and SDL_TRUE.
Referenced by SDL_ConvertPixels_YUV_to_YUV().
◆ SDL_ConvertPixels_RGB_to_YUV()
int SDL_ConvertPixels_RGB_to_YUV |
( |
int |
width, |
|
|
int |
height, |
|
|
Uint32 |
src_format, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
Uint32 |
dst_format, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
Definition at line 786 of file SDL_yuv.c.
References GetYUVConversionType(), GetYUVPlanes(), NULL, rgb24_yuv420_std(), SDL_ConvertPixels, SDL_ConvertPixels_ARGB8888_to_YUV(), SDL_free, SDL_malloc, SDL_OutOfMemory, SDL_PIXELFORMAT_ARGB8888, SDL_PIXELFORMAT_RGB24, and RGB2YUVFactors::u.
Referenced by SDL_ConvertPixels().
◆ SDL_ConvertPixels_SplitNV_to_UVPlanes()
static int SDL_ConvertPixels_SplitNV_to_UVPlanes |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch, |
|
|
SDL_bool |
reverseUV |
|
) |
| |
|
static |
Definition at line 1028 of file SDL_yuv.c.
1031 const int UVwidth = (
width + 1)/2;
1032 const int UVheight = (
height + 1)/2;
1033 const int srcUVPitch = ((src_pitch + 1)/2)*2;
1034 const int srcUVPitchLeft = srcUVPitch - UVwidth*2;
1035 const int dstUVPitch = ((dst_pitch + 1)/2);
1036 const int dstUVPitchLeft = dstUVPitch - UVwidth;
1060 dst1 = dst2 + UVheight * dstUVPitch;
1063 dst2 = dst1 + UVheight * dstUVPitch;
1072 __m128i
mask = _mm_set1_epi16(0x00FF);
1074 __m128i uv1 = _mm_loadu_si128((__m128i*)srcUV);
1075 __m128i uv2 = _mm_loadu_si128((__m128i*)(srcUV+16));
1076 __m128i
u1 = _mm_and_si128(uv1,
mask);
1077 __m128i
u2 = _mm_and_si128(uv2,
mask);
1078 __m128i
u = _mm_packus_epi16(
u1,
u2);
1079 __m128i
v1 = _mm_srli_epi16(uv1, 8);
1080 __m128i
v2 = _mm_srli_epi16(uv2, 8);
1081 __m128i
v = _mm_packus_epi16(
v1,
v2);
1082 _mm_storeu_si128((__m128i*)dst1,
u);
1083 _mm_storeu_si128((__m128i*)dst2,
v);
1095 srcUV += srcUVPitchLeft;
1096 dst1 += dstUVPitchLeft;
1097 dst2 += dstUVPitchLeft;
References NULL, SDL_free, SDL_HasSSE2, SDL_malloc, SDL_memcpy, SDL_OutOfMemory, and RGB2YUVFactors::u.
Referenced by SDL_ConvertPixels_Planar2x2_to_Planar2x2().
◆ SDL_ConvertPixels_SwapNV()
static int SDL_ConvertPixels_SwapNV |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1107 of file SDL_yuv.c.
1110 const int UVwidth = (
width + 1)/2;
1111 const int UVheight = (
height + 1)/2;
1112 const int srcUVPitch = ((src_pitch + 1)/2)*2;
1113 const int srcUVPitchLeft = (srcUVPitch - UVwidth*2)/
sizeof(
Uint16);
1114 const int dstUVPitch = ((dst_pitch + 1)/2)*2;
1115 const int dstUVPitchLeft = (dstUVPitch - UVwidth*2)/
sizeof(
Uint16);
1134 __m128i uv = _mm_loadu_si128((__m128i*)srcUV);
1135 __m128i
v = _mm_slli_epi16(uv, 8);
1136 __m128i
u = _mm_srli_epi16(uv, 8);
1137 __m128i vu = _mm_or_si128(
v,
u);
1138 _mm_storeu_si128((__m128i*)dstUV, vu);
1148 srcUV += srcUVPitchLeft;
1149 dstUV += dstUVPitchLeft;
References SDL_HasSSE2, SDL_Swap16(), and RGB2YUVFactors::u.
Referenced by SDL_ConvertPixels_Planar2x2_to_Planar2x2().
◆ SDL_ConvertPixels_SwapUVPlanes()
static int SDL_ConvertPixels_SwapUVPlanes |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
◆ SDL_ConvertPixels_UYVY_to_YUY2()
static int SDL_ConvertPixels_UYVY_to_YUY2 |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1330 of file SDL_yuv.c.
1333 const int YUVwidth = (
width + 1)/2;
1334 const int srcYUVPitchLeft = (src_pitch - YUVwidth*4);
1335 const int dstYUVPitchLeft = (dst_pitch - YUVwidth*4);
1347 PACKED4_TO_PACKED4_ROW_SSE2(_MM_SHUFFLE(2, 3, 0, 1));
1365 srcYUV += srcYUVPitchLeft;
1366 dstYUV += dstYUVPitchLeft;
References SDL_HasSSE2, and V.
Referenced by SDL_ConvertPixels_Packed4_to_Packed4().
◆ SDL_ConvertPixels_UYVY_to_YVYU()
static int SDL_ConvertPixels_UYVY_to_YVYU |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1372 of file SDL_yuv.c.
1375 const int YUVwidth = (
width + 1)/2;
1376 const int srcYUVPitchLeft = (src_pitch - YUVwidth*4);
1377 const int dstYUVPitchLeft = (dst_pitch - YUVwidth*4);
1389 PACKED4_TO_PACKED4_ROW_SSE2(_MM_SHUFFLE(0, 3, 2, 1));
1407 srcYUV += srcYUVPitchLeft;
1408 dstYUV += dstYUVPitchLeft;
References SDL_HasSSE2, and V.
Referenced by SDL_ConvertPixels_Packed4_to_Packed4().
◆ SDL_ConvertPixels_YUV_to_RGB()
int SDL_ConvertPixels_YUV_to_RGB |
( |
int |
width, |
|
|
int |
height, |
|
|
Uint32 |
src_format, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
Uint32 |
dst_format, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
Definition at line 397 of file SDL_yuv.c.
416 if (
yuv_rgb_sse(src_format, dst_format,
width,
height,
y,
u,
v, y_stride, uv_stride, (
Uint8*)
dst, dst_pitch, yuv_type)) {
420 if (
yuv_rgb_std(src_format, dst_format,
width,
height,
y,
u,
v, y_stride, uv_stride, (
Uint8*)
dst, dst_pitch, yuv_type)) {
References GetYUVConversionType(), GetYUVPlanes(), NULL, SDL_ConvertPixels, SDL_ConvertPixels_YUV_to_RGB(), SDL_free, SDL_malloc, SDL_OutOfMemory, SDL_PIXELFORMAT_ARGB8888, SDL_SetError, YCBCR_601, yuv_rgb_sse(), and yuv_rgb_std().
Referenced by SDL_ConvertPixels(), and SDL_ConvertPixels_YUV_to_RGB().
◆ SDL_ConvertPixels_YUV_to_YUV()
int SDL_ConvertPixels_YUV_to_YUV |
( |
int |
width, |
|
|
int |
height, |
|
|
Uint32 |
src_format, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
Uint32 |
dst_format, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
◆ SDL_ConvertPixels_YUV_to_YUV_Copy()
static int SDL_ConvertPixels_YUV_to_YUV_Copy |
( |
int |
width, |
|
|
int |
height, |
|
|
Uint32 |
format, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
◆ SDL_ConvertPixels_YUY2_to_UYVY()
static int SDL_ConvertPixels_YUY2_to_UYVY |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1246 of file SDL_yuv.c.
1249 const int YUVwidth = (
width + 1)/2;
1250 const int srcYUVPitchLeft = (src_pitch - YUVwidth*4);
1251 const int dstYUVPitchLeft = (dst_pitch - YUVwidth*4);
1263 PACKED4_TO_PACKED4_ROW_SSE2(_MM_SHUFFLE(2, 3, 0, 1));
1281 srcYUV += srcYUVPitchLeft;
1282 dstYUV += dstYUVPitchLeft;
References SDL_HasSSE2, and V.
Referenced by SDL_ConvertPixels_Packed4_to_Packed4().
◆ SDL_ConvertPixels_YUY2_to_YVYU()
static int SDL_ConvertPixels_YUY2_to_YVYU |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1288 of file SDL_yuv.c.
1291 const int YUVwidth = (
width + 1)/2;
1292 const int srcYUVPitchLeft = (src_pitch - YUVwidth*4);
1293 const int dstYUVPitchLeft = (dst_pitch - YUVwidth*4);
1305 PACKED4_TO_PACKED4_ROW_SSE2(_MM_SHUFFLE(1, 2, 3, 0));
1323 srcYUV += srcYUVPitchLeft;
1324 dstYUV += dstYUVPitchLeft;
References SDL_HasSSE2, and V.
Referenced by SDL_ConvertPixels_Packed4_to_Packed4().
◆ SDL_ConvertPixels_YVYU_to_UYVY()
static int SDL_ConvertPixels_YVYU_to_UYVY |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1456 of file SDL_yuv.c.
1459 const int YUVwidth = (
width + 1)/2;
1460 const int srcYUVPitchLeft = (src_pitch - YUVwidth*4);
1461 const int dstYUVPitchLeft = (dst_pitch - YUVwidth*4);
1473 PACKED4_TO_PACKED4_ROW_SSE2(_MM_SHUFFLE(2, 1, 0, 3));
1491 srcYUV += srcYUVPitchLeft;
1492 dstYUV += dstYUVPitchLeft;
References SDL_HasSSE2, and V.
Referenced by SDL_ConvertPixels_Packed4_to_Packed4().
◆ SDL_ConvertPixels_YVYU_to_YUY2()
static int SDL_ConvertPixels_YVYU_to_YUY2 |
( |
int |
width, |
|
|
int |
height, |
|
|
const void * |
src, |
|
|
int |
src_pitch, |
|
|
void * |
dst, |
|
|
int |
dst_pitch |
|
) |
| |
|
static |
Definition at line 1414 of file SDL_yuv.c.
1417 const int YUVwidth = (
width + 1)/2;
1418 const int srcYUVPitchLeft = (src_pitch - YUVwidth*4);
1419 const int dstYUVPitchLeft = (dst_pitch - YUVwidth*4);
1431 PACKED4_TO_PACKED4_ROW_SSE2(_MM_SHUFFLE(1, 2, 3, 0));
1449 srcYUV += srcYUVPitchLeft;
1450 dstYUV += dstYUVPitchLeft;
References SDL_HasSSE2, and V.
Referenced by SDL_ConvertPixels_Packed4_to_Packed4().
◆ SDL_GetYUVConversionMode()
◆ SDL_GetYUVConversionModeForResolution()
◆ SDL_SetYUVConversionMode()
◆ yuv_rgb_sse()
static SDL_bool yuv_rgb_sse |
( |
Uint32 |
src_format, |
|
|
Uint32 |
dst_format, |
|
|
Uint32 |
width, |
|
|
Uint32 |
height, |
|
|
const Uint8 * |
y, |
|
|
const Uint8 * |
u, |
|
|
const Uint8 * |
v, |
|
|
Uint32 |
y_stride, |
|
|
Uint32 |
uv_stride, |
|
|
Uint8 * |
rgb, |
|
|
Uint32 |
rgb_stride, |
|
|
YCbCrType |
yuv_type |
|
) |
| |
|
static |
Definition at line 184 of file SDL_yuv.c.
199 switch (dst_format) {
231 switch (dst_format) {
262 switch (dst_format) {
References SDL_FALSE, SDL_HasSSE2, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ARGB8888, SDL_PIXELFORMAT_BGR888, SDL_PIXELFORMAT_BGRA8888, SDL_PIXELFORMAT_BGRX8888, SDL_PIXELFORMAT_IYUV, SDL_PIXELFORMAT_NV12, SDL_PIXELFORMAT_NV21, SDL_PIXELFORMAT_RGB24, SDL_PIXELFORMAT_RGB565, SDL_PIXELFORMAT_RGB888, SDL_PIXELFORMAT_RGBA8888, SDL_PIXELFORMAT_RGBX8888, SDL_PIXELFORMAT_UYVY, SDL_PIXELFORMAT_YUY2, SDL_PIXELFORMAT_YV12, SDL_PIXELFORMAT_YVYU, SDL_TRUE, yuv420_abgr_sseu(), yuv420_argb_sseu(), yuv420_bgra_sseu(), yuv420_rgb24_sseu(), yuv420_rgb565_sseu(), yuv420_rgba_sseu(), yuv422_abgr_sseu(), yuv422_argb_sseu(), yuv422_bgra_sseu(), yuv422_rgb24_sseu(), yuv422_rgb565_sseu(), yuv422_rgba_sseu(), yuvnv12_abgr_sseu(), yuvnv12_argb_sseu(), yuvnv12_bgra_sseu(), yuvnv12_rgb24_sseu(), yuvnv12_rgb565_sseu(), and yuvnv12_rgba_sseu().
Referenced by SDL_ConvertPixels_YUV_to_RGB().
◆ yuv_rgb_std()
static SDL_bool yuv_rgb_std |
( |
Uint32 |
src_format, |
|
|
Uint32 |
dst_format, |
|
|
Uint32 |
width, |
|
|
Uint32 |
height, |
|
|
const Uint8 * |
y, |
|
|
const Uint8 * |
u, |
|
|
const Uint8 * |
v, |
|
|
Uint32 |
y_stride, |
|
|
Uint32 |
uv_stride, |
|
|
Uint8 * |
rgb, |
|
|
Uint32 |
rgb_stride, |
|
|
YCbCrType |
yuv_type |
|
) |
| |
|
static |
Definition at line 293 of file SDL_yuv.c.
303 switch (dst_format) {
335 switch (dst_format) {
366 switch (dst_format) {
References SDL_FALSE, SDL_PIXELFORMAT_ABGR8888, SDL_PIXELFORMAT_ARGB8888, SDL_PIXELFORMAT_BGR888, SDL_PIXELFORMAT_BGRA8888, SDL_PIXELFORMAT_BGRX8888, SDL_PIXELFORMAT_IYUV, SDL_PIXELFORMAT_NV12, SDL_PIXELFORMAT_NV21, SDL_PIXELFORMAT_RGB24, SDL_PIXELFORMAT_RGB565, SDL_PIXELFORMAT_RGB888, SDL_PIXELFORMAT_RGBA8888, SDL_PIXELFORMAT_RGBX8888, SDL_PIXELFORMAT_UYVY, SDL_PIXELFORMAT_YUY2, SDL_PIXELFORMAT_YV12, SDL_PIXELFORMAT_YVYU, SDL_TRUE, yuv420_abgr_std(), yuv420_argb_std(), yuv420_bgra_std(), yuv420_rgb24_std(), yuv420_rgb565_std(), yuv420_rgba_std(), yuv422_abgr_std(), yuv422_argb_std(), yuv422_bgra_std(), yuv422_rgb24_std(), yuv422_rgb565_std(), yuv422_rgba_std(), yuvnv12_abgr_std(), yuvnv12_argb_std(), yuvnv12_bgra_std(), yuvnv12_rgb24_std(), yuvnv12_rgb565_std(), and yuvnv12_rgba_std().
Referenced by SDL_ConvertPixels_YUV_to_RGB().
◆ SDL_YUV_ConversionMode
void yuvnv12_bgra_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
static int GetYUVConversionType(int width, int height, YCbCrType *yuv_type)
#define SDL_GetPixelFormatName
void yuv422_rgba_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
SDL_YUV_CONVERSION_MODE SDL_GetYUVConversionMode()
Get the YUV conversion mode.
static int SDL_ConvertPixels_SwapNV(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch)
static int SDL_ConvertPixels_YVYU_to_YUY2(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch)
static int SDL_ConvertPixels_Packed4_to_Packed4(int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch)
#define SDL_YUV_SD_THRESHOLD
void yuvnv12_abgr_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
@ SDL_PIXELFORMAT_RGBX8888
GLboolean GLboolean GLboolean b
GLint GLint GLsizei width
void yuv422_abgr_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
SDL_FORCE_INLINE Uint16 SDL_Swap16(Uint16 x)
void rgb24_yuv420_std(uint32_t width, uint32_t height, const uint8_t *RGB, uint32_t RGB_stride, uint8_t *Y, uint8_t *U, uint8_t *V, uint32_t Y_stride, uint32_t UV_stride, YCbCrType yuv_type)
void yuv420_rgb565_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgb565_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
static int SDL_ConvertPixels_PackUVPlanes_to_NV(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch, SDL_bool reverseUV)
GLdouble GLdouble GLdouble r
void yuv422_argb_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgba_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgb565_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_rgba_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgb24_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
static int SDL_ConvertPixels_ARGB8888_to_YUV(int width, int height, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch)
@ SDL_PIXELFORMAT_BGRX8888
#define READ_TWO_RGB_PIXELS
SDL_YUV_CONVERSION_MODE SDL_GetYUVConversionModeForResolution(int width, int height)
Get the YUV conversion mode, returning the correct mode for the resolution when the current conversio...
static int GetYUVPlanes(int width, int height, Uint32 format, const void *yuv, int yuv_pitch, const Uint8 **y, const Uint8 **u, const Uint8 **v, Uint32 *y_stride, Uint32 *uv_stride)
void yuv420_rgb24_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
@ SDL_YUV_CONVERSION_JPEG
void yuv422_rgb565_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
static int SDL_ConvertPixels_SplitNV_to_UVPlanes(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch, SDL_bool reverseUV)
void yuv420_abgr_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
GLenum GLint GLint GLint srcY
void yuv420_argb_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_abgr_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv420_argb_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
static int SDL_ConvertPixels_YVYU_to_UYVY(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch)
GLint GLint GLint GLint GLint x
GLfloat GLfloat GLfloat v2
static SDL_bool IsPlanar2x2Format(Uint32 format)
void yuv420_rgba_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
GLint GLint GLsizei GLsizei height
static int SDL_ConvertPixels_SwapUVPlanes(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch)
static SDL_bool yuv_rgb_sse(Uint32 src_format, Uint32 dst_format, Uint32 width, Uint32 height, const Uint8 *y, const Uint8 *u, const Uint8 *v, Uint32 y_stride, Uint32 uv_stride, Uint8 *rgb, Uint32 rgb_stride, YCbCrType yuv_type)
void yuvnv12_argb_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_bgra_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
SDL_YUV_CONVERSION_MODE
The formula used for converting between YUV and RGB.
static SDL_bool yuv_rgb_std(Uint32 src_format, Uint32 dst_format, Uint32 width, Uint32 height, const Uint8 *y, const Uint8 *u, const Uint8 *v, Uint32 y_stride, Uint32 uv_stride, Uint8 *rgb, Uint32 rgb_stride, YCbCrType yuv_type)
void yuv422_argb_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuv422_rgb24_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
@ SDL_PIXELFORMAT_ARGB8888
void yuvnv12_abgr_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
#define READ_ONE_RGB_PIXEL
#define SDL_OutOfMemory()
static int SDL_ConvertPixels_UYVY_to_YVYU(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch)
GLint GLint GLint GLint GLint GLint y
void yuv422_abgr_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
static int SDL_ConvertPixels_Planar2x2_to_Packed4(int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch)
static int SDL_ConvertPixels_YUY2_to_UYVY(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch)
void yuv420_rgb565_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
GLint GLint GLint GLint GLint GLint GLint dstY1
void yuvnv12_argb_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgba_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
GLenum GLint GLint GLint GLint GLuint GLenum GLint GLint GLint dstY
void yuv420_rgb24_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
@ SDL_PIXELFORMAT_RGBA8888
void yuv422_bgra_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
void yuvnv12_rgb24_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
static int SDL_ConvertPixels_UYVY_to_YUY2(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch)
void yuv422_rgba_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
static int SDL_ConvertPixels_Planar2x2_to_Planar2x2(int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch)
void yuvnv12_bgra_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
static int SDL_ConvertPixels_Packed4_to_Planar2x2(int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch)
void yuvnv12_rgb24_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
@ SDL_PIXELFORMAT_BGRA8888
#define SDL_ConvertPixels
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int int in j)
static int SDL_ConvertPixels_YUV_to_YUV_Copy(int width, int height, Uint32 format, const void *src, int src_pitch, void *dst, int dst_pitch)
static SDL_YUV_CONVERSION_MODE SDL_YUV_ConversionMode
void yuvnv12_rgb565_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
@ SDL_YUV_CONVERSION_BT709
void yuv420_bgra_std(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)
static int SDL_ConvertPixels_YUY2_to_YVYU(int width, int height, const void *src, int src_pitch, void *dst, int dst_pitch)
@ SDL_PIXELFORMAT_ABGR8888
static SDL_bool IsPacked4Format(Uint32 format)
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
@ SDL_YUV_CONVERSION_BT601
int SDL_ConvertPixels_YUV_to_RGB(int width, int height, Uint32 src_format, const void *src, int src_pitch, Uint32 dst_format, void *dst, int dst_pitch)
@ SDL_YUV_CONVERSION_AUTOMATIC
void yuv420_bgra_sseu(uint32_t width, uint32_t height, const uint8_t *y, const uint8_t *u, const uint8_t *v, uint32_t y_stride, uint32_t uv_stride, uint8_t *rgb, uint32_t rgb_stride, YCbCrType yuv_type)