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/resampler_private_IIR_FIR.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/resampler_private_IIR_FIR.c')
-rw-r--r-- | lib/rbcodec/codecs/libopus/silk/resampler_private_IIR_FIR.c | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/lib/rbcodec/codecs/libopus/silk/resampler_private_IIR_FIR.c b/lib/rbcodec/codecs/libopus/silk/resampler_private_IIR_FIR.c index 04246257e7..ce9aff0907 100644 --- a/lib/rbcodec/codecs/libopus/silk/resampler_private_IIR_FIR.c +++ b/lib/rbcodec/codecs/libopus/silk/resampler_private_IIR_FIR.c | |||
@@ -72,10 +72,13 @@ void silk_resampler_private_IIR_FIR( | |||
72 | silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS; | 72 | silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS; |
73 | opus_int32 nSamplesIn; | 73 | opus_int32 nSamplesIn; |
74 | opus_int32 max_index_Q16, index_increment_Q16; | 74 | opus_int32 max_index_Q16, index_increment_Q16; |
75 | VARDECL( opus_int16, buf ); | 75 | /* VARDECL( opus_int16, buf ); |
76 | SAVE_STACK; | 76 | SAVE_STACK; */ |
77 | 77 | ||
78 | ALLOC( buf, 2 * S->batchSize + RESAMPLER_ORDER_FIR_12, opus_int16 ); | 78 | /* ALLOC( buf, 2 * S->batchSize + RESAMPLER_ORDER_FIR_12, opus_int16 ); */ |
79 | |||
80 | /* worst case = 2*16*10+8 = 328 * 2 = 656bytes */ | ||
81 | opus_int16 buf[2 * S->batchSize + RESAMPLER_ORDER_FIR_12]; | ||
79 | 82 | ||
80 | /* Copy buffered samples to start of buffer */ | 83 | /* Copy buffered samples to start of buffer */ |
81 | silk_memcpy( buf, S->sFIR.i16, RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) ); | 84 | silk_memcpy( buf, S->sFIR.i16, RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) ); |
@@ -103,5 +106,5 @@ void silk_resampler_private_IIR_FIR( | |||
103 | 106 | ||
104 | /* Copy last part of filtered signal to the state for the next call */ | 107 | /* Copy last part of filtered signal to the state for the next call */ |
105 | silk_memcpy( S->sFIR.i16, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) ); | 108 | silk_memcpy( S->sFIR.i16, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) ); |
106 | RESTORE_STACK; | 109 | /* RESTORE_STACK; */ |
107 | } | 110 | } |