Don't call denormalise_bands() on silence

This commit is contained in:
Jean-Marc Valin 2013-06-16 15:40:10 -04:00
parent ce15e65319
commit 3afc6ffff0
2 changed files with 18 additions and 19 deletions

View file

@ -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);

View file

@ -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);