diff --git a/libcelt/celt.c b/libcelt/celt.c new file mode 100644 index 0000000000000000000000000000000000000000..4ba388780030031683ec6191284cefab0d20991e --- /dev/null +++ b/libcelt/celt.c @@ -0,0 +1,80 @@ +/* (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 "os_support.h" + +struct CELTState_ { + int frame_size; + int block_size; + int nb_blocks; + + float preemph; + float preemph_mem; + + float *window; + float *in_mem; + float *mdct_overlap; + float *out_mem; +}; + +typedef struct CELTState_ CELTState; + +CELTState *celt_init(int blockSize, int blocksPerFrame) +{ + +} + +void celt_encode(CELTState *st, short *pcm) +{ + int i; + int N = st->block_size; + float in[(st->nb_blocks+1)*N]; + float X[st->nb_blocks*N]; + + /* FIXME: Add preemphasis */ + for (i=0;i<N;i++) + in[i] = st->in_mem[i]; + for (;i<st->nb_blocks*N;i++) + in[i] = pcm[i-N]; + + /* Compute MDCTs */ + + /* Pitch analysis */ + + /* Band normalisation */ + + /* Pitch prediction */ + + /* Residual quantisation */ + + /* Synthesis */ +} +