From 06bab45fb4d604e15017152209e99141a9b1955e Mon Sep 17 00:00:00 2001 From: Jean-Marc Valin Date: Tue, 6 Nov 2012 16:29:11 -0500 Subject: Moved up the second encoder mdct to reduce stack usage --- celt/celt.c | 59 ++++++++++++++++++++++++++++++----------------------------- 1 file changed, 30 insertions(+), 29 deletions(-) (limited to 'celt/celt.c') diff --git a/celt/celt.c b/celt/celt.c index 7c78947b..8c0014ce 100644 --- a/celt/celt.c +++ b/celt/celt.c @@ -1283,6 +1283,7 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm, int nbEBands; int overlap; const opus_int16 *eBands; + int secondMdct; ALLOC_STACK; mode = st->mode; @@ -1489,7 +1490,34 @@ int celt_encode_with_ec(CELTEncoder * OPUS_RESTRICT st, const opus_val16 * pcm, ALLOC(freq, CC*N, celt_sig); /**< Interleaved signal MDCTs */ ALLOC(bandE,nbEBands*CC, celt_ener); ALLOC(bandLogE,nbEBands*CC, opus_val16); - /* Compute MDCTs */ + + secondMdct = shortBlocks && st->complexity>=8; + ALLOC(bandLogE2, C*nbEBands, opus_val16); + if (secondMdct) + { + compute_mdcts(mode, 0, in, freq, CC, LM); + if (CC==2&&C==1) + { + for (i=0;iupsample != 1) + { + c=0; do + { + int bound = N/st->upsample; + for (i=0;iupsample; + for (;iend, bandE, bandLogE2, C); + for (i=0;icomplexity>=8) + if (!secondMdct) { - VARDECL(celt_sig, freq2); - VARDECL(opus_val32, bandE2); - ALLOC(freq2, CC*N, celt_sig); - compute_mdcts(mode, 0, in, freq2, CC, LM); - if (CC==2&&C==1) - { - for (i=0;iupsample != 1) - { - c=0; do - { - int bound = N/st->upsample; - for (i=0;iupsample; - for (;iend, bandE2, bandLogE2, C); - for (i=0;i