libavcodec/ppc/vp3dsp_altivec.c File Reference

#include "libavcodec/dsputil.h"
#include "util_altivec.h"
#include "types_altivec.h"
#include "dsputil_altivec.h"

Go to the source code of this file.

Defines

#define IDCT_START
#define IDCT_1D(ADD, SHIFT)
#define NOP(a)   a
#define ADD8(a)   vec_add(a, eight)
#define SHIFT4(a)   vec_sra(a, four)
#define PUT(a)
#define ADD(a)

Functions

static vec_s16 M15 (vec_s16 a, vec_s16 C)
static vec_s16 M16 (vec_s16 a, vec_s16 C)
void ff_vp3_idct_altivec (DCTELEM block[64])
void ff_vp3_idct_put_altivec (uint8_t *dst, int stride, DCTELEM block[64])
void ff_vp3_idct_add_altivec (uint8_t *dst, int stride, DCTELEM block[64])

Variables

static const vec_s16 constants
static const vec_u8 interleave_high


Define Documentation

#define ADD (  ) 

Value:

vdst = vec_ld(0, dst);\
    vdst_16 = (vec_s16)vec_perm(vdst, zero_u8v, vdst_mask);\
    vdst_16 = vec_adds(a, vdst_16);\
    t = vec_packsu(vdst_16, vdst_16);\
    vec_ste((vec_u32)t, 0, (unsigned int *)dst);\
    vec_ste((vec_u32)t, 4, (unsigned int *)dst);

#define ADD8 (  )     vec_add(a, eight)

#define IDCT_1D ( ADD,
SHIFT   ) 

#define IDCT_START

Value:

vec_s16 A, B, C, D, Ad, Bd, Cd, Dd, E, F, G, H;\
    vec_s16 Ed, Gd, Add, Bdd, Fd, Hd;\
    vec_s16 eight = vec_splat_s16(8);\
    vec_u16 four = vec_splat_u16(4);\
\
    vec_s16 C1 = vec_splat(constants, 1);\
    vec_s16 C2 = vec_splat(constants, 2);\
    vec_s16 C3 = vec_splat(constants, 3);\
    vec_s16 C4 = vec_splat(constants, 4);\
    vec_s16 C5 = vec_splat(constants, 5);\
    vec_s16 C6 = vec_splat(constants, 6);\
    vec_s16 C7 = vec_splat(constants, 7);\
\
    vec_s16 b0 = vec_ld(0x00, block);\
    vec_s16 b1 = vec_ld(0x10, block);\
    vec_s16 b2 = vec_ld(0x20, block);\
    vec_s16 b3 = vec_ld(0x30, block);\
    vec_s16 b4 = vec_ld(0x40, block);\
    vec_s16 b5 = vec_ld(0x50, block);\
    vec_s16 b6 = vec_ld(0x60, block);\
    vec_s16 b7 = vec_ld(0x70, block);

Definition at line 31 of file vp3dsp_altivec.c.

Referenced by ff_vp3_idct_add_altivec(), ff_vp3_idct_altivec(), and ff_vp3_idct_put_altivec().

#define NOP (  )     a

#define PUT (  ) 

Value:

t = vec_packsu(a, a);\
    vec_ste((vec_u32)t, 0, (unsigned int *)dst);\
    vec_ste((vec_u32)t, 4, (unsigned int *)dst);

#define SHIFT4 (  )     vec_sra(a, four)


Function Documentation

void ff_vp3_idct_add_altivec ( uint8_t dst,
int  stride,
DCTELEM  block[64] 
)

Definition at line 156 of file vp3dsp_altivec.c.

void ff_vp3_idct_altivec ( DCTELEM  block[64]  ) 

Definition at line 110 of file vp3dsp_altivec.c.

void ff_vp3_idct_put_altivec ( uint8_t dst,
int  stride,
DCTELEM  block[64] 
)

Definition at line 128 of file vp3dsp_altivec.c.

static vec_s16 M15 ( vec_s16  a,
vec_s16  C 
) [inline, static]

Definition at line 58 of file vp3dsp_altivec.c.

Referenced by M16().

static vec_s16 M16 ( vec_s16  a,
vec_s16  C 
) [inline, static]

Definition at line 62 of file vp3dsp_altivec.c.


Variable Documentation

const vec_s16 constants [static]

Initial value:

    {0, 64277, 60547, 54491, 46341, 36410, 25080, 12785}

Definition at line 26 of file vp3dsp_altivec.c.

const vec_u8 interleave_high [static]

Initial value:

    {0, 1, 16, 17, 4, 5, 20, 21, 8, 9, 24, 25, 12, 13, 28, 29}

Definition at line 28 of file vp3dsp_altivec.c.

Referenced by M15().


Generated on Fri Oct 26 02:47:58 2012 for FFmpeg by  doxygen 1.5.8