FFmpeg
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros | Functions
vc1dsp_altivec.c File Reference
#include "libavutil/attributes.h"
#include "libavutil/ppc/types_altivec.h"
#include "libavutil/ppc/util_altivec.h"
#include "libavcodec/vc1dsp.h"
#include "h264chroma_template.c"

Go to the source code of this file.

Macros

#define STEP8(s0, s1, s2, s3, s4, s5, s6, s7, vec_rnd)
 
#define SHIFT_HOR8(s0, s1, s2, s3, s4, s5, s6, s7)
 
#define SHIFT_VERT8(s0, s1, s2, s3, s4, s5, s6, s7)
 
#define STEP4(s0, s1, s2, s3, vec_rnd)
 
#define SHIFT_HOR4(s0, s1, s2, s3)
 
#define SHIFT_VERT4(s0, s1, s2, s3)
 
#define ADD(dest, src, perm)
 
#define PUT_OP_U8_ALTIVEC(d, s, dst)   d = s
 
#define AVG_OP_U8_ALTIVEC(d, s, dst)   d = vec_avg(dst, s)
 
#define OP_U8_ALTIVEC   PUT_OP_U8_ALTIVEC
 
#define PREFIX_no_rnd_vc1_chroma_mc8_altivec   put_no_rnd_vc1_chroma_mc8_altivec
 
#define OP_U8_ALTIVEC   AVG_OP_U8_ALTIVEC
 
#define PREFIX_no_rnd_vc1_chroma_mc8_altivec   avg_no_rnd_vc1_chroma_mc8_altivec
 

Functions

static void vc1_inv_trans_8x8_altivec (int16_t block[64])
 Do inverse transform on 8x8 block.
 
static void vc1_inv_trans_8x4_altivec (uint8_t *dest, int stride, int16_t *block)
 Do inverse transform on 8x4 part of block.
 
av_cold void ff_vc1dsp_init_altivec (VC1DSPContext *dsp)
 

Macro Definition Documentation

#define STEP8 (   s0,
  s1,
  s2,
  s3,
  s4,
  s5,
  s6,
  s7,
  vec_rnd 
)

Definition at line 28 of file vc1dsp_altivec.c.

Referenced by vc1_inv_trans_8x4_altivec(), and vc1_inv_trans_8x8_altivec().

#define SHIFT_HOR8 (   s0,
  s1,
  s2,
  s3,
  s4,
  s5,
  s6,
  s7 
)
Value:
do { \
s0 = vec_sra(s0, vec_3); \
s1 = vec_sra(s1, vec_3); \
s2 = vec_sra(s2, vec_3); \
s3 = vec_sra(s3, vec_3); \
s4 = vec_sra(s4, vec_3); \
s5 = vec_sra(s5, vec_3); \
s6 = vec_sra(s6, vec_3); \
s7 = vec_sra(s7, vec_3); \
}while(0)

Definition at line 75 of file vc1dsp_altivec.c.

Referenced by vc1_inv_trans_8x4_altivec(), and vc1_inv_trans_8x8_altivec().

#define SHIFT_VERT8 (   s0,
  s1,
  s2,
  s3,
  s4,
  s5,
  s6,
  s7 
)
Value:
do { \
s0 = vec_sra(s0, vec_7); \
s1 = vec_sra(s1, vec_7); \
s2 = vec_sra(s2, vec_7); \
s3 = vec_sra(s3, vec_7); \
s4 = vec_sra(vec_add(s4, vec_1s), vec_7); \
s5 = vec_sra(vec_add(s5, vec_1s), vec_7); \
s6 = vec_sra(vec_add(s6, vec_1s), vec_7); \
s7 = vec_sra(vec_add(s7, vec_1s), vec_7); \
}while(0)

Definition at line 87 of file vc1dsp_altivec.c.

Referenced by vc1_inv_trans_8x8_altivec().

