summaryrefslogtreecommitdiffstats
path: root/branches/1.0/thirdparties/android/include/BroadVoice16/bvcommon/bvcommon.h
blob: b8accf12de25fcb3d3c55e9936e0654dfe171a21 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/*****************************************************************************/
/* BroadVoice(R)16 (BV16) Fixed-Point ANSI-C Source Code                     */
/* Revision Date: November 13, 2009                                          */
/* Version 1.1                                                               */
/*****************************************************************************/

/*****************************************************************************/
/* Copyright 2000-2009 Broadcom Corporation                                  */
/*                                                                           */
/* This software is provided under the GNU Lesser General Public License,    */
/* version 2.1, as published by the Free Software Foundation ("LGPL").       */
/* This program is distributed in the hope that it will be useful, but       */
/* WITHOUT ANY SUPPORT OR WARRANTY; without even the implied warranty of     */
/* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the LGPL for     */
/* more details.  A copy of the LGPL is available at                         */
/* http://www.broadcom.com/licenses/LGPLv2.1.php,                            */
/* or by writing to the Free Software Foundation, Inc.,                      */
/* 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.                 */
/*****************************************************************************/


/*****************************************************************************
  bvcommon.h : Common Fixed-Point Library: common #defines and prototypes

  $Log$
******************************************************************************/

#ifndef  BVCOMMON_H
#define  BVCOMMON_H

/* ----- Basic Codec Parameters ----- */

#define  LPCO  8        /* LPC Order for 8 kHz sampled lowband signal     */
#define  Ngrd     60

#define  LSPMIN  49      /* 0.00150 minimum lsp frequency */
#define  LSPMAX  32694   /* 0.99775 maximum lsp frequency */
#define  DLSPMIN 410     /* 0.01250 minimum lsp spacing */
#define  STBLDIM 3          /* dimension of stability enforcement */

/* LPC bandwidth expansion */
extern   Word16   bwel[];

/* LPC to lsp Conversion */
extern   Word16   grid[];

/* LPC WEIGHTING FILTER */
extern   Word16   STWAL[];

/* Coarse Pitch Search */
extern   Word16   invk[];

/* Pitch tap codebook - actually content different for BV16 and BV32 */
extern Word16 pp9cb[];

/* Function prototypes */

void azfilter(
              Word16 a[],    /* (i) Q12 : prediction coefficients          */
              Word16 m,      /* (i)     : LPC order                        */
              Word16 x[],    /* (i) Q0  : input signal samples, incl. past */
              Word16 y[],    /* (o) Q0  : filtered output signal           */
              Word16 lg      /* (i)     : size of filtering                */
              );

void apfilter(
              Word16 a[],     /* (i) Q12 : prediction coefficients  */
              Word16 m,       /* (i)     : LPC order                */
              Word16 x[],     /* (i) Q0  : input signal             */
              Word16 y[],     /* (o) Q0  : output signal            */
              Word16 lg,      /* (i)     : size of filtering        */
              Word16 mem[],   /* (i/o) Q0: filter memory            */
              Word16 update   /* (i)     : memory update flag       */
              );

void lsp2a(
Word16 lsp[],    /* (i) Q15 : line spectral frequencies            */
Word16 a[]);     /* (o) Q12 : predictor coefficients (order = 10)  */

void stblz_lsp(
Word16  *lsp,       /* Q15 */
Word16  order);

Word16 stblchck(
Word16 *x,
Word16 vdim);

void a2lsp(
Word16 a[],        /* (i) Q12 : predictor coefficients              */
Word16 lsp[],      /* (o) Q15 : line spectral frequencies           */
Word16 old_lsp[]); /* (i)     : old lsp[] (in case not found 10 roots) */

void Autocorr(
              Word32   r[],     /* (o) : Autocorrelations      */
              Word16   x[],     /* (i) : Input signal          */
              Word16   window[],/* (i) : LPC Analysis window   */ 
              Word16   l_window,/* (i) : window length         */
              Word16   m);      /* (i) : LPC order             */    

void Spectral_Smoothing(
Word16 m,         /* (i)     : LPC order                    */
Word32 rl[],      /* (i/o)   : Autocorrelations  lags       */
Word16 lag_h[],   /* (i)     : SST coefficients  (msb)      */
Word16 lag_l[]);  /* (i)     : SST coefficients  (lsb)   */  

void Levinson(
  Word32 r32[],    /* (i)  : r32[] double precision vector of autocorrelation coefficients   */
  Word16 a[],      /* (o)  : a[] in Q12 - LPC coefficients                                   */
  Word16 old_a[],  /* (i/o): old_a[] in Q12 - previous LPC coefficients                      */
  Word16 m);	    /* (i)  : LPC order                                                       */

void pp3dec(
Word16  idx,
Word16  *b);

void vqdec(
Word16  *xq,
Word16  idx,
Word16  *cb,
Word16  vdim);

#ifdef _MSC_VER
#include "math.h"
static __inline double round(double val)
{    
    return floor(val + 0.5);
}
#endif

#endif /* BVCOMMON_H */
OpenPOWER on IntegriCloud