libavcodec/ppc/fft_altivec.c File Reference

#include "dsputil.h"
#include "gcc_fixes.h"
#include "dsputil_ppc.h"
#include "util_altivec.h"

Go to the source code of this file.

Defines

#define BF(pre, pim, qre, qim, pre1, pim1, qre1, qim1)
#define MUL16(a, b)   ((a) * (b))
#define CMUL(pre, pim, are, aim, bre, bim)

Functions

void ff_fft_calc_altivec (FFTContext *s, FFTComplex *z)
 Do a complex FFT with the parameters defined in ff_fft_init().


Define Documentation

#define BF ( pre,
pim,
qre,
qim,
pre1,
pim1,
qre1,
qim1   ) 

Value:

{\
  FFTSample ax, ay, bx, by;\
  bx=pre1;\
  by=pim1;\
  ax=qre1;\
  ay=qim1;\
  pre = (bx + ax);\
  pim = (by + ay);\
  qre = (bx - ax);\
  qim = (by - ay);\
}

Definition at line 34 of file fft_altivec.c.

#define CMUL ( pre,
pim,
are,
aim,
bre,
bim   ) 

Value:

{\
   pre = (MUL16(are, bre) - MUL16(aim, bim));\
   pim = (MUL16(are, bim) + MUL16(bre, aim));\
}

Definition at line 47 of file fft_altivec.c.

#define MUL16 ( a,
 )     ((a) * (b))

Definition at line 46 of file fft_altivec.c.


Function Documentation

void ff_fft_calc_altivec ( FFTContext s,
FFTComplex z 
)

Do a complex FFT with the parameters defined in ff_fft_init().

The input data must be permuted before with s->revtab table. No 1.0/sqrt(n) normalization is done. AltiVec-enabled This code assumes that the 'z' pointer is 16 bytes-aligned It also assumes all FFTComplex are 8 bytes-aligned pair of float The code is exactly the same as the SSE version, except that successive MUL + ADD/SUB have been merged into fused multiply-add ('vec_madd' in altivec)

Definition at line 65 of file fft_altivec.c.

Referenced by ff_fft_init().


Generated on Fri Oct 3 22:46:57 2008 for ffmpeg by  doxygen 1.5.6