b59fba1f136fe22d1d6668eb29d6728573a5552c
[aubio.git] / src / utils / hist.h
1 /*
2   Copyright (C) 2003-2009 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 HIST_H
29 #define 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(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