libswscale/ppc/yuv2rgb_altivec.c File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include <assert.h>
#include "config.h"
#include "libswscale/rgb2rgb.h"
#include "libswscale/swscale.h"
#include "libswscale/swscale_internal.h"
#include "libavutil/cpu.h"
#include "libavutil/pixdesc.h"
#include "yuv2rgb_altivec.h"

Go to the source code of this file.

Defines

#define vec_merge3(x2, x1, x0, y0, y1, y2)
#define vec_mstbgr24(x0, x1, x2, ptr)
#define vec_mstrgb24(x0, x1, x2, ptr)
#define vec_mstrgb32(T, x0, x1, x2, x3, ptr)
#define vec_unh(x)
#define vec_unl(x)
#define vec_clip_s16(x)
#define vec_packclp(x, y)
#define DEFCSP420_CVT(name, out_pixels)
#define out_abgr(a, b, c, ptr)   vec_mstrgb32(__typeof__(a), ((__typeof__(a)) { 255 }), c, b, a, ptr)
#define out_bgra(a, b, c, ptr)   vec_mstrgb32(__typeof__(a), c, b, a, ((__typeof__(a)) { 255 }), ptr)
#define out_rgba(a, b, c, ptr)   vec_mstrgb32(__typeof__(a), a, b, c, ((__typeof__(a)) { 255 }), ptr)
#define out_argb(a, b, c, ptr)   vec_mstrgb32(__typeof__(a), ((__typeof__(a)) { 255 }), a, b, c, ptr)
#define out_rgb24(a, b, c, ptr)   vec_mstrgb24(a, b, c, ptr)
#define out_bgr24(a, b, c, ptr)   vec_mstbgr24(a, b, c, ptr)
#define YUV2PACKEDX_WRAPPER(suffix, pixfmt)

Typedefs

typedef unsigned char ubyte
typedef signed char sbyte

Functions

static void cvtyuvtoRGB (SwsContext *c, vector signed short Y, vector signed short U, vector signed short V, vector signed short *R, vector signed short *G, vector signed short *B)
static int altivec_uyvy_rgb32 (SwsContext *c, const unsigned char **in, int *instrides, int srcSliceY, int srcSliceH, unsigned char **oplanes, int *outstrides)
SwsFunc ff_yuv2rgb_init_altivec (SwsContext *c)
void ff_yuv2rgb_init_tables_altivec (SwsContext *c, const int inv_table[4], int brightness, int contrast, int saturation)
static av_always_inline void ff_yuv2packedX_altivec (SwsContext *c, const int16_t *lumFilter, const int16_t **lumSrc, int lumFilterSize, const int16_t *chrFilter, const int16_t **chrUSrc, const int16_t **chrVSrc, int chrFilterSize, const int16_t **alpSrc, uint8_t *dest, int dstW, int dstY, enum PixelFormat target)
 YUV2PACKEDX_WRAPPER (abgr, PIX_FMT_ABGR)
 YUV2PACKEDX_WRAPPER (bgra, PIX_FMT_BGRA)
 YUV2PACKEDX_WRAPPER (argb, PIX_FMT_ARGB)
 YUV2PACKEDX_WRAPPER (rgba, PIX_FMT_RGBA)
 YUV2PACKEDX_WRAPPER (rgb24, PIX_FMT_RGB24)
 YUV2PACKEDX_WRAPPER (bgr24, PIX_FMT_BGR24)

Variables

static const vector unsigned char perm_rgb_0
static const vector unsigned char perm_rgb_1
static const vector unsigned char perm_rgb_2
static const vector unsigned char perm_rgb_3
static const vector unsigned char demux_u
static const vector unsigned char demux_v
static const vector unsigned char demux_y


Define Documentation

#define DEFCSP420_CVT ( name,
out_pixels   ) 

Definition at line 282 of file yuv2rgb_altivec.c.

#define out_abgr ( a,
b,
c,
ptr   )     vec_mstrgb32(__typeof__(a), ((__typeof__(a)) { 255 }), c, b, a, ptr)

Definition at line 443 of file yuv2rgb_altivec.c.

