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