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 512 : 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 512 : const Word16 *order = NULL; 25 512 : move16(); 26 : 27 512 : SWITCH( nb_sfm ) 28 : { 29 360 : case NB_SFM: 30 360 : order = norm_order_48; /* Q0 */ 31 360 : move16(); 32 360 : BREAK; 33 133 : case SFM_N_SWB: 34 133 : order = norm_order_32; /* Q0 */ 35 133 : move16(); 36 133 : BREAK; 37 19 : case SFM_N_WB: 38 19 : order = norm_order_16; /* Q0 */ 39 19 : move16(); 40 19 : BREAK; 41 0 : default: 42 0 : order = norm_order_48; /* Q0 */ 43 0 : move16(); 44 0 : BREAK; 45 : } 46 : 47 22033 : FOR( i = 0; i < nb_sfm; i++ ) 48 : { 49 21521 : j = order[i]; /* Q0 */ 50 21521 : move16(); 51 21521 : k = idxbuf[i]; /* Q0 */ 52 21521 : move16(); 53 21521 : ynrm[j] = k; /* Q0 */ 54 21521 : move16(); 55 21521 : normqlg2[j] = dicnlg2[k]; /* Q0 */ 56 21521 : move16(); 57 : } 58 : 59 512 : return; 60 : }