summaryrefslogtreecommitdiff
path: root/defines.h
diff options
context:
space:
mode:
authorerdgeist <erdgeist@erdgeist.org>2025-08-15 12:42:40 +0200
committererdgeist <erdgeist@erdgeist.org>2025-08-15 12:42:40 +0200
commit30325d24d107dbf133da39f7c96d1510fd1c9449 (patch)
tree932baa5b2a4475821f16dccf9e3e05011daa6d92 /defines.h
parent9022d768021bbe15c7815cc6f8b64218b46f0e10 (diff)
Bump to codec2 version 1.2.0erdgeist-bump-to-1.2.0
Diffstat (limited to 'defines.h')
-rw-r--r--defines.h89
1 files changed, 43 insertions, 46 deletions
diff --git a/defines.h b/defines.h
index dcd1841..a2fd9ec 100644
--- a/defines.h
+++ b/defines.h
@@ -30,96 +30,93 @@
30 30
31/*---------------------------------------------------------------------------*\ 31/*---------------------------------------------------------------------------*\
32 32
33 DEFINES 33 DEFINES
34 34
35\*---------------------------------------------------------------------------*/ 35\*---------------------------------------------------------------------------*/
36 36
37/* General defines */ 37/* General defines */
38 38
39#define N_S 0.01 /* internal proc frame length in secs */ 39#define N_S 0.01 /* internal proc frame length in secs */
40#define TW_S 0.005 /* trapezoidal synth window overlap */ 40#define TW_S 0.005 /* trapezoidal synth window overlap */
41#define MAX_AMP 160 /* maximum number of harmonics */ 41#define MAX_AMP 160 /* maximum number of harmonics */
42#ifndef PI 42#ifndef PI
43#define PI 3.141592654 /* mathematical constant */ 43#define PI 3.141592654 /* mathematical constant */
44#endif 44#endif
45#define TWO_PI 6.283185307 /* mathematical constant */ 45#ifndef M_PI
46#define MAX_STR 2048 /* maximum string size */ 46#define M_PI 3.14159265358979323846f
47#endif
48#define TWO_PI 6.283185307 /* mathematical constant */
49#define MAX_STR 2048 /* maximum string size */
47 50
48#define FFT_ENC 512 /* size of FFT used for encoder */ 51#define FFT_ENC 512 /* size of FFT used for encoder */
49#define FFT_DEC 512 /* size of FFT used in decoder */ 52#define FFT_DEC 512 /* size of FFT used in decoder */
50#define V_THRESH 6.0 /* voicing threshold in dB */ 53#define V_THRESH 6.0 /* voicing threshold in dB */
51#define LPC_ORD 10 /* LPC order */ 54#define LPC_ORD 10 /* LPC order */
52#define LPC_ORD_LOW 6 /* LPC order for lower rates */ 55#define LPC_ORD_LOW 6 /* LPC order for lower rates */
53 56
54/* Pitch estimation defines */ 57/* Pitch estimation defines */
55 58
56#define M_PITCH_S 0.0400 /* pitch analysis window in s */ 59#define M_PITCH_S 0.0400 /* pitch analysis window in s */
57#define P_MIN_S 0.0025 /* minimum pitch period in s */ 60#define P_MIN_S 0.0025 /* minimum pitch period in s */
58#define P_MAX_S 0.0200 /* maximum pitch period in s */ 61#define P_MAX_S 0.0200 /* maximum pitch period in s */
59 62
60/*---------------------------------------------------------------------------*\ 63/*---------------------------------------------------------------------------*\
61 64
62 TYPEDEFS 65 TYPEDEFS
63 66
64\*---------------------------------------------------------------------------*/ 67\*---------------------------------------------------------------------------*/
65 68
66/* Structure to hold constants calculated at run time based on sample rate */ 69/* Structure to hold constants calculated at run time based on sample rate */
67 70
68typedef struct { 71typedef struct {
69 int Fs; /* sample rate of this instance */ 72 int Fs; /* sample rate of this instance */
70 int n_samp; /* number of samples per 10ms frame at Fs */ 73 int n_samp; /* number of samples per 10ms frame at Fs */
71 int max_amp; /* maximum number of harmonics */ 74 int max_amp; /* maximum number of harmonics */
72 int m_pitch; /* pitch estimation window size in samples */ 75 int m_pitch; /* pitch estimation window size in samples */
73 int p_min; /* minimum pitch period in samples */ 76 int p_min; /* minimum pitch period in samples */
74 int p_max; /* maximum pitch period in samples */ 77 int p_max; /* maximum pitch period in samples */
75 float Wo_min; 78 float Wo_min;
76 float Wo_max; 79 float Wo_max;
77 int nw; /* analysis window size in samples */ 80 int nw; /* analysis window size in samples */
78 int tw; /* trapezoidal synthesis window overlap */ 81 int tw; /* trapezoidal synthesis window overlap */
79} C2CONST; 82} C2CONST;
80 83
81/* Structure to hold model parameters for one frame */ 84/* Structure to hold model parameters for one frame */
82 85
83typedef struct { 86typedef struct {
84 float Wo; /* fundamental frequency estimate in radians */ 87 float Wo; /* fundamental frequency estimate in radians */
85 int L; /* number of harmonics */ 88 int L; /* number of harmonics */
86 float A[MAX_AMP+1]; /* amplitiude of each harmonic */ 89 float A[MAX_AMP + 1]; /* amplitiude of each harmonic */
87 float phi[MAX_AMP+1]; /* phase of each harmonic */ 90 float phi[MAX_AMP + 1]; /* phase of each harmonic */
88 int voiced; /* non-zero if this frame is voiced */ 91 int voiced; /* non-zero if this frame is voiced */
89} MODEL; 92} MODEL;
90 93
91/* describes each codebook */ 94/* describes each codebook */
92 95
93struct lsp_codebook { 96struct lsp_codebook {
94 int k; /* dimension of vector */ 97 int k; /* dimension of vector */
95 int log2m; /* number of bits in m */ 98 int log2m; /* number of bits in m */
96 int m; /* elements in codebook */ 99 int m; /* elements in codebook */
97#ifdef __EMBEDDED /* make sure stored in flash */ 100#ifdef __EMBEDDED__ /* make sure stored in flash */
98 const float *cb; /* The elements */ 101 const float *cb; /* The elements */
99#else 102#else
100 float *cb; /* The elements */ 103 float *cb; /* The elements */
101#endif 104#endif
102}; 105};
103 106
104extern const struct lsp_codebook lsp_cb[]; 107extern const struct lsp_codebook lsp_cb[];
105extern const struct lsp_codebook lsp_cbd[]; 108extern const struct lsp_codebook lsp_cbd[];
106extern const struct lsp_codebook lsp_cbvq[]; 109extern const struct lsp_codebook lsp_cbjmv[];
107extern const struct lsp_codebook lsp_cbjnd[];
108extern const struct lsp_codebook lsp_cbdt[];
109extern const struct lsp_codebook lsp_cbjvm[];
110extern const struct lsp_codebook lsp_cbvqanssi[];
111extern const struct lsp_codebook mel_cb[];
112extern const struct lsp_codebook ge_cb[]; 110extern const struct lsp_codebook ge_cb[];
113extern const struct lsp_codebook lspmelvq_cb[];
114extern const struct lsp_codebook newamp1vq_cb[]; 111extern const struct lsp_codebook newamp1vq_cb[];
115extern const struct lsp_codebook newamp1_energy_cb[]; 112extern const struct lsp_codebook newamp1_energy_cb[];
116extern const struct lsp_codebook newamp2vq_cb[]; 113extern const struct lsp_codebook newamp2vq_cb[];
117extern const struct lsp_codebook newamp2_energy_cb[]; 114extern const struct lsp_codebook newamp2_energy_cb[];
118 115
119#ifdef _GNU_SOURCE 116#ifdef _GNU_SOURCE
120 #define POW10F(x) exp10f((x)) 117#define POW10F(x) exp10f((x))
121#else 118#else
122 #define POW10F(x) expf(2.302585092994046f*(x)) 119#define POW10F(x) expf(2.302585092994046f * (x))
123#endif 120#endif
124 121
125#endif 122#endif