diff options
author | Jean-Marc Valin <Jean-Marc.Valin@csiro.au> | 2007-12-03 05:54:30 +0300 |
---|---|---|
committer | Jean-Marc Valin <Jean-Marc.Valin@csiro.au> | 2007-12-03 05:54:30 +0300 |
commit | 4841a0a02b4ad2d9625602ca4d7f5bd63753bc53 (patch) | |
tree | 4497b782855aab3d1007bf8273f30202e2ace148 /libcelt/bands.c | |
parent | c4541ae786b4d7f39bca6779fee55225b26307d0 (diff) |
Intra-frame prediction
Diffstat (limited to 'libcelt/bands.c')
-rw-r--r-- | libcelt/bands.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libcelt/bands.c b/libcelt/bands.c index 5b56101..87055d8 100644 --- a/libcelt/bands.c +++ b/libcelt/bands.c @@ -32,6 +32,7 @@ #include <math.h> #include "bands.h" #include "vq.h" +#include "cwrs.h" const int qbank[NBANDS+2] = {0, 2, 4, 6, 8, 12, 16, 20, 24, 28, 36, 44, 52, 68, 84, 116, 128}; @@ -144,15 +145,24 @@ void pitch_quant_bands(float *X, int B, float *P, float *gains) void quant_bands(float *X, int B, float *P) { - int i; + int i, j; + float norm[B*qbank[NBANDS+1]]; + for (i=0;i<NBANDS;i++) { int q; q =qpulses[i]; if (q) { + float n = sqrt(B*(qbank[i+1]-qbank[i])); alg_quant2(X+B*qbank[i], B*(qbank[i+1]-qbank[i]), q, P+B*qbank[i]); + for (j=B*qbank[i];j<B*qbank[i+1];j++) + norm[j] = X[j] * n; } else { - noise_quant(X+B*qbank[i], B*(qbank[i+1]-qbank[i]), q, P+B*qbank[i]); + float n = sqrt(B*(qbank[i+1]-qbank[i])); + copy_quant(X+B*qbank[i], B*(qbank[i+1]-qbank[i]), q, norm, B, qbank[i]); + for (j=B*qbank[i];j<B*qbank[i+1];j++) + norm[j] = X[j] * n; + //noise_quant(X+B*qbank[i], B*(qbank[i+1]-qbank[i]), q, P+B*qbank[i]); } } for (i=B*qbank[NBANDS];i<B*qbank[NBANDS+1];i++) |