Changes in / [09b4be9:d013a93]
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
src/io/sink.c
r09b4be9 rd013a93 54 54 }; 55 55 56 #ifdef HAVE_VORBISENC 57 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_FLAC 76 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 character 97 const char_t *ext = strrchr(filename, '.'); 98 if (!ext || ext == filename) return ""; 99 else return ext + 1; 100 } 101 56 102 aubio_sink_t * new_aubio_sink(const char_t * uri, uint_t samplerate) { 57 103 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_VORBISENC 109 // check if this uri could be for us 110 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_FLAC 129 // check if this uri could be for us 130 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 58 148 #ifdef HAVE_SINK_APPLE_AUDIO 59 149 s->sink = (void *)new_aubio_sink_apple_audio(uri, samplerate); … … 100 190 #if !defined(HAVE_WAVWRITE) && \ 101 191 !defined(HAVE_SNDFILE) && \ 102 !defined(HAVE_SINK_APPLE_AUDIO) 192 !defined(HAVE_SINK_APPLE_AUDIO) && \ 193 !defined(HAVE_VORBISENC) && \ 194 !defined(HAVE_FLAC) 103 195 AUBIO_ERROR("sink: failed creating '%s' at %dHz (no sink built-in)\n", uri, samplerate); 104 196 #endif
Note: See TracChangeset
for help on using the changeset viewer.