Mercurial > libavcodec.hg
comparison fft-test.c @ 5418:95234f2e0bdd libavcodec
make the reference code use double instead of float where it is easy
author | michael |
---|---|
date | Sun, 29 Jul 2007 10:11:12 +0000 |
parents | 3eca9008175b |
children | f5d2349dccd7 |
comparison
equal
deleted
inserted
replaced
5417:3eca9008175b | 5418:95234f2e0bdd |
---|---|
48 FFTComplex *exptab; | 48 FFTComplex *exptab; |
49 | 49 |
50 void fft_ref_init(int nbits, int inverse) | 50 void fft_ref_init(int nbits, int inverse) |
51 { | 51 { |
52 int n, i; | 52 int n, i; |
53 float c1, s1, alpha; | 53 double c1, s1, alpha; |
54 | 54 |
55 n = 1 << nbits; | 55 n = 1 << nbits; |
56 exptab = av_malloc((n / 2) * sizeof(FFTComplex)); | 56 exptab = av_malloc((n / 2) * sizeof(FFTComplex)); |
57 | 57 |
58 for(i=0;i<(n/2);i++) { | 58 for(i=0;i<(n/2);i++) { |
67 } | 67 } |
68 | 68 |
69 void fft_ref(FFTComplex *tabr, FFTComplex *tab, int nbits) | 69 void fft_ref(FFTComplex *tabr, FFTComplex *tab, int nbits) |
70 { | 70 { |
71 int n, i, j, k, n2; | 71 int n, i, j, k, n2; |
72 float tmp_re, tmp_im, s, c; | 72 double tmp_re, tmp_im, s, c; |
73 FFTComplex *q; | 73 FFTComplex *q; |
74 | 74 |
75 n = 1 << nbits; | 75 n = 1 << nbits; |
76 n2 = n >> 1; | 76 n2 = n >> 1; |
77 for(i=0;i<n;i++) { | 77 for(i=0;i<n;i++) { |
96 } | 96 } |
97 | 97 |
98 void imdct_ref(float *out, float *in, int n) | 98 void imdct_ref(float *out, float *in, int n) |
99 { | 99 { |
100 int k, i, a; | 100 int k, i, a; |
101 float sum, f; | 101 double sum, f; |
102 | 102 |
103 for(i=0;i<n;i++) { | 103 for(i=0;i<n;i++) { |
104 sum = 0; | 104 sum = 0; |
105 for(k=0;k<n/2;k++) { | 105 for(k=0;k<n/2;k++) { |
106 a = (2 * i + 1 + (n / 2)) * (2 * k + 1); | 106 a = (2 * i + 1 + (n / 2)) * (2 * k + 1); |
113 | 113 |
114 /* NOTE: no normalisation by 1 / N is done */ | 114 /* NOTE: no normalisation by 1 / N is done */ |
115 void mdct_ref(float *output, float *input, int n) | 115 void mdct_ref(float *output, float *input, int n) |
116 { | 116 { |
117 int k, i; | 117 int k, i; |
118 float a, s; | 118 double a, s; |
119 | 119 |
120 /* do it by hand */ | 120 /* do it by hand */ |
121 for(k=0;k<n/2;k++) { | 121 for(k=0;k<n/2;k++) { |
122 s = 0; | 122 s = 0; |
123 for(i=0;i<n;i++) { | 123 for(i=0;i<n;i++) { |