| 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 45 /* Dequant Gains */ | 45 /* Dequant Gains */ |
| 46 silk_gains_dequant( psDecCtrl->Gains_Q16, psDec->indices.GainsIndices, | 46 silk_gains_dequant( psDecCtrl->Gains_Q16, psDec->indices.GainsIndices, |
| 47 &psDec->LastGainIndex, condCoding == CODE_CONDITIONALLY, psDec->nb_subfr
); | 47 &psDec->LastGainIndex, condCoding == CODE_CONDITIONALLY, psDec->nb_subfr
); |
| 48 | 48 |
| 49 /****************/ | 49 /****************/ |
| 50 /* Decode NLSFs */ | 50 /* Decode NLSFs */ |
| 51 /****************/ | 51 /****************/ |
| 52 silk_NLSF_decode( pNLSF_Q15, psDec->indices.NLSFIndices, psDec->psNLSF_CB ); | 52 silk_NLSF_decode( pNLSF_Q15, psDec->indices.NLSFIndices, psDec->psNLSF_CB ); |
| 53 | 53 |
| 54 /* Convert NLSF parameters to AR prediction filter coefficients */ | 54 /* Convert NLSF parameters to AR prediction filter coefficients */ |
| 55 silk_NLSF2A( psDecCtrl->PredCoef_Q12[ 1 ], pNLSF_Q15, psDec->LPC_order ); | 55 silk_NLSF2A( psDecCtrl->PredCoef_Q12[ 1 ], pNLSF_Q15, psDec->LPC_order, psDe
c->arch ); |
| 56 | 56 |
| 57 /* If just reset, e.g., because internal Fs changed, do not allow interpolat
ion */ | 57 /* If just reset, e.g., because internal Fs changed, do not allow interpolat
ion */ |
| 58 /* improves the case of packet loss in the first frame after a switch
*/ | 58 /* improves the case of packet loss in the first frame after a switch
*/ |
| 59 if( psDec->first_frame_after_reset == 1 ) { | 59 if( psDec->first_frame_after_reset == 1 ) { |
| 60 psDec->indices.NLSFInterpCoef_Q2 = 4; | 60 psDec->indices.NLSFInterpCoef_Q2 = 4; |
| 61 } | 61 } |
| 62 | 62 |
| 63 if( psDec->indices.NLSFInterpCoef_Q2 < 4 ) { | 63 if( psDec->indices.NLSFInterpCoef_Q2 < 4 ) { |
| 64 /* Calculation of the interpolated NLSF0 vector from the interpolation f
actor, */ | 64 /* Calculation of the interpolated NLSF0 vector from the interpolation f
actor, */ |
| 65 /* the previous NLSF1, and the current NLSF1
*/ | 65 /* the previous NLSF1, and the current NLSF1
*/ |
| 66 for( i = 0; i < psDec->LPC_order; i++ ) { | 66 for( i = 0; i < psDec->LPC_order; i++ ) { |
| 67 pNLSF0_Q15[ i ] = psDec->prevNLSF_Q15[ i ] + silk_RSHIFT( silk_MUL(
psDec->indices.NLSFInterpCoef_Q2, | 67 pNLSF0_Q15[ i ] = psDec->prevNLSF_Q15[ i ] + silk_RSHIFT( silk_MUL(
psDec->indices.NLSFInterpCoef_Q2, |
| 68 pNLSF_Q15[ i ] - psDec->prevNLSF_Q15[ i ] ), 2 ); | 68 pNLSF_Q15[ i ] - psDec->prevNLSF_Q15[ i ] ), 2 ); |
| 69 } | 69 } |
| 70 | 70 |
| 71 /* Convert NLSF parameters to AR prediction filter coefficients */ | 71 /* Convert NLSF parameters to AR prediction filter coefficients */ |
| 72 silk_NLSF2A( psDecCtrl->PredCoef_Q12[ 0 ], pNLSF0_Q15, psDec->LPC_order
); | 72 silk_NLSF2A( psDecCtrl->PredCoef_Q12[ 0 ], pNLSF0_Q15, psDec->LPC_order,
psDec->arch ); |
| 73 } else { | 73 } else { |
| 74 /* Copy LPC coefficients for first half from second half */ | 74 /* Copy LPC coefficients for first half from second half */ |
| 75 silk_memcpy( psDecCtrl->PredCoef_Q12[ 0 ], psDecCtrl->PredCoef_Q12[ 1 ],
psDec->LPC_order * sizeof( opus_int16 ) ); | 75 silk_memcpy( psDecCtrl->PredCoef_Q12[ 0 ], psDecCtrl->PredCoef_Q12[ 1 ],
psDec->LPC_order * sizeof( opus_int16 ) ); |
| 76 } | 76 } |
| 77 | 77 |
| 78 silk_memcpy( psDec->prevNLSF_Q15, pNLSF_Q15, psDec->LPC_order * sizeof( opus
_int16 ) ); | 78 silk_memcpy( psDec->prevNLSF_Q15, pNLSF_Q15, psDec->LPC_order * sizeof( opus
_int16 ) ); |
| 79 | 79 |
| 80 /* After a packet loss do BWE of LPC coefs */ | 80 /* After a packet loss do BWE of LPC coefs */ |
| 81 if( psDec->lossCnt ) { | 81 if( psDec->lossCnt ) { |
| 82 silk_bwexpander( psDecCtrl->PredCoef_Q12[ 0 ], psDec->LPC_order, BWE_AFT
ER_LOSS_Q16 ); | 82 silk_bwexpander( psDecCtrl->PredCoef_Q12[ 0 ], psDec->LPC_order, BWE_AFT
ER_LOSS_Q16 ); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 106 /**********************/ | 106 /**********************/ |
| 107 Ix = psDec->indices.LTP_scaleIndex; | 107 Ix = psDec->indices.LTP_scaleIndex; |
| 108 psDecCtrl->LTP_scale_Q14 = silk_LTPScales_table_Q14[ Ix ]; | 108 psDecCtrl->LTP_scale_Q14 = silk_LTPScales_table_Q14[ Ix ]; |
| 109 } else { | 109 } else { |
| 110 silk_memset( psDecCtrl->pitchL, 0, psDec->nb_subfr * si
zeof( opus_int ) ); | 110 silk_memset( psDecCtrl->pitchL, 0, psDec->nb_subfr * si
zeof( opus_int ) ); |
| 111 silk_memset( psDecCtrl->LTPCoef_Q14, 0, LTP_ORDER * psDec->nb_subfr * si
zeof( opus_int16 ) ); | 111 silk_memset( psDecCtrl->LTPCoef_Q14, 0, LTP_ORDER * psDec->nb_subfr * si
zeof( opus_int16 ) ); |
| 112 psDec->indices.PERIndex = 0; | 112 psDec->indices.PERIndex = 0; |
| 113 psDecCtrl->LTP_scale_Q14 = 0; | 113 psDecCtrl->LTP_scale_Q14 = 0; |
| 114 } | 114 } |
| 115 } | 115 } |
| OLD | NEW |