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

Side by Side Diff: silk/NSQ_del_dec.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/NSQ.c ('k') | silk/PLC.h » ('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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
50 opus_int32 Q_Q10; 50 opus_int32 Q_Q10;
51 opus_int32 RD_Q10; 51 opus_int32 RD_Q10;
52 opus_int32 xq_Q14; 52 opus_int32 xq_Q14;
53 opus_int32 LF_AR_Q14; 53 opus_int32 LF_AR_Q14;
54 opus_int32 sLTP_shp_Q14; 54 opus_int32 sLTP_shp_Q14;
55 opus_int32 LPC_exc_Q14; 55 opus_int32 LPC_exc_Q14;
56 } NSQ_sample_struct; 56 } NSQ_sample_struct;
57 57
58 typedef NSQ_sample_struct NSQ_sample_pair[ 2 ]; 58 typedef NSQ_sample_struct NSQ_sample_pair[ 2 ];
59 59
60 #if defined(MIPSr1_ASM)
61 #include "mips/NSQ_del_dec_mipsr1.h"
62 #endif
60 static OPUS_INLINE void silk_nsq_del_dec_scale_states( 63 static OPUS_INLINE void silk_nsq_del_dec_scale_states(
61 const silk_encoder_state *psEncC, /* I Encoder State */ 64 const silk_encoder_state *psEncC, /* I Encoder State */
62 silk_nsq_state *NSQ, /* I/O NSQ state */ 65 silk_nsq_state *NSQ, /* I/O NSQ state */
63 NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision sta tes */ 66 NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision sta tes */
64 const opus_int32 x_Q3[], /* I Input in Q3 */ 67 const opus_int32 x_Q3[], /* I Input in Q3 */
65 opus_int32 x_sc_Q10[], /* O Input scaled with 1/ Gain in Q10 */ 68 opus_int32 x_sc_Q10[], /* O Input scaled with 1/ Gain in Q10 */
66 const opus_int16 sLTP[], /* I Re-whitened LTP stat e in Q0 */ 69 const opus_int16 sLTP[], /* I Re-whitened LTP stat e in Q0 */
67 opus_int32 sLTP_Q15[], /* O LTP state matching s caled input */ 70 opus_int32 sLTP_Q15[], /* O LTP state matching s caled input */
68 opus_int subfr, /* I Subframe number */ 71 opus_int subfr, /* I Subframe number */
69 opus_int nStatesDelayedDecision, /* I Number of del dec st ates */ 72 opus_int nStatesDelayedDecision, /* I Number of del dec st ates */
(...skipping 29 matching lines...) Expand all
99 opus_int length, /* I Input length */ 102 opus_int length, /* I Input length */
100 opus_int subfr, /* I Subframe number */ 103 opus_int subfr, /* I Subframe number */
101 opus_int shapingLPCOrder, /* I Shaping LPC filter order */ 104 opus_int shapingLPCOrder, /* I Shaping LPC filter order */
102 opus_int predictLPCOrder, /* I Prediction filter order */ 105 opus_int predictLPCOrder, /* I Prediction filter order */
103 opus_int warping_Q16, /* I */ 106 opus_int warping_Q16, /* I */
104 opus_int nStatesDelayedDecision, /* I Number of states in deci sion tree */ 107 opus_int nStatesDelayedDecision, /* I Number of states in deci sion tree */
105 opus_int *smpl_buf_idx, /* I Index to newest samples in buffers */ 108 opus_int *smpl_buf_idx, /* I Index to newest samples in buffers */
106 opus_int decisionDelay /* I */ 109 opus_int decisionDelay /* I */
107 ); 110 );
108 111
109 void silk_NSQ_del_dec( 112 void silk_NSQ_del_dec_c(
110 const silk_encoder_state *psEncC, /* I /O Encoder State */ 113 const silk_encoder_state *psEncC, /* I /O Encoder State */
111 silk_nsq_state *NSQ, /* I /O NSQ state */ 114 silk_nsq_state *NSQ, /* I /O NSQ state */
112 SideInfoIndices *psIndices, /* I /O Quantization Indices */ 115 SideInfoIndices *psIndices, /* I /O Quantization Indices */
113 const opus_int32 x_Q3[], /* I Prefiltered input signal */ 116 const opus_int32 x_Q3[], /* I Prefiltered input signal */
114 opus_int8 pulses[], /* O Quantized pulse signal */ 117 opus_int8 pulses[], /* O Quantized pulse signal */
115 const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */ 118 const opus_int16 PredCoef_Q12[ 2 * MAX_LPC_ORDER ], /* I Short term prediction coefs */
116 const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */ 119 const opus_int16 LTPCoef_Q14[ LTP_ORDER * MAX_NB_SUBFR ], /* I Long term prediction coefs */
117 const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], / * I Noise shaping coefs */ 120 const opus_int16 AR2_Q13[ MAX_NB_SUBFR * MAX_SHAPE_LPC_ORDER ], / * I Noise shaping coefs */
118 const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */ 121 const opus_int HarmShapeGain_Q14[ MAX_NB_SUBFR ], /* I Long term shaping coefs */
119 const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */ 122 const opus_int Tilt_Q14[ MAX_NB_SUBFR ], /* I Spectral tilt */
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 } 240 }
238 241
239 subfr = 0; 242 subfr = 0;
240 } 243 }
241 244
242 /* Rewhiten with new A coefs */ 245 /* Rewhiten with new A coefs */
243 start_idx = psEncC->ltp_mem_length - lag - psEncC->predictLPCOrd er - LTP_ORDER / 2; 246 start_idx = psEncC->ltp_mem_length - lag - psEncC->predictLPCOrd er - LTP_ORDER / 2;
244 silk_assert( start_idx > 0 ); 247 silk_assert( start_idx > 0 );
245 248
246 silk_LPC_analysis_filter( &sLTP[ start_idx ], &NSQ->xq[ start_id x + k * psEncC->subfr_length ], 249 silk_LPC_analysis_filter( &sLTP[ start_idx ], &NSQ->xq[ start_id x + k * psEncC->subfr_length ],
247 A_Q12, psEncC->ltp_mem_length - start_idx, psEncC->predictLP COrder ); 250 A_Q12, psEncC->ltp_mem_length - start_idx, psEncC->predictLP COrder, psEncC->arch );
248 251
249 NSQ->sLTP_buf_idx = psEncC->ltp_mem_length; 252 NSQ->sLTP_buf_idx = psEncC->ltp_mem_length;
250 NSQ->rewhite_flag = 1; 253 NSQ->rewhite_flag = 1;
251 } 254 }
252 } 255 }
253 256
254 silk_nsq_del_dec_scale_states( psEncC, NSQ, psDelDec, x_Q3, x_sc_Q10, sL TP, sLTP_Q15, k, 257 silk_nsq_del_dec_scale_states( psEncC, NSQ, psDelDec, x_Q3, x_sc_Q10, sL TP, sLTP_Q15, k,
255 psEncC->nStatesDelayedDecision, LTP_scale_Q14, Gains_Q16, pitchL, ps Indices->signalType, decisionDelay ); 258 psEncC->nStatesDelayedDecision, LTP_scale_Q14, Gains_Q16, pitchL, ps Indices->signalType, decisionDelay );
256 259
257 silk_noise_shape_quantizer_del_dec( NSQ, psDelDec, psIndices->signalType , x_sc_Q10, pulses, pxq, sLTP_Q15, 260 silk_noise_shape_quantizer_del_dec( NSQ, psDelDec, psIndices->signalType , x_sc_Q10, pulses, pxq, sLTP_Q15,
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 /* Save quantized speech signal */ 299 /* Save quantized speech signal */
297 /* DEBUG_STORE_DATA( enc.pcm, &NSQ->xq[psEncC->ltp_mem_length], psEncC->fram e_length * sizeof( opus_int16 ) ) */ 300 /* DEBUG_STORE_DATA( enc.pcm, &NSQ->xq[psEncC->ltp_mem_length], psEncC->fram e_length * sizeof( opus_int16 ) ) */
298 silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) ); 301 silk_memmove( NSQ->xq, &NSQ->xq[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int16 ) );
299 silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) ); 302 silk_memmove( NSQ->sLTP_shp_Q14, &NSQ->sLTP_shp_Q14[ psEncC->frame_length ], psEncC->ltp_mem_length * sizeof( opus_int32 ) );
300 RESTORE_STACK; 303 RESTORE_STACK;
301 } 304 }
302 305
303 /******************************************/ 306 /******************************************/
304 /* Noise shape quantizer for one subframe */ 307 /* Noise shape quantizer for one subframe */
305 /******************************************/ 308 /******************************************/
309 #ifndef OVERRIDE_silk_noise_shape_quantizer_del_dec
306 static OPUS_INLINE void silk_noise_shape_quantizer_del_dec( 310 static OPUS_INLINE void silk_noise_shape_quantizer_del_dec(
307 silk_nsq_state *NSQ, /* I/O NSQ state */ 311 silk_nsq_state *NSQ, /* I/O NSQ state */
308 NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */ 312 NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision states */
309 opus_int signalType, /* I Signal type */ 313 opus_int signalType, /* I Signal type */
310 const opus_int32 x_Q10[], /* I */ 314 const opus_int32 x_Q10[], /* I */
311 opus_int8 pulses[], /* O */ 315 opus_int8 pulses[], /* O */
312 opus_int16 xq[], /* O */ 316 opus_int16 xq[], /* O */
313 opus_int32 sLTP_Q15[], /* I/O LTP filter state */ 317 opus_int32 sLTP_Q15[], /* I/O LTP filter state */
314 opus_int32 delayedGain_Q10[], /* I/O Gain delay buffer */ 318 opus_int32 delayedGain_Q10[], /* I/O Gain delay buffer */
315 const opus_int16 a_Q12[], /* I Short term prediction co efs */ 319 const opus_int16 a_Q12[], /* I Short term prediction co efs */
(...skipping 306 matching lines...) Expand 10 before | Expand all | Expand 10 after
622 } 626 }
623 delayedGain_Q10[ *smpl_buf_idx ] = Gain_Q10; 627 delayedGain_Q10[ *smpl_buf_idx ] = Gain_Q10;
624 } 628 }
625 /* Update LPC states */ 629 /* Update LPC states */
626 for( k = 0; k < nStatesDelayedDecision; k++ ) { 630 for( k = 0; k < nStatesDelayedDecision; k++ ) {
627 psDD = &psDelDec[ k ]; 631 psDD = &psDelDec[ k ];
628 silk_memcpy( psDD->sLPC_Q14, &psDD->sLPC_Q14[ length ], NSQ_LPC_BUF_LENG TH * sizeof( opus_int32 ) ); 632 silk_memcpy( psDD->sLPC_Q14, &psDD->sLPC_Q14[ length ], NSQ_LPC_BUF_LENG TH * sizeof( opus_int32 ) );
629 } 633 }
630 RESTORE_STACK; 634 RESTORE_STACK;
631 } 635 }
636 #endif /* OVERRIDE_silk_noise_shape_quantizer_del_dec */
632 637
633 static OPUS_INLINE void silk_nsq_del_dec_scale_states( 638 static OPUS_INLINE void silk_nsq_del_dec_scale_states(
634 const silk_encoder_state *psEncC, /* I Encoder State */ 639 const silk_encoder_state *psEncC, /* I Encoder State */
635 silk_nsq_state *NSQ, /* I/O NSQ state */ 640 silk_nsq_state *NSQ, /* I/O NSQ state */
636 NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision sta tes */ 641 NSQ_del_dec_struct psDelDec[], /* I/O Delayed decision sta tes */
637 const opus_int32 x_Q3[], /* I Input in Q3 */ 642 const opus_int32 x_Q3[], /* I Input in Q3 */
638 opus_int32 x_sc_Q10[], /* O Input scaled with 1/ Gain in Q10 */ 643 opus_int32 x_sc_Q10[], /* O Input scaled with 1/ Gain in Q10 */
639 const opus_int16 sLTP[], /* I Re-whitened LTP stat e in Q0 */ 644 const opus_int16 sLTP[], /* I Re-whitened LTP stat e in Q0 */
640 opus_int32 sLTP_Q15[], /* O LTP state matching s caled input */ 645 opus_int32 sLTP_Q15[], /* O LTP state matching s caled input */
641 opus_int subfr, /* I Subframe number */ 646 opus_int subfr, /* I Subframe number */
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
710 for( i = 0; i < MAX_SHAPE_LPC_ORDER; i++ ) { 715 for( i = 0; i < MAX_SHAPE_LPC_ORDER; i++ ) {
711 psDD->sAR2_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->sAR2_Q14[ i ] ); 716 psDD->sAR2_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->sAR2_Q14[ i ] );
712 } 717 }
713 for( i = 0; i < DECISION_DELAY; i++ ) { 718 for( i = 0; i < DECISION_DELAY; i++ ) {
714 psDD->Pred_Q15[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Pred_Q15 [ i ] ); 719 psDD->Pred_Q15[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Pred_Q15 [ i ] );
715 psDD->Shape_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Shape_Q1 4[ i ] ); 720 psDD->Shape_Q14[ i ] = silk_SMULWW( gain_adj_Q16, psDD->Shape_Q1 4[ i ] );
716 } 721 }
717 } 722 }
718 } 723 }
719 } 724 }
OLDNEW
« no previous file with comments | « silk/NSQ.c ('k') | silk/PLC.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698