
commit ea807b68678dd76175def2c5eb006c6bdb16679e Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Wed Mar 25 23:24:41 2009 -0400 cleanup before merge commit 73ad1a0202641be6a23903e464ece21fe332a131 Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Sat Mar 21 00:02:16 2009 -0400 Some tuning of the new stereo commit c05057eb57a7723045214a2f830fd561388ae48a Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Sun Mar 15 19:56:11 2009 -0400 fixed-point: atan2() converted commit a8476cf8be55b0612d42df98d9807ca1335adfe3 Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Sat Mar 14 23:10:04 2009 -0400 fixed-point: Getting the new stereo code working in fixed-point (still more work left) commit 70a452761a5ce15700664e7167886dce5914cbd0 Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Mon Mar 2 23:36:25 2009 -0500 Coding left and right independently for lower bands commit 4efd1e6385c7d036749080265a8d26668312b91b Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Sun Mar 1 23:56:46 2009 -0500 Removed the sqrt(C) from the normalisation, which simplifies a lot of things. commit a4f3c5c60bc396bf644afa49b49e6b24ccf144f8 Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Fri Feb 20 20:49:38 2009 -0500 Better point stereo calculation when we don't encode the side anyway commit f08525de4739f4017d19ec2e2022883deda8f826 Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Thu Feb 19 19:43:09 2009 -0500 Apparently, Timothy's calculations for fine energy allocation also apply to the quantisation of theta. commit 6548cffc9d3f996b8a8dbfab982f0da0bc6c2dc2 Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Thu Feb 19 07:35:24 2009 -0500 Better handling of the "theta bits" and disabling the orthogonalize() commit 7aa82c694967afa85dd30be8cc670663f98829fe Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Wed Feb 18 08:01:07 2009 -0500 tuning the new stereo commit c2b780a773de66fd9613c7cd54c09b705fe9ce45 Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Sun Feb 15 22:24:52 2009 -0500 The new stereo coupling actually decodes properly now. commit 85513c203d773bebcf0a6055f953170d563d890c Author: Jean-Marc Valin <jean-marc.valin@usherbrooke.ca> Date: Sun Feb 15 21:31:16 2009 -0500 First attempt at a new "constrained" MS stereo scheme
79 lines
3.4 KiB
C
79 lines
3.4 KiB
C
/* (C) 2007-2008 Jean-Marc Valin, CSIRO
|
|
*/
|
|
/**
|
|
@file vq.h
|
|
@brief Vector quantisation of the residual
|
|
*/
|
|
/*
|
|
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 VQ_H
|
|
#define VQ_H
|
|
|
|
#include "entenc.h"
|
|
#include "entdec.h"
|
|
#include "modes.h"
|
|
|
|
/** Algebraic pulse-vector quantiser. The signal x is replaced by the sum of
|
|
* the pitch and a combination of pulses such that its norm is still equal
|
|
* to 1. This is the function that will typically require the most CPU.
|
|
* @param x Residual signal to quantise/encode (returns quantised version)
|
|
* @param W Perceptual weight to use when optimising (currently unused)
|
|
* @param N Number of samples to encode
|
|
* @param K Number of pulses to use
|
|
* @param p Pitch vector (it is assumed that p+x is a unit vector)
|
|
* @param enc Entropy encoder state
|
|
*/
|
|
void alg_quant(celt_norm_t *X, celt_mask_t *W, int N, int K, celt_norm_t *P, ec_enc *enc);
|
|
|
|
/** Algebraic pulse decoder
|
|
* @param x Decoded normalised spectrum (returned)
|
|
* @param N Number of samples to decode
|
|
* @param K Number of pulses to use
|
|
* @param p Pitch vector (automatically added to x)
|
|
* @param dec Entropy decoder state
|
|
*/
|
|
void alg_unquant(celt_norm_t *X, int N, int K, celt_norm_t *P, ec_dec *dec);
|
|
|
|
celt_word16_t renormalise_vector(celt_norm_t *X, celt_word16_t value, int N, int stride);
|
|
|
|
/** Intra-frame predictor that matches a section of the current frame (at lower
|
|
* frequencies) to encode the current band.
|
|
* @param x Residual signal to quantise/encode (returns quantised version)
|
|
* @param W Perceptual weight
|
|
* @param N Number of samples to encode
|
|
* @param K Number of pulses to use
|
|
* @param Y Lower frequency spectrum to use, normalised to the same standard deviation
|
|
* @param P Pitch vector (it is assumed that p+x is a unit vector)
|
|
* @param B Stride (number of channels multiplied by the number of MDCTs per frame)
|
|
* @param N0 Number of valid offsets
|
|
*/
|
|
void intra_fold(const CELTMode *m, celt_norm_t * restrict x, int N, int K, celt_norm_t *Y, celt_norm_t * restrict P, int N0, int B);
|
|
|
|
#endif /* VQ_H */
|