Referenced by ff_yuv2packedX_altivec().

#define out_argb ( a,
b,
c,
ptr   )     vec_mstrgb32(__typeof__(a), ((__typeof__(a)) { 255 }), a, b, c, ptr)

Definition at line 449 of file yuv2rgb_altivec.c.

Referenced by ff_yuv2packedX_altivec().

#define out_bgr24 ( a,
b,
c,
ptr   )     vec_mstbgr24(a, b, c, ptr)

Definition at line 452 of file yuv2rgb_altivec.c.

Referenced by ff_yuv2packedX_altivec().

#define out_bgra ( a,
b,
c,
ptr   )     vec_mstrgb32(__typeof__(a), c, b, a, ((__typeof__(a)) { 255 }), ptr)

Definition at line 445 of file yuv2rgb_altivec.c.

Referenced by ff_yuv2packedX_altivec().

#define out_rgb24 ( a,
b,
c,
ptr   )     vec_mstrgb24(a, b, c, ptr)

Definition at line 451 of file yuv2rgb_altivec.c.

Referenced by ff_yuv2packedX_altivec().

#define out_rgba ( a,
b,
c,
ptr   )     vec_mstrgb32(__typeof__(a), a, b, c, ((__typeof__(a)) { 255 }), ptr)

Definition at line 447 of file yuv2rgb_altivec.c.

Referenced by altivec_uyvy_rgb32(), and ff_yuv2packedX_altivec().

#define vec_clip_s16 (  ) 

Value:

vec_max(vec_min(x, ((vector signed short) {                         \
                    235, 235, 235, 235, 235, 235, 235, 235 })),         \
            ((vector signed short) { 16, 16, 16, 16, 16, 16, 16, 16 }))

Definition at line 236 of file yuv2rgb_altivec.c.

Referenced by ff_yuv2packedX_altivec().

#define vec_merge3 ( x2,
x1,
x0,
y0,
y1,
y2   ) 

Value:

do {                                       \
        __typeof__(x0) o0, o2, o3;             \
        o0 = vec_mergeh(x0, x1);               \
        y0 = vec_perm(o0, x2, perm_rgb_0);     \
        o2 = vec_perm(o0, x2, perm_rgb_1);     \
        o3 = vec_mergel(x0, x1);               \
        y1 = vec_perm(o3, o2, perm_rgb_2);     \
        y2 = vec_perm(o3, o2, perm_rgb_3);     \
    } while (0)

Definition at line 154 of file yuv2rgb_altivec.c.

#define vec_mstbgr24 ( x0,
x1,
x2,
ptr   ) 

Value:

do {                                       \
        __typeof__(x0) _0, _1, _2;             \
        vec_merge3(x0, x1, x2, _0, _1, _2);    \
        vec_st(_0, 0, ptr++);                  \
        vec_st(_1, 0, ptr++);                  \
        vec_st(_2, 0, ptr++);                  \
    } while (0)

Definition at line 165 of file yuv2rgb_altivec.c.

#define vec_mstrgb24 ( x0,
x1,
x2,
ptr   ) 

Value:

do {                                       \
        __typeof__(x0) _0, _1, _2;             \
        vec_merge3(x2, x1, x0, _0, _1, _2);    \
        vec_st(_0, 0, ptr++);                  \
        vec_st(_1, 0, ptr++);                  \
        vec_st(_2, 0, ptr++);                  \
    } while (0)

Definition at line 174 of file yuv2rgb_altivec.c.

#define vec_mstrgb32 ( T,
x0,
x1,
x2,
x3,
ptr   ) 

Value:

