From 3afc6ffff068cd9696de7fc3b88a0cd3ab79940a Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin <jmvalin@jmvalin.ca> Date: Sun, 16 Jun 2013 15:40:10 -0400 Subject: [PATCH] Don't call denormalise_bands() on silence --- celt/celt_decoder.c | 13 ++++++------- celt/celt_encoder.c | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 19 deletions(-) diff --git a/celt/celt_decoder.c b/celt/celt_decoder.c index 4d1903af7..1b243cd1c 100644 --- a/celt/celt_decoder.c +++ b/celt/celt_decoder.c @@ -916,19 +916,18 @@ int celt_decode_with_ec(CELTDecoder * OPUS_RESTRICT st, const unsigned char *dat ALLOC(bandE, nbEBands*C, celt_ener); log2Amp(mode, st->start, st->end, bandE, oldBandE, C); + ALLOC(freq, IMAX(CC,C)*N, celt_sig); /**< Interleaved signal MDCTs */ if (silence) { for (i=0;i<C*nbEBands;i++) - { - bandE[i] = 0; oldBandE[i] = -QCONST16(28.f,DB_SHIFT); - } + for (i=0;i<C*N;i++) + freq[i] = 0; + } else { + /* Synthesis */ + denormalise_bands(mode, X, freq, bandE, st->start, effEnd, C, M); } - ALLOC(freq, IMAX(CC,C)*N, celt_sig); /**< Interleaved signal MDCTs */ - /* Synthesis */ - denormalise_bands(mode, X, freq, bandE, st->start, effEnd, C, M); - c=0; do { OPUS_MOVE(decode_mem[c], decode_mem[c]+N, DECODE_BUFFER_SIZE-N+overlap/2); } while (++c<CC); diff --git a/celt/celt_encoder.c b/celt/celt_encoder.c index 7c12e8b93..59b77f493 100644 --- a/celt/celt_encoder.c +++ b/celt/celt_encoder.c @@ -1887,24 +1887,24 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm, { celt_sig *out_mem[2]; - log2Amp(mode, st->start, st->end, bandE, oldBandE, C); - if (silence) - { - for (i=0;i<C*nbEBands;i++) - bandE[i] = 0; - } - -#ifdef MEASURE_NORM_MSE - measure_norm_mse(mode, X, X0, bandE, bandE0, M, N, C); -#endif if (anti_collapse_on) { anti_collapse(mode, X, collapse_masks, LM, C, N, st->start, st->end, oldBandE, oldLogE, oldLogE2, pulses, st->rng); } - /* Synthesis */ - denormalise_bands(mode, X, freq, bandE, st->start, effEnd, C, M); + log2Amp(mode, st->start, st->end, bandE, oldBandE, C); + if (silence) + { + for (i=0;i<C*N;i++) + freq[i] = 0; + } else { +#ifdef MEASURE_NORM_MSE + measure_norm_mse(mode, X, X0, bandE, bandE0, M, N, C); +#endif + /* Synthesis */ + denormalise_bands(mode, X, freq, bandE, st->start, effEnd, C, M); + } c=0; do { OPUS_MOVE(st->syn_mem[c], st->syn_mem[c]+N, 2*MAX_PERIOD-N+overlap/2); -- GitLab