Fixed rsqrt testcase for float
[opus.git] / libcelt / vq.h
index 8ca25f8..8e50886 100644 (file)
@@ -1,5 +1,9 @@
-/* (C) 2007 Jean-Marc Valin, CSIRO
+/* (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
 #include "entdec.h"
 
 
-/** Algebraic pulse-based quantiser. The signal x is replaced by the sum of the
- * pitch a combination of pulses such that its norm is still equal to 1. The
* only difference with the quantiser above is that the search is more complete
+/** 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
+ * @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 alpha compression factor in the pitch direction (magic!)
  * @param enc Entropy encoder state
 */
-void alg_quant(float *x, float *W, int N, int K, float *p, float alpha, ec_enc *enc);
+void alg_quant(celt_norm_t *X, celt_mask_t *W, int N, int K, const 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 alpha compression factor in the pitch direction (magic!)
  * @param dec Entropy decoder state
  */
-void alg_unquant(float *x, int N, int K, float *p, float alpha, ec_dec *dec);
+void alg_unquant(celt_norm_t *X, int N, int K, celt_norm_t *P, ec_dec *dec);
 
 /** Intra-frame predictor that matches a section of the current frame (at lower
  * frequencies) to encode the current band.
@@ -66,16 +68,16 @@ void alg_unquant(float *x, int N, int K, float *p, float alpha, ec_dec *dec);
  * @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 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
  * @param enc Entropy encoder state
  */
-void intra_prediction(float *x, float *W, int N, int K, float *Y, float *P, int B, int N0, ec_enc *enc);
+void intra_prediction(celt_norm_t *x, celt_mask_t *W, int N, int K, celt_norm_t *Y, celt_norm_t *P, int B, int N0, ec_enc *enc);
 
-void intra_unquant(float *x, int N, int K, float *Y, float *P, int B, int N0, ec_dec *dec);
+void intra_unquant(celt_norm_t *x, int N, int K, celt_norm_t *Y, celt_norm_t *P, int B, int N0, ec_dec *dec);
 
 /** Encode the entire band as a "fold" from other parts of the spectrum. No bits required (only use is case of an emergency!) */
-void intra_fold(float *x, int N, float *Y, float *P, int B, int N0, int Nmax);
+void intra_fold(celt_norm_t *x, int N, celt_norm_t *Y, celt_norm_t *P, int B, int N0, int Nmax);
 
 #endif /* VQ_H */