| OLD | NEW |
| 1 /*********************************************************************** | 1 /*********************************************************************** |
| 2 Copyright (c) 2006-2011, Skype Limited. All rights reserved. | 2 Copyright (c) 2006-2011, Skype Limited. All rights reserved. |
| 3 Redistribution and use in source and binary forms, with or without | 3 Redistribution and use in source and binary forms, with or without |
| 4 modification, are permitted provided that the following conditions | 4 modification, are permitted provided that the following conditions |
| 5 are met: | 5 are met: |
| 6 - Redistributions of source code must retain the above copyright notice, | 6 - Redistributions of source code must retain the above copyright notice, |
| 7 this list of conditions and the following disclaimer. | 7 this list of conditions and the following disclaimer. |
| 8 - Redistributions in binary form must reproduce the above copyright | 8 - Redistributions in binary form must reproduce the above copyright |
| 9 notice, this list of conditions and the following disclaimer in the | 9 notice, this list of conditions and the following disclaimer in the |
| 10 documentation and/or other materials provided with the distribution. | 10 documentation and/or other materials provided with the distribution. |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 return SILK_ENC_INPUT_INVALID_NO_OF_SAMPLES; | 226 return SILK_ENC_INPUT_INVALID_NO_OF_SAMPLES; |
| 227 } | 227 } |
| 228 /* Make sure no more than one packet can be produced */ | 228 /* Make sure no more than one packet can be produced */ |
| 229 if( 1000 * (opus_int32)nSamplesIn > encControl->payloadSize_ms * encCont
rol->API_sampleRate ) { | 229 if( 1000 * (opus_int32)nSamplesIn > encControl->payloadSize_ms * encCont
rol->API_sampleRate ) { |
| 230 silk_assert( 0 ); | 230 silk_assert( 0 ); |
| 231 RESTORE_STACK; | 231 RESTORE_STACK; |
| 232 return SILK_ENC_INPUT_INVALID_NO_OF_SAMPLES; | 232 return SILK_ENC_INPUT_INVALID_NO_OF_SAMPLES; |
| 233 } | 233 } |
| 234 } | 234 } |
| 235 | 235 |
| 236 TargetRate_bps = silk_RSHIFT32( encControl->bitRate, encControl->nChannelsIn
ternal - 1 ); | |
| 237 for( n = 0; n < encControl->nChannelsInternal; n++ ) { | 236 for( n = 0; n < encControl->nChannelsInternal; n++ ) { |
| 238 /* Force the side channel to the same rate as the mid */ | 237 /* Force the side channel to the same rate as the mid */ |
| 239 opus_int force_fs_kHz = (n==1) ? psEnc->state_Fxx[0].sCmn.fs_kHz : 0; | 238 opus_int force_fs_kHz = (n==1) ? psEnc->state_Fxx[0].sCmn.fs_kHz : 0; |
| 240 if( ( ret = silk_control_encoder( &psEnc->state_Fxx[ n ], encControl, Ta
rgetRate_bps, psEnc->allowBandwidthSwitch, n, force_fs_kHz ) ) != 0 ) { | 239 if( ( ret = silk_control_encoder( &psEnc->state_Fxx[ n ], encControl, ps
Enc->allowBandwidthSwitch, n, force_fs_kHz ) ) != 0 ) { |
| 241 silk_assert( 0 ); | 240 silk_assert( 0 ); |
| 242 RESTORE_STACK; | 241 RESTORE_STACK; |
| 243 return ret; | 242 return ret; |
| 244 } | 243 } |
| 245 if( psEnc->state_Fxx[n].sCmn.first_frame_after_reset || transition ) { | 244 if( psEnc->state_Fxx[n].sCmn.first_frame_after_reset || transition ) { |
| 246 for( i = 0; i < psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket; i++ ) { | 245 for( i = 0; i < psEnc->state_Fxx[ 0 ].sCmn.nFramesPerPacket; i++ ) { |
| 247 psEnc->state_Fxx[ n ].sCmn.LBRR_flags[ i ] = 0; | 246 psEnc->state_Fxx[ n ].sCmn.LBRR_flags[ i ] = 0; |
| 248 } | 247 } |
| 249 } | 248 } |
| 250 psEnc->state_Fxx[ n ].sCmn.inDTX = psEnc->state_Fxx[ n ].sCmn.useDTX; | 249 psEnc->state_Fxx[ n ].sCmn.inDTX = psEnc->state_Fxx[ n ].sCmn.useDTX; |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 /* Convert Left/Right to Mid/Side */ | 408 /* Convert Left/Right to Mid/Side */ |
| 410 if( encControl->nChannelsInternal == 2 ) { | 409 if( encControl->nChannelsInternal == 2 ) { |
| 411 silk_stereo_LR_to_MS( &psEnc->sStereo, &psEnc->state_Fxx[ 0 ].sC
mn.inputBuf[ 2 ], &psEnc->state_Fxx[ 1 ].sCmn.inputBuf[ 2 ], | 410 silk_stereo_LR_to_MS( &psEnc->sStereo, &psEnc->state_Fxx[ 0 ].sC
mn.inputBuf[ 2 ], &psEnc->state_Fxx[ 1 ].sCmn.inputBuf[ 2 ], |
| 412 psEnc->sStereo.predIx[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEnc
oded ], &psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncode
d ], | 411 psEnc->sStereo.predIx[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEnc
oded ], &psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nFramesEncode
d ], |
| 413 MStargetRates_bps, TargetRate_bps, psEnc->state_Fxx[ 0 ].sCm
n.speech_activity_Q8, encControl->toMono, | 412 MStargetRates_bps, TargetRate_bps, psEnc->state_Fxx[ 0 ].sCm
n.speech_activity_Q8, encControl->toMono, |
| 414 psEnc->state_Fxx[ 0 ].sCmn.fs_kHz, psEnc->state_Fxx[ 0 ].sCm
n.frame_length ); | 413 psEnc->state_Fxx[ 0 ].sCmn.fs_kHz, psEnc->state_Fxx[ 0 ].sCm
n.frame_length ); |
| 415 if( psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nF
ramesEncoded ] == 0 ) { | 414 if( psEnc->sStereo.mid_only_flags[ psEnc->state_Fxx[ 0 ].sCmn.nF
ramesEncoded ] == 0 ) { |
| 416 /* Reset side channel encoder memory for first frame with si
de coding */ | 415 /* Reset side channel encoder memory for first frame with si
de coding */ |
| 417 if( psEnc->prev_decode_only_middle == 1 ) { | 416 if( psEnc->prev_decode_only_middle == 1 ) { |
| 418 silk_memset( &psEnc->state_Fxx[ 1 ].sShape,
0, sizeof( psEnc->state_Fxx[ 1 ].sShape ) ); | 417 silk_memset( &psEnc->state_Fxx[ 1 ].sShape,
0, sizeof( psEnc->state_Fxx[ 1 ].sShape ) ); |
| 419 silk_memset( &psEnc->state_Fxx[ 1 ].sPrefilt,
0, sizeof( psEnc->state_Fxx[ 1 ].sPrefilt ) ); | |
| 420 silk_memset( &psEnc->state_Fxx[ 1 ].sCmn.sNSQ,
0, sizeof( psEnc->state_Fxx[ 1 ].sCmn.sNSQ ) ); | 418 silk_memset( &psEnc->state_Fxx[ 1 ].sCmn.sNSQ,
0, sizeof( psEnc->state_Fxx[ 1 ].sCmn.sNSQ ) ); |
| 421 silk_memset( psEnc->state_Fxx[ 1 ].sCmn.prev_NLSFq_Q15,
0, sizeof( psEnc->state_Fxx[ 1 ].sCmn.prev_NLSFq_Q15 ) ); | 419 silk_memset( psEnc->state_Fxx[ 1 ].sCmn.prev_NLSFq_Q15,
0, sizeof( psEnc->state_Fxx[ 1 ].sCmn.prev_NLSFq_Q15 ) ); |
| 422 silk_memset( &psEnc->state_Fxx[ 1 ].sCmn.sLP.In_LP_State
, 0, sizeof( psEnc->state_Fxx[ 1 ].sCmn.sLP.In_LP_State ) ); | 420 silk_memset( &psEnc->state_Fxx[ 1 ].sCmn.sLP.In_LP_State
, 0, sizeof( psEnc->state_Fxx[ 1 ].sCmn.sLP.In_LP_State ) ); |
| 423 psEnc->state_Fxx[ 1 ].sCmn.prevLag = 100
; | 421 psEnc->state_Fxx[ 1 ].sCmn.prevLag = 100
; |
| 424 psEnc->state_Fxx[ 1 ].sCmn.sNSQ.lagPrev = 100
; | 422 psEnc->state_Fxx[ 1 ].sCmn.sNSQ.lagPrev = 100
; |
| 425 psEnc->state_Fxx[ 1 ].sShape.LastGainIndex = 10; | 423 psEnc->state_Fxx[ 1 ].sShape.LastGainIndex = 10; |
| 426 psEnc->state_Fxx[ 1 ].sCmn.prevSignalType = TYP
E_NO_VOICE_ACTIVITY; | 424 psEnc->state_Fxx[ 1 ].sCmn.prevSignalType = TYP
E_NO_VOICE_ACTIVITY; |
| 427 psEnc->state_Fxx[ 1 ].sCmn.sNSQ.prev_gain_Q16 = 655
36; | 425 psEnc->state_Fxx[ 1 ].sCmn.sNSQ.prev_gain_Q16 = 655
36; |
| 428 psEnc->state_Fxx[ 1 ].sCmn.first_frame_after_reset = 1; | 426 psEnc->state_Fxx[ 1 ].sCmn.first_frame_after_reset = 1; |
| 429 } | 427 } |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 550 encControl->stereoWidth_Q14 = encControl->toMono ? 0 : psEnc->sStereo.smth_w
idth_Q14; | 548 encControl->stereoWidth_Q14 = encControl->toMono ? 0 : psEnc->sStereo.smth_w
idth_Q14; |
| 551 if( prefillFlag ) { | 549 if( prefillFlag ) { |
| 552 encControl->payloadSize_ms = tmp_payloadSize_ms; | 550 encControl->payloadSize_ms = tmp_payloadSize_ms; |
| 553 encControl->complexity = tmp_complexity; | 551 encControl->complexity = tmp_complexity; |
| 554 for( n = 0; n < encControl->nChannelsInternal; n++ ) { | 552 for( n = 0; n < encControl->nChannelsInternal; n++ ) { |
| 555 psEnc->state_Fxx[ n ].sCmn.controlled_since_last_payload = 0; | 553 psEnc->state_Fxx[ n ].sCmn.controlled_since_last_payload = 0; |
| 556 psEnc->state_Fxx[ n ].sCmn.prefillFlag = 0; | 554 psEnc->state_Fxx[ n ].sCmn.prefillFlag = 0; |
| 557 } | 555 } |
| 558 } | 556 } |
| 559 | 557 |
| 558 encControl->signalType = psEnc->state_Fxx[0].sCmn.indices.signalType; |
| 559 encControl->offset = silk_Quantization_Offsets_Q10 |
| 560 [ psEnc->state_Fxx[0].sCmn.indices.signalType >> 1 ] |
| 561 [ psEnc->state_Fxx[0].sCmn.indices.quantOffsetType ]; |
| 560 RESTORE_STACK; | 562 RESTORE_STACK; |
| 561 return ret; | 563 return ret; |
| 562 } | 564 } |
| 563 | 565 |
| OLD | NEW |