Changes in / [d013a93:09b4be9]


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/io/sink.c

    rd013a93 r09b4be9  
    5454};
    5555
    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 
    10256aubio_sink_t * new_aubio_sink(const char_t * uri, uint_t samplerate) {
    10357  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 
    14858#ifdef HAVE_SINK_APPLE_AUDIO
    14959  s->sink = (void *)new_aubio_sink_apple_audio(uri, samplerate);
     
    190100#if !defined(HAVE_WAVWRITE) && \
    191101  !defined(HAVE_SNDFILE) && \
    192   !defined(HAVE_SINK_APPLE_AUDIO) && \
    193   !defined(HAVE_VORBISENC) && \
    194   !defined(HAVE_FLAC)
     102  !defined(HAVE_SINK_APPLE_AUDIO)
    195103  AUBIO_ERROR("sink: failed creating '%s' at %dHz (no sink built-in)\n", uri, samplerate);
    196104#endif
Note: See TracChangeset for help on using the changeset viewer.