aubio_sink_t * new_aubio_sink(const char_t * uri, uint_t samplerate) { aubio_sink_t * s = AUBIO_NEW(aubio_sink_t); #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_do_multi = (aubio_sink_do_multi_t)(aubio_sink_apple_audio_do_multi); s->s_preset_samplerate = (aubio_sink_preset_samplerate_t)(aubio_sink_apple_audio_preset_samplerate); s->s_preset_channels = (aubio_sink_preset_channels_t)(aubio_sink_apple_audio_preset_channels); s->s_get_samplerate = (aubio_sink_get_samplerate_t)(aubio_sink_apple_audio_get_samplerate); s->s_get_channels = (aubio_sink_get_channels_t)(aubio_sink_apple_audio_get_channels); s->s_close = (aubio_sink_close_t)(aubio_sink_apple_audio_close); s->s_del = (del_aubio_sink_t)(del_aubio_sink_apple_audio); return s; } #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); s->s_do_multi = (aubio_sink_do_multi_t)(aubio_sink_sndfile_do_multi); s->s_preset_samplerate = (aubio_sink_preset_samplerate_t)(aubio_sink_sndfile_preset_samplerate); s->s_preset_channels = (aubio_sink_preset_channels_t)(aubio_sink_sndfile_preset_channels); s->s_get_samplerate = (aubio_sink_get_samplerate_t)(aubio_sink_sndfile_get_samplerate); s->s_get_channels = (aubio_sink_get_channels_t)(aubio_sink_sndfile_get_channels); s->s_close = (aubio_sink_close_t)(aubio_sink_sndfile_close); s->s_del = (del_aubio_sink_t)(del_aubio_sink_sndfile); return s; } #endif /* HAVE_SNDFILE */ #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); s->s_do_multi = (aubio_sink_do_multi_t)(aubio_sink_wavwrite_do_multi); s->s_preset_samplerate = (aubio_sink_preset_samplerate_t)(aubio_sink_wavwrite_preset_samplerate); s->s_preset_channels = (aubio_sink_preset_channels_t)(aubio_sink_wavwrite_preset_channels); s->s_get_samplerate = (aubio_sink_get_samplerate_t)(aubio_sink_wavwrite_get_samplerate); s->s_get_channels = (aubio_sink_get_channels_t)(aubio_sink_wavwrite_get_channels); s->s_close = (aubio_sink_close_t)(aubio_sink_wavwrite_close); s->s_del = (del_aubio_sink_t)(del_aubio_sink_wavwrite); return s; } #endif /* HAVE_WAVWRITE */ #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 AUBIO_FREE(s); return NULL; }
aubio_sink_t * new_aubio_sink(char_t * uri, uint_t samplerate) { aubio_sink_t * s = AUBIO_NEW(aubio_sink_t); #ifdef __APPLE__ s->sink = (void *)new_aubio_sink_apple_audio(uri, samplerate); if (s->sink) return s; #else /* __APPLE__ */ #if HAVE_SNDFILE s->sink = (void *)new_aubio_sink_sndfile(uri, samplerate); if (s->sink) return s; #endif /* HAVE_SNDFILE */ #endif /* __APPLE__ */ AUBIO_ERROR("failed creating aubio sink with %s\n", uri); AUBIO_FREE(s); return NULL; }