#include "libavcodec/dsputil.h"
#include "libavcodec/vc1dsp.h"
#include "util_altivec.h"
#include "dsputil_altivec.h"
#include "h264_template_altivec.c"
Go to the source code of this file.
Defines | |
#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 (DCTELEM block[64]) |
Do inverse transform on 8x8 block. | |
static void | vc1_inv_trans_8x4_altivec (uint8_t *dest, int stride, DCTELEM *block) |
Do inverse transform on 8x4 part of block. | |
void | ff_vc1dsp_init_altivec (VC1DSPContext *dsp) |
#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);
Definition at line 325 of file vc1dsp_altivec.c.
#define OP_U8_ALTIVEC AVG_OP_U8_ALTIVEC |
Definition at line 333 of file vc1dsp_altivec.c.
#define OP_U8_ALTIVEC PUT_OP_U8_ALTIVEC |
Definition at line 333 of file vc1dsp_altivec.c.
#define PREFIX_no_rnd_vc1_chroma_mc8_altivec avg_no_rnd_vc1_chroma_mc8_altivec |
Definition at line 334 of file vc1dsp_altivec.c.
#define PREFIX_no_rnd_vc1_chroma_mc8_altivec put_no_rnd_vc1_chroma_mc8_altivec |
Definition at line 334 of file vc1dsp_altivec.c.
#define PUT_OP_U8_ALTIVEC | ( | d, | |||
s, | |||||
dst | ) | d = s |
Definition at line 324 of file vc1dsp_altivec.c.
#define SHIFT_HOR4 | ( | s0, | |||
s1, | |||||
s2, | |||||
s3 | ) |
#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 76 of file vc1dsp_altivec.c.
Referenced by vc1_inv_trans_8x4_altivec(), and vc1_inv_trans_8x8_altivec().
#define SHIFT_VERT4 | ( | s0, | |||
s1, | |||||
s2, | |||||
s3 | ) |
#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 88 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 101 of file vc1dsp_altivec.c.
Referenced by vc1_inv_trans_8x4_altivec().
#define STEP8 | ( | s0, | |||
s1, | |||||
s2, | |||||
s3, | |||||
s4, | |||||
s5, | |||||
s6, | |||||
s7, | |||||
vec_rnd | ) |
Definition at line 29 of file vc1dsp_altivec.c.
Referenced by vc1_inv_trans_8x4_altivec(), and vc1_inv_trans_8x8_altivec().
void ff_vc1dsp_init_altivec | ( | VC1DSPContext * | dsp | ) |
Do inverse transform on 8x4 part of block.
Definition at line 228 of file vc1dsp_altivec.c.
Referenced by ff_vc1dsp_init_altivec().
static void vc1_inv_trans_8x8_altivec | ( | DCTELEM | block[64] | ) | [static] |
Do inverse transform on 8x8 block.
Definition at line 133 of file vc1dsp_altivec.c.
Referenced by ff_vc1dsp_init_altivec().