From 8b0137aa42b552f18d83a90b27c0c5e8be1dc78d Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Thu, 6 Dec 2007 07:51:53 +1100 Subject: [PATCH] Quantisation of band energies (adding files) --- libcelt/quant_bands.c | 61 +++++++++++++++++++++++++++++++++++++++++++ libcelt/quant_bands.h | 40 ++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 libcelt/quant_bands.c create mode 100644 libcelt/quant_bands.h diff --git a/libcelt/quant_bands.c b/libcelt/quant_bands.c new file mode 100644 index 000000000..c0a64f11c --- /dev/null +++ b/libcelt/quant_bands.c @@ -0,0 +1,61 @@ +/* (C) 2007 Jean-Marc Valin, CSIRO +*/ +/* + 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. +*/ + + +#include "quant_bands.h" +#include <math.h> + +void quant_energy(CELTMode *m, float *eBands, float *oldEBands) +{ + int i; + float prev = 0; + for (i=0;i<m->nbEBands;i++) + { + int qi; + float q; + float res; + float x; + float pred = .8*oldEBands[i]; + + x = 20*log10(.3+eBands[i]); + res = 1.0f; + qi = (int)floor(.5+res*(x-pred-prev)/res); + q = qi*res; + + //printf("%f %f ", pred+prev+q, x); + + oldEBands[i] = pred+prev+q; + prev = .7*q; + } + //printf ("\n"); +} + + diff --git a/libcelt/quant_bands.h b/libcelt/quant_bands.h new file mode 100644 index 000000000..2d2bca0f6 --- /dev/null +++ b/libcelt/quant_bands.h @@ -0,0 +1,40 @@ +/* (C) 2007 Jean-Marc Valin, CSIRO + */ +/* + 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 QUANT_BANDS +#define QUANT_BANDS + +#include "modes.h" + +void quant_energy(CELTMode *m, float *eBands, float *oldEBands); + + +#endif /* QUANT_BANDS */ -- GitLab