yuv2rgb.cpp File Reference

Contains various YUV, VUY and RGBA colorspace conversion routines. More...

Go to the source code of this file.

Functions

int has_altivec (void)
static void yuv420_argb32_non_mmx (unsigned char *image, unsigned char *py, unsigned char *pu, unsigned char *pv, int h_size, int v_size, int rgb_stride, int y_stride, int uv_stride, int alphaones) MUNUSED
static void mmx_yuv2rgb (uint8_t *py, uint8_t *pu, uint8_t *pv)
static void mmx_unpack_16rgb (uint8_t *image, int cpu)
static void mmx_unpack_32rgb (uint8_t *image, int cpu, int alphaones)
static void yuv420_rgb16 (uint8_t *image, uint8_t *py, uint8_t *pu, uint8_t *pv, int width, int height, int rgb_stride, int y_stride, int uv_stride, int cpu, int alphaones)
static void yuv420_argb32 (uint8_t *image, uint8_t *py, uint8_t *pu, uint8_t *pv, int width, int height, int rgb_stride, int y_stride, int uv_stride, int cpu, int alphaones)
static void mmxext_rgb16 (uint8_t *image, uint8_t *py, uint8_t *pu, uint8_t *pv, int width, int height, int rgb_stride, int y_stride, int uv_stride, int alphaones)
static void mmxext_argb32 (uint8_t *image, uint8_t *py, uint8_t *pu, uint8_t *pv, int width, int height, int rgb_stride, int y_stride, int uv_stride, int alphaones)
static void mmx_rgb16 (uint8_t *image, uint8_t *py, uint8_t *pu, uint8_t *pv, int width, int height, int rgb_stride, int y_stride, int uv_stride, int alphaones)
static void mmx_argb32 (uint8_t *image, uint8_t *py, uint8_t *pu, uint8_t *pv, int width, int height, int rgb_stride, int y_stride, int uv_stride, int alphaones)
yuv2rgb_fun yuv2rgb_init_mmxext (int bpp, int mode)
 This returns a yuv to rgba converter, using mmxext if MMX was compiled in.
yuv2rgb_fun yuv2rgb_init_mmx (int bpp, int mode)
 This returns a yuv to rgba converter, using mmx if MMX was compiled in.
void rgb32_to_yuv420p (unsigned char *lum, unsigned char *cb, unsigned char *cr, unsigned char *alpha, unsigned char *src, int width, int height, int srcwidth)
 Convert planar RGB to YUV420.
static void non_vec_i420_2vuy (uint8_t *image, int vuy_stride, const uint8_t *py, const uint8_t *pu, const uint8_t *pv, int y_stride, int u_stride, int v_stride, int h_size, int v_size)
 Plain C I420 to 2VUY conversion function.
static void mmx_i420_2vuy (uint8_t *image, int vuy_stride, const uint8_t *py, const uint8_t *pu, const uint8_t *pv, int y_stride, int u_stride, int v_stride, int h_size, int v_size)
 MMX I420 to 2VUY conversion function.
static void altivec_i420_2vuy (uint8_t *image, int vuy_stride, const uint8_t *py, const uint8_t *pu, const uint8_t *pv, int y_stride, int u_stride, int v_stride, int h_size, int v_size)
 Alitvec I420 to 2VUY conversion function.
conv_i420_2vuy_fun get_i420_2vuy_conv (void)
 Returns I420 to 2VUY conversion function.
static void non_vec_2vuy_i420 (uint8_t *py, uint8_t *pu, uint8_t *pv, int y_stride, int u_stride, int v_stride, const uint8_t *image, int vuy_stride, int h_size, int v_size)
 Plain C 2VUY to I420 conversion routine.
static void altivec_2vuy_i420 (uint8_t *py, uint8_t *pu, uint8_t *pv, int y_stride, int u_stride, int v_stride, const uint8_t *image, int vuy_stride, int h_size, int v_size)
 Altivec 2VUY to YUV420 conversion routine.
conv_2vuy_i420_fun get_2vuy_i420_conv (void)
 Returns 2VUY to I420 conversion function.

Detailed Description

Contains various YUV, VUY and RGBA colorspace conversion routines.

Definition in file yuv2rgb.cpp.


Function Documentation

int has_altivec ( void   ) 

Definition at line 56 of file yuv2rgb.cpp.

Referenced by get_2vuy_i420_conv(), and get_i420_2vuy_conv().

static void yuv420_argb32_non_mmx ( unsigned char *  image,
unsigned char *  py,
unsigned char *  pu,
unsigned char *  pv,
int  h_size,
int  v_size,
int  rgb_stride,
int  y_stride,
int  uv_stride,
int  alphaones 
) [static]

Definition at line 425 of file yuv2rgb.cpp.

Referenced by yuv2rgb_init_mmx().

