The encoder would crash in the PVQ search if fed NaNs via the float interface. This...
[opus.git] / libcelt / vq.h
index 82e8877..56a31b6 100644 (file)
@@ -1,5 +1,6 @@
-/* (C) 2007-2008 Jean-Marc Valin, CSIRO
-*/
+/* Copyright (c) 2007-2008 CSIRO
+   Copyright (c) 2007-2009 Xiph.Org Foundation
+   Written by Jean-Marc Valin */
 /**
    @file vq.h
    @brief Vector quantisation of the residual
 /**
    @file vq.h
    @brief Vector quantisation of the residual
    notice, this list of conditions and the following disclaimer in the
    documentation and/or other materials provided with the distribution.
    
    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
    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
  * @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
  * @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
+ * @ret A mask indicating which blocks in the band received pulses
 */
 */
-void alg_quant(celt_norm_t *X, celt_mask_t *W, int N, int K, int spread, celt_norm_t *P, ec_enc *enc);
+unsigned alg_quant(celt_norm *X, int N, int K, int spread, int B,
+      int resynth, ec_enc *enc, celt_word16 gain);
 
 /** Algebraic pulse decoder
  * @param x Decoded normalised spectrum (returned)
 
 /** Algebraic pulse decoder
  * @param x Decoded normalised spectrum (returned)
@@ -58,22 +57,13 @@ void alg_quant(celt_norm_t *X, celt_mask_t *W, int N, int K, int spread, celt_no
  * @param K Number of pulses to use
  * @param p Pitch vector (automatically added to x)
  * @param dec Entropy decoder state
  * @param K Number of pulses to use
  * @param p Pitch vector (automatically added to x)
  * @param dec Entropy decoder state
+ * @ret A mask indicating which blocks in the band received pulses
  */
  */
-void alg_unquant(celt_norm_t *X, int N, int K, int spread, celt_norm_t *P, ec_dec *dec);
+unsigned alg_unquant(celt_norm *X, int N, int K, int spread, int B,
+      ec_dec *dec, celt_word16 gain);
 
 
-celt_word16_t renormalise_vector(celt_norm_t *X, celt_word16_t value, int N, int stride);
+void renormalise_vector(celt_norm *X, int N, celt_word16 gain);
 
 
-/** 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 *pulses, celt_norm_t *Y, celt_norm_t * restrict P, int N0, int B);
+int stereo_itheta(celt_norm *X, celt_norm *Y, int stereo, int N);
 
 #endif /* VQ_H */
 
 #endif /* VQ_H */