FreeCalypso > hg > gsmhr-codec-ref
diff sp_rom.h @ 0:9008dbc8ca74
import original C code from GSM 06.06
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 14 Jun 2024 23:27:16 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sp_rom.h Fri Jun 14 23:27:16 2024 +0000 @@ -0,0 +1,193 @@ +/*************************************************************************** + * + * Purpose: Define the structure of the Global Constants + * + **************************************************************************/ + +#ifndef ___ROM +#define ___ROM + +#include "typedefs.h" +#include "mathhalf.h" +#include "mathdp31.h" + +/*_________________________________________________________________________ + | | + | Data Types | + |_________________________________________________________________________| +*/ + +/* gsp0 vector quantizer */ +/*-----------------------*/ +#define GSP0_NUM_OF_TABLES 4 +#define GSP0_NUM 32 +#define GSP0_VECTOR_SIZE 5 + +extern ShortwordRom pppsrGsp0 + [GSP0_NUM_OF_TABLES][GSP0_NUM][GSP0_VECTOR_SIZE]; + + +/* unvoiced code vectors */ +/*-----------------------*/ +#define UVCODEVEC_NUM_OF_CODE_BOOKS 2 +#define UVCODEVEC_NUM_OF_CODE_BITS 7 + +extern ShortwordRom pppsrUvCodeVec + [UVCODEVEC_NUM_OF_CODE_BOOKS][UVCODEVEC_NUM_OF_CODE_BITS][S_LEN]; + + +/* voiced code vectors */ +/*---------------------*/ +#define VCDCODEVEC_NUM_OF_CODE_BOOKS 1 +#define VCDCODEVEC_NUM_OF_CODE_BITS 9 + +extern ShortwordRom pppsrVcdCodeVec + [VCDCODEVEC_NUM_OF_CODE_BOOKS][VCDCODEVEC_NUM_OF_CODE_BITS][S_LEN]; + + +/* vector quantizer tables */ +/*-------------------------*/ +#define QUANT_NUM_OF_TABLES 3 + +#define QUANT1_NUM_OF_BITS 11 +#define QUANT1_NUM_OF_ROWS (1 << QUANT1_NUM_OF_BITS) +#define QUANT1_NUM_OF_STAGES 3 +#define QUANT1_NUM_OF_WORDS (QUANT1_NUM_OF_ROWS*QUANT1_NUM_OF_STAGES/2) + +#define QUANT2_NUM_OF_BITS 9 +#define QUANT2_NUM_OF_ROWS (1 << QUANT2_NUM_OF_BITS) +#define QUANT2_NUM_OF_STAGES 3 +#define QUANT2_NUM_OF_WORDS (QUANT2_NUM_OF_ROWS*QUANT2_NUM_OF_STAGES/2) + +#define QUANT3_NUM_OF_BITS 8 +#define QUANT3_NUM_OF_ROWS (1 << QUANT3_NUM_OF_BITS) +#define QUANT3_NUM_OF_STAGES 4 +#define QUANT3_NUM_OF_WORDS (QUANT3_NUM_OF_ROWS*QUANT3_NUM_OF_STAGES/2) + +extern ShortwordRom psrQuant1[QUANT1_NUM_OF_WORDS]; + +extern ShortwordRom psrQuant2[QUANT2_NUM_OF_WORDS]; + +extern ShortwordRom psrQuant3[QUANT3_NUM_OF_WORDS]; + + +/* lpc pre-quantizer */ +/*-------------------*/ +#define PREQ1_NUM_OF_BITS 6 +#define PREQ1_NUM_OF_ROWS (1 << PREQ1_NUM_OF_BITS) +#define PREQ1_NUM_OF_STAGES 3 +#define PREQ1_NUM_OF_WORDS (PREQ1_NUM_OF_ROWS*PREQ1_NUM_OF_STAGES/2) + +#define PREQ2_NUM_OF_BITS 5 +#define PREQ2_NUM_OF_ROWS (1 << PREQ2_NUM_OF_BITS) +#define PREQ2_NUM_OF_STAGES 3 +#define PREQ2_NUM_OF_WORDS (PREQ2_NUM_OF_ROWS*PREQ2_NUM_OF_STAGES/2) + +#define PREQ3_NUM_OF_BITS 4 +#define PREQ3_NUM_OF_ROWS (1 << PREQ3_NUM_OF_BITS) +#define PREQ3_NUM_OF_STAGES 4 +#define PREQ3_NUM_OF_WORDS (PREQ3_NUM_OF_ROWS*PREQ3_NUM_OF_STAGES/2) + +extern ShortwordRom psrPreQ1[PREQ1_NUM_OF_WORDS]; + +extern ShortwordRom psrPreQ2[PREQ2_NUM_OF_WORDS]; + +extern ShortwordRom psrPreQ3[PREQ3_NUM_OF_WORDS]; + + +/* size of the vq subset in the kth segment */ +/*------------------------------------------*/ +extern ShortwordRom psrQuantSz[QUANT_NUM_OF_TABLES]; + + +/* pre-quantizer size */ +/*--------------------*/ +extern ShortwordRom psrPreQSz[QUANT_NUM_OF_TABLES]; + + +/* reflection coeff scalar quantizer */ +/*-----------------------------------*/ +#define SQUANT_NUM_OF_BITS 8 +#define SQUANT_NUM_OF_ROWS (1 << SQUANT_NUM_OF_BITS) + +extern ShortwordRom psrSQuant[SQUANT_NUM_OF_ROWS]; + + +/* index structure for LPC Vector Quantizer */ +/*------------------------------------------*/ +struct IsubLHn +{ /* index structure for LPC Vector + * Quantizer */ + ShortwordRom l; /* lowest index index range + * from 1..NP */ + ShortwordRom h; /* highest index */ + ShortwordRom len; /* h-l+1 */ +}; + + +extern struct IsubLHn psvqIndex[QUANT_NUM_OF_TABLES]; + + +/* square root of p0 table */ +/*-------------------------*/ +#define SQRTP0_NUM_OF_BITS 5 +#define SQRTP0_NUM_OF_ROWS (1 << SQRTP0_NUM_OF_BITS) +#define SQRTP0_NUM_OF_MODES 3 + +extern ShortwordRom ppsrSqrtP0[SQRTP0_NUM_OF_MODES][SQRTP0_NUM_OF_ROWS]; + + +/* interpolation filter used for C and G */ +/*---------------------------------------*/ +#define CGINTFILT_MACS 6 + +extern ShortwordRom ppsrCGIntFilt[CGINTFILT_MACS][OS_FCTR]; + + +/* interpolation filter used pitch */ +/*---------------------------------*/ +#define PVECINTFILT_MACS 10 + +extern ShortwordRom ppsrPVecIntFilt[PVECINTFILT_MACS][OS_FCTR]; + + +/* fractional pitch lag table lag*OS_FCTR */ +/*----------------------------------------*/ +#define LAGTBL_NUM_OF_ROWS 256 + +extern ShortwordRom psrLagTbl[LAGTBL_NUM_OF_ROWS]; + + +/* R0 decision value table defines range (not the levels themselves */ +/*------------------------------------------------------------------*/ + +#define R0DECTBL_NUM_OF_R0BITS 5 +#define R0DECTBL_NUM_OF_ROWS ((1 << R0DECTBL_NUM_OF_R0BITS)*2 - 1) + +extern ShortwordRom psrR0DecTbl[R0DECTBL_NUM_OF_ROWS]; + + +/* high pass filter coefficients */ +/*-------------------------------*/ +#define HPFCOEFS_NUM_OF_CODES 10 + +extern ShortwordRom psrHPFCoefs[HPFCOEFS_NUM_OF_CODES]; + + +/* spectral smoothing coefficients */ +/*---------------------------------*/ +#define NWCOEFS_NUM_OF_CODES 20 + +extern ShortwordRom psrNWCoefs[NWCOEFS_NUM_OF_CODES]; + + +/* spectral smoothing coefficients for FLAT */ +/*------------------------------------------*/ +#define FLATSSTCOEFS_NUM_OF_CODES 10 + +extern LongwordRom pL_rFlatSstCoefs[FLATSSTCOEFS_NUM_OF_CODES]; + +extern ShortwordRom psrOldCont[4]; +extern ShortwordRom psrNewCont[4]; + +#endif