do {                                                                \
        T _0, _1, _2, _3;                                               \
        _0 = vec_mergeh(x0, x1);                                        \
        _1 = vec_mergeh(x2, x3);                                        \
        _2 = (T) vec_mergeh((vector unsigned short) _0,                 \
                            (vector unsigned short) _1);                \
        _3 = (T) vec_mergel((vector unsigned short) _0,                 \
                            (vector unsigned short) _1);                \
        vec_st(_2, 0 * 16, (T *) ptr);                                  \
        vec_st(_3, 1 * 16, (T *) ptr);                                  \
        _0 = vec_mergel(x0, x1);                                        \
        _1 = vec_mergel(x2, x3);                                        \
        _2 = (T) vec_mergeh((vector unsigned short) _0,                 \
                            (vector unsigned short) _1);                \
        _3 = (T) vec_mergel((vector unsigned short) _0,                 \
                            (vector unsigned short) _1);                \
        vec_st(_2, 2 * 16, (T *) ptr);                                  \
        vec_st(_3, 3 * 16, (T *) ptr);                                  \
        ptr += 4;                                                       \
    } while (0)

Definition at line 187 of file yuv2rgb_altivec.c.

#define vec_packclp ( x,
 ) 

Value:

(vector unsigned char)                                              \
        vec_packs((vector unsigned short)                               \
                      vec_max(x, ((vector signed short) { 0 })),        \
                  (vector unsigned short)                               \
                      vec_max(y, ((vector signed short) { 0 })))

Definition at line 241 of file yuv2rgb_altivec.c.

Referenced by altivec_uyvy_rgb32(), and ff_yuv2packedX_altivec().

#define vec_unh (  ) 

Value:

(vector signed short)                                               \
        vec_perm(x, (__typeof__(x)) { 0 },                              \
                 ((vector unsigned char) {                              \
                     0x10, 0x00, 0x10, 0x01, 0x10, 0x02, 0x10, 0x03,    \
                     0x10, 0x04, 0x10, 0x05, 0x10, 0x06, 0x10, 0x07 }))

Definition at line 222 of file yuv2rgb_altivec.c.

#define vec_unl (  ) 

Value:

(vector signed short)                                               \
        vec_perm(x, (__typeof__(x)) { 0 },                              \
                 ((vector unsigned char) {                              \
                     0x10, 0x08, 0x10, 0x09, 0x10, 0x0A, 0x10, 0x0B,    \
                     0x10, 0x0C, 0x10, 0x0D, 0x10, 0x0E, 0x10, 0x0F }))

Definition at line 229 of file yuv2rgb_altivec.c.

#define YUV2PACKEDX_WRAPPER ( suffix,
pixfmt   ) 

Value:

void ff_yuv2 ## suffix ## _X_altivec(SwsContext *c,                     \
                                     const int16_t *lumFilter,          \
                                     const int16_t **lumSrc,            \
                                     int lumFilterSize,                 \
                                     const int16_t *chrFilter,          \
                                     const int16_t **chrUSrc,           \
                                     const int16_t **chrVSrc,           \
                                     int chrFilterSize,                 \
                                     const int16_t **alpSrc,            \
                                     uint8_t *dest, int dstW, int dstY) \
{                                                                       \
    ff_yuv2packedX_altivec(c, lumFilter, lumSrc, lumFilterSize,         \
                           chrFilter, chrUSrc, chrVSrc,                 \
                           chrFilterSize, alpSrc,                       \
                           dest, dstW, dstY, pixfmt);                   \
}

Definition at line 833 of file yuv2rgb_altivec.c.


Typedef Documentation

typedef signed char sbyte

Definition at line 106 of file yuv2rgb_altivec.c.

typedef unsigned char ubyte

Definition at line 105 of file yuv2rgb_altivec.c.


Function Documentation

static int altivec_uyvy_rgb32 ( SwsContext c,
const unsigned char **  in,
int *  instrides,
int  srcSliceY,
int  srcSliceH,
unsigned char **  oplanes,
int *  outstrides 
) [static]

Definition at line 480 of file yuv2rgb_altivec.c.

Referenced by ff_yuv2rgb_init_altivec().

static void cvtyuvtoRGB ( SwsContext c,
vector signed short  Y,
vector signed short  U,
vector signed short  V,
vector signed short *  R,
vector signed short *  G,
vector signed short *  B 
) [inline, static]

Definition at line 250 of file yuv2rgb_altivec.c.

Referenced by altivec_uyvy_rgb32(), and ff_yuv2packedX_altivec().

