Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • tests/src/io/test-sink_wavwrite.c

    r05774ba3 r9720945  
    22#include <aubio.h>
    33#include "utils_tests.h"
    4 
    5 #define aubio_sink_custom "wavwrite"
    6 
    7 #ifdef HAVE_WAVWRITE
    8 #define HAVE_AUBIO_SINK_CUSTOM
    9 #define aubio_sink_custom_t aubio_sink_wavwrite_t
    10 #define new_aubio_sink_custom new_aubio_sink_wavwrite
    11 #define del_aubio_sink_custom del_aubio_sink_wavwrite
    12 #define aubio_sink_custom_do aubio_sink_wavwrite_do
    13 #define aubio_sink_custom_do_multi aubio_sink_wavwrite_do_multi
    14 #define aubio_sink_custom_close aubio_sink_wavwrite_close
    15 #define aubio_sink_custom_preset_samplerate aubio_sink_wavwrite_preset_samplerate
    16 #define aubio_sink_custom_preset_channels aubio_sink_wavwrite_preset_channels
    17 #define aubio_sink_custom_get_samplerate aubio_sink_wavwrite_get_samplerate
    18 #define aubio_sink_custom_get_channels aubio_sink_wavwrite_get_channels
    19 #endif /* HAVE_WAVWRITE */
    20 
    21 #include "base-sink_custom.h"
    224
    235// this file uses the unstable aubio api, please use aubio_sink instead
     
    268int main (int argc, char **argv)
    279{
    28   return base_main(argc, argv);
     10  sint_t err = 0;
     11
     12  if (argc < 3) {
     13    err = 2;
     14    PRINT_ERR("not enough arguments\n");
     15    PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [hop_size]\n", argv[0]);
     16    return err;
     17  }
     18
     19#ifdef HAVE_WAVWRITE
     20  uint_t samplerate = 0;
     21  uint_t hop_size = 512;
     22  uint_t n_frames = 0, read = 0;
     23
     24  char_t *source_path = argv[1];
     25  char_t *sink_path = argv[2];
     26
     27  if ( argc >= 4 ) samplerate = atoi(argv[3]);
     28  if ( argc >= 5 ) hop_size = atoi(argv[4]);
     29  if ( argc >= 6 ) {
     30    err = 2;
     31    PRINT_ERR("too many arguments\n");
     32    return err;
     33  }
     34
     35  fvec_t *vec = new_fvec(hop_size);
     36  if (!vec) { err = 1; goto beach_fvec; }
     37
     38  aubio_source_t *i = new_aubio_source(source_path, samplerate, hop_size);
     39  if (!i) { err = 1; goto beach_source; }
     40
     41  if (samplerate == 0 ) samplerate = aubio_source_get_samplerate(i);
     42
     43  aubio_sink_wavwrite_t *o = new_aubio_sink_wavwrite(sink_path, samplerate);
     44  if (!o) { err = 1; goto beach_sink; }
     45
     46  do {
     47    aubio_source_do(i, vec, &read);
     48    aubio_sink_wavwrite_do(o, vec, read);
     49    n_frames += read;
     50  } while ( read == hop_size );
     51
     52  PRINT_MSG("read %d frames at %dHz (%d blocks) from %s written to %s\n",
     53      n_frames, samplerate, n_frames / hop_size,
     54      source_path, sink_path);
     55
     56  del_aubio_sink_wavwrite(o);
     57beach_sink:
     58  del_aubio_source(i);
     59beach_source:
     60  del_fvec(vec);
     61beach_fvec:
     62#else
     63  err = 3;
     64  PRINT_ERR("aubio was not compiled with aubio_sink_wavwrite\n");
     65#endif /* HAVE_WAVWRITE */
     66  return err;
    2967}
Note: See TracChangeset for help on using the changeset viewer.