static void mmx_yuv2rgb ( uint8_t py,
uint8_t pu,
uint8_t pv 
) [inline, static]

Definition at line 88 of file yuv2rgb.cpp.

Referenced by yuv420_argb32(), and yuv420_rgb16().

static void mmx_unpack_16rgb ( uint8_t image,
int  cpu 
) [inline, static]

Definition at line 164 of file yuv2rgb.cpp.

Referenced by yuv420_rgb16().

static void mmx_unpack_32rgb ( uint8_t image,
int  cpu,
int  alphaones 
) [inline, static]

Definition at line 198 of file yuv2rgb.cpp.

Referenced by yuv420_argb32().

static void yuv420_rgb16 ( uint8_t image,
uint8_t py,
uint8_t pu,
uint8_t pv,
int  width,
int  height,
int  rgb_stride,
int  y_stride,
int  uv_stride,
int  cpu,
int  alphaones 
) [inline, static]

Definition at line 237 of file yuv2rgb.cpp.

Referenced by mmx_rgb16(), and mmxext_rgb16().

static void yuv420_argb32 ( uint8_t image,
uint8_t py,
uint8_t pu,
uint8_t pv,
int  width,
int  height,
int  rgb_stride,
int  y_stride,
int  uv_stride,
int  cpu,
int  alphaones 
) [inline, static]

Definition at line 276 of file yuv2rgb.cpp.

Referenced by mmx_argb32(), and mmxext_argb32().

static void mmxext_rgb16 ( uint8_t image,
uint8_t py,
uint8_t pu,
uint8_t pv,
int  width,
int  height,
int  rgb_stride,
int  y_stride,
int  uv_stride,
int  alphaones 
) [static]

Definition at line 314 of file yuv2rgb.cpp.

Referenced by yuv2rgb_init_mmxext().

static void mmxext_argb32 ( uint8_t image,
uint8_t py,
uint8_t pu,
uint8_t pv,
int  width,
int  height,
int  rgb_stride,
int  y_stride,
int  uv_stride,
int  alphaones 
) [static]

Definition at line 324 of file yuv2rgb.cpp.

Referenced by yuv2rgb_init_mmxext().

static void mmx_rgb16 ( uint8_t image,
uint8_t py,
uint8_t pu,
uint8_t pv,
int  width,
int  height,
int  rgb_stride,
int  y_stride,
int  uv_stride,
int  alphaones 
) [static]

Definition at line 334 of file yuv2rgb.cpp.

Referenced by yuv2rgb_init_mmx().

static void mmx_argb32 ( uint8_t image,
uint8_t py,
uint8_t pu,
uint8_t pv,
int  width,
int  height,
int  rgb_stride,
int  y_stride,
int  uv_stride,
int  alphaones 
) [static]

Definition at line 344 of file yuv2rgb.cpp.

Referenced by yuv2rgb_init_mmx().

yuv2rgb_init_mmxext ( int  bpp,
int  mode 
)

This returns a yuv to rgba converter, using mmxext if MMX was compiled in.

Parameters:
mode must be MODE_RGB
bpp must be 32
Returns:
function pointer or NULL if converter could not be found.

Definition at line 364 of file yuv2rgb.cpp.

yuv2rgb_init_mmx ( int  bpp,
int  mode 
)

This returns a yuv to rgba converter, using mmx if MMX was compiled in.

Parameters:
mode must be MODE_RGB
bpp must be 32
Returns:
function pointer or NULL if converter could not be found.

Definition at line 388 of file yuv2rgb.cpp.

void rgb32_to_yuv420p ( unsigned char *  lum,
unsigned char *  cb,
unsigned char *  cr,
unsigned char *  alpha,
unsigned char *  src,
int  width,
int  height,
int  srcwidth 
)

Convert planar RGB to YUV420.

Despite the name, this actually converts to i420

Definition at line 499 of file yuv2rgb.cpp.

static void non_vec_i420_2vuy ( uint8_t image,
int  vuy_stride,
const uint8_t py,
const uint8_t pu,
const uint8_t pv,
int  y_stride,
int  u_stride,
int  v_stride,
int  h_size,
int  v_size 
) [static]

Plain C I420 to 2VUY conversion function.

See http://developer.apple.com/quicktime/icefloe/dispatch019.html for a complete description of 2VUY and fourcc.org for YUV 4:2:0.

2vuy is a like a 8-bit per component YUV 4:2:2, but it's actually a Y'Cb'Cr sampling. 2vuy is packed with bytes [Cb, Y, Cr, Y] representing two pixels.

Returns:
A pointer to a I420 to 2VUY conversion function, which uses Altivec or MMX when supported.

Definition at line 739 of file yuv2rgb.cpp.