static av_always_inline void ff_yuv2packedX_altivec ( SwsContext c,
const int16_t lumFilter,
const int16_t **  lumSrc,
int  lumFilterSize,
const int16_t chrFilter,
const int16_t **  chrUSrc,
const int16_t **  chrVSrc,
int  chrFilterSize,
const int16_t **  alpSrc,
uint8_t dest,
int  dstW,
int  dstY,
enum PixelFormat  target 
) [static]

Definition at line 625 of file yuv2rgb_altivec.c.

SwsFunc ff_yuv2rgb_init_altivec ( SwsContext c  ) 

Definition at line 539 of file yuv2rgb_altivec.c.

Referenced by ff_yuv2rgb_get_func_ptr().

void ff_yuv2rgb_init_tables_altivec ( SwsContext c,
const int  inv_table[4],
int  brightness,
int  contrast,
int  saturation 
)

Definition at line 599 of file yuv2rgb_altivec.c.

Referenced by sws_setColorspaceDetails().

YUV2PACKEDX_WRAPPER ( bgr24  ,
PIX_FMT_BGR24   
)

YUV2PACKEDX_WRAPPER ( rgb24  ,
PIX_FMT_RGB24   
)

YUV2PACKEDX_WRAPPER ( rgba  ,
PIX_FMT_RGBA   
)

YUV2PACKEDX_WRAPPER ( argb  ,
PIX_FMT_ARGB   
)

YUV2PACKEDX_WRAPPER ( bgra  ,
PIX_FMT_BGRA   
)

YUV2PACKEDX_WRAPPER ( abgr  ,
PIX_FMT_ABGR   
)


Variable Documentation

const vector unsigned char demux_u [static]

Initial value:

 { 0x10, 0x00, 0x10, 0x00,
                0x10, 0x04, 0x10, 0x04,
                0x10, 0x08, 0x10, 0x08,
                0x10, 0x0c, 0x10, 0x0c }

Definition at line 464 of file yuv2rgb_altivec.c.

Referenced by altivec_uyvy_rgb32().

const vector unsigned char demux_v [static]

Initial value:

 { 0x10, 0x02, 0x10, 0x02,
                0x10, 0x06, 0x10, 0x06,
                0x10, 0x0A, 0x10, 0x0A,
                0x10, 0x0E, 0x10, 0x0E }

Definition at line 468 of file yuv2rgb_altivec.c.

Referenced by altivec_uyvy_rgb32().

const vector unsigned char demux_y [static]

Initial value:

 { 0x10, 0x01, 0x10, 0x03,
                0x10, 0x05, 0x10, 0x07,
                0x10, 0x09, 0x10, 0x0B,
                0x10, 0x0D, 0x10, 0x0F }

Definition at line 472 of file yuv2rgb_altivec.c.

Referenced by altivec_uyvy_rgb32().

const vector unsigned char perm_rgb_0 [static]

Initial value:

 { 0x00, 0x01, 0x10, 0x02, 0x03, 0x11, 0x04, 0x05,
                   0x12, 0x06, 0x07, 0x13, 0x08, 0x09, 0x14, 0x0a }

Definition at line 145 of file yuv2rgb_altivec.c.

const vector unsigned char perm_rgb_1 [static]

Initial value:

 { 0x0b, 0x15, 0x0c, 0x0d, 0x16, 0x0e, 0x0f, 0x17,
                   0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f }

Definition at line 147 of file yuv2rgb_altivec.c.

const vector unsigned char perm_rgb_2 [static]

Initial value:

 { 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
                   0x00, 0x01, 0x18, 0x02, 0x03, 0x19, 0x04, 0x05 }

Definition at line 149 of file yuv2rgb_altivec.c.

const vector unsigned char perm_rgb_3 [static]

Initial value:

 { 0x1a, 0x06, 0x07, 0x1b, 0x08, 0x09, 0x1c, 0x0a,
                   0x0b, 0x1d, 0x0c, 0x0d, 0x1e, 0x0e, 0x0f, 0x1f }

Definition at line 151 of file yuv2rgb_altivec.c.


Generated on Fri Oct 26 02:48:03 2012 for FFmpeg by  doxygen 1.5.8