[MN-dev] [mndiff]: r212 - trunk/noe/gfft.c
michael
subversion at mplayerhq.hu
Fri Jul 23 00:20:22 CEST 2010
Author: michael
Date: Fri Jul 23 00:20:22 2010
New Revision: 212
Log:
ifft16()
Modified:
trunk/noe/gfft.c
Modified: trunk/noe/gfft.c
==============================================================================
--- trunk/noe/gfft.c Fri Jul 23 00:20:21 2010 (r211)
+++ trunk/noe/gfft.c Fri Jul 23 00:20:22 2010 (r212)
@@ -265,18 +265,43 @@ static inline void ifft8(GFF4Element *p)
ifft4(p+1,2);
}
+static void ifft16(GFF4Element *p){
+ int n;
+ const int size= 1<<(4-2);
+
+ ifft8(p);
+ ifft4(p+8 ,1);
+ ifft4(p+12,1);
+
+ for(n=0; n<size; n++){
+ const unsigned int w1= EXT(exp)[ MINUS1 - ( n <<(SHIFT-4)) ];
+ const unsigned int wx= EXT(exp)[ MINUS1 - ((3*n )<<(SHIFT-4)) ];
+ const unsigned int a= p[n ];
+ const unsigned int b= p[n + size] + SIZE + (SIZE<<(SHIFT/2));
+ unsigned int c= reduce(p[n + 2*size]*w1);
+ const unsigned int t= reduce(p[n + 3*size]*wx);
+ unsigned int d= (c - t)<<(SHIFT/2);
+ c= sum (c, t);
+
+ p[n ]= sum(a, c);
+ p[n + 2*size]= sum(a, SIZE - c);
+ p[n + 1*size]= reduce(b + d);
+ p[n + 3*size]= reduce(b - d);
+ }
+}
+
static void ifftn(GFF4Element *p, int logSize){
int n;
const int size= 1<<(logSize-2);
- if(logSize==4){
- ifft8(p);
- ifft4(p+8 ,1);
- ifft4(p+12,1);
- } else if(logSize==5){
- ifftn(p , logSize-1);
+ if(logSize==5){
+ ifft16(p);
ifft8(p+16);
ifft8(p+24);
+ } else if(logSize==6){
+ ifftn(p , logSize-1);
+ ifft16(p+32);
+ ifft16(p+48);
}else{
ifftn(p , logSize-1);
ifftn(p+2*size, logSize-2);
More information about the Mndiff-dev
mailing list