summaryrefslogtreecommitdiff
path: root/lib/rbcodec/codecs/libopus/silk/CNG.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rbcodec/codecs/libopus/silk/CNG.c')
-rw-r--r--lib/rbcodec/codecs/libopus/silk/CNG.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/rbcodec/codecs/libopus/silk/CNG.c b/lib/rbcodec/codecs/libopus/silk/CNG.c
index fc19391057..19c2e2230c 100644
--- a/lib/rbcodec/codecs/libopus/silk/CNG.c
+++ b/lib/rbcodec/codecs/libopus/silk/CNG.c
@@ -12,7 +12,7 @@ documentation and/or other materials provided with the distribution.
12names of specific contributors, may be used to endorse or promote 12names of specific contributors, may be used to endorse or promote
13products derived from this software without specific prior written 13products derived from this software without specific prior written
14permission. 14permission.
15THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS 15THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 18ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
@@ -26,10 +26,11 @@ 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 "main.h" 32#include "main.h"
33#include "stack_alloc.h"
33 34
34/* Generates excitation for CNG LPC synthesis */ 35/* Generates excitation for CNG LPC synthesis */
35static inline void silk_CNG_exc( 36static inline void silk_CNG_exc(
@@ -86,8 +87,8 @@ void silk_CNG(
86 opus_int i, subfr; 87 opus_int i, subfr;
87 opus_int32 sum_Q6, max_Gain_Q16; 88 opus_int32 sum_Q6, max_Gain_Q16;
88 opus_int16 A_Q12[ MAX_LPC_ORDER ]; 89 opus_int16 A_Q12[ MAX_LPC_ORDER ];
89 opus_int32 CNG_sig_Q10[ MAX_FRAME_LENGTH + MAX_LPC_ORDER ];
90 silk_CNG_struct *psCNG = &psDec->sCNG; 90 silk_CNG_struct *psCNG = &psDec->sCNG;
91 SAVE_STACK;
91 92
92 if( psDec->fs_kHz != psCNG->fs_kHz ) { 93 if( psDec->fs_kHz != psCNG->fs_kHz ) {
93 /* Reset state */ 94 /* Reset state */
@@ -123,6 +124,9 @@ void silk_CNG(
123 124
124 /* Add CNG when packet is lost or during DTX */ 125 /* Add CNG when packet is lost or during DTX */
125 if( psDec->lossCnt ) { 126 if( psDec->lossCnt ) {
127 VARDECL( opus_int32, CNG_sig_Q10 );
128
129 ALLOC( CNG_sig_Q10, length + MAX_LPC_ORDER, opus_int32 );
126 130
127 /* Generate CNG excitation */ 131 /* Generate CNG excitation */
128 silk_CNG_exc( CNG_sig_Q10 + MAX_LPC_ORDER, psCNG->CNG_exc_buf_Q14, psCNG->CNG_smth_Gain_Q16, length, &psCNG->rand_seed ); 132 silk_CNG_exc( CNG_sig_Q10 + MAX_LPC_ORDER, psCNG->CNG_exc_buf_Q14, psCNG->CNG_smth_Gain_Q16, length, &psCNG->rand_seed );
@@ -164,4 +168,5 @@ void silk_CNG(
164 } else { 168 } else {
165 silk_memset( psCNG->CNG_synth_state, 0, psDec->LPC_order * sizeof( opus_int32 ) ); 169 silk_memset( psCNG->CNG_synth_state, 0, psDec->LPC_order * sizeof( opus_int32 ) );
166 } 170 }
171 RESTORE_STACK;
167} 172}