diff options
author | Nils Wallménius <nils@rockbox.org> | 2013-08-30 23:27:12 +0200 |
---|---|---|
committer | Nils Wallménius <nils@rockbox.org> | 2013-08-31 17:14:58 +0200 |
commit | b592a7a8a52bc2b61108570afff943b7e9afdc3d (patch) | |
tree | 1c9763e8201ce55c77fe08d8df02993ba771ee71 /lib/rbcodec/codecs/libopus/silk/decode_core.c | |
parent | a602ea3d3dc2c3af28974fab0e0c026a5709fac7 (diff) | |
download | rockbox-b592a7a8a52bc2b61108570afff943b7e9afdc3d.tar.gz rockbox-b592a7a8a52bc2b61108570afff943b7e9afdc3d.zip |
Put two hot silk arrays on real stack (iram)
Speeds up decoding of 16kbps test file by 16.7MHz on H300.
Change-Id: I39c90e3b423ae8e2ee5c2b88c5dcec8d48807f77
Diffstat (limited to 'lib/rbcodec/codecs/libopus/silk/decode_core.c')
-rw-r--r-- | lib/rbcodec/codecs/libopus/silk/decode_core.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/rbcodec/codecs/libopus/silk/decode_core.c b/lib/rbcodec/codecs/libopus/silk/decode_core.c index 693c9faacf..b298389f07 100644 --- a/lib/rbcodec/codecs/libopus/silk/decode_core.c +++ b/lib/rbcodec/codecs/libopus/silk/decode_core.c | |||
@@ -49,7 +49,7 @@ void silk_decode_core( | |||
49 | opus_int32 LTP_pred_Q13, LPC_pred_Q10, Gain_Q10, inv_gain_Q31, gain_adj_Q16, rand_seed, offset_Q10; | 49 | opus_int32 LTP_pred_Q13, LPC_pred_Q10, Gain_Q10, inv_gain_Q31, gain_adj_Q16, rand_seed, offset_Q10; |
50 | opus_int32 *pred_lag_ptr, *pexc_Q14, *pres_Q14; | 50 | opus_int32 *pred_lag_ptr, *pexc_Q14, *pres_Q14; |
51 | VARDECL( opus_int32, res_Q14 ); | 51 | VARDECL( opus_int32, res_Q14 ); |
52 | VARDECL( opus_int32, sLPC_Q14 ); | 52 | /* VARDECL( opus_int32, sLPC_Q14 ); */ |
53 | SAVE_STACK; | 53 | SAVE_STACK; |
54 | 54 | ||
55 | silk_assert( psDec->prev_gain_Q16 != 0 ); | 55 | silk_assert( psDec->prev_gain_Q16 != 0 ); |
@@ -57,7 +57,8 @@ void silk_decode_core( | |||
57 | ALLOC( sLTP, psDec->ltp_mem_length, opus_int16 ); | 57 | ALLOC( sLTP, psDec->ltp_mem_length, opus_int16 ); |
58 | ALLOC( sLTP_Q15, psDec->ltp_mem_length + psDec->frame_length, opus_int32 ); | 58 | ALLOC( sLTP_Q15, psDec->ltp_mem_length + psDec->frame_length, opus_int32 ); |
59 | ALLOC( res_Q14, psDec->subfr_length, opus_int32 ); | 59 | ALLOC( res_Q14, psDec->subfr_length, opus_int32 ); |
60 | ALLOC( sLPC_Q14, psDec->subfr_length + MAX_LPC_ORDER, opus_int32 ); | 60 | /* ALLOC( sLPC_Q14, psDec->subfr_length + MAX_LPC_ORDER, opus_int32 ); */ |
61 | opus_int32 sLPC_Q14[psDec->subfr_length + MAX_LPC_ORDER]; /* worst case is 80 + 16 */ | ||
61 | 62 | ||
62 | offset_Q10 = silk_Quantization_Offsets_Q10[ psDec->indices.signalType >> 1 ][ psDec->indices.quantOffsetType ]; | 63 | offset_Q10 = silk_Quantization_Offsets_Q10[ psDec->indices.signalType >> 1 ][ psDec->indices.quantOffsetType ]; |
63 | 64 | ||