summaryrefslogtreecommitdiffstats
path: root/pico/lib/picosig2.h
blob: 1b975db91fe41af8d957321093508448a39114b5 (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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
/*
 * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
/**
 * @file picosig2.h
 *
 * Signal Generation PU - Internal functions - header file
 *
 * Copyright (C) 2008-2009 SVOX AG, Baslerstr. 30, 8048 Zuerich, Switzerland
 * All rights reserved.
 *
 * History:
 * - 2009-04-20 -- initial version
 *
 */

#ifndef PICOSIG2_H_
#define PICOSIG2_H_

#include "picoos.h"
#include "picodsp.h"

#ifdef __cplusplus
extern "C" {
#endif
#if 0
}
#endif

/*----------------------------------------------------------
 // Name    :   sig_innerobj
 // Function:   innerobject definition for the sig processing
 // Shortcut:   sig
 //---------------------------------------------------------*/
typedef struct sig_innerobj
{

    /*-----------------------Definition of the local storage for this PU--------*/
    picoos_int16 *idx_vect1; /*reserved for bit reversal tables*/
    picoos_int16 *idx_vect2; /*reserved for table lookup "A" vector*/
    picoos_int16 *idx_vect4; /*reserved for max peak index arrax in pchip*/
    picoos_int16 *idx_vect5; /*reserved for min index arrax in sigana_singleIMF*/
    picoos_int16 *idx_vect6; /*reserved for max index arrax in sigana_singleIMF*/
    picoos_int16 *idx_vect7; /*reserved for dispersed phase */
    picoos_int16 *idx_vect8; /*reserved for LocV*/
    picoos_int16 *idx_vect9; /*reserved for LocU*/

    picoos_int32 *int_vec22; /*reserved for normalized hanning window - fixed point */
    picoos_int32 *int_vec23; /*reserved for impresp  - fixed point */
    picoos_int32 *int_vec24; /*reserved for impresp  - fixed point */
    picoos_int32 *int_vec25; /*reserved for window  - fixed point */
    picoos_int32 *int_vec26; /*reserved for wavBuf  - fixed point */
    picoos_int32 *int_vec28; /*reserved for cepstral vectors input - fixed point */
    picoos_int32 *int_vec29; /*reserved for cepstral vectors input - fixed point */
    picoos_int32 *int_vec38; /*reserved for cepstral vectors input - fixed point */
    picoos_int32 *int_vec30; /*reserved for cepstral vectors input - fixed point */
    picoos_int32 *int_vec31; /*reserved for cepstral vectors input - fixed point */

    picoos_int32 *int_vec32; /*reserved for cepstral vectors input - fixed point */
    picoos_int32 *int_vec33; /*reserved for cepstral vectors input - fixed point */

    picoos_int32 *int_vec34; /* reserved for sin table- fixed point */
    picoos_int32 *int_vec35; /* reserved for cos table - fixed point */
    picoos_int32 *int_vec36; /* reserved for currently used sin table- fixed point */
    picoos_int32 *int_vec37; /* reserved for currently used cos table - fixed point */

    picoos_int32 *int_vec39; /* reserved for ang - fixed point */
    picoos_int32 *int_vec40; /* reserved for cos table - fixed point */

    picoos_int32 *int_vec41[CEPST_BUFF_SIZE]; /*reserved for phase smoothing - cepstrum buffers */
    picoos_int32 *int_vec42[PHASE_BUFF_SIZE]; /*reserved for phase smoothing - phase buffers */

    picoos_int16 idx_vect10[CEPST_BUFF_SIZE]; /*reserved for pitch value buffering before phase smoothing*/
    picoos_int16 idx_vect11[CEPST_BUFF_SIZE]; /*reserved for phonetic value bufferingid before phase smoothing*/
    picoos_int16 idx_vect12[CEPST_BUFF_SIZE]; /*reserved for voicing value bufferingbefore phase smoothing*/
    picoos_int16 idx_vect13[CEPST_BUFF_SIZE]; /*reserved for unrectified pitch value bufferingbefore phase smoothing*/
    picoos_int16 idx_vect14[PHASE_BUFF_SIZE]; /*reserved for vox_bnd value buffering before phase smoothing*/

    picoos_int32 *sig_vec1;

    picoos_single bvalue1; /*reserved for warp*/
    picoos_int32 ibvalue2; /*reserved for voxbnd*/
    picoos_int32 ibvalue3; /*reserved for voxbnd2*/
    picoos_single bvalue4; /*reserved for E*/
    picoos_single bvalue5; /*reserved for F0*/
    picoos_single bvalue6; /*reserved for sMod*/

    picoos_single bvalue7; /*reserved for voicing*/
    picoos_single bvalue8; /*reserved for unrectified pitch*/

    picoos_int16 ivalue1; /*reserved for m1,ceporder*/
    picoos_int16 ivalue2; /*reserved for m2,fftorder,windowlen*/
    picoos_int16 ivalue3; /*reserved for fftorder/2*/
    picoos_int16 ivalue4; /*reserved for framelen, displacement*/
    picoos_int16 ivalue5; /*reserved for voiced*/
    picoos_int16 ivalue6; /*reserved for generic result code*/
    picoos_int16 ivalue7; /*reserved for i*/
    picoos_int16 ivalue8; /*reserved for j*/
    picoos_int16 ivalue9; /*reserved for hop*/
    picoos_int16 ivalue10; /*reserved for nextPeak*/
    picoos_int16 ivalue11; /*reserved for nFrame*/
    picoos_int16 ivalue12; /*reserved for raw*/
    picoos_int16 ivalue13; /*reserved for hts engine flag*/
    picoos_int16 ivalue14; /*reserved for ph id*/
    picoos_int16 ivalue15; /*reserved for Voiced*/
    picoos_int16 ivalue16; /*reserved for prevVoiced*/
    picoos_int16 ivalue17; /*reserved for nV (size of LocV)*/
    picoos_int16 ivalue18; /*reserved for nU (size of LocU)*/

    picoos_int16 ivalue19; /*reserved for voicTrans*/

    picoos_int16 ivalue20; /*reserved for n_availabe index*/

    picoos_int32 lvalue1; /*reserved for sampling rate*/
    picoos_int32 lvalue2; /*reserved for VCutoff*/
    picoos_int32 lvalue3; /*reserved for UVCutoff*/
    picoos_int32 lvalue4; /*reserved for fMax */

    picoos_int32 iRand; /*reserved for phase random table poointer ())*/

} sig_innerobj_t;

/*------------------------------------------------------------------
 Exported (to picosig.c) Service routines :
 routine name and I/O parameters are to be maintained for PICO compatibility!!
 ------------------------------------------------------------------*/
extern pico_status_t sigAllocate(picoos_MemoryManager mm,
        sig_innerobj_t *sig_inObj);
extern void sigDeallocate(picoos_MemoryManager mm, sig_innerobj_t *sig_inObj);
extern void sigDspInitialize(sig_innerobj_t *sig_inObj, picoos_int32 r_mode);

/*------------------------------------------------------------------
 Exported (to picosig.c) Processing routines :
 routine number, name and content can be changed. unique I/O parameter should be  "sig"
 ------------------------------------------------------------------*/
extern void mel_2_lin_init(sig_innerobj_t *sig_inObj);
extern void save_transition_frame(sig_innerobj_t *sig_inObj);
extern void mel_2_lin_init(sig_innerobj_t *sig_inObj);
extern void post_filter_init(sig_innerobj_t *sig_inObj);
extern void mel_2_lin_lookup(sig_innerobj_t *sig_inObj, picoos_uint32 mgc);
extern void post_filter(sig_innerobj_t *sig_inObj);
extern void phase_spec2(sig_innerobj_t *sig_inObj);
extern void env_spec(sig_innerobj_t *sig_inObj);
extern void save_transition_frame(sig_innerobj_t *sig_inObj);
extern void td_psola2(sig_innerobj_t *sig_inObj);
extern void impulse_response(sig_innerobj_t *sig_inObj);
extern void overlap_add(sig_innerobj_t *sig_inObj);

/* -------------------------------------------------------------------
 * symbolic vs area assignements
 * -------------------------------------------------------------------*/
#define WavBuff_p   int_vec26       /*output is Wav buffer (2*FFTSize)*/
#define window_p    int_vec25       /*window function (hanning) */
#define ImpResp_p   int_vec23       /*output step 6*/
#define imp_p       int_vec24       /*output step 6*/
#define warp_p      bvalue1         /*warp factor */
#define voxbnd_p    ibvalue2         /*phase spectra reconstruction noise factor V*/  /*  fixed point */
#define voxbnd2_p   ibvalue3         /*phase spectra reconstruction noise factor UV */  /*  fixed point */
#define E_p         bvalue4         /*energy after Envelope spectrum calculation */
#define F0_p        bvalue5         /*pitch*/
#define sMod_p      bvalue6         /*speaker modification factor*/
#define voicing     bvalue7         /*voicing*/
#define Fuv_p       bvalue8         /*unrectified pitch (for unvoiced too)*/
#define m1_p        ivalue1         /*ceporder(melorder=ceporder-1) */
#define m2_p        ivalue2         /*fftorder*/
#define windowLen_p ivalue2         /*same as fftorder*/
#define hfftsize_p  ivalue3         /*fftorder/2*/
#define framesz_p   ivalue4         /*displacement*/
#define voiced_p    ivalue5         /*voicing state*/
#define nRes_p      ivalue6         /*generic result*/
#define i_p         ivalue7         /*generic counter*/
#define j_p         ivalue8         /*generic counter*/
#define hop_p       ivalue9         /*hop */
#define nextPeak_p  ivalue10        /*nextPeak*/
#define phId_p      ivalue14        /*phonetic id*/
#define prevVoiced_p ivalue16        /*previous voicing state (for frame 1)*/
#define nV          ivalue17
#define nU          ivalue18
#define VoicTrans   ivalue19        /*  */
#define Fs_p        lvalue1         /*Sampling frequency*/
#define VCutoff_p   lvalue2         /*voicing cut off frequency in Hz*/
#define UVCutoff_p  lvalue3         /*unvoicing cut off frequency in Hz*/
/* Reusable area */
#define wcep_pI     int_vec28       /*input step1*/
#define d_p         int_vec38       /*output mel_2_lin_init  : table lookup  vector D*/
#define A_p         idx_vect2       /*output mel_2_lin_init  : table lookup  vector A*/
#define ang_p       int_vec39       /*output step4*/
#define EnV         int_vec30
#define EnU         int_vec31
#define randCosTbl  int_vec34
#define randSinTbl  int_vec35
#define outCosTbl   int_vec36
#define outSinTbl   int_vec37
#define cos_table   int_vec40
#define norm_window_p int_vec22     /*window function (hanning) */
#define norm_window2_p int_vec27    /*window function (hanning) */
#define F2r_p       int_vec32       /*output step 7*/
#define F2i_p       int_vec33       /*output step 7*/
#define LocV        idx_vect8       /*excitation position voiced pulses*/
#define LocU        idx_vect9       /*excitation position unvoiced pulses*/

#define CepBuff       int_vec41     /*Buffer for incoming cepstral vector pointers*/
#define PhsBuff       int_vec42     /*Buffer for incoming phase vector pointers*/
#define F0Buff        idx_vect10    /*Buffer for incoming F0 values*/
#define PhIdBuff      idx_vect11    /*Buffer for incoming PhId values*/
#define VoicingBuff   idx_vect12    /*Buffer for incoming voicing values*/
#define FuVBuff       idx_vect13    /*Buffer for incoming FuV values*/
#define VoxBndBuff    idx_vect14    /*Buffer for incoming VoxBnd values*/

#define n_available   ivalue20      /*variable for indexing the incoming buffers*/


#ifdef __cplusplus
}
#endif

#endif