spandsp  0.0.6
lpc10_encdecs.h
1 /*
2  * SpanDSP - a series of DSP components for telephony
3  *
4  * lpc10_encdecs.h - LPC10 low bit rate speech codec.
5  *
6  * Written by Steve Underwood <steveu@coppice.org>
7  *
8  * Copyright (C) 2006 Steve Underwood
9  *
10  * All rights reserved.
11  *
12  * This program is free software; you can redistribute it and/or modify
13  * it under the terms of the GNU Lesser General Public License version 2.1,
14  * as published by the Free Software Foundation.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19  * GNU Lesser General Public License for more details.
20  *
21  * You should have received a copy of the GNU Lesser General Public
22  * License along with this program; if not, write to the Free Software
23  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
24  */
25 
26 #define LPC10_ORDER 10
27 
28 #if !defined(min)
29 #define min(a,b) ((a) <= (b) ? (a) : (b))
30 #endif
31 #if !defined(max)
32 #define max(a,b) ((a) >= (b) ? (a) : (b))
33 #endif
34 
35 void lpc10_placea(int32_t *ipitch,
36  int32_t voibuf[4][2],
37  int32_t *obound,
38  int32_t af,
39  int32_t vwin[3][2],
40  int32_t awin[3][2],
41  int32_t ewin[3][2],
42  int32_t lframe,
43  int32_t maxwin);
44 
45 void lpc10_placev(int32_t *osbuf,
46  int32_t *osptr,
47  int32_t oslen,
48  int32_t *obound,
49  int32_t vwin[3][2],
50  int32_t af,
51  int32_t lframe,
52  int32_t minwin,
53  int32_t maxwin,
54  int32_t dvwinl,
55  int32_t dvwinh);
56 
57 void lpc10_voicing(lpc10_encode_state_t *st,
58  int32_t *vwin,
59  float *inbuf,
60  float *lpbuf,
61  const int32_t buflim[],
62  int32_t half,
63  float *minamd,
64  float *maxamd,
65  int32_t *mintau,
66  float *ivrc,
67  int32_t *obound);
68 
69 void lpc10_analyse(lpc10_encode_state_t *st, float *speech, int32_t *voice, int32_t *pitch, float *rms, float rc[]);
70 
71 static __inline__ int32_t pow_ii(int32_t x, int32_t n)
72 {
73  int32_t pow;
74  uint32_t u;
75 
76  if (n <= 0)
77  {
78  if (n == 0 || x == 1)
79  return 1;
80  if (x != -1)
81  return (x == 0) ? 1/x : 0;
82  n = -n;
83  }
84  u = n;
85  for (pow = 1; ; )
86  {
87  if ((u & 1))
88  pow *= x;
89  if ((u >>= 1) == 0)
90  break;
91  x *= x;
92  }
93  return pow;
94 }
95 /*- End of function --------------------------------------------------------*/
96 
97 static __inline__ float r_sign(float a, float b)
98 {
99  float x;
100 
101  x = fabsf(a);
102  return (b >= 0.0f) ? x : -x;
103 }
104 /*- End of function --------------------------------------------------------*/
105 /*- End of file ------------------------------------------------------------*/
noise
int16_t noise(noise_state_t *s)
Generate a sample of audio noise.
Definition: noise.c:52
lpc10_decode_state_s::first
int first
Initial value TRUE.
Definition: private/lpc10.h:152
lpc10_encode_state_s::ipoint
int32_t ipoint
???
Definition: private/lpc10.h:130
lpc10_encode_state_s::zpre
float zpre
???
Definition: private/lpc10.h:76
lpc10_encode_state_s::l2buf
float l2buf[16]
???
Definition: private/lpc10.h:86
lpc10_decode_state_s::first_pitsyn
int first_pitsyn
Initial value TRUE.
Definition: private/lpc10.h:186
lpc10_encode_state_s::awin
int32_t awin[3][2]
Initial value awin[2][0] = 307; awin[2][1] = 462;.
Definition: private/lpc10.h:68
lpc10_decode_state_s::exc
float exc[166]
???
Definition: private/lpc10.h:192
lpc10_decode_state_s::k
int32_t k
???
Definition: private/lpc10.h:206
lpc10_decode_state_s::iptold
int32_t iptold
Initial value 60.
Definition: private/lpc10.h:150
lpc10_encode_state_s::rcbuf
float rcbuf[3][10]
???
Definition: private/lpc10.h:74
lpc10_encode_state_s::osptr
int32_t osptr
Initial value 1.
Definition: private/lpc10.h:62
lpc10_frame_t::irc
int32_t irc[10]
Definition: lpc10.h:54
lpc10_encode_state_s::alphax
float alphax
???
Definition: private/lpc10.h:132
lpc10_frame_t::ipitch
int32_t ipitch
Definition: lpc10.h:50
lpc10_decode_state_s::drc
int32_t drc[10][3]
???
Definition: private/lpc10.h:162
lpc10_decode_state_s
Definition: private/lpc10.h:143
lpc10_encode_state_s
Definition: private/lpc10.h:33
lpc10_encode_state_s::n
float n
???
Definition: private/lpc10.h:80
lpc10_decode_state_s::jsamp
int32_t jsamp
No initial value necessary as long as first_pitsyn is initially TRUE.
Definition: private/lpc10.h:184
lpc10_decode_state_s::ivp2h
int32_t ivp2h
???
Definition: private/lpc10.h:154
lpc10_encode_state_s::p
int32_t p[2][60]
???
Definition: private/lpc10.h:128
lpc10_decode_state_s::dei
float dei[2]
???
Definition: private/lpc10.h:212
lpc10_encode_state_s::osbuf
int32_t osbuf[10]
No initial value necessary.
Definition: private/lpc10.h:60
lpc10_decode_state_s::ipito
int32_t ipito
No initial value necessary as long as first_pitsyn is initially TRUE.
Definition: private/lpc10.h:178
lpc10_encode_state_s::vwin
int32_t vwin[3][2]
Initial value vwin[2][0] = 307; vwin[2][1] = 462;.
Definition: private/lpc10.h:66
lpc10_frame_t
Definition: lpc10.h:47
lpc10_decode_state_s::iavgp
int32_t iavgp
Initial value 60.
Definition: private/lpc10.h:158
lpc10_decode_state_s::ivoico
int32_t ivoico
No initial value necessary as long as first_pitsyn is initially TRUE.
Definition: private/lpc10.h:176
lpc10_decode_state_s::exc2
float exc2[166]
???
Definition: private/lpc10.h:194
lpc10_encode_state_s::rmsbuf
float rmsbuf[3]
???
Definition: private/lpc10.h:72
lpc10_decode_state_s::ipo
int32_t ipo
???
Definition: private/lpc10.h:190
lpc10_encode_state_s::pebuf
float pebuf[LPC10_SAMPLES_PER_FRAME *3]
???
Definition: private/lpc10.h:52
lpc10_decode_state_s::hpi
float hpi[3]
???
Definition: private/lpc10.h:198
lpc10_encode_state_s::bias
float bias
???
Definition: private/lpc10.h:58
lpc10_encode_state_s::l2sum1
float l2sum1
???
Definition: private/lpc10.h:88
dc_restore.h
lpc10_decode_state_s::rmso_bsynz
float rmso_bsynz
???
Definition: private/lpc10.h:200
lpc10_decode_state_s::dpit
int32_t dpit[3]
???
Definition: private/lpc10.h:164
lpc10_encode_state_s::ivbuf
float ivbuf[312]
???
Definition: private/lpc10.h:56
lpc10_encode_state_s::hyst
int hyst
Initial value FALSE.
Definition: private/lpc10.h:96
lpc10_decode_state_s::rmso
float rmso
Initial value 1.0f.
Definition: private/lpc10.h:180
lpc10_encode_state_s::s
float s[60]
???
Definition: private/lpc10.h:126
lpc10_decode_state_s::iovoic
int32_t iovoic
???
Definition: private/lpc10.h:156
lpc10_encode_state_s::obound
int32_t obound[3]
???
Definition: private/lpc10.h:64
lpc10_encode_state_s::l2ptr1
int32_t l2ptr1
Initial value 1.
Definition: private/lpc10.h:90
lpc10_encode_state_s::lpbuf
float lpbuf[696]
???
Definition: private/lpc10.h:54
lpc10_decode_state_s::buflen
int32_t buflen
Initial value LPC10_SAMPLES_PER_FRAME.
Definition: private/lpc10.h:172
lpc10_encode_state_s::lasti
int32_t lasti
No initial value necessary.
Definition: private/lpc10.h:94
lpc10_frame_t::irms
int32_t irms
Definition: lpc10.h:52
lpc10_encode_state_s::inbuf
float inbuf[LPC10_SAMPLES_PER_FRAME *3]
???
Definition: private/lpc10.h:50
lpc10_encode_state_s::fpc
float fpc
No initial value necessary.
Definition: private/lpc10.h:84
lpc10_encode_state_s::d__
float d__
Initial value 1.0f.
Definition: private/lpc10.h:82
lpc10_decode_state_s::j
int32_t j
???
Definition: private/lpc10.h:204
lpc10_decode_state_s::rco
float rco[10]
No initial value necessary as long as first_pitsyn is initially TRUE.
Definition: private/lpc10.h:182
lpc10_encode_state_s::l2ptr2
int32_t l2ptr2
Initial value 9.
Definition: private/lpc10.h:92
lpc10_decode_state_s::deo
float deo[3]
???
Definition: private/lpc10.h:214
lpc10_decode_state_s::drms
int32_t drms[3]
???
Definition: private/lpc10.h:166
lpc10_decode_state_s::y
int16_t y[5]
???
Definition: private/lpc10.h:208
lpc10_decode_state_s::lpi
float lpi[3]
???
Definition: private/lpc10.h:196
lpc10_decode_state_s::buf
float buf[LPC10_SAMPLES_PER_FRAME *2]
???
Definition: private/lpc10.h:170
lpc10_decode_state_s::erate
int32_t erate
???
Definition: private/lpc10.h:160
lpc10_encode_state_s::voibuf
int32_t voibuf[4][2]
???
Definition: private/lpc10.h:70
lpc10_decode_state_s::error_correction
int error_correction
???
Definition: private/lpc10.h:146