mirror of
				https://github.com/f4exb/sdrangel.git
				synced 2025-10-31 13:00:26 -04:00 
			
		
		
		
	
		
			
	
	
		
			121 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			121 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
|  | /*---------------------------------------------------------------------------*\
 | ||
|  | 
 | ||
|  |   FILE........: defines.h | ||
|  |   AUTHOR......: David Rowe | ||
|  |   DATE CREATED: 23/4/93 | ||
|  | 
 | ||
|  |   Defines and structures used throughout the codec. | ||
|  | 
 | ||
|  | \*---------------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | /*
 | ||
|  |   Copyright (C) 2009 David Rowe | ||
|  | 
 | ||
|  |   All rights reserved. | ||
|  | 
 | ||
|  |   This program is free software; you can redistribute it and/or modify | ||
|  |   it under the terms of the GNU Lesser General Public License version 2.1, as | ||
|  |   published by the Free Software Foundation.  This program is | ||
|  |   distributed in the hope that it will be useful, but WITHOUT ANY | ||
|  |   WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
|  |   FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public | ||
|  |   License for more details. | ||
|  | 
 | ||
|  |   You should have received a copy of the GNU Lesser General Public License | ||
|  |   along with this program; if not, see <http://www.gnu.org/licenses/>.
 | ||
|  | */ | ||
|  | 
 | ||
|  | #ifndef __DEFINES__
 | ||
|  | #define __DEFINES__
 | ||
|  | 
 | ||
|  | /*---------------------------------------------------------------------------*\
 | ||
|  | 
 | ||
|  | 				DEFINES | ||
|  | 
 | ||
|  | \*---------------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | /* General defines */ | ||
|  | 
 | ||
|  | #define N_S        0.01         /* internal proc frame length in secs   */
 | ||
|  | #define TW_S       0.005        /* trapezoidal synth window overlap     */
 | ||
|  | #define MAX_AMP    160		/* maximum number of harmonics          */
 | ||
|  | #ifndef PI
 | ||
|  | #define PI         3.141592654	/* mathematical constant                */
 | ||
|  | #endif
 | ||
|  | #define TWO_PI     6.283185307	/* mathematical constant                */
 | ||
|  | #define MAX_STR    2048         /* maximum string size                  */
 | ||
|  | 
 | ||
|  | #define FFT_ENC    512		/* size of FFT used for encoder         */
 | ||
|  | #define FFT_DEC    512	    	/* size of FFT used in decoder          */
 | ||
|  | #define V_THRESH   6.0          /* voicing threshold in dB              */
 | ||
|  | #define LPC_ORD    10		/* LPC order                            */
 | ||
|  | #define LPC_ORD_LOW 6		/* LPC order for lower rates            */
 | ||
|  | 
 | ||
|  | /* Pitch estimation defines */ | ||
|  | 
 | ||
|  | #define M_PITCH_S  0.0400       /* pitch analysis window in s           */
 | ||
|  | #define P_MIN_S    0.0025	/* minimum pitch period in s            */
 | ||
|  | #define P_MAX_S    0.0200	/* maximum pitch period in s            */
 | ||
|  | 
 | ||
|  | namespace FreeDV | ||
|  | { | ||
|  | 
 | ||
|  | /*---------------------------------------------------------------------------*\
 | ||
|  | 
 | ||
|  | 				TYPEDEFS | ||
|  | 
 | ||
|  | \*---------------------------------------------------------------------------*/ | ||
|  | 
 | ||
|  | /* Structure to hold constants calculated at run time based on sample rate */ | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |     int   Fs;            /* sample rate of this instance             */ | ||
|  |     int   n_samp;        /* number of samples per 10ms frame at Fs   */ | ||
|  |     int   max_amp;       /* maximum number of harmonics              */ | ||
|  |     int   m_pitch;       /* pitch estimation window size in samples  */ | ||
|  |     int   p_min;         /* minimum pitch period in samples          */ | ||
|  |     int   p_max;         /* maximum pitch period in samples          */ | ||
|  |     float Wo_min; | ||
|  |     float Wo_max; | ||
|  |     int   nw;            /* analysis window size in samples          */ | ||
|  |     int   tw;            /* trapezoidal synthesis window overlap     */ | ||
|  | } C2CONST; | ||
|  | 
 | ||
|  | /* Structure to hold model parameters for one frame */ | ||
|  | 
 | ||
|  | typedef struct { | ||
|  |     float Wo;		  /* fundamental frequency estimate in radians  */ | ||
|  |     int   L;		  /* number of harmonics                        */ | ||
|  |     float A[MAX_AMP+1];	  /* amplitiude of each harmonic                */ | ||
|  |     float phi[MAX_AMP+1]; /* phase of each harmonic                     */ | ||
|  |     int   voiced;	  /* non-zero if this frame is voiced           */ | ||
|  | } MODEL; | ||
|  | 
 | ||
|  | /* describes each codebook  */ | ||
|  | 
 | ||
|  | struct lsp_codebook { | ||
|  |     int			k;        /* dimension of vector	*/ | ||
|  |     int			log2m;    /* number of bits in m	*/ | ||
|  |     int			m;        /* elements in codebook	*/ | ||
|  |     const float	*	cb;	  /* The elements		*/ | ||
|  | }; | ||
|  | 
 | ||
|  | extern const struct lsp_codebook lsp_cb[]; | ||
|  | extern const struct lsp_codebook lsp_cbd[]; | ||
|  | extern const struct lsp_codebook lsp_cbvq[]; | ||
|  | extern const struct lsp_codebook lsp_cbjnd[]; | ||
|  | extern const struct lsp_codebook lsp_cbdt[]; | ||
|  | extern const struct lsp_codebook lsp_cbjvm[]; | ||
|  | extern const struct lsp_codebook lsp_cbvqanssi[]; | ||
|  | extern const struct lsp_codebook mel_cb[]; | ||
|  | extern const struct lsp_codebook ge_cb[]; | ||
|  | extern const struct lsp_codebook lspmelvq_cb[]; | ||
|  | extern const struct lsp_codebook newamp1vq_cb[]; | ||
|  | extern const struct lsp_codebook newamp1_energy_cb[]; | ||
|  | extern const struct lsp_codebook newamp2vq_cb[]; | ||
|  | extern const struct lsp_codebook newamp2_energy_cb[]; | ||
|  | 
 | ||
|  | } // FreeDV
 | ||
|  | 
 | ||
|  | #endif
 |