projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rename vector_fmul_add() vector_fmul_reverse_c() and make them static.
[paraslash.git]
/
imdct.c
diff --git
a/imdct.c
b/imdct.c
index a981eeb99fe6d2e23f5a04af40881fdb18190b21..702d3d21327eb508703e1b43636d67ea088721da 100644
(file)
--- a/
imdct.c
+++ b/
imdct.c
@@
-35,9
+35,7
@@
struct fft_complex {
struct fft_context {
int nbits;
struct fft_context {
int nbits;
- int inverse;
uint16_t *revtab;
uint16_t *revtab;
- struct fft_complex *exptab;
};
struct mdct_context {
};
struct mdct_context {
@@
-72,19
+70,19
@@
static fftsample_t *ff_cos_tabs[] = {
ff_cos_16384, ff_cos_32768, ff_cos_65536,
};
ff_cos_16384, ff_cos_32768, ff_cos_65536,
};
-static int split_radix_permutation(int i, int n
, int inverse
)
+static int split_radix_permutation(int i, int n)
{
int m;
if (n <= 2)
return i & 1;
m = n >> 1;
{
int m;
if (n <= 2)
return i & 1;
m = n >> 1;
- if (
!(i & m)
)
- return split_radix_permutation(i, m
, inverse
) * 2;
+ if (
(i & m) == 0
)
+ return split_radix_permutation(i, m) * 2;
m >>= 1;
m >>= 1;
- if (
inverse == !(i & m)
)
- return split_radix_permutation(i, m
, inverse
) * 4 + 1;
+ if (
(i & m) == 0
)
+ return split_radix_permutation(i, m) * 4 + 1;
else
else
- return split_radix_permutation(i, m
, inverse
) * 4 - 1;
+ return split_radix_permutation(i, m) * 4 - 1;
}
#define SQRTHALF (float)0.70710678118654752440 /* 1/sqrt(2) */
}
#define SQRTHALF (float)0.70710678118654752440 /* 1/sqrt(2) */
@@
-319,7
+317,7
@@
void imdct(struct mdct_context *s, float *output, const float *input)
}
}
}
}
-static int fft_init(struct fft_context *s, int nbits
, int inverse
)
+static int fft_init(struct fft_context *s, int nbits)
{
int i, j, n;
{
int i, j, n;
@@
-328,9
+326,7
@@
static int fft_init(struct fft_context *s, int nbits, int inverse)
s->nbits = nbits;
n = 1 << nbits;
s->nbits = nbits;
n = 1 << nbits;
- s->exptab = para_malloc((n / 2) * sizeof(struct fft_complex));
s->revtab = para_malloc(n * sizeof(uint16_t));
s->revtab = para_malloc(n * sizeof(uint16_t));
- s->inverse = inverse;
for (j = 4; j <= nbits; j++) {
int k = 1 << j;
double freq = 2 * M_PI / k;
for (j = 4; j <= nbits; j++) {
int k = 1 << j;
double freq = 2 * M_PI / k;
@@
-341,21
+337,14
@@
static int fft_init(struct fft_context *s, int nbits, int inverse)
tab[k / 2 - i] = tab[i];
}
for (i = 0; i < n; i++)
tab[k / 2 - i] = tab[i];
}
for (i = 0; i < n; i++)
- s->revtab[-split_radix_permutation(
- i, n, s->inverse) & (n - 1)] = i;
+ s->revtab[-split_radix_permutation(i, n) & (n - 1)] = i;
return 0;
}
return 0;
}
-static void fft_end(struct fft_context *ctx)
-{
- freep(&ctx->revtab);
- freep(&ctx->exptab);
-}
-
/**
/**
- * Init
MDCT or IMDCT computation
.
+ * Init
ialize the inverse modified cosine transform
.
*/
*/
-int imdct_init(int nbits,
int inverse,
struct mdct_context **result)
+int imdct_init(int nbits, struct mdct_context **result)
{
int ret, n, n4, i;
double alpha;
{
int ret, n, n4, i;
double alpha;
@@
-374,7
+363,7
@@
int imdct_init(int nbits, int inverse, struct mdct_context **result)
s->tcos[i] = -cos(alpha);
s->tsin[i] = -sin(alpha);
}
s->tcos[i] = -cos(alpha);
s->tsin[i] = -sin(alpha);
}
- ret = fft_init(&s->fft, s->nbits - 2
, inverse
);
+ ret = fft_init(&s->fft, s->nbits - 2);
if (ret < 0)
goto fail;
*result = s;
if (ret < 0)
goto fail;
*result = s;
@@
-388,8
+377,8
@@
fail:
void imdct_end(struct mdct_context *ctx)
{
void imdct_end(struct mdct_context *ctx)
{
- free
p(&
ctx->tcos);
- free
p(&
ctx->tsin);
- f
ft_end(&ctx->fft
);
+ free
(
ctx->tcos);
+ free
(
ctx->tsin);
+ f
ree(ctx->fft.revtab
);
free(ctx);
}
free(ctx);
}