*/
-#include "config.h"
#include "aubio_priv.h"
#include "fvec.h"
#include "fmat.h"
#include "io/sink.h"
-#ifdef __APPLE__
+#ifdef HAVE_SINK_APPLE_AUDIO
#include "io/sink_apple_audio.h"
-#endif /* __APPLE__ */
+#endif /* HAVE_SINK_APPLE_AUDIO */
#ifdef HAVE_SNDFILE
#include "io/sink_sndfile.h"
#endif
del_aubio_sink_t s_del;
};
-aubio_sink_t * new_aubio_sink(char_t * uri, uint_t samplerate) {
+aubio_sink_t * new_aubio_sink(const char_t * uri, uint_t samplerate) {
aubio_sink_t * s = AUBIO_NEW(aubio_sink_t);
-#ifdef __APPLE__
+#ifdef HAVE_SINK_APPLE_AUDIO
s->sink = (void *)new_aubio_sink_apple_audio(uri, samplerate);
if (s->sink) {
s->s_do = (aubio_sink_do_t)(aubio_sink_apple_audio_do);
s->s_del = (del_aubio_sink_t)(del_aubio_sink_apple_audio);
return s;
}
-#endif /* __APPLE__ */
-#if HAVE_SNDFILE
+#endif /* HAVE_SINK_APPLE_AUDIO */
+#ifdef HAVE_SNDFILE
s->sink = (void *)new_aubio_sink_sndfile(uri, samplerate);
if (s->sink) {
s->s_do = (aubio_sink_do_t)(aubio_sink_sndfile_do);
return s;
}
#endif /* HAVE_SNDFILE */
-#if HAVE_WAVWRITE
+#ifdef HAVE_WAVWRITE
s->sink = (void *)new_aubio_sink_wavwrite(uri, samplerate);
if (s->sink) {
s->s_do = (aubio_sink_do_t)(aubio_sink_wavwrite_do);
return s;
}
#endif /* HAVE_WAVWRITE */
- AUBIO_ERROR("sink: failed creating %s with samplerate %dHz\n",
- uri, samplerate);
- AUBIO_FREE(s);
+#if !defined(HAVE_WAVWRITE) && \
+ !defined(HAVE_SNDFILE) && \
+ !defined(HAVE_SINK_APPLE_AUDIO)
+ AUBIO_ERROR("sink: failed creating '%s' at %dHz (no sink built-in)\n", uri, samplerate);
+#endif
+ del_aubio_sink(s);
return NULL;
}
return s->s_preset_channels((void *)s->sink, channels);
}
-uint_t aubio_sink_get_samplerate(aubio_sink_t * s) {
+uint_t aubio_sink_get_samplerate(const aubio_sink_t * s) {
return s->s_get_samplerate((void *)s->sink);
}
-uint_t aubio_sink_get_channels(aubio_sink_t * s) {
+uint_t aubio_sink_get_channels(const aubio_sink_t * s) {
return s->s_get_channels((void *)s->sink);
}
}
void del_aubio_sink(aubio_sink_t * s) {
- if (!s) return;
- s->s_del((void *)s->sink);
+ AUBIO_ASSERT(s);
+ if (s->s_del && s->sink)
+ s->s_del((void *)s->sink);
AUBIO_FREE(s);
- return;
}