src/io/source_sndfile.{c,h}: add get_samplerate, if == 1 use file samplerate
authorPaul Brossier <piem@piem.org>
Fri, 27 Jul 2012 17:24:32 +0000 (11:24 -0600)
committerPaul Brossier <piem@piem.org>
Fri, 27 Jul 2012 17:24:32 +0000 (11:24 -0600)
src/io/source_sndfile.c
src/io/source_sndfile.h

index 7fbe2f2..93e37d6 100644 (file)
@@ -89,6 +89,8 @@ aubio_source_sndfile_t * new_aubio_source_sndfile(char_t * path, uint_t samplera
   s->input_channels   = sfinfo.channels;
   s->input_format     = sfinfo.format;
 
+  if (s->samplerate == 1) s->samplerate = s->input_samplerate;
+
   /* compute input block size required before resampling */
   s->ratio = s->samplerate/(float)s->input_samplerate;
   s->input_hop_size = (uint_t)FLOOR(s->hop_size / s->ratio + .5);
@@ -168,6 +170,10 @@ void aubio_source_sndfile_do(aubio_source_sndfile_t * s, fvec_t * read_data, uin
   *read = (int)FLOOR(s->ratio * read_samples / input_channels + .5);
 }
 
+uint_t aubio_source_sndfile_get_samplerate(aubio_source_sndfile_t * s) {
+  return s->samplerate;
+}
+
 void del_aubio_source_sndfile(aubio_source_sndfile_t * s){
   if (!s) return;
   if (sf_close(s->handle)) {
index eac2771..cfa38b7 100644 (file)
@@ -24,6 +24,7 @@
 typedef struct _aubio_source_sndfile_t aubio_source_sndfile_t;
 aubio_source_sndfile_t * new_aubio_source_sndfile(char_t * path, uint_t samplerate, uint_t block_size);
 void aubio_source_sndfile_do(aubio_source_sndfile_t * s, fvec_t * read_to, uint_t * read);
+uint_t aubio_source_sndfile_get_samplerate(aubio_source_sndfile_t * s);
 void del_aubio_source_sndfile(aubio_source_sndfile_t * s);
 
 #endif /* _AUBIO_SOURCE_SNDFILE_H */