diff --git a/celt/celt_decoder.c b/celt/celt_decoder.c index 4d1903af77268af5e27eab4963513afa2a468e0a..1b243cd1cebed6ede2e0f85744f818f0afbf9f5a 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 7c12e8b93112c4fb5bec5f27e0d371482cb75523..59b77f4931e8e34a0ec249b915d99f3945d9ba55 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);