Line data Source code
1 : /*==================================================================================== 2 : EVS Codec 3GPP TS26.452 Aug 12, 2021. Version 16.3.0 3 : ====================================================================================*/ 4 : #include <stdint.h> 5 : #include "options.h" /* Compilation switches */ 6 : #include "prot_fx.h" /* Function prototypes */ 7 : #include "cnst.h" /* Common constants */ 8 : #include "rom_com.h" /* Static table prototypes */ 9 : 10 : /*--------------------------------------------------------------------------* 11 : * recovernorm_fx() 12 : * 13 : * Recover reordered quantization indices and norms 14 : *--------------------------------------------------------------------------*/ 15 : 16 952 : void recovernorm_fx( 17 : const Word16 *idxbuf, /* i : reordered quantization indices Q0*/ 18 : Word16 *ynrm, /* o : recovered quantization indices Q0*/ 19 : Word16 *normqlg2, /* o : recovered quantized norms Q0*/ 20 : const Word16 nb_sfm /* i : number of SFMs Q0*/ 21 : ) 22 : { 23 : Word16 i, j, k; 24 952 : const Word16 *order = NULL; 25 952 : move16(); 26 : 27 952 : SWITCH( nb_sfm ) 28 : { 29 726 : case NB_SFM: 30 726 : order = norm_order_48; /* Q0 */ 31 726 : move16(); 32 726 : BREAK; 33 194 : case SFM_N_SWB: 34 194 : order = norm_order_32; /* Q0 */ 35 194 : move16(); 36 194 : BREAK; 37 32 : case SFM_N_WB: 38 32 : order = norm_order_16; /* Q0 */ 39 32 : move16(); 40 32 : BREAK; 41 0 : default: 42 0 : order = norm_order_48; /* Q0 */ 43 0 : move16(); 44 0 : BREAK; 45 : } 46 : 47 41294 : FOR( i = 0; i < nb_sfm; i++ ) 48 : { 49 40342 : j = order[i]; /* Q0 */ 50 40342 : move16(); 51 40342 : k = idxbuf[i]; /* Q0 */ 52 40342 : move16(); 53 40342 : ynrm[j] = k; /* Q0 */ 54 40342 : move16(); 55 40342 : normqlg2[j] = dicnlg2[k]; /* Q0 */ 56 40342 : move16(); 57 : } 58 : 59 952 : return; 60 : }