shithub: opus

Download patch

ref: ad3d813f010ab15e032bc0b552ea9dace664185f
parent: 568326bfe2c35aef831b1975fa30f80d8a79508a
author: Jean-Marc Valin <[email protected]>
date: Sat Jan 22 16:22:03 EST 2011

Stop uselessly calling haar1() when resynth=0

This was computing on uninitialized data (though the result was never
used)

--- a/libcelt/bands.c
+++ b/libcelt/bands.c
@@ -1003,9 +1003,9 @@
 
          /* Finally do the actual quantization */
          if (encode)
-            cm = alg_quant(X, N, K, spread, B, lowband, resynth, (ec_enc*)ec, gain);
+            cm = alg_quant(X, N, K, spread, B, resynth, (ec_enc*)ec, gain);
          else
-            cm = alg_unquant(X, N, K, spread, B, lowband, (ec_dec*)ec, gain);
+            cm = alg_unquant(X, N, K, spread, B, (ec_dec*)ec, gain);
       } else {
          /* If there's no pulse, fill the band anyway */
          int j;
@@ -1157,7 +1157,7 @@
          b = 0;
       }
 
-      if (M*eBands[i]-N >= M*eBands[start] && (update_lowband || lowband_offset==0))
+      if (resynth && M*eBands[i]-N >= M*eBands[start] && (update_lowband || lowband_offset==0))
             lowband_offset = i;
 
       tf_change = tf_res[i];
--- a/libcelt/vq.c
+++ b/libcelt/vq.c
@@ -175,7 +175,7 @@
    return collapse_mask;
 }
 
-unsigned alg_quant(celt_norm *X, int N, int K, int spread, int B, celt_norm *lowband,
+unsigned alg_quant(celt_norm *X, int N, int K, int spread, int B,
       int resynth, ec_enc *enc, celt_word16 gain)
 {
    VARDECL(celt_norm, y);
@@ -340,7 +340,7 @@
 /** Decode pulse vector and combine the result with the pitch vector to produce
     the final normalised signal in the current band. */
 unsigned alg_unquant(celt_norm *X, int N, int K, int spread, int B,
-      celt_norm *lowband, ec_dec *dec, celt_word16 gain)
+      ec_dec *dec, celt_word16 gain)
 {
    int i;
    celt_word32 Ryy;
--- a/libcelt/vq.h
+++ b/libcelt/vq.h
@@ -52,7 +52,7 @@
  * @param enc Entropy encoder state
  * @ret A mask indicating which blocks in the band received pulses
 */
-unsigned alg_quant(celt_norm *X, int N, int K, int spread, int B, celt_norm *lowband,
+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
@@ -64,7 +64,7 @@
  * @ret A mask indicating which blocks in the band received pulses
  */
 unsigned alg_unquant(celt_norm *X, int N, int K, int spread, int B,
-      celt_norm *lowband, ec_dec *dec, celt_word16 gain);
+      ec_dec *dec, celt_word16 gain);
 
 void renormalise_vector(celt_norm *X, int N, celt_word16 gain);