1 /*
2   Copyright (C) 2003-2013 Paul Brossier <piem@aubio.org>
3 
4   This file is part of aubio.
5 
6   aubio is free software: you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation, either version 3 of the License, or
9   (at your option) any later version.
10 
11   aubio is distributed in the hope that it will be useful,
12   but WITHOUT ANY WARRANTY; without even the implied warranty of
13   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14   GNU General Public License for more details.
15 
16   You should have received a copy of the GNU General Public License
17   along with aubio.  If not, see <http://www.gnu.org/licenses/>.
18 
19 */
20 
21 /** @file
22  *
23  * Histogram function
24  *
25  * Big hacks to implement an histogram
26  */
27 
28 #ifndef AUBIO_HIST_H
29 #define AUBIO_HIST_H
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /** histogram object */
36 typedef struct _aubio_hist_t aubio_hist_t;
37 
38 /** histogram creation
39 
40   \param flow minimum input
41   \param fhig maximum input
42   \param nelems number of histogram columns
43 
44 */
45 aubio_hist_t * new_aubio_hist(smpl_t flow, smpl_t fhig, uint_t nelems);
46 /** histogram deletion */
47 void del_aubio_hist(aubio_hist_t *s);
48 /** compute the histogram */
49 void aubio_hist_do(aubio_hist_t *s, fvec_t * input);
50 /** compute the histogram ignoring null elements */
51 void aubio_hist_do_notnull(aubio_hist_t *s, fvec_t * input);
52 /** compute the mean of the histogram */
53 smpl_t aubio_hist_mean(const aubio_hist_t *s);
54 /** weight the histogram */
55 void aubio_hist_weight(aubio_hist_t *s);
56 /** compute dynamic histogram for non-null elements */
57 void aubio_hist_dyn_notnull (aubio_hist_t *s, fvec_t *input);
58 
59 #ifdef __cplusplus
60 }
61 #endif
62 
63 #endif /* AUBIO_HIST_H */
64