source: src/io/source.h @ 21234ee

feature/autosinkfeature/cnnfeature/cnn_orgfeature/constantqfeature/crepefeature/crepe_orgfeature/pitchshiftfeature/pydocstringsfeature/timestretchfix/ffmpeg5pitchshiftsamplertimestretchyinfft+
Last change on this file since 21234ee was e5656036, checked in by Paul Brossier <piem@piem.org>, 11 years ago

src/io/source.h: fix link to ExtAudioFileRef?

  • Property mode set to 100644
File size: 4.1 KB
RevLine 
[9316173]1/*
[ac20c85]2  Copyright (C) 2012-2013 Paul Brossier <piem@aubio.org>
[9316173]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#ifndef _AUBIO_SOURCE_H
22#define _AUBIO_SOURCE_H
23
24/** \file
25
[ac20c85]26  Media source to read blocks of consecutive audio samples from file
[9316173]27
[8122e54a]28  Depending on how aubio was compiled, the following file formats will be
29  available.
30
[86cfdfa]31  To write to file, use ::aubio_sink_t.
32
[8122e54a]33  \b \p source_avcodec : libav
34
35  aubio can be optionally compiled with [libav](http://libav.org), which can
36  read from a very large number of audio and video formats, including over
37  different network protocols such as HTTP.
38
39  \b \p source_apple_audio : ExtAudioFileRef
40 
41  On Mac and iOS platforms, aubio should be compiled with CoreAudio [Extended
42  Audio File Services]
[e5656036]43  (https://developer.apple.com/library/mac/documentation/MusicAudio/Reference/ExtendedAudioFileServicesReference/Reference/reference.html).
[8122e54a]44  This provides access to most common audio file formats, including compressed
45  ones.
46
47  \b \p source_sndfile : libsndfile
48
49  Also optional, aubio can be built against
50  [libsndfile](http://www.mega-nerd.com/libsndfile/), which can read [most
51  uncompressed formats](http://www.mega-nerd.com/libsndfile/#Features).
52
[4e3723d]53  \example io/test-source.c
[86cfdfa]54  \example io/test-source_multi.c
[4e3723d]55
[9316173]56*/
57
[4e3723d]58#ifdef __cplusplus
59extern "C" {
60#endif
61
[ac20c85]62/** media source object */
[9316173]63typedef struct _aubio_source_t aubio_source_t;
[de5d3f1]64
65/**
66
67  create new ::aubio_source_t
68
69  \param uri the file path or uri to read from
[ac20c85]70  \param samplerate sampling rate to view the fie at
[6a03729]71  \param hop_size the size of the blocks to read from
[de5d3f1]72
73  Creates a new source object. If `0` is passed as `samplerate`, the sample
74  rate of the original file is used.
75
[ac20c85]76  The samplerate of newly created source can be obtained using
[de5d3f1]77  ::aubio_source_get_samplerate.
78
79*/
[6a03729]80aubio_source_t * new_aubio_source(char_t * uri, uint_t samplerate, uint_t hop_size);
[de5d3f1]81
82/**
83
[6a03729]84  read monophonic vector of length hop_size from source object
[de5d3f1]85
86  \param s source object, created with ::new_aubio_source
[ac20c85]87  \param read_to ::fvec_t of data to read to
88  \param read upon returns, equals to number of frames actually read
[de5d3f1]89
90  Upon returns, `read` contains the number of frames actually read from the
[6a03729]91  source. `hop_size` if enough frames could be read, less otherwise.
[de5d3f1]92
93*/
[ac20c85]94void aubio_source_do(aubio_source_t * s, fvec_t * read_to, uint_t * read);
[de5d3f1]95
96/**
97
[4865e4b]98  read polyphonic vector of length hop_size from source object
99
100  \param s source object, created with ::new_aubio_source
101  \param read_to ::fmat_t of data to read to
[7816f2b]102  \param[out] read upon returns, equals to number of frames actually read
[4865e4b]103
104  Upon returns, `read` contains the number of frames actually read from the
105  source. `hop_size` if enough frames could be read, less otherwise.
106
107*/
108void aubio_source_do_multi(aubio_source_t * s, fmat_t * read_to, uint_t * read);
109
110/**
111
[de5d3f1]112  get samplerate of source object
113
114  \param s source object, created with ::new_aubio_source
115  \return samplerate, in Hz
116
117*/
[d00e223]118uint_t aubio_source_get_samplerate(aubio_source_t * s);
[de5d3f1]119
120/**
121
[4865e4b]122  get channels of source object
123
124  \param s source object, created with ::new_aubio_source
125  \return channels
126
127*/
128uint_t aubio_source_get_channels (aubio_source_t * s);
129
130/**
131
[7982203]132  seek source object
133
134  \param s source object, created with ::new_aubio_source
135  \param pos position to seek to, in frames
136
137  \return 0 if sucessful, non-zero on failure
138
139*/
140uint_t aubio_source_seek (aubio_source_t * s, uint_t pos);
141
142/**
143
[ac20c85]144  close source and cleanup memory
[de5d3f1]145
146  \param s source object, created with ::new_aubio_source
147
148*/
[9316173]149void del_aubio_source(aubio_source_t * s);
150
151#ifdef __cplusplus
152}
153#endif
154
155#endif /* _AUBIO_SOURCE_H */
Note: See TracBrowser for help on using the repository browser.