1/*---------------------------------------------------------------------------*
2 *  specnorm.h  *
3 *                                                                           *
4 *  Copyright 2007, 2008 Nuance Communciations, Inc.                               *
5 *                                                                           *
6 *  Licensed under the Apache License, Version 2.0 (the 'License');          *
7 *  you may not use this file except in compliance with the License.         *
8 *                                                                           *
9 *  You may obtain a copy of the License at                                  *
10 *      http://www.apache.org/licenses/LICENSE-2.0                           *
11 *                                                                           *
12 *  Unless required by applicable law or agreed to in writing, software      *
13 *  distributed under the License is distributed on an 'AS IS' BASIS,        *
14 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
15 *  See the License for the specific language governing permissions and      *
16 *  limitations under the License.                                           *
17 *                                                                           *
18 *---------------------------------------------------------------------------*/
19
20
21
22#ifndef __specnorm_h
23#define __specnorm_h
24
25#ifdef SET_RCSID
26static const char specnorm_h[] = "$Id: specnorm.h,v 1.1.10.4 2007/08/31 17:44:53 dahan Exp $";
27#endif
28
29
30
31#include "hmm_type.h"
32
33
34#define USE_MEDIAN 0
35#define USE_MEAN 1
36
37#define C0_MARGIN 19
38#define MEDIAN_SPREAD 20
39#define MIN_COUNT 1 /* was 20 */
40
41#define SV6_TO_MEAN 30 /* units of C0 */
42
43#define UNIT_SIZE 1
44
45/**
46 * @todo document
47 */
48typedef struct
49{
50  int  gain_used;
51  int  offset;
52  int  forget_factor;
53  int  estimate_period;
54  long count;
55  long *hist;
56  int  low_entry;
57  int  high_entry;
58  long high_counts;
59  long low_counts;
60  int  perc_high;
61  int  estimate_percentile;
62  int  sv6_margin;
63  int  sv6;
64  int  median;
65  int  mean;
66  int  devn;
67  long mean_count;
68  long running_total;
69  long running_total_devn;
70}
71spect_dist_info;
72
73spect_dist_info *create_spectrum_distribution(int offset, int initial_median,
74    int low_entry, int high_entry,
75    int forget_factor,
76    int estimate_period, int estimate_percentile,
77    int sv6_margin);
78
79void destroy_spectrum_distribution(spect_dist_info *spec);
80void clear_distribution_counts(spect_dist_info *spec);
81void clear_mean_counts(spect_dist_info *spec);
82void forget_distribution_counts(spect_dist_info *spec, int forget_factor);
83void shift_distribution_counts(spect_dist_info *spec, int shift);
84int  add_distribution_data(spect_dist_info *spec, int spec_val);
85void evaluate_parameters(spect_dist_info *spec);
86int  estimate_percentile(spect_dist_info *spec, int percentile);
87void estimate_mean(spect_dist_info *spec, int forget_factor);
88void estimate_sv6(spect_dist_info *spec);
89int  median_normalize_data(spect_dist_info *spec, int spec_val);
90int  mean_normalize_data(spect_dist_info *spec, int spec_val);
91int  sv6_normalize_data(spect_dist_info *spec, int spec_val);
92void shift_parameters(spect_dist_info *spec, int shift);
93
94
95#endif
96