diff options
Diffstat (limited to 'lib/rbcodec/codecs/libopus/silk/resampler_private_down_FIR.c')
-rw-r--r-- | lib/rbcodec/codecs/libopus/silk/resampler_private_down_FIR.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/rbcodec/codecs/libopus/silk/resampler_private_down_FIR.c b/lib/rbcodec/codecs/libopus/silk/resampler_private_down_FIR.c index 5d4cb1f072..163fedd818 100644 --- a/lib/rbcodec/codecs/libopus/silk/resampler_private_down_FIR.c +++ b/lib/rbcodec/codecs/libopus/silk/resampler_private_down_FIR.c | |||
@@ -12,7 +12,7 @@ documentation and/or other materials provided with the distribution. | |||
12 | names of specific contributors, may be used to endorse or promote | 12 | names of specific contributors, may be used to endorse or promote |
13 | products derived from this software without specific prior written | 13 | products derived from this software without specific prior written |
14 | permission. | 14 | permission. |
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” | 15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
16 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | 16 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
17 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | 17 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
18 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | 18 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE |
@@ -26,11 +26,12 @@ POSSIBILITY OF SUCH DAMAGE. | |||
26 | ***********************************************************************/ | 26 | ***********************************************************************/ |
27 | 27 | ||
28 | #ifdef HAVE_CONFIG_H | 28 | #ifdef HAVE_CONFIG_H |
29 | #include "opus_config.h" | 29 | #include "config.h" |
30 | #endif | 30 | #endif |
31 | 31 | ||
32 | #include "SigProc_FIX.h" | 32 | #include "SigProc_FIX.h" |
33 | #include "resampler_private.h" | 33 | #include "resampler_private.h" |
34 | #include "stack_alloc.h" | ||
34 | 35 | ||
35 | static inline opus_int16 *silk_resampler_private_down_FIR_INTERPOL( | 36 | static inline opus_int16 *silk_resampler_private_down_FIR_INTERPOL( |
36 | opus_int16 *out, | 37 | opus_int16 *out, |
@@ -151,11 +152,14 @@ void silk_resampler_private_down_FIR( | |||
151 | silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS; | 152 | silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS; |
152 | opus_int32 nSamplesIn; | 153 | opus_int32 nSamplesIn; |
153 | opus_int32 max_index_Q16, index_increment_Q16; | 154 | opus_int32 max_index_Q16, index_increment_Q16; |
154 | opus_int32 buf[ RESAMPLER_MAX_BATCH_SIZE_IN + SILK_RESAMPLER_MAX_FIR_ORDER ]; | 155 | VARDECL( opus_int32, buf ); |
155 | const opus_int16 *FIR_Coefs; | 156 | const opus_int16 *FIR_Coefs; |
157 | SAVE_STACK; | ||
158 | |||
159 | ALLOC( buf, S->batchSize + S->FIR_Order, opus_int32 ); | ||
156 | 160 | ||
157 | /* Copy buffered samples to start of buffer */ | 161 | /* Copy buffered samples to start of buffer */ |
158 | silk_memcpy( buf, S->sFIR, S->FIR_Order * sizeof( opus_int32 ) ); | 162 | silk_memcpy( buf, S->sFIR.i32, S->FIR_Order * sizeof( opus_int32 ) ); |
159 | 163 | ||
160 | FIR_Coefs = &S->Coefs[ 2 ]; | 164 | FIR_Coefs = &S->Coefs[ 2 ]; |
161 | 165 | ||
@@ -185,5 +189,6 @@ void silk_resampler_private_down_FIR( | |||
185 | } | 189 | } |
186 | 190 | ||
187 | /* Copy last part of filtered signal to the state for the next call */ | 191 | /* Copy last part of filtered signal to the state for the next call */ |
188 | silk_memcpy( S->sFIR, &buf[ nSamplesIn ], S->FIR_Order * sizeof( opus_int32 ) ); | 192 | silk_memcpy( S->sFIR.i32, &buf[ nSamplesIn ], S->FIR_Order * sizeof( opus_int32 ) ); |
193 | RESTORE_STACK; | ||
189 | } | 194 | } |