---
libavcodec/fft-test.c | 79 ++++++++++++++++++++++++---------------------------
1 file changed, 37 insertions(+), 42 deletions(-)
diff --git a/libavcodec/fft-test.c b/libavcodec/fft-test.c
index 142a61d..efc1f52 100644
--- a/libavcodec/fft-test.c
+++ b/libavcodec/fft-test.c
@@ -67,16 +67,15 @@ struct {
static void fft_ref_init(int nbits, int inverse)
{
- int n, i;
- double c1, s1, alpha;
+ int i;
+ int n = 1 << nbits;
- n = 1 << nbits;
exptab = av_malloc((n / 2) * sizeof(*exptab));
for (i = 0; i < (n/2); i++) {
- alpha = 2 * M_PI * (float)i / (float)n;
- c1 = cos(alpha);
- s1 = sin(alpha);
+ double alpha = 2 * M_PI * (float)i / (float)n;
+ double c1 = cos(alpha);
+ double s1 = sin(alpha);
if (!inverse)
s1 = -s1;
exptab[i].re = c1;
@@ -86,18 +85,17 @@ static void fft_ref_init(int nbits, int inverse)
static void fft_ref(FFTComplex *tabr, FFTComplex *tab, int nbits)
{
- int n, i, j, k, n2;
- double tmp_re, tmp_im, s, c;
- FFTComplex *q;
+ int i, j;
+ int n = 1 << nbits;
+ int n2 = n >> 1;
- n = 1 << nbits;
- n2 = n >> 1;
for (i = 0; i < n; i++) {
- tmp_re = 0;
- tmp_im = 0;
- q = tab;
+ double tmp_re = 0;
+ double tmp_im = 0;
+ FFTComplex *q = tab;
for (j = 0; j < n; j++) {
- k = (i * j) & (n - 1);
+ double s, c;
+ int k = (i * j) & (n - 1);
if (k >= n2) {
c = -exptab[k - n2].re;
s = -exptab[k - n2].im;
@@ -117,14 +115,13 @@ static void fft_ref(FFTComplex *tabr, FFTComplex *tab,
int nbits)
static void imdct_ref(FFTSample *out, FFTSample *in, int nbits)
{
int n = 1<<nbits;
- int k, i, a;
- double sum, f;
+ int k, i;
for (i = 0; i < n; i++) {
- sum = 0;
+ double sum = 0;
for (k = 0; k < n/2; k++) {
- a = (2 * i + 1 + (n / 2)) * (2 * k + 1);
- f = cos(M_PI * a / (double)(2 * n));
+ int a = (2 * i + 1 + (n / 2)) * (2 * k + 1);
+ double f = cos(M_PI * a / (double)(2 * n));
sum += f * in[k];
}
out[i] = REF_SCALE(-sum, nbits - 2);
@@ -136,13 +133,12 @@ static void mdct_ref(FFTSample *output, FFTSample *input,
int nbits)
{
int n = 1<<nbits;
int k, i;
- double a, s;
/* do it by hand */
for (k = 0; k < n/2; k++) {
- s = 0;
+ double s = 0;
for (i = 0; i < n; i++) {
- a = (2*M_PI*(2*i+1+n/2)*(2*k+1) / (4 * n));
+ double a = (2 * M_PI * (2 * i + 1 + n / 2) * (2 * k + 1) / (4 *
n));
s += input[i] * cos(a);
}
output[k] = REF_SCALE(s, nbits - 1);
@@ -172,13 +168,12 @@ static void dct_ref(float *output, float *input, int
nbits)
{
int n = 1<<nbits;
int k, i;
- double a, s;
/* do it by hand */
for (k = 0; k < n; k++) {
- s = 0;
+ double s = 0;
for (i = 0; i < n; i++) {
- a = M_PI*k*(i+0.5) / n;
+ double a = M_PI * k * (i + 0.5) / n;
s += input[i] * cos(a);
}
output[k] = s;
@@ -242,10 +237,7 @@ enum tf_transform {
int main(int argc, char **argv)
{
- FFTComplex *tab, *tab1, *tab_ref;
- FFTSample *tab2;
- int it, i, c;
- int cpuflags;
+ int it, i;
int do_speed = 0;
int err = 1;
enum tf_transform transform = TRANSFORM_FFT;
@@ -255,16 +247,21 @@ int main(int argc, char **argv)
#if FFT_FLOAT
RDFTContext r1, *r = &r1;
DCTContext d1, *d = &d1;
- int fft_size_2;
#endif
- int fft_nbits, fft_size;
+ int fft_nbits = 9;
+ int fft_size = 1 << fft_nbits;
double scale = 1.0;
AVLFG prng;
+
+ FFTComplex *tab = av_malloc(fft_size * sizeof(FFTComplex));
+ FFTComplex *tab1 = av_malloc(fft_size * sizeof(FFTComplex));
+ FFTComplex *tab_ref = av_malloc(fft_size * sizeof(FFTComplex));
+ FFTSample *tab2 = av_malloc(fft_size * sizeof(FFTSample));
+
av_lfg_init(&prng, 1);
- fft_nbits = 9;
for(;;) {
- c = getopt(argc, argv, "hsimrdn:f:c:");
+ int c = getopt(argc, argv, "hsimrdn:f:c:");
if (c == -1)
break;
switch(c) {
@@ -293,20 +290,16 @@ int main(int argc, char **argv)
scale = atof(optarg);
break;
case 'c':
- cpuflags = av_parse_cpu_flags(optarg);
+ {
+ int cpuflags = av_parse_cpu_flags(optarg);
if (cpuflags < 0)
return 1;
av_set_cpu_flags_mask(cpuflags);
break;
}
+ }
}
- fft_size = 1 << fft_nbits;
- tab = av_malloc(fft_size * sizeof(FFTComplex));
- tab1 = av_malloc(fft_size * sizeof(FFTComplex));
- tab_ref = av_malloc(fft_size * sizeof(FFTComplex));
- tab2 = av_malloc(fft_size * sizeof(FFTSample));
-
switch (transform) {
#if CONFIG_MDCT
case TRANSFORM_MDCT:
@@ -390,7 +383,8 @@ int main(int argc, char **argv)
#if FFT_FLOAT
#if CONFIG_RDFT
case TRANSFORM_RDFT:
- fft_size_2 = fft_size >> 1;
+ {
+ int fft_size_2 = fft_size >> 1;
if (do_inverse) {
tab1[ 0].im = 0;
tab1[fft_size_2].im = 0;
@@ -420,6 +414,7 @@ int main(int argc, char **argv)
err = check_diff((float *)tab_ref, (float *)tab2, fft_size, 1.0);
}
break;
+ }
#endif /* CONFIG_RDFT */
#if CONFIG_DCT
case TRANSFORM_DCT:
--
1.8.3.2
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel