diff options
Diffstat (limited to 'lib/rbcodec/codecs/libopus/silk/decode_frame.c')
-rw-r--r-- | lib/rbcodec/codecs/libopus/silk/decode_frame.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/rbcodec/codecs/libopus/silk/decode_frame.c b/lib/rbcodec/codecs/libopus/silk/decode_frame.c index abc00a3d54..6a7cffbbe0 100644 --- a/lib/rbcodec/codecs/libopus/silk/decode_frame.c +++ b/lib/rbcodec/codecs/libopus/silk/decode_frame.c | |||
@@ -47,13 +47,10 @@ opus_int silk_decode_frame( | |||
47 | { | 47 | { |
48 | VARDECL( silk_decoder_control, psDecCtrl ); | 48 | VARDECL( silk_decoder_control, psDecCtrl ); |
49 | opus_int L, mv_len, ret = 0; | 49 | opus_int L, mv_len, ret = 0; |
50 | VARDECL( opus_int, pulses ); | ||
51 | SAVE_STACK; | 50 | SAVE_STACK; |
52 | 51 | ||
53 | L = psDec->frame_length; | 52 | L = psDec->frame_length; |
54 | ALLOC( psDecCtrl, 1, silk_decoder_control ); | 53 | ALLOC( psDecCtrl, 1, silk_decoder_control ); |
55 | ALLOC( pulses, (L + SHELL_CODEC_FRAME_LENGTH - 1) & | ||
56 | ~(SHELL_CODEC_FRAME_LENGTH - 1), opus_int ); | ||
57 | psDecCtrl->LTP_scale_Q14 = 0; | 54 | psDecCtrl->LTP_scale_Q14 = 0; |
58 | 55 | ||
59 | /* Safety checks */ | 56 | /* Safety checks */ |
@@ -62,6 +59,9 @@ opus_int silk_decode_frame( | |||
62 | if( lostFlag == FLAG_DECODE_NORMAL || | 59 | if( lostFlag == FLAG_DECODE_NORMAL || |
63 | ( lostFlag == FLAG_DECODE_LBRR && psDec->LBRR_flags[ psDec->nFramesDecoded ] == 1 ) ) | 60 | ( lostFlag == FLAG_DECODE_LBRR && psDec->LBRR_flags[ psDec->nFramesDecoded ] == 1 ) ) |
64 | { | 61 | { |
62 | VARDECL( opus_int16, pulses ); | ||
63 | ALLOC( pulses, (L + SHELL_CODEC_FRAME_LENGTH - 1) & | ||
64 | ~(SHELL_CODEC_FRAME_LENGTH - 1), opus_int16 ); | ||
65 | /*********************************************/ | 65 | /*********************************************/ |
66 | /* Decode quantization indices of side info */ | 66 | /* Decode quantization indices of side info */ |
67 | /*********************************************/ | 67 | /*********************************************/ |
@@ -107,16 +107,16 @@ opus_int silk_decode_frame( | |||
107 | silk_memmove( psDec->outBuf, &psDec->outBuf[ psDec->frame_length ], mv_len * sizeof(opus_int16) ); | 107 | silk_memmove( psDec->outBuf, &psDec->outBuf[ psDec->frame_length ], mv_len * sizeof(opus_int16) ); |
108 | silk_memcpy( &psDec->outBuf[ mv_len ], pOut, psDec->frame_length * sizeof( opus_int16 ) ); | 108 | silk_memcpy( &psDec->outBuf[ mv_len ], pOut, psDec->frame_length * sizeof( opus_int16 ) ); |
109 | 109 | ||
110 | /****************************************************************/ | ||
111 | /* Ensure smooth connection of extrapolated and good frames */ | ||
112 | /****************************************************************/ | ||
113 | silk_PLC_glue_frames( psDec, pOut, L ); | ||
114 | |||
115 | /************************************************/ | 110 | /************************************************/ |
116 | /* Comfort noise generation / estimation */ | 111 | /* Comfort noise generation / estimation */ |
117 | /************************************************/ | 112 | /************************************************/ |
118 | silk_CNG( psDec, psDecCtrl, pOut, L ); | 113 | silk_CNG( psDec, psDecCtrl, pOut, L ); |
119 | 114 | ||
115 | /****************************************************************/ | ||
116 | /* Ensure smooth connection of extrapolated and good frames */ | ||
117 | /****************************************************************/ | ||
118 | silk_PLC_glue_frames( psDec, pOut, L ); | ||
119 | |||
120 | /* Update some decoder state variables */ | 120 | /* Update some decoder state variables */ |
121 | psDec->lagPrev = psDecCtrl->pitchL[ psDec->nb_subfr - 1 ]; | 121 | psDec->lagPrev = psDecCtrl->pitchL[ psDec->nb_subfr - 1 ]; |
122 | 122 | ||