diff options
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 | 18 |
1 files changed, 11 insertions, 7 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 105be35f16..04246257e7 100644 --- a/lib/rbcodec/codecs/libopus/silk/resampler_private_IIR_FIR.c +++ b/lib/rbcodec/codecs/libopus/silk/resampler_private_IIR_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_IIR_FIR_INTERPOL( | 36 | static inline opus_int16 *silk_resampler_private_IIR_FIR_INTERPOL( |
36 | opus_int16 *out, | 37 | opus_int16 *out, |
@@ -71,10 +72,13 @@ void silk_resampler_private_IIR_FIR( | |||
71 | silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS; | 72 | silk_resampler_state_struct *S = (silk_resampler_state_struct *)SS; |
72 | opus_int32 nSamplesIn; | 73 | opus_int32 nSamplesIn; |
73 | opus_int32 max_index_Q16, index_increment_Q16; | 74 | opus_int32 max_index_Q16, index_increment_Q16; |
74 | opus_int16 buf[ RESAMPLER_MAX_BATCH_SIZE_IN + RESAMPLER_ORDER_FIR_12 ]; | 75 | VARDECL( opus_int16, buf ); |
76 | SAVE_STACK; | ||
77 | |||
78 | ALLOC( buf, 2 * S->batchSize + RESAMPLER_ORDER_FIR_12, opus_int16 ); | ||
75 | 79 | ||
76 | /* Copy buffered samples to start of buffer */ | 80 | /* Copy buffered samples to start of buffer */ |
77 | silk_memcpy( buf, S->sFIR, RESAMPLER_ORDER_FIR_12 * sizeof( opus_int32 ) ); | 81 | silk_memcpy( buf, S->sFIR.i16, RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) ); |
78 | 82 | ||
79 | /* Iterate over blocks of frameSizeIn input samples */ | 83 | /* Iterate over blocks of frameSizeIn input samples */ |
80 | index_increment_Q16 = S->invRatio_Q16; | 84 | index_increment_Q16 = S->invRatio_Q16; |
@@ -91,13 +95,13 @@ void silk_resampler_private_IIR_FIR( | |||
91 | 95 | ||
92 | if( inLen > 0 ) { | 96 | if( inLen > 0 ) { |
93 | /* More iterations to do; copy last part of filtered signal to beginning of buffer */ | 97 | /* More iterations to do; copy last part of filtered signal to beginning of buffer */ |
94 | silk_memcpy( buf, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int32 ) ); | 98 | silk_memcpy( buf, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) ); |
95 | } else { | 99 | } else { |
96 | break; | 100 | break; |
97 | } | 101 | } |
98 | } | 102 | } |
99 | 103 | ||
100 | /* Copy last part of filtered signal to the state for the next call */ | 104 | /* Copy last part of filtered signal to the state for the next call */ |
101 | silk_memcpy( S->sFIR, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int32 ) ); | 105 | silk_memcpy( S->sFIR.i16, &buf[ nSamplesIn << 1 ], RESAMPLER_ORDER_FIR_12 * sizeof( opus_int16 ) ); |
106 | RESTORE_STACK; | ||
102 | } | 107 | } |
103 | |||