Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/celt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Marc Valin <jean-marc.valin@usherbrooke.ca>2007-12-30 12:39:14 +0300
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>2007-12-30 12:39:14 +0300
commit97252d036569c112efa4e46f988c442ca8de0b00 (patch)
tree3d68333101ff8f5df5c74a8fbb2078bc0a0a64fa /libcelt/bands.c
parente84962bcd969d20d736eb5851013b1ddd2c5c45a (diff)
Spreading function inside quant_bands()
Diffstat (limited to 'libcelt/bands.c')
-rw-r--r--libcelt/bands.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/libcelt/bands.c b/libcelt/bands.c
index 10411f5..737c064 100644
--- a/libcelt/bands.c
+++ b/libcelt/bands.c
@@ -209,8 +209,13 @@ void quant_bands(const CELTMode *m, float *X, float *P, float *W, ec_enc *enc)
int q;
q = m->nbPulses[i];
if (q>0) {
- float n = sqrt(B*(eBands[i+1]-eBands[i]));
+ float theta, n;
+ n = sqrt(B*(eBands[i+1]-eBands[i]));
+ theta = .007*(B*(eBands[i+1]-eBands[i]))/(.1f+abs(m->nbPulses[i]));
+ exp_rotation(P+B*eBands[i], B*(eBands[i+1]-eBands[i]), theta, -1, B, 8);
+ exp_rotation(X+B*eBands[i], B*(eBands[i+1]-eBands[i]), theta, -1, B, 8);
alg_quant(X+B*eBands[i], W+B*eBands[i], B*(eBands[i+1]-eBands[i]), q, P+B*eBands[i], 0.7, enc);
+ exp_rotation(X+B*eBands[i], B*(eBands[i+1]-eBands[i]), theta, 1, B, 8);
for (j=B*eBands[i];j<B*eBands[i+1];j++)
norm[j] = X[j] * n;
//printf ("%f ", log2(ncwrs64(B*(eBands[i+1]-eBands[i]), q))/(B*(eBands[i+1]-eBands[i])));
@@ -241,8 +246,12 @@ void unquant_bands(const CELTMode *m, float *X, float *P, ec_dec *dec)
int q;
q = m->nbPulses[i];
if (q>0) {
- float n = sqrt(B*(eBands[i+1]-eBands[i]));
+ float theta, n;
+ n = sqrt(B*(eBands[i+1]-eBands[i]));
+ theta = .007*(B*(eBands[i+1]-eBands[i]))/(.1f+abs(m->nbPulses[i]));
+ exp_rotation(P+B*eBands[i], B*(eBands[i+1]-eBands[i]), theta, -1, B, 8);
alg_unquant(X+B*eBands[i], B*(eBands[i+1]-eBands[i]), q, P+B*eBands[i], 0.7, dec);
+ exp_rotation(X+B*eBands[i], B*(eBands[i+1]-eBands[i]), theta, 1, B, 8);
for (j=B*eBands[i];j<B*eBands[i+1];j++)
norm[j] = X[j] * n;
} else {
@@ -260,6 +269,7 @@ void unquant_bands(const CELTMode *m, float *X, float *P, ec_dec *dec)
void band_rotation(const CELTMode *m, float *X, int dir)
{
+ return;
int i, B;
const int *eBands = m->eBands;
B = m->nbMdctBlocks*m->nbChannels;