From 6baa8e18d9135eca37a6c58054815aa8cb34498f Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Sat, 8 Dec 2007 00:08:37 +1100 Subject: [PATCH] A bit of quality tuning, plus created a higher quality mode --- libcelt/bands.c | 7 +++---- libcelt/celt.h | 1 + libcelt/modes.c | 21 +++++++++++++++++++-- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/libcelt/bands.c b/libcelt/bands.c index 0966c4e95..6a321376d 100644 --- a/libcelt/bands.c +++ b/libcelt/bands.c @@ -152,7 +152,6 @@ void quant_bands(const CELTMode *m, float *X, float *P, ec_enc *enc) const int *eBands = m->eBands; B = m->nbMdctBlocks; float norm[B*eBands[m->nbEBands+1]]; - //float bits = 0; for (i=0;i<m->nbEBands;i++) { @@ -163,16 +162,16 @@ void quant_bands(const CELTMode *m, float *X, float *P, ec_enc *enc) alg_quant(X+B*eBands[i], B*(eBands[i+1]-eBands[i]), q, P+B*eBands[i], enc); for (j=B*eBands[i];j<B*eBands[i+1];j++) norm[j] = X[j] * n; - //bits += log2(ncwrs(B*(eBands[i+1]-eBands[i]), q)); + //printf ("%f ", log2(ncwrs(B*(eBands[i+1]-eBands[i]), q))/(B*(eBands[i+1]-eBands[i]))); } else { float n = sqrt(B*(eBands[i+1]-eBands[i])); copy_quant(X+B*eBands[i], B*(eBands[i+1]-eBands[i]), -q, norm, B, eBands[i], enc); for (j=B*eBands[i];j<B*eBands[i+1];j++) norm[j] = X[j] * n; - //bits += 1+log2(eBands[i]-(eBands[i+1]-eBands[i]))+log2(ncwrs(B*(eBands[i+1]-eBands[i]), -q)); + //printf ("%f ", (1+log2(eBands[i]-(eBands[i+1]-eBands[i]))+log2(ncwrs(B*(eBands[i+1]-eBands[i]), -q)))/(B*(eBands[i+1]-eBands[i]))); } } - //printf ("%f\n", bits); + //printf ("\n"); for (i=B*eBands[m->nbEBands];i<B*eBands[m->nbEBands+1];i++) X[i] = 0; } diff --git a/libcelt/celt.h b/libcelt/celt.h index e00f8f7cc..de7826192 100644 --- a/libcelt/celt.h +++ b/libcelt/celt.h @@ -38,6 +38,7 @@ typedef struct CELTDecoder CELTDecoder; typedef struct CELTMode CELTMode; extern const CELTMode const *celt_mode1; +extern const CELTMode const *celt_mode2; /* Encoder stuff */ diff --git a/libcelt/modes.c b/libcelt/modes.c index fc0853255..3c0fb5c9a 100644 --- a/libcelt/modes.c +++ b/libcelt/modes.c @@ -37,11 +37,12 @@ const int qbank1[NBANDS128+2] = {0, 2, 4, 6, 8, 12, 16, 20, 24, 28, 36, 44, 52, 68, 84, 116, 128}; -const int qpulses1[NBANDS128] = {7, 5, 4, 4, 3, 3, 3, 4, 4, 4, -2, -1, -1, -1, 0}; +const int qpulses1[NBANDS128] = {7, 5, 5, 5, 4, 5, 4, 5, 5, 4, -2, 0, 0, 0, 0}; +const int qpulses2[NBANDS128] = {28,24,20,16,24,20, 18, 12, 10, 10,-7, -4, 0, 0, 0}; const int pbank1[PBANDS128+2] = {0, 4, 8, 12, 20, PITCH_END128, 128}; - +/* Approx 38 kbps @ 44.1 kHz */ const CELTMode mode1 = { 256, /**< frameSize */ 128, /**< mdctSize */ @@ -56,4 +57,20 @@ const CELTMode mode1 = { qpulses1 /**< nbPulses */ }; +/* Approx 58 kbps @ 44.1 kHz */ +const CELTMode mode2 = { + 256, /**< frameSize */ + 128, /**< mdctSize */ + 2, /**< nbMdctBlocks */ + + NBANDS128, /**< nbEBands */ + PBANDS128, /**< nbPBands */ + PITCH_END128,/**< pitchEnd */ + + qbank1, /**< eBands */ + pbank1, /**< pBands*/ + qpulses2 /**< nbPulses */ +}; + const CELTMode const *celt_mode1 = &mode1; +const CELTMode const *celt_mode2 = &mode2; -- GitLab