Changes in / [d013a93:09b4be9]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/io/sink.c
rd013a93 r09b4be9 54 54 }; 55 55 56 #ifdef HAVE_VORBISENC57 typedef struct _aubio_sink_vorbis_t aubio_sink_vorbis_t;58 extern aubio_sink_vorbis_t * new_aubio_sink_vorbis(const char_t *uri,59 uint_t samplerate);60 extern void del_aubio_sink_vorbis (aubio_sink_vorbis_t *s);61 extern uint_t aubio_sink_vorbis_open(aubio_sink_vorbis_t *s);62 extern uint_t aubio_sink_vorbis_close(aubio_sink_vorbis_t *s);63 extern uint_t aubio_sink_vorbis_preset_channels(aubio_sink_vorbis_t *s,64 uint_t channels);65 extern uint_t aubio_sink_vorbis_preset_samplerate(aubio_sink_vorbis_t *s,66 uint_t samplerate);67 extern uint_t aubio_sink_vorbis_get_channels(aubio_sink_vorbis_t *s);68 extern uint_t aubio_sink_vorbis_get_samplerate(aubio_sink_vorbis_t *s);69 extern void aubio_sink_vorbis_do(aubio_sink_vorbis_t *s, fvec_t*70 write_data, uint_t write);71 extern void aubio_sink_vorbis_do_multi(aubio_sink_vorbis_t *s, fmat_t*72 write_data, uint_t write);73 #endif /* HAVE_VORBISENC */74 75 #ifdef HAVE_FLAC76 typedef struct _aubio_sink_flac_t aubio_sink_flac_t;77 extern aubio_sink_flac_t * new_aubio_sink_flac(const char_t *uri,78 uint_t samplerate);79 extern void del_aubio_sink_flac (aubio_sink_flac_t *s);80 extern uint_t aubio_sink_flac_open(aubio_sink_flac_t *s);81 extern uint_t aubio_sink_flac_close(aubio_sink_flac_t *s);82 extern uint_t aubio_sink_flac_preset_channels(aubio_sink_flac_t *s,83 uint_t channels);84 extern uint_t aubio_sink_flac_preset_samplerate(aubio_sink_flac_t *s,85 uint_t samplerate);86 extern uint_t aubio_sink_flac_get_channels(aubio_sink_flac_t *s);87 extern uint_t aubio_sink_flac_get_samplerate(aubio_sink_flac_t *s);88 extern void aubio_sink_flac_do(aubio_sink_flac_t *s, fvec_t*89 write_data, uint_t write);90 extern void aubio_sink_flac_do_multi(aubio_sink_flac_t *s, fmat_t*91 write_data, uint_t write);92 #endif /* HAVE_FLAC */93 94 static const char_t *aubio_get_extension(const char_t *filename)95 {96 // find last occurence of dot character97 const char_t *ext = strrchr(filename, '.');98 if (!ext || ext == filename) return "";99 else return ext + 1;100 }101 102 56 aubio_sink_t * new_aubio_sink(const char_t * uri, uint_t samplerate) { 103 57 aubio_sink_t * s = AUBIO_NEW(aubio_sink_t); 104 #if defined(HAVE_VORBISENC) || defined(HAVE_FLAC)105 const char_t * uri_ext = aubio_get_extension(uri);106 #endif /* defined(HAVE_VORBISENC) || defined(HAVE_FLAC) */107 108 #ifdef HAVE_VORBISENC109 // check if this uri could be for us110 uint_t match_oggstream = 0;111 if (strcmp (uri_ext, "ogg") == 0) match_oggstream = 1;112 if (match_oggstream) {113 s->sink = (void *)new_aubio_sink_vorbis(uri, samplerate);114 if (s->sink) {115 s->s_do = (aubio_sink_do_t)(aubio_sink_vorbis_do);116 s->s_do_multi = (aubio_sink_do_multi_t)(aubio_sink_vorbis_do_multi);117 s->s_preset_samplerate = (aubio_sink_preset_samplerate_t)(aubio_sink_vorbis_preset_samplerate);118 s->s_preset_channels = (aubio_sink_preset_channels_t)(aubio_sink_vorbis_preset_channels);119 s->s_get_samplerate = (aubio_sink_get_samplerate_t)(aubio_sink_vorbis_get_samplerate);120 s->s_get_channels = (aubio_sink_get_channels_t)(aubio_sink_vorbis_get_channels);121 s->s_close = (aubio_sink_close_t)(aubio_sink_vorbis_close);122 s->s_del = (del_aubio_sink_t)(del_aubio_sink_vorbis);123 return s;124 }125 }126 #endif /* HAVE_VORBISENC */127 128 #ifdef HAVE_FLAC129 // check if this uri could be for us130 uint_t match_flacstream = 0;131 if (strcmp (uri_ext, "flac") == 0) match_flacstream = 1;132 if (match_flacstream) {133 s->sink = (void *)new_aubio_sink_flac(uri, samplerate);134 if (s->sink) {135 s->s_do = (aubio_sink_do_t)(aubio_sink_flac_do);136 s->s_do_multi = (aubio_sink_do_multi_t)(aubio_sink_flac_do_multi);137 s->s_preset_samplerate = (aubio_sink_preset_samplerate_t)(aubio_sink_flac_preset_samplerate);138 s->s_preset_channels = (aubio_sink_preset_channels_t)(aubio_sink_flac_preset_channels);139 s->s_get_samplerate = (aubio_sink_get_samplerate_t)(aubio_sink_flac_get_samplerate);140 s->s_get_channels = (aubio_sink_get_channels_t)(aubio_sink_flac_get_channels);141 s->s_close = (aubio_sink_close_t)(aubio_sink_flac_close);142 s->s_del = (del_aubio_sink_t)(del_aubio_sink_flac);143 return s;144 }145 }146 #endif /* HAVE_FLAC */147 148 58 #ifdef HAVE_SINK_APPLE_AUDIO 149 59 s->sink = (void *)new_aubio_sink_apple_audio(uri, samplerate); … … 190 100 #if !defined(HAVE_WAVWRITE) && \ 191 101 !defined(HAVE_SNDFILE) && \ 192 !defined(HAVE_SINK_APPLE_AUDIO) && \ 193 !defined(HAVE_VORBISENC) && \ 194 !defined(HAVE_FLAC) 102 !defined(HAVE_SINK_APPLE_AUDIO) 195 103 AUBIO_ERROR("sink: failed creating '%s' at %dHz (no sink built-in)\n", uri, samplerate); 196 104 #endif
Note: See TracChangeset
for help on using the changeset viewer.