Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(311)

Side by Side Diff: silk/fixed/find_pitch_lags_FIX.c

Issue 107243004: Updating Opus to release 1.1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/opus
Patch Set: Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « silk/fixed/find_LPC_FIX.c ('k') | silk/fixed/find_pred_coefs_FIX.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 20 matching lines...) Expand all
31 31
32 #include "main_FIX.h" 32 #include "main_FIX.h"
33 #include "stack_alloc.h" 33 #include "stack_alloc.h"
34 #include "tuning_parameters.h" 34 #include "tuning_parameters.h"
35 35
36 /* Find pitch lags */ 36 /* Find pitch lags */
37 void silk_find_pitch_lags_FIX( 37 void silk_find_pitch_lags_FIX(
38 silk_encoder_state_FIX *psEnc, /* I /O encoder state */ 38 silk_encoder_state_FIX *psEnc, /* I /O encoder state */
39 silk_encoder_control_FIX *psEncCtrl, /* I /O encoder control */ 39 silk_encoder_control_FIX *psEncCtrl, /* I /O encoder control */
40 opus_int16 res[], /* O residual */ 40 opus_int16 res[], /* O residual */
41 const opus_int16 x[] /* I Speech signal */ 41 const opus_int16 x[], /* I Speech signal */
42 int arch /* I Run-time architecture */
42 ) 43 )
43 { 44 {
44 opus_int buf_len, i, scale; 45 opus_int buf_len, i, scale;
45 opus_int32 thrhld_Q13, res_nrg; 46 opus_int32 thrhld_Q13, res_nrg;
46 const opus_int16 *x_buf, *x_buf_ptr; 47 const opus_int16 *x_buf, *x_buf_ptr;
47 VARDECL( opus_int16, Wsig ); 48 VARDECL( opus_int16, Wsig );
48 opus_int16 *Wsig_ptr; 49 opus_int16 *Wsig_ptr;
49 opus_int32 auto_corr[ MAX_FIND_PITCH_LPC_ORDER + 1 ]; 50 opus_int32 auto_corr[ MAX_FIND_PITCH_LPC_ORDER + 1 ];
50 opus_int16 rc_Q15[ MAX_FIND_PITCH_LPC_ORDER ]; 51 opus_int16 rc_Q15[ MAX_FIND_PITCH_LPC_ORDER ];
51 opus_int32 A_Q24[ MAX_FIND_PITCH_LPC_ORDER ]; 52 opus_int32 A_Q24[ MAX_FIND_PITCH_LPC_ORDER ];
(...skipping 27 matching lines...) Expand all
79 Wsig_ptr += psEnc->sCmn.la_pitch; 80 Wsig_ptr += psEnc->sCmn.la_pitch;
80 x_buf_ptr += psEnc->sCmn.la_pitch; 81 x_buf_ptr += psEnc->sCmn.la_pitch;
81 silk_memcpy( Wsig_ptr, x_buf_ptr, ( psEnc->sCmn.pitch_LPC_win_length - silk_ LSHIFT( psEnc->sCmn.la_pitch, 1 ) ) * sizeof( opus_int16 ) ); 82 silk_memcpy( Wsig_ptr, x_buf_ptr, ( psEnc->sCmn.pitch_LPC_win_length - silk_ LSHIFT( psEnc->sCmn.la_pitch, 1 ) ) * sizeof( opus_int16 ) );
82 83
83 /* Last LA_LTP samples */ 84 /* Last LA_LTP samples */
84 Wsig_ptr += psEnc->sCmn.pitch_LPC_win_length - silk_LSHIFT( psEnc->sCmn.la_ pitch, 1 ); 85 Wsig_ptr += psEnc->sCmn.pitch_LPC_win_length - silk_LSHIFT( psEnc->sCmn.la_ pitch, 1 );
85 x_buf_ptr += psEnc->sCmn.pitch_LPC_win_length - silk_LSHIFT( psEnc->sCmn.la_ pitch, 1 ); 86 x_buf_ptr += psEnc->sCmn.pitch_LPC_win_length - silk_LSHIFT( psEnc->sCmn.la_ pitch, 1 );
86 silk_apply_sine_window( Wsig_ptr, x_buf_ptr, 2, psEnc->sCmn.la_pitch ); 87 silk_apply_sine_window( Wsig_ptr, x_buf_ptr, 2, psEnc->sCmn.la_pitch );
87 88
88 /* Calculate autocorrelation sequence */ 89 /* Calculate autocorrelation sequence */
89 silk_autocorr( auto_corr, &scale, Wsig, psEnc->sCmn.pitch_LPC_win_length, ps Enc->sCmn.pitchEstimationLPCOrder + 1 ); 90 silk_autocorr( auto_corr, &scale, Wsig, psEnc->sCmn.pitch_LPC_win_length, ps Enc->sCmn.pitchEstimationLPCOrder + 1, arch );
90 91
91 /* Add white noise, as fraction of energy */ 92 /* Add white noise, as fraction of energy */
92 auto_corr[ 0 ] = silk_SMLAWB( auto_corr[ 0 ], auto_corr[ 0 ], SILK_FIX_CONST ( FIND_PITCH_WHITE_NOISE_FRACTION, 16 ) ) + 1; 93 auto_corr[ 0 ] = silk_SMLAWB( auto_corr[ 0 ], auto_corr[ 0 ], SILK_FIX_CONST ( FIND_PITCH_WHITE_NOISE_FRACTION, 16 ) ) + 1;
93 94
94 /* Calculate the reflection coefficients using schur */ 95 /* Calculate the reflection coefficients using schur */
95 res_nrg = silk_schur( rc_Q15, auto_corr, psEnc->sCmn.pitchEstimationLPCOrder ); 96 res_nrg = silk_schur( rc_Q15, auto_corr, psEnc->sCmn.pitchEstimationLPCOrder );
96 97
97 /* Prediction gain */ 98 /* Prediction gain */
98 psEncCtrl->predGain_Q16 = silk_DIV32_varQ( auto_corr[ 0 ], silk_max_int( res _nrg, 1 ), 16 ); 99 psEncCtrl->predGain_Q16 = silk_DIV32_varQ( auto_corr[ 0 ], silk_max_int( res _nrg, 1 ), 16 );
99 100
(...skipping 20 matching lines...) Expand all
120 thrhld_Q13 = silk_SMLAWB( thrhld_Q13, SILK_FIX_CONST( -0.1, 21 ), psE nc->sCmn.speech_activity_Q8 ); 121 thrhld_Q13 = silk_SMLAWB( thrhld_Q13, SILK_FIX_CONST( -0.1, 21 ), psE nc->sCmn.speech_activity_Q8 );
121 thrhld_Q13 = silk_SMLABB( thrhld_Q13, SILK_FIX_CONST( -0.15, 13 ), silk _RSHIFT( psEnc->sCmn.prevSignalType, 1 ) ); 122 thrhld_Q13 = silk_SMLABB( thrhld_Q13, SILK_FIX_CONST( -0.15, 13 ), silk _RSHIFT( psEnc->sCmn.prevSignalType, 1 ) );
122 thrhld_Q13 = silk_SMLAWB( thrhld_Q13, SILK_FIX_CONST( -0.1, 14 ), psEn c->sCmn.input_tilt_Q15 ); 123 thrhld_Q13 = silk_SMLAWB( thrhld_Q13, SILK_FIX_CONST( -0.1, 14 ), psEn c->sCmn.input_tilt_Q15 );
123 thrhld_Q13 = silk_SAT16( thrhld_Q13 ); 124 thrhld_Q13 = silk_SAT16( thrhld_Q13 );
124 125
125 /*****************************************/ 126 /*****************************************/
126 /* Call pitch estimator */ 127 /* Call pitch estimator */
127 /*****************************************/ 128 /*****************************************/
128 if( silk_pitch_analysis_core( res, psEncCtrl->pitchL, &psEnc->sCmn.indic es.lagIndex, &psEnc->sCmn.indices.contourIndex, 129 if( silk_pitch_analysis_core( res, psEncCtrl->pitchL, &psEnc->sCmn.indic es.lagIndex, &psEnc->sCmn.indices.contourIndex,
129 &psEnc->LTPCorr_Q15, psEnc->sCmn.prevLag, psEnc->sCmn.pitchEstim ationThreshold_Q16, 130 &psEnc->LTPCorr_Q15, psEnc->sCmn.prevLag, psEnc->sCmn.pitchEstim ationThreshold_Q16,
130 (opus_int)thrhld_Q13, psEnc->sCmn.fs_kHz, psEnc->sCmn.pitchEstim ationComplexity, psEnc->sCmn.nb_subfr ) == 0 ) 131 (opus_int)thrhld_Q13, psEnc->sCmn.fs_kHz, psEnc->sCmn.pitchEstim ationComplexity, psEnc->sCmn.nb_subfr,
132 psEnc->sCmn.arch) == 0 )
131 { 133 {
132 psEnc->sCmn.indices.signalType = TYPE_VOICED; 134 psEnc->sCmn.indices.signalType = TYPE_VOICED;
133 } else { 135 } else {
134 psEnc->sCmn.indices.signalType = TYPE_UNVOICED; 136 psEnc->sCmn.indices.signalType = TYPE_UNVOICED;
135 } 137 }
136 } else { 138 } else {
137 silk_memset( psEncCtrl->pitchL, 0, sizeof( psEncCtrl->pitchL ) ); 139 silk_memset( psEncCtrl->pitchL, 0, sizeof( psEncCtrl->pitchL ) );
138 psEnc->sCmn.indices.lagIndex = 0; 140 psEnc->sCmn.indices.lagIndex = 0;
139 psEnc->sCmn.indices.contourIndex = 0; 141 psEnc->sCmn.indices.contourIndex = 0;
140 psEnc->LTPCorr_Q15 = 0; 142 psEnc->LTPCorr_Q15 = 0;
141 } 143 }
142 RESTORE_STACK; 144 RESTORE_STACK;
143 } 145 }
OLDNEW
« no previous file with comments | « silk/fixed/find_LPC_FIX.c ('k') | silk/fixed/find_pred_coefs_FIX.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698