Referenced by altivec_i420_2vuy(), get_i420_2vuy_conv(), and mmx_i420_2vuy().

static void mmx_i420_2vuy ( uint8_t image,
int  vuy_stride,
const uint8_t py,
const uint8_t pu,
const uint8_t pv,
int  y_stride,
int  u_stride,
int  v_stride,
int  h_size,
int  v_size 
) [static]

MMX I420 to 2VUY conversion function.

See http://developer.apple.com/quicktime/icefloe/dispatch019.html for a complete description of 2VUY and fourcc.org for YUV 4:2:0.

2vuy is a like a 8-bit per component YUV 4:2:2, but it's actually a Y'Cb'Cr sampling. 2vuy is packed with bytes [Cb, Y, Cr, Y] representing two pixels.

Returns:
A pointer to a I420 to 2VUY conversion function, which uses Altivec or MMX when supported.

Definition at line 788 of file yuv2rgb.cpp.

Referenced by get_i420_2vuy_conv().

static void altivec_i420_2vuy ( uint8_t image,
int  vuy_stride,
const uint8_t py,
const uint8_t pu,
const uint8_t pv,
int  y_stride,
int  u_stride,
int  v_stride,
int  h_size,
int  v_size 
) [static]

Alitvec I420 to 2VUY conversion function.

See http://developer.apple.com/quicktime/icefloe/dispatch019.html for a complete description of 2VUY and fourcc.org for YUV 4:2:0.

2vuy is a like a 8-bit per component YUV 4:2:2, but it's actually a Y'Cb'Cr sampling. 2vuy is packed with bytes [Cb, Y, Cr, Y] representing two pixels.

Returns:
A pointer to a I420 to 2VUY conversion function, which uses Altivec or MMX when supported.

Definition at line 918 of file yuv2rgb.cpp.

Referenced by get_i420_2vuy_conv().

conv_i420_2vuy_fun get_i420_2vuy_conv ( void   ) 

Returns I420 to 2VUY conversion function.

See http://developer.apple.com/quicktime/icefloe/dispatch019.html for a complete description of 2VUY and fourcc.org for YUV 4:2:0.

2vuy is a like a 8-bit per component YUV 4:2:2, but it's actually a Y'Cb'Cr sampling. 2vuy is packed with bytes [Cb, Y, Cr, Y] representing two pixels.

Returns:
A pointer to a I420 to 2VUY conversion function, which uses Altivec or MMX when supported.

Definition at line 1022 of file yuv2rgb.cpp.

Referenced by VideoOutputQuartz::Init().

static void non_vec_2vuy_i420 ( uint8_t py,
uint8_t pu,
uint8_t pv,
int  y_stride,
int  u_stride,
int  v_stride,
const uint8_t image,
int  vuy_stride,
int  h_size,
int  v_size 
) [static]

Plain C 2VUY to I420 conversion routine.

See http://developer.apple.com/quicktime/icefloe/dispatch019.html for a complete description of 2VUY and fourcc.org for YUV 4:2:0.

2vuy is a like a 8-bit per component YUV 4:2:2, but it's actually a Y'Cb'Cr sampling. 2vuy is packed with bytes [Cb, Y, Cr, Y] representing two pixels.

Definition at line 1044 of file yuv2rgb.cpp.

Referenced by altivec_2vuy_i420(), and get_2vuy_i420_conv().

static void altivec_2vuy_i420 ( uint8_t py,
uint8_t pu,
uint8_t pv,
int  y_stride,
int  u_stride,
int  v_stride,
const uint8_t image,
int  vuy_stride,
int  h_size,
int  v_size 
) [static]

Altivec 2VUY to YUV420 conversion routine.

See http://developer.apple.com/quicktime/icefloe/dispatch019.html for a complete description of 2VUY and fourcc.org for YUV 4:2:0.

2vuy is a like a 8-bit per component YUV 4:2:2, but it's actually a Y'Cb'Cr sampling. 2vuy is packed with bytes [Cb, Y, Cr, Y] representing two pixels.

Definition at line 1112 of file yuv2rgb.cpp.

Referenced by get_2vuy_i420_conv().

get_2vuy_i420_conv ( void   ) 

Returns 2VUY to I420 conversion function.

See http://developer.apple.com/quicktime/icefloe/dispatch019.html for a complete description of 2VUY and fourcc.org for YUV 4:2:0.

2vuy is a like a 8-bit per component YUV 4:2:2, but it's actually a Y'Cb'Cr sampling. 2vuy is packed with bytes [Cb, Y, Cr, Y] representing two pixels.

Returns:
A pointer to a 2VUY to I420 conversion function, which uses Altivec when supported.

Definition at line 1215 of file yuv2rgb.cpp.

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends
Generated on Mon May 28 06:41:49 2012 for MythTV by  doxygen 1.6.3