yuv2rgb.cpp File Reference


Detailed Description

Contains various YUV, VUY and RGBA colorspace conversion routines.

Definition in file yuv2rgb.cpp.

Go to the source code of this file.

Functions

int has_altivec (void)
 This function MAY rely on signal() or fork() in order to make sure altivec is present.
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 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)
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.


Function Documentation

int has_altivec ( void   ) 

This function MAY rely on signal() or fork() in order to make sure altivec is present.

Definition at line 38 of file check_altivec.c.

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 410 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 72 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 148 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 182 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 221 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 260 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 298 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 308 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 318 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 328 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 348 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 372 of file yuv2rgb.cpp.

Referenced by VideoOutputIvtv::ShowPip().

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 484 of file yuv2rgb.cpp.

Referenced by OSDTypeImage::Load().

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 724 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 773 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 903 of file yuv2rgb.cpp.

Referenced by get_i420_2vuy_conv().

conv_i420_2vuy_fun get_i420_2vuy_conv ( void   ) 

Definition at line 1007 of file yuv2rgb.cpp.

Referenced by DVDV::DrawOSD(), and 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 1030 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 1098 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 1201 of file yuv2rgb.cpp.


Generated on Sat Dec 18 05:15:56 2010 for MythTV by  doxygen 1.5.5