ref: a85657bd2919f51e442c13d33c7e9f6b017f4627
parent: 2991af5b8ea850c6e92d4a6efac08fbbe84dc690
author: Jean-Marc Valin <[email protected]>
date: Wed Feb 20 06:59:30 EST 2008
removed // comments and added stack_alloc.h (not used everywhere yet) to make the code more C89-friendly.
--- a/libcelt/Makefile.am
+++ b/libcelt/Makefile.am
@@ -23,11 +23,10 @@
libcelt_la_LDFLAGS = -version-info @CELT_LT_CURRENT@:@CELT_LT_REVISION@:@CELT_LT_AGE@
-noinst_HEADERS = arch.h bands.h bitrdec.h bitree.h bitrenc.h cwrs.h \
- ecintrin.h entcode.h entdec.h entenc.h kiss_fft.h \
- kiss_fftr.h _kiss_fft_guts.h laplace.h mdct.h \
- mfrngcod.h modes.h os_support.h pgain_table.h pitch.h psy.h \
- quant_bands.h quant_pitch.h rate.h vq.h
+noinst_HEADERS = _kiss_fft_guts.h arch.h bands.h bitrdec.h bitree.h bitrenc.h \
+ cwrs.h ecintrin.h entcode.h entdec.h entenc.h kiss_fft.h kiss_fftr.h laplace.h \
+ mdct.h mfrngcod.h modes.h os_support.h pgain_table.h pitch.h psy.h \
+ quant_bands.h quant_pitch.h rate.h stack_alloc.h vq.h
noinst_PROGRAMS = testcelt
testcelt_SOURCES = testcelt.c
--- a/libcelt/arch.h
+++ b/libcelt/arch.h
@@ -36,7 +36,7 @@
#define ARCH_H
#include "celt_types.h"
-
+#include "stack_alloc.h"
#define ABS(x) ((x) < 0 ? (-(x)) : (x)) /**< Absolute integer value. */
#define ABS16(x) ((x) < 0 ? (-(x)) : (x)) /**< Absolute 16-bit value. */
--- a/libcelt/bands.c
+++ b/libcelt/bands.c
@@ -29,6 +29,10 @@
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <math.h>
#include "bands.h"
#include "modes.h"
@@ -81,10 +85,10 @@
for (j=B*eBands[i];j<B*eBands[i+1];j++)
sum += X[j*C+c]*X[j*C+c];
bank[i*C+c] = sqrt(C*sum);
- //printf ("%f ", bank[i*C+c]);
+ /*printf ("%f ", bank[i*C+c]);*/
}
}
- //printf ("\n");
+ /*printf ("\n");*/
}
/* Normalise each band such that the energy is one. */
@@ -110,7 +114,8 @@
void renormalise_bands(const CELTMode *m, float *X)
{
- float tmpE[m->nbEBands*m->nbChannels];
+ VARDECL(float *tmpE);
+ ALLOC(tmpE, m->nbEBands*m->nbChannels, float);
compute_band_energies(m, X, tmpE);
normalise_bands(m, X, tmpE);
}
@@ -143,8 +148,9 @@
int i, B;
const int *eBands = m->eBands;
const int *pBands = m->pBands;
+ VARDECL(float *w);
B = m->nbMdctBlocks*m->nbChannels;
- float w[B*eBands[m->nbEBands]];
+ ALLOC(w, B*eBands[m->nbEBands], float);
for (i=0;i<m->nbEBands;i++)
{
int j;
@@ -165,9 +171,6 @@
Sxx += X[j]*X[j]*w[j];
}
gain = Sxy/(1e-10+Sxx);
- //gain = Sxy/(2*(pbank[i+1]-pbank[i]));
- //if (i<3)
- //gain *= 1+.02*gain;
if (gain > 1.f)
gain = 1.f;
if (gain < 0.0f)
@@ -175,7 +178,7 @@
/* We need to be a bit conservative, otherwise residual doesn't quantise well */
gain *= .9f;
gains[i] = gain;
- //printf ("%f ", 1-sqrt(1-gain*gain));
+ /*printf ("%f ", 1-sqrt(1-gain*gain));*/
}
/*if(rand()%10==0)
{
@@ -198,7 +201,7 @@
int j;
for (j=B*pBands[i];j<B*pBands[i+1];j++)
P[j] *= gains[i];
- //printf ("%f ", gain);
+ /*printf ("%f ", gain);*/
}
for (i=B*pBands[m->nbPBands];i<B*pBands[m->nbPBands+1];i++)
P[i] = 0;
@@ -210,11 +213,16 @@
{
int i, j, B, bits;
const int *eBands = m->eBands;
- B = m->nbMdctBlocks*m->nbChannels;
- float norm[B*eBands[m->nbEBands+1]];
- int pulses[m->nbEBands];
- int offsets[m->nbEBands];
float alpha = .7;
+ VARDECL(float *norm);
+ VARDECL(int *pulses);
+ VARDECL(int *offsets);
+
+ B = m->nbMdctBlocks*m->nbChannels;
+
+ ALLOC(norm, B*eBands[m->nbEBands+1], float);
+ ALLOC(pulses, m->nbEBands, int);
+ ALLOC(offsets, m->nbEBands, int);
for (i=0;i<m->nbEBands;i++)
offsets[i] = 0;
@@ -232,7 +240,6 @@
int q;
float theta, n;
q = pulses[i];
- //q = m->nbPulses[i];
n = sqrt(B*(eBands[i+1]-eBands[i]));
theta = .007*(B*(eBands[i+1]-eBands[i]))/(.1f+q);
@@ -258,10 +265,7 @@
}
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])));
- //printf ("%f ", log2(ncwrs64(B*(eBands[i+1]-eBands[i]), q)));
}
- //printf ("\n");
for (i=B*eBands[m->nbEBands];i<B*eBands[m->nbEBands+1];i++)
X[i] = 0;
}
@@ -271,11 +275,16 @@
{
int i, j, B, bits;
const int *eBands = m->eBands;
- B = m->nbMdctBlocks*m->nbChannels;
- float norm[B*eBands[m->nbEBands+1]];
- int pulses[m->nbEBands];
- int offsets[m->nbEBands];
float alpha = .7;
+ VARDECL(float *norm);
+ VARDECL(int *pulses);
+ VARDECL(int *offsets);
+
+ B = m->nbMdctBlocks*m->nbChannels;
+
+ ALLOC(norm, B*eBands[m->nbEBands+1], float);
+ ALLOC(pulses, m->nbEBands, int);
+ ALLOC(offsets, m->nbEBands, int);
for (i=0;i<m->nbEBands;i++)
offsets[i] = 0;
@@ -288,7 +297,6 @@
int q;
float theta, n;
q = pulses[i];
- //q = m->nbPulses[i];
n = sqrt(B*(eBands[i+1]-eBands[i]));
theta = .007*(B*(eBands[i+1]-eBands[i]))/(.1f+q);
--- a/libcelt/celt.c
+++ b/libcelt/celt.c
@@ -45,6 +45,9 @@
#define MAX_PERIOD 1024
+#ifndef M_PI
+#define M_PI 3.14159263
+#endif
struct CELTEncoder {
const CELTMode *mode;
@@ -234,7 +237,7 @@
for (i=0;i<st->overlap;i++)
st->in_mem[C*i+c] = in[C*(N*(B+1)-N4-st->overlap+i)+c];
}
- //for (i=0;i<(B+1)*C*N;i++) printf ("%f(%d) ", in[i], i); printf ("\n");
+ /*for (i=0;i<(B+1)*C*N;i++) printf ("%f(%d) ", in[i], i); printf ("\n");*/
/* Compute MDCTs */
curr_power = compute_mdcts(&st->mdct_lookup, st->window, in, X, N, B, C);
@@ -264,7 +267,7 @@
/* Compute MDCTs of the pitch part */
pitch_power = compute_mdcts(&st->mdct_lookup, st->window, st->out_mem+pitch_index*C, P, N, B, C);
- //printf ("%f %f\n", curr_power, pitch_power);
+ /*printf ("%f %f\n", curr_power, pitch_power);*/
/*int j;
for (j=0;j<B*N;j++)
printf ("%f ", X[j]);
@@ -275,8 +278,8 @@
/* Band normalisation */
compute_band_energies(st->mode, X, bandE);
normalise_bands(st->mode, X, bandE);
- //for (i=0;i<st->mode->nbEBands;i++)printf("%f ", bandE[i]);printf("\n");
- //for (i=0;i<N*B*C;i++)printf("%f ", X[i]);printf("\n");
+ /*for (i=0;i<st->mode->nbEBands;i++)printf("%f ", bandE[i]);printf("\n");*/
+ /*for (i=0;i<N*B*C;i++)printf("%f ", X[i]);printf("\n");*/
quant_energy(st->mode, bandE, st->oldBandE, nbCompressedBytes*8/3, &st->enc);
@@ -296,8 +299,8 @@
if (C==2)
stereo_mix(st->mode, P, bandE, 1);
/* Simulates intensity stereo */
- //for (i=30;i<N*B;i++)
- // X[i*C+1] = P[i*C+1] = 0;
+ /*for (i=30;i<N*B;i++)
+ X[i*C+1] = P[i*C+1] = 0;*/
/* Pitch prediction */
compute_pitch_gain(st->mode, X, P, gains, bandE);
@@ -316,7 +319,7 @@
pitch_quant_bands(st->mode, X, P, gains);
- //for (i=0;i<B*N;i++) printf("%f ",P[i]);printf("\n");
+ /*for (i=0;i<B*N;i++) printf("%f ",P[i]);printf("\n");*/
/* Compute residual that we're going to encode */
for (i=0;i<B*C*N;i++)
X[i] -= P[i];
@@ -358,7 +361,7 @@
if (ec_enc_tell(&st->enc, 0) < nbCompressedBytes*8 - 7)
celt_warning_int ("many unused bits: ", nbCompressedBytes*8-ec_enc_tell(&st->enc, 0));
- //printf ("%d\n", ec_enc_tell(&st->enc, 0)-8*nbCompressedBytes);
+ /*printf ("%d\n", ec_enc_tell(&st->enc, 0)-8*nbCompressedBytes);*/
/* Finishing the stream with a 0101... pattern so that the decoder can check is everything's right */
{
int val = 0;
@@ -377,7 +380,7 @@
celt_warning_int ("got too many bytes:", nbBytes);
return CELT_INTERNAL_ERROR;
}
- //printf ("%d\n", *nbBytes);
+ /*printf ("%d\n", *nbBytes);*/
data = ec_byte_get_buffer(&st->buf);
for (i=0;i<nbBytes;i++)
compressed[i] = data[i];
@@ -621,6 +624,6 @@
}
return 0;
- //printf ("\n");
+ /*printf ("\n");*/
}
--- a/libcelt/laplace.c
+++ b/libcelt/laplace.c
@@ -67,7 +67,7 @@
fl = 0;
if (s)
fl += fs;
- //printf ("enc: %d %d %d\n", fl, fs, ft);
+ /*printf ("enc: %d %d %d\n", fl, fs, ft);*/
ec_encode(enc, fl, fl+fs, ft);
}
@@ -78,7 +78,7 @@
ft = ec_laplace_get_total(decay);
fm = ec_decode(dec, ft);
- //printf ("fm: %d/%d\n", fm, ft);
+ /*printf ("fm: %d/%d\n", fm, ft);*/
fl = 0;
fs = 1<<15;
fh = fs;
--- a/libcelt/mdct.c
+++ b/libcelt/mdct.c
@@ -47,6 +47,10 @@
#include <math.h>
#include "os_support.h"
+#ifndef M_PI
+#define M_PI 3.14159263
+#endif
+
void mdct_init(mdct_lookup *l,int N)
{
int i;
--- a/libcelt/modes.c
+++ b/libcelt/modes.c
@@ -91,7 +91,7 @@
int i, res, min_width, lin, low, high;
res = (Fs+frame_size)/(2*frame_size);
min_width = MIN_BINS*res;
- //printf ("min_width = %d\n", min_width);
+ /*printf ("min_width = %d\n", min_width);*/
/* Find where the linear part ends (i.e. where the spacing is more than min_width */
for (lin=0;lin<BARK_BANDS;lin++)
@@ -98,7 +98,7 @@
if (bark_freq[lin+1]-bark_freq[lin] >= min_width)
break;
- //printf ("lin = %d (%d Hz)\n", lin, bark_freq[lin]);
+ /*printf ("lin = %d (%d Hz)\n", lin, bark_freq[lin]);*/
low = ((bark_freq[lin]/res)+(MIN_BINS-1))/MIN_BINS;
high = BARK_BANDS-lin;
*nbEBands = low+high;
@@ -145,7 +145,7 @@
for (j=0;j<mode->nbEBands;j++)
if (mode->eBands[j] <= pBands[i] && mode->eBands[j+1] > pBands[i])
break;
- //printf ("%d %d\n", i, j);
+ /*printf ("%d %d\n", i, j);*/
if (mode->eBands[j] != pBands[i])
{
if (pBands[i]-mode->eBands[j] < mode->eBands[j+1]-pBands[i] &&
@@ -181,7 +181,6 @@
int num, den;
num = band_allocation[i*BARK_BANDS+j] * (edge-bark_freq[j]);
den = bark_freq[j+1]-bark_freq[j];
- //low = band_allocation[i*BARK_BANDS+j] * (edge-bark_freq[j])/(bark_freq[j+1]-bark_freq[j]);
low = (num+den/2)/den;
allocVectors[i*mode->nbEBands+eband] += low;
eband++;
@@ -250,7 +249,7 @@
compute_allocation_table(mode, res);
compute_alloc_cache(mode);
- //printf ("%d bands\n", mode->nbEBands);
+ /*printf ("%d bands\n", mode->nbEBands);*/
return mode;
}
--- a/libcelt/pitch.c
+++ b/libcelt/pitch.c
@@ -56,10 +56,10 @@
for (i=1;i<C*n2;i++)
{
float n;
- //n = 1.f/(1e1+sqrt(sqrt((X[2*i-1]*X[2*i-1] + X[2*i ]*X[2*i ])*(Y[2*i-1]*Y[2*i-1] + Y[2*i ]*Y[2*i ]))));
- //n = 1;
+ /*n = 1.f/(1e1+sqrt(sqrt((X[2*i-1]*X[2*i-1] + X[2*i ]*X[2*i ])*(Y[2*i-1]*Y[2*i-1] + Y[2*i ]*Y[2*i ]))));*/
+ /*n = 1;*/
n = 1.f/sqrt(1+curve[i]);
- //n = 1.f/(1+curve[i]);
+ /*n = 1.f/(1+curve[i]);*/
float tmp = X[2*i];
X[2*i] = (X[2*i ]*Y[2*i ] + X[2*i+1]*Y[2*i+1])*n;
X[2*i+1] = (- X[2*i+1]*Y[2*i ] + tmp*Y[2*i+1])*n;
@@ -68,11 +68,10 @@
kiss_fftri(fft, X, xx);
float max_corr=-1e10;
- //int pitch;
*pitch = 0;
for (i=0;i<lag-len;i++)
{
- //printf ("%f ", xx[i]);
+ /*printf ("%f ", xx[i]);*/
if (xx[i] > max_corr)
{
*pitch = i;
@@ -79,7 +78,7 @@
max_corr = xx[i];
}
}
- //printf ("\n");
- //printf ("%d %f\n", *pitch, max_corr);
- //printf ("%d\n", *pitch);
+ /*printf ("\n");
+ printf ("%d %f\n", *pitch, max_corr);
+ printf ("%d\n", *pitch);*/
}
--- a/libcelt/psy.c
+++ b/libcelt/psy.c
@@ -61,7 +61,7 @@
decay->decayR[i] = pow(.1f, deriv);
/* decay corresponding to -25dB/Bark */
decay->decayL[i] = pow(0.0031623f, deriv);
- //printf ("%f %f\n", decayL[i], decayR[i]);
+ /*printf ("%f %f\n", decayL[i], decayR[i]);*/
}
}
@@ -75,7 +75,7 @@
{
int i;
float mem;
- //for (i=0;i<len;i++) printf ("%f ", psd[i]);
+ /*for (i=0;i<len;i++) printf ("%f ", psd[i]);*/
/* Compute right slope (-10 dB/Bark) */
mem=psd[0];
for (i=0;i<len;i++)
@@ -90,7 +90,7 @@
mask[i] = (1-d->decayR[i])*mask[i] + d->decayL[i]*mem;
mem = mask[i];
}
- //for (i=0;i<len;i++) printf ("%f ", mask[i]); printf ("\n");
+ /*for (i=0;i<len;i++) printf ("%f ", mask[i]); printf ("\n");*/
#if 0 /* Prints signal and mask energy per critical band */
for (i=0;i<25;i++)
{
@@ -139,7 +139,7 @@
mask[i] = X[i]*X[i];
for (i=1;i<len-1;i++)
psd[i] = .5*mask[i] + .25*(mask[i-1]+mask[i+1]);
- //psd[0] = .5*mask[0]+.25*(mask[1]+mask[2]);
+ /*psd[0] = .5*mask[0]+.25*(mask[1]+mask[2]);*/
psd[0] = .5*mask[0]+.5*mask[1];
psd[len-1] = .5*(mask[len-1]+mask[len-2]);
/* TODO: Do tone masking */
--- a/libcelt/quant_bands.c
+++ b/libcelt/quant_bands.c
@@ -37,7 +37,7 @@
const float eMeans[24] = {45.f, -8.f, -12.f, -2.5f, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 0.f};
-//const int frac[24] = {4, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
+/*const int frac[24] = {4, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};*/
const int frac[24] = {8, 6, 5, 4, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2};
static void quant_energy_mono(const CELTMode *m, float *eBands, float *oldEBands, int budget, ec_enc *enc)
@@ -60,13 +60,10 @@
float mean = (1-coef)*eMeans[i];
x = 20*log10(.3+eBands[i]);
res = 6.;
- //res = 1;
f = (x-mean-coef*oldEBands[i]-prev)/res;
qi = (int)floor(.5+f);
- //if (i> 4 && qi<-2)
- // qi = -2;
- //ec_laplace_encode(enc, qi, i==0?11192:6192);
- //ec_laplace_encode(enc, qi, 8500-i*200);
+ /*ec_laplace_encode(enc, qi, i==0?11192:6192);*/
+ /*ec_laplace_encode(enc, qi, 8500-i*200);*/
/* If we don't have enough bits to encode all the energy, just assume something safe. */
if (ec_enc_tell(enc, 0) - bits > budget)
qi = -1;
@@ -75,16 +72,16 @@
q = qi*res;
error[i] = f - qi;
- //printf("%d ", qi);
- //printf("%f %f ", pred+prev+q, x);
- //printf("%f ", x-pred);
+ /*printf("%d ", qi);*/
+ /*printf("%f %f ", pred+prev+q, x);*/
+ /*printf("%f ", x-pred);*/
oldEBands[i] = mean+coef*oldEBands[i]+prev+q;
prev = mean+prev+(1-beta)*q;
}
- //bits = ec_enc_tell(enc, 0) - bits;
- //printf ("%d\n", bits);
+ /*bits = ec_enc_tell(enc, 0) - bits;*/
+ /*printf ("%d\n", bits);*/
for (i=0;i<m->nbEBands;i++)
{
int q2;
@@ -98,7 +95,7 @@
ec_enc_uint(enc, q2, frac[i]);
offset = ((q2+.5)/frac[i])-.5;
oldEBands[i] += 6.*offset;
- //printf ("%f ", error[i] - offset);
+ /*printf ("%f ", error[i] - offset);*/
}
for (i=0;i<m->nbEBands;i++)
{
@@ -106,9 +103,9 @@
if (eBands[i] < 0)
eBands[i] = 0;
}
- //printf ("%d\n", ec_enc_tell(enc, 0)-9);
+ /*printf ("%d\n", ec_enc_tell(enc, 0)-9);*/
- //printf ("\n");
+ /*printf ("\n");*/
}
static void unquant_energy_mono(const CELTMode *m, float *eBands, float *oldEBands, int budget, ec_dec *dec)
@@ -150,12 +147,12 @@
}
for (i=0;i<m->nbEBands;i++)
{
- //printf ("%f ", error[i] - offset);
+ /*printf ("%f ", error[i] - offset);*/
eBands[i] = pow(10, .05*oldEBands[i])-.3;
if (eBands[i] < 0)
eBands[i] = 0;
}
- //printf ("\n");
+ /*printf ("\n");*/
}
--- a/libcelt/quant_pitch.c
+++ b/libcelt/quant_pitch.c
@@ -61,12 +61,12 @@
{
int i, id;
float g2[len];
- //for (i=0;i<len;i++) printf ("%f ", gains[i]);printf ("\n");
+ /*for (i=0;i<len;i++) printf ("%f ", gains[i]);printf ("\n");*/
for (i=0;i<len;i++)
g2[i] = 1-sqrt(1-gains[i]*gains[i]);
id = vq_index(g2, pgain_table, len, 128);
ec_enc_uint(enc, id, 128);
- //for (i=0;i<len;i++) printf ("%f ", pgain_table[id*len+i]);printf ("\n");
+ /*for (i=0;i<len;i++) printf ("%f ", pgain_table[id*len+i]);printf ("\n");*/
for (i=0;i<len;i++)
gains[i] = (sqrt(1-(1-pgain_table[id*len+i])*(1-pgain_table[id*len+i])));
return id!=0;
--- a/libcelt/rate.c
+++ b/libcelt/rate.c
@@ -49,17 +49,17 @@
int i;
/* EC_ILOG() actually returns log2()+1, go figure */
int L = EC_ILOG(val)-1;
- //printf ("in: %d %d ", val, L);
+ /*printf ("in: %d %d ", val, L);*/
if (L>14)
val >>= L-14;
else if (L<14)
val <<= 14-L;
L <<= frac;
- //printf ("%d\n", val);
+ /*printf ("%d\n", val);*/
for (i=0;i<frac;i++)
{
val = (val*val) >> 15;
- //printf ("%d\n", val);
+ /*printf ("%d\n", val);*/
if (val > 16384)
L |= (1<<(frac-i-1));
else
@@ -73,17 +73,17 @@
int i;
/* EC_ILOG64() actually returns log2()+1, go figure */
int L = EC_ILOG64(val)-1;
- //printf ("in: %d %d ", val, L);
+ /*printf ("in: %d %d ", val, L);*/
if (L>14)
val >>= L-14;
else if (L<14)
val <<= 14-L;
L <<= frac;
- //printf ("%d\n", val);
+ /*printf ("%d\n", val);*/
for (i=0;i<frac;i++)
{
val = (val*val) >> 15;
- //printf ("%d\n", val);
+ /*printf ("%d\n", val);*/
if (val > 16384)
L |= (1<<(frac-i-1));
else
@@ -179,7 +179,7 @@
pulses[i] = bits2pulses(m, i, bits[i]);
sum += m->bits[i][pulses[i]];
}
- //printf ("sum = %d\n", sum);
+ /*printf ("sum = %d\n", sum);*/
return sum;
}
@@ -201,7 +201,7 @@
else
lo = mid;
}
- //printf ("interp bisection gave %d\n", lo);
+ /*printf ("interp bisection gave %d\n", lo);*/
for (j=0;j<len;j++)
bits[j] = ((1<<BITRES)-lo)*bits1[j] + lo*bits2[j];
out = vec_bits2pulses(m, bands, bits, pulses, len);
@@ -220,7 +220,6 @@
out = out+m->bits[j][pulses[j]+1]-m->bits[j][pulses[j]];
pulses[j] += 1;
incremented = 1;
- //printf ("INCREMENT %d\n", j);
}
}
}
@@ -253,14 +252,14 @@
bits[j] = (m->allocVectors[mid*len+j] + offsets[j])<<BITRES;
if (bits[j] < 0)
bits[j] = 0;
- //printf ("%d ", bits[j]);
+ /*printf ("%d ", bits[j]);*/
}
- //printf ("\n");
+ /*printf ("\n");*/
if (vec_bits2pulses(m, m->eBands, bits, pulses, len) > total<<BITRES)
hi = mid;
else
lo = mid;
- //printf ("lo = %d, hi = %d\n", lo, hi);
+ /*printf ("lo = %d, hi = %d\n", lo, hi);*/
}
{
int bits1[len];
--- /dev/null
+++ b/libcelt/stack_alloc.h
@@ -1,0 +1,115 @@
+/* Copyright (C) 2002 Jean-Marc Valin */
+/**
+ @file stack_alloc.h
+ @brief Temporary memory allocation on stack
+*/
+/*
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ - Neither the name of the Xiph.org Foundation nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef STACK_ALLOC_H
+#define STACK_ALLOC_H
+
+#ifdef USE_ALLOCA
+# ifdef WIN32
+# include <malloc.h>
+# else
+# ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+# else
+# include <stdlib.h>
+# endif
+# endif
+#endif
+
+/**
+ * @def ALIGN(stack, size)
+ *
+ * Aligns the stack to a 'size' boundary
+ *
+ * @param stack Stack
+ * @param size New size boundary
+ */
+
+/**
+ * @def PUSH(stack, size, type)
+ *
+ * Allocates 'size' elements of type 'type' on the stack
+ *
+ * @param stack Stack
+ * @param size Number of elements
+ * @param type Type of element
+ */
+
+/**
+ * @def VARDECL(var)
+ *
+ * Declare variable on stack
+ *
+ * @param var Variable to declare
+ */
+
+/**
+ * @def ALLOC(var, size, type)
+ *
+ * Allocate 'size' elements of 'type' on stack
+ *
+ * @param var Name of variable to allocate
+ * @param size Number of elements
+ * @param type Type of element
+ */
+
+#ifdef ENABLE_VALGRIND
+
+#include <valgrind/memcheck.h>
+
+#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
+
+#define PUSH(stack, size, type) (VALGRIND_MAKE_NOACCESS(stack, 1000),ALIGN((stack),sizeof(type)),VALGRIND_MAKE_WRITABLE(stack, ((size)*sizeof(type))),(stack)+=((size)*sizeof(type)),(type*)((stack)-((size)*sizeof(type))))
+
+#else
+
+#define ALIGN(stack, size) ((stack) += ((size) - (long)(stack)) & ((size) - 1))
+
+#define PUSH(stack, size, type) (ALIGN((stack),sizeof(type)),(stack)+=((size)*sizeof(type)),(type*)((stack)-((size)*sizeof(type))))
+
+#endif
+
+#if defined(VAR_ARRAYS)
+#define VARDECL(var)
+#define ALLOC(var, size, type) type var[size]
+#elif defined(USE_ALLOCA)
+#define VARDECL(var) var
+#define ALLOC(var, size, type) var = alloca(sizeof(type)*(size))
+#else
+#define VARDECL(var) var
+#define ALLOC(var, size, type) var = PUSH(stack, size, type)
+#endif
+
+
+#endif
--- a/libcelt/testcelt.c
+++ b/libcelt/testcelt.c
@@ -92,7 +92,6 @@
return 1;
}
- //mode = celt_mode_create(44100, 1, 192, 64);
/* Use mode4 for stereo and don't forget to change the value of CHANNEL above */
enc = celt_encoder_new(mode);
dec = celt_decoder_new(mode);
@@ -112,8 +111,6 @@
fprintf (stderr, "celt_encode() returned %d\n", len);
return 1;
}
- //printf ("\n");
- //printf ("%d\n", len);
/* This is to simulate packet loss */
#if 1
if (rand()%100==-1)
@@ -124,7 +121,6 @@
for (i=0;i<frame_size*channels;i++)
out[i] = in[i];
#endif
- //printf ("\n");
for (i=0;i<frame_size*channels;i++)
rmsd += (in[i]-out[i])*1.0*(in[i]-out[i]);
count++;
--- a/libcelt/vq.c
+++ b/libcelt/vq.c
@@ -70,10 +70,8 @@
void alg_quant(float *x, float *W, int N, int K, float *p, float alpha, ec_enc *enc)
{
int L = 3;
- //float tata[200];
float _y[L][N];
int _iy[L][N];
- //float tata2[200];
float _ny[L][N];
int _iny[L][N];
float *(ny[L]), *(y[L]);
@@ -125,7 +123,7 @@
pulsesAtOnce = 1;
if (pulsesLeft-pulsesAtOnce > 3 || N > 30)
Lupdate = 1;
- //printf ("%d %d %d/%d %d\n", Lupdate, pulsesAtOnce, pulsesLeft, K, N);
+ /*printf ("%d %d %d/%d %d\n", Lupdate, pulsesAtOnce, pulsesLeft, K, N);*/
L2 = Lupdate;
if (L2>maxL)
{
@@ -147,7 +145,7 @@
/* All pulses at one location must have the same sign. */
if (iy[m][j]*sign < 0)
continue;
- //fprintf (stderr, "%d/%d %d/%d %d/%d\n", i, K, m, L2, j, N);
+ /*fprintf (stderr, "%d/%d %d/%d %d/%d\n", i, K, m, L2, j, N);*/
float tmp_xy, tmp_yy, tmp_yp;
float score;
float g;
@@ -232,8 +230,8 @@
float err=0;
for (i=0;i<N;i++)
err += (x[i]-nbest[0]->gain*y[0][i])*(x[i]-nbest[0]->gain*y[0][i]);
- //if (N<=10)
- //printf ("%f %d %d\n", err, K, N);
+ /*if (N<=10)
+ printf ("%f %d %d\n", err, K, N);*/
}
for (i=0;i<N;i++)
x[i] = p[i]+nbest[0]->gain*y[0][i];
@@ -243,11 +241,11 @@
int ABS = 0;
for (i=0;i<N;i++)
ABS += abs(iy[0][i]);
- //if (K != ABS)
- // printf ("%d %d\n", K, ABS);
+ /*if (K != ABS)
+ printf ("%d %d\n", K, ABS);*/
for (i=0;i<N;i++)
E += x[i]*x[i];
- //printf ("%f\n", E);
+ /*printf ("%f\n", E);*/
E = 1/sqrt(E);
for (i=0;i<N;i++)
x[i] *= E;
@@ -295,8 +293,8 @@
decode_pulses(iy, N, K, dec);
- //for (i=0;i<N;i++)
- // printf ("%d ", iy[i]);
+ /*for (i=0;i<N;i++)
+ printf ("%d ", iy[i]);*/
for (i=0;i<N;i++)
Rpp += p[i]*p[i];
@@ -360,10 +358,10 @@
sign = 1;
else
sign = 0;
- //printf ("%d %d ", sign, best);
+ /*printf ("%d %d ", sign, best);*/
ec_enc_uint(enc,sign,2);
ec_enc_uint(enc,best/B,max_pos);
- //printf ("%d %f\n", best, best_score);
+ /*printf ("%d %f\n", best, best_score);*/
float pred_gain;
if (K>10)
@@ -387,8 +385,8 @@
for (j=0;j<N;j++)
x[j] = P[j];
}
- //printf ("quant ");
- //for (j=0;j<N;j++) printf ("%f ", P[j]);
+ /*printf ("quant ");*/
+ /*for (j=0;j<N;j++) printf ("%f ", P[j]);*/
}
@@ -410,7 +408,7 @@
s = -1;
best = B*ec_dec_uint(dec, max_pos);
- //printf ("%d %d ", sign, best);
+ /*printf ("%d %d ", sign, best);*/
float pred_gain;
if (K>10)