Changeset 56174a2


Ignore:
Timestamp:
Dec 13, 2018, 2:14:33 AM (12 months ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/autosink
Children:
1a30c43
Parents:
e6a5aa5
Message:

[io] sink opens sink_vorbis if file ends with .ogg

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/io/sink.c

    re6a5aa5 r56174a2  
    5454};
    5555
     56#ifdef HAVE_VORBISENC
     57typedef struct _aubio_sink_vorbis_t aubio_sink_vorbis_t;
     58extern aubio_sink_vorbis_t * new_aubio_sink_vorbis(const char_t *uri,
     59    uint_t samplerate);
     60extern void del_aubio_sink_vorbis (aubio_sink_vorbis_t *s);
     61extern uint_t aubio_sink_vorbis_open(aubio_sink_vorbis_t *s);
     62extern uint_t aubio_sink_vorbis_close(aubio_sink_vorbis_t *s);
     63extern uint_t aubio_sink_vorbis_preset_channels(aubio_sink_vorbis_t *s,
     64    uint_t channels);
     65extern uint_t aubio_sink_vorbis_preset_samplerate(aubio_sink_vorbis_t *s,
     66    uint_t samplerate);
     67extern uint_t aubio_sink_vorbis_get_channels(aubio_sink_vorbis_t *s);
     68extern uint_t aubio_sink_vorbis_get_samplerate(aubio_sink_vorbis_t *s);
     69extern void aubio_sink_vorbis_do(aubio_sink_vorbis_t *s, fvec_t*
     70    write_data, uint_t write);
     71extern void aubio_sink_vorbis_do_multi(aubio_sink_vorbis_t *s, fmat_t*
     72    write_data, uint_t write);
     73#endif /* HAVE_VORBISENC */
     74
     75static const char_t *aubio_get_extension(const char_t *filename)
     76{
     77  // find last occurence of dot character
     78  const char_t *ext = strrchr(filename, '.');
     79  if (!ext || ext == filename) return "";
     80  else return ext + 1;
     81}
     82
    5683aubio_sink_t * new_aubio_sink(const char_t * uri, uint_t samplerate) {
    5784  aubio_sink_t * s = AUBIO_NEW(aubio_sink_t);
     85
     86#ifdef HAVE_VORBISENC
     87  // check if this uri could be for us
     88  uint_t match_oggstream = 0;
     89  if (strcmp (aubio_get_extension(uri), "ogg") == 0) match_oggstream = 1;
     90  if (match_oggstream) {
     91    s->sink = (void *)new_aubio_sink_vorbis(uri, samplerate);
     92    if (s->sink) {
     93      s->s_do = (aubio_sink_do_t)(aubio_sink_vorbis_do);
     94      s->s_do_multi = (aubio_sink_do_multi_t)(aubio_sink_vorbis_do_multi);
     95      s->s_preset_samplerate = (aubio_sink_preset_samplerate_t)(aubio_sink_vorbis_preset_samplerate);
     96      s->s_preset_channels = (aubio_sink_preset_channels_t)(aubio_sink_vorbis_preset_channels);
     97      s->s_get_samplerate = (aubio_sink_get_samplerate_t)(aubio_sink_vorbis_get_samplerate);
     98      s->s_get_channels = (aubio_sink_get_channels_t)(aubio_sink_vorbis_get_channels);
     99      s->s_close = (aubio_sink_close_t)(aubio_sink_vorbis_close);
     100      s->s_del = (del_aubio_sink_t)(del_aubio_sink_vorbis);
     101      return s;
     102    }
     103  }
     104#endif /* HAVE_VORBISENC */
     105
    58106#ifdef HAVE_SINK_APPLE_AUDIO
    59107  s->sink = (void *)new_aubio_sink_apple_audio(uri, samplerate);
Note: See TracChangeset for help on using the changeset viewer.