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