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

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

Issue 882843002: Update to opus-HEAD-66611f1. (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/opus.git@master
Patch Set: Add the contents of Makefile.mips back. Created 5 years, 10 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
« no previous file with comments | « silk/fixed/prefilter_FIX.c ('k') | silk/fixed/vector_ops_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 24 matching lines...) Expand all
35 /* Calculates residual energies of input subframes where all subframes have LPC_ order */ 35 /* Calculates residual energies of input subframes where all subframes have LPC_ order */
36 /* of preceding samples */ 36 /* of preceding samples */
37 void silk_residual_energy_FIX( 37 void silk_residual_energy_FIX(
38 opus_int32 nrgs[ MAX_NB_SUBFR ], /* O Residual energy per subframe */ 38 opus_int32 nrgs[ MAX_NB_SUBFR ], /* O Residual energy per subframe */
39 opus_int nrgsQ[ MAX_NB_SUBFR ], /* O Q value per subframe */ 39 opus_int nrgsQ[ MAX_NB_SUBFR ], /* O Q value per subframe */
40 const opus_int16 x[], /* I Input signal */ 40 const opus_int16 x[], /* I Input signal */
41 opus_int16 a_Q12[ 2 ][ MAX_LPC_ORDER ], /* I AR coefs for each frame half */ 41 opus_int16 a_Q12[ 2 ][ MAX_LPC_ORDER ], /* I AR coefs for each frame half */
42 const opus_int32 gains[ MAX_NB_SUBFR ], /* I Quantization gains */ 42 const opus_int32 gains[ MAX_NB_SUBFR ], /* I Quantization gains */
43 const opus_int subfr_length, /* I Subframe length */ 43 const opus_int subfr_length, /* I Subframe length */
44 const opus_int nb_subfr, /* I Number of subframes */ 44 const opus_int nb_subfr, /* I Number of subframes */
45 const opus_int LPC_order /* I LPC order */ 45 const opus_int LPC_order, /* I LPC order */
46 int arch /* I Run-time architecture */
46 ) 47 )
47 { 48 {
48 opus_int offset, i, j, rshift, lz1, lz2; 49 opus_int offset, i, j, rshift, lz1, lz2;
49 opus_int16 *LPC_res_ptr; 50 opus_int16 *LPC_res_ptr;
50 VARDECL( opus_int16, LPC_res ); 51 VARDECL( opus_int16, LPC_res );
51 const opus_int16 *x_ptr; 52 const opus_int16 *x_ptr;
52 opus_int32 tmp32; 53 opus_int32 tmp32;
53 SAVE_STACK; 54 SAVE_STACK;
54 55
55 x_ptr = x; 56 x_ptr = x;
56 offset = LPC_order + subfr_length; 57 offset = LPC_order + subfr_length;
57 58
58 /* Filter input to create the LPC residual for each frame half, and measure subframe energies */ 59 /* Filter input to create the LPC residual for each frame half, and measure subframe energies */
59 ALLOC( LPC_res, ( MAX_NB_SUBFR >> 1 ) * offset, opus_int16 ); 60 ALLOC( LPC_res, ( MAX_NB_SUBFR >> 1 ) * offset, opus_int16 );
60 silk_assert( ( nb_subfr >> 1 ) * ( MAX_NB_SUBFR >> 1 ) == nb_subfr ); 61 silk_assert( ( nb_subfr >> 1 ) * ( MAX_NB_SUBFR >> 1 ) == nb_subfr );
61 for( i = 0; i < nb_subfr >> 1; i++ ) { 62 for( i = 0; i < nb_subfr >> 1; i++ ) {
62 /* Calculate half frame LPC residual signal including preceding samples */ 63 /* Calculate half frame LPC residual signal including preceding samples */
63 silk_LPC_analysis_filter( LPC_res, x_ptr, a_Q12[ i ], ( MAX_NB_SUBFR >> 1 ) * offset, LPC_order ); 64 silk_LPC_analysis_filter( LPC_res, x_ptr, a_Q12[ i ], ( MAX_NB_SUBFR >> 1 ) * offset, LPC_order, arch );
64 65
65 /* Point to first subframe of the just calculated LPC residual signal */ 66 /* Point to first subframe of the just calculated LPC residual signal */
66 LPC_res_ptr = LPC_res + LPC_order; 67 LPC_res_ptr = LPC_res + LPC_order;
67 for( j = 0; j < ( MAX_NB_SUBFR >> 1 ); j++ ) { 68 for( j = 0; j < ( MAX_NB_SUBFR >> 1 ); j++ ) {
68 /* Measure subframe energy */ 69 /* Measure subframe energy */
69 silk_sum_sqr_shift( &nrgs[ i * ( MAX_NB_SUBFR >> 1 ) + j ], &rshift, LPC_res_ptr, subfr_length ); 70 silk_sum_sqr_shift( &nrgs[ i * ( MAX_NB_SUBFR >> 1 ) + j ], &rshift, LPC_res_ptr, subfr_length );
70 71
71 /* Set Q values for the measured energy */ 72 /* Set Q values for the measured energy */
72 nrgsQ[ i * ( MAX_NB_SUBFR >> 1 ) + j ] = -rshift; 73 nrgsQ[ i * ( MAX_NB_SUBFR >> 1 ) + j ] = -rshift;
73 74
(...skipping 14 matching lines...) Expand all
88 89
89 /* Find squared gains */ 90 /* Find squared gains */
90 tmp32 = silk_SMMUL( tmp32, tmp32 ); /* Q( 2 * lz2 - 32 )*/ 91 tmp32 = silk_SMMUL( tmp32, tmp32 ); /* Q( 2 * lz2 - 32 )*/
91 92
92 /* Scale energies */ 93 /* Scale energies */
93 nrgs[ i ] = silk_SMMUL( tmp32, silk_LSHIFT32( nrgs[ i ], lz1 ) ); /* Q( nrgsQ[ i ] + lz1 + 2 * lz2 - 32 - 32 )*/ 94 nrgs[ i ] = silk_SMMUL( tmp32, silk_LSHIFT32( nrgs[ i ], lz1 ) ); /* Q( nrgsQ[ i ] + lz1 + 2 * lz2 - 32 - 32 )*/
94 nrgsQ[ i ] += lz1 + 2 * lz2 - 32 - 32; 95 nrgsQ[ i ] += lz1 + 2 * lz2 - 32 - 32;
95 } 96 }
96 RESTORE_STACK; 97 RESTORE_STACK;
97 } 98 }
OLDNEW
« no previous file with comments | « silk/fixed/prefilter_FIX.c ('k') | silk/fixed/vector_ops_FIX.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698