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

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

Issue 12388030: Update Opus to 1.0.2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/opus
Patch Set: Created 7 years, 9 months 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/pitch_analysis_core_FIX.c ('k') | silk/float/LTP_analysis_filter_FLP.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 14 matching lines...) Expand all
25 POSSIBILITY OF SUCH DAMAGE. 25 POSSIBILITY OF SUCH DAMAGE.
26 ***********************************************************************/ 26 ***********************************************************************/
27 27
28 #ifdef HAVE_CONFIG_H 28 #ifdef HAVE_CONFIG_H
29 #include "config.h" 29 #include "config.h"
30 #endif 30 #endif
31 31
32 #include "main_FIX.h" 32 #include "main_FIX.h"
33 33
34 /* Calculates residual energies of input subframes where all subframes have LPC_ order */ 34 /* Calculates residual energies of input subframes where all subframes have LPC_ order */
35 /* of preceeding samples */ 35 /* of preceding samples */
36 void silk_residual_energy_FIX( 36 void silk_residual_energy_FIX(
37 opus_int32 nrgs[ MAX_NB_SUBFR ], /* O Residual energy per subframe */ 37 opus_int32 nrgs[ MAX_NB_SUBFR ], /* O Residual energy per subframe */
38 opus_int nrgsQ[ MAX_NB_SUBFR ], /* O Q value per subframe */ 38 opus_int nrgsQ[ MAX_NB_SUBFR ], /* O Q value per subframe */
39 const opus_int16 x[], /* I Input signal */ 39 const opus_int16 x[], /* I Input signal */
40 opus_int16 a_Q12[ 2 ][ MAX_LPC_ORDER ], /* I AR coefs for each frame half */ 40 opus_int16 a_Q12[ 2 ][ MAX_LPC_ORDER ], /* I AR coefs for each frame half */
41 const opus_int32 gains[ MAX_NB_SUBFR ], /* I Quantization gains */ 41 const opus_int32 gains[ MAX_NB_SUBFR ], /* I Quantization gains */
42 const opus_int subfr_length, /* I Subframe length */ 42 const opus_int subfr_length, /* I Subframe length */
43 const opus_int nb_subfr, /* I Number of subframes */ 43 const opus_int nb_subfr, /* I Number of subframes */
44 const opus_int LPC_order /* I LPC order */ 44 const opus_int LPC_order /* I LPC order */
45 ) 45 )
46 { 46 {
47 opus_int offset, i, j, rshift, lz1, lz2; 47 opus_int offset, i, j, rshift, lz1, lz2;
48 opus_int16 *LPC_res_ptr, LPC_res[ ( MAX_FRAME_LENGTH + MAX_NB_SUBFR * MAX_LPC_ORDER ) / 2 ]; 48 opus_int16 *LPC_res_ptr, LPC_res[ ( MAX_FRAME_LENGTH + MAX_NB_SUBFR * MAX_LPC_ORDER ) / 2 ];
49 const opus_int16 *x_ptr; 49 const opus_int16 *x_ptr;
50 opus_int32 tmp32; 50 opus_int32 tmp32;
51 51
52 x_ptr = x; 52 x_ptr = x;
53 offset = LPC_order + subfr_length; 53 offset = LPC_order + subfr_length;
54 54
55 /* Filter input to create the LPC residual for each frame half, and measure subframe energies */ 55 /* Filter input to create the LPC residual for each frame half, and measure subframe energies */
56 for( i = 0; i < nb_subfr >> 1; i++ ) { 56 for( i = 0; i < nb_subfr >> 1; i++ ) {
57 /* Calculate half frame LPC residual signal including preceeding samples */ 57 /* Calculate half frame LPC residual signal including preceding samples */
58 silk_LPC_analysis_filter( LPC_res, x_ptr, a_Q12[ i ], ( MAX_NB_SUBFR >> 1 ) * offset, LPC_order ); 58 silk_LPC_analysis_filter( LPC_res, x_ptr, a_Q12[ i ], ( MAX_NB_SUBFR >> 1 ) * offset, LPC_order );
59 59
60 /* Point to first subframe of the just calculated LPC residual signal */ 60 /* Point to first subframe of the just calculated LPC residual signal */
61 LPC_res_ptr = LPC_res + LPC_order; 61 LPC_res_ptr = LPC_res + LPC_order;
62 for( j = 0; j < ( MAX_NB_SUBFR >> 1 ); j++ ) { 62 for( j = 0; j < ( MAX_NB_SUBFR >> 1 ); j++ ) {
63 /* Measure subframe energy */ 63 /* Measure subframe energy */
64 silk_sum_sqr_shift( &nrgs[ i * ( MAX_NB_SUBFR >> 1 ) + j ], &rshift, LPC_res_ptr, subfr_length ); 64 silk_sum_sqr_shift( &nrgs[ i * ( MAX_NB_SUBFR >> 1 ) + j ], &rshift, LPC_res_ptr, subfr_length );
65 65
66 /* Set Q values for the measured energy */ 66 /* Set Q values for the measured energy */
67 nrgsQ[ i * ( MAX_NB_SUBFR >> 1 ) + j ] = -rshift; 67 nrgsQ[ i * ( MAX_NB_SUBFR >> 1 ) + j ] = -rshift;
(...skipping 14 matching lines...) Expand all
82 tmp32 = silk_LSHIFT32( gains[ i ], lz2 ); 82 tmp32 = silk_LSHIFT32( gains[ i ], lz2 );
83 83
84 /* Find squared gains */ 84 /* Find squared gains */
85 tmp32 = silk_SMMUL( tmp32, tmp32 ); /* Q( 2 * lz2 - 32 )*/ 85 tmp32 = silk_SMMUL( tmp32, tmp32 ); /* Q( 2 * lz2 - 32 )*/
86 86
87 /* Scale energies */ 87 /* Scale energies */
88 nrgs[ i ] = silk_SMMUL( tmp32, silk_LSHIFT32( nrgs[ i ], lz1 ) ); /* Q( nrgsQ[ i ] + lz1 + 2 * lz2 - 32 - 32 )*/ 88 nrgs[ i ] = silk_SMMUL( tmp32, silk_LSHIFT32( nrgs[ i ], lz1 ) ); /* Q( nrgsQ[ i ] + lz1 + 2 * lz2 - 32 - 32 )*/
89 nrgsQ[ i ] += lz1 + 2 * lz2 - 32 - 32; 89 nrgsQ[ i ] += lz1 + 2 * lz2 - 32 - 32;
90 } 90 }
91 } 91 }
OLDNEW
« no previous file with comments | « silk/fixed/pitch_analysis_core_FIX.c ('k') | silk/float/LTP_analysis_filter_FLP.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698