src/io/source_sndfile.c: return NULL before trying to allocate memory, clean up
[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  * \param flow minimum input
40  * \param fhig maximum input
41  * \param nelems number of histogram columns
42  */
43 aubio_hist_t * new_aubio_hist(smpl_t flow, smpl_t fhig, uint_t nelems);
44 /** histogram deletion */
45 void del_aubio_hist(aubio_hist_t *s);
46 /** compute the histogram */
47 void aubio_hist_do(aubio_hist_t *s, fvec_t * input);
48 /** compute the histogram ignoring null elements */
49 void aubio_hist_do_notnull(aubio_hist_t *s, fvec_t * input);
50 /** compute the mean of the histogram */
51 smpl_t aubio_hist_mean(aubio_hist_t *s);
52 /** weight the histogram */
53 void aubio_hist_weight(aubio_hist_t *s);
54 /** compute dynamic histogram for non-null elements */
55 void aubio_hist_dyn_notnull (aubio_hist_t *s, fvec_t *input);
56
57 #ifdef __cplusplus
58 }
59 #endif
60
61 #endif