#define STEP4 (   s0,
  s1,
  s2,
  s3,
  vec_rnd 
)
Value:
do { \
t1 = vec_add(vec_sl(s0, vec_4), s0); \
t1 = vec_add(t1, vec_rnd); \
t2 = vec_add(vec_sl(s2, vec_4), s2); \
t0 = vec_add(t1, t2); \
t1 = vec_sub(t1, t2); \
t3 = vec_sl(vec_sub(s3, s1), vec_1); \
t3 = vec_add(t3, vec_sl(t3, vec_2)); \
t2 = vec_add(t3, vec_sl(s1, vec_5)); \
t3 = vec_add(t3, vec_sl(s3, vec_3)); \
t3 = vec_add(t3, vec_sl(s3, vec_2)); \
s0 = vec_add(t0, t2); \
s1 = vec_sub(t1, t3); \
s2 = vec_add(t1, t3); \
s3 = vec_sub(t0, t2); \
}while (0)

Definition at line 100 of file vc1dsp_altivec.c.

Referenced by vc1_inv_trans_8x4_altivec().

#define SHIFT_HOR4 (   s0,
  s1,
  s2,
  s3 
)
Value:
s0 = vec_sra(s0, vec_3); \
s1 = vec_sra(s1, vec_3); \
s2 = vec_sra(s2, vec_3); \
s3 = vec_sra(s3, vec_3);

Definition at line 118 of file vc1dsp_altivec.c.

#define SHIFT_VERT4 (   s0,
  s1,
  s2,
  s3 
)
Value:
s0 = vec_sra(s0, vec_7); \
s1 = vec_sra(s1, vec_7); \
s2 = vec_sra(s2, vec_7); \
s3 = vec_sra(s3, vec_7);

Definition at line 124 of file vc1dsp_altivec.c.

Referenced by vc1_inv_trans_8x4_altivec().

#define ADD (   dest,
  src,
  perm 
)
Value:
/* *(uint64_t *)&tmp = *(uint64_t *)dest; */ \
tmp = vec_ld (0, dest); \
tmp2 = (vector signed short)vec_perm (tmp, vec_splat_u8(0), perm); \
tmp3 = vec_adds (tmp2, src); \
tmp = vec_packsu (tmp3, tmp3); \
vec_ste ((vector unsigned int)tmp, 0, (unsigned int *)dest); \
vec_ste ((vector unsigned int)tmp, 4, (unsigned int *)dest);
#define PUT_OP_U8_ALTIVEC (   d,
  s,
  dst 
)    d = s

Definition at line 323 of file vc1dsp_altivec.c.

#define AVG_OP_U8_ALTIVEC (   d,
  s,
  dst 
)    d = vec_avg(dst, s)

Definition at line 324 of file vc1dsp_altivec.c.

#define OP_U8_ALTIVEC   PUT_OP_U8_ALTIVEC

Definition at line 332 of file vc1dsp_altivec.c.

#define PREFIX_no_rnd_vc1_chroma_mc8_altivec   put_no_rnd_vc1_chroma_mc8_altivec

Definition at line 333 of file vc1dsp_altivec.c.

#define OP_U8_ALTIVEC   AVG_OP_U8_ALTIVEC

Definition at line 332 of file vc1dsp_altivec.c.

#define PREFIX_no_rnd_vc1_chroma_mc8_altivec   avg_no_rnd_vc1_chroma_mc8_altivec

Definition at line 333 of file vc1dsp_altivec.c.

Function Documentation

static void vc1_inv_trans_8x8_altivec ( int16_t  block[64])
static

Do inverse transform on 8x8 block.

Definition at line 132 of file vc1dsp_altivec.c.

Referenced by ff_vc1dsp_init_altivec().

static void vc1_inv_trans_8x4_altivec ( uint8_t dest,
int  stride,
int16_t *  block 
)
static

Do inverse transform on 8x4 part of block.

Definition at line 227 of file vc1dsp_altivec.c.

Referenced by ff_vc1dsp_init_altivec().

av_cold void ff_vc1dsp_init_altivec ( VC1DSPContext dsp)

Definition at line 338 of file vc1dsp_altivec.c.

Referenced by ff_vc1dsp_init().