Changeset 74c1fb9 for tests/src/io/test-sink.c
- Timestamp:
- Dec 19, 2018, 5:50:42 PM (6 years ago)
- Branches:
- feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/timestretch, fix/ffmpeg5, master
- Children:
- 0045668
- Parents:
- c1ba75b (diff), fda3394 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tests/src/io/test-sink.c
rc1ba75b r74c1fb9 2 2 #include "utils_tests.h" 3 3 4 int main (int argc, char **argv) 4 int test_wrong_params(void); 5 6 int main(int argc, char **argv) 5 7 { 6 sint_t err = 0;7 8 if (argc < 3) {9 PRINT_ERR("not enough arguments, running tests\n");10 err = run_on_default_source_and_sink(main);11 PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [hop_size]\n",argv[0]);8 uint_t err = 0; 9 if (argc < 3 || argc >= 6) { 10 PRINT_ERR("wrong number of arguments, running tests\n"); 11 err = test_wrong_params(); 12 PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [hop_size]\n", 13 argv[0]); 12 14 return err; 13 15 } … … 20 22 char_t *sink_path = argv[2]; 21 23 24 aubio_source_t *src = NULL; 25 aubio_sink_t *snk = NULL; 26 22 27 if ( argc >= 4 ) samplerate = atoi(argv[3]); 23 28 if ( argc >= 5 ) hop_size = atoi(argv[4]); 24 if ( argc >= 6 ) {25 err = 2;26 PRINT_ERR("too many arguments\n");27 return err;28 }29 29 30 30 fvec_t *vec = new_fvec(hop_size); 31 if (!vec) { err = 1; goto beach_fvec; }31 if (!vec) { err = 1; goto failure; } 32 32 33 aubio_source_t *i = new_aubio_source(source_path, samplerate, hop_size); 34 if (!i) { err = 1; goto beach_source; } 33 src = new_aubio_source(source_path, samplerate, hop_size); 34 if (!src) { err = 1; goto failure; } 35 if (samplerate == 0 ) samplerate = aubio_source_get_samplerate(src); 35 36 36 if (samplerate == 0 ) samplerate = aubio_source_get_samplerate(i); 37 38 aubio_sink_t *o = new_aubio_sink(sink_path, samplerate); 39 if (!o) { err = 1; goto beach_sink; } 37 snk = new_aubio_sink(sink_path, samplerate); 38 if (!snk) { err = 1; goto failure; } 40 39 41 40 do { 42 aubio_source_do( i, vec, &read);43 aubio_sink_do( o, vec, read);41 aubio_source_do(src, vec, &read); 42 aubio_sink_do(snk, vec, read); 44 43 n_frames += read; 45 44 } while ( read == hop_size ); 46 45 47 PRINT_MSG(" read %d frames at %dHz (%d blocks) from %swritten to %s\n",46 PRINT_MSG("%d frames read at %dHz (%d blocks) from %s and written to %s\n", 48 47 n_frames, samplerate, n_frames / hop_size, 49 48 source_path, sink_path); 50 49 51 del_aubio_sink(o); 52 beach_sink: 53 del_aubio_source(i); 54 beach_source: 55 del_fvec(vec); 56 beach_fvec: 50 // close sink now (optional) 51 aubio_sink_close(snk); 52 53 failure: 54 if (snk) 55 del_aubio_sink(snk); 56 if (src) 57 del_aubio_source(src); 58 if (vec) 59 del_fvec(vec); 60 57 61 return err; 58 62 } 63 64 int test_wrong_params(void) 65 { 66 fvec_t *vec; 67 fmat_t *mat; 68 aubio_sink_t *s; 69 char_t sink_path[PATH_MAX] = "tmp_aubio_XXXXXX"; 70 uint_t samplerate = 44100; 71 uint_t hop_size = 256; 72 uint_t oversized_hop_size = 4097; 73 uint_t oversized_samplerate = 192000 * 8 + 1; 74 uint_t channels = 3; 75 uint_t oversized_channels = 1025; 76 // create temp file 77 int fd = create_temp_sink(sink_path); 78 79 if (!fd) return 1; 80 81 if (new_aubio_sink( 0, samplerate)) return 1; 82 if (new_aubio_sink("\0", samplerate)) return 1; 83 if (new_aubio_sink(sink_path, -1)) return 1; 84 85 s = new_aubio_sink(sink_path, 0); 86 87 // check setting wrong parameters fails 88 if (!aubio_sink_preset_samplerate(s, oversized_samplerate)) return 1; 89 if (!aubio_sink_preset_channels(s, oversized_channels)) return 1; 90 if (!aubio_sink_preset_channels(s, -1)) return 1; 91 92 // check setting valid parameters passes 93 if (aubio_sink_preset_samplerate(s, samplerate)) return 1; 94 if (aubio_sink_preset_channels(s, 1)) return 1; 95 96 // check writing a vector with valid length 97 vec = new_fvec(hop_size); 98 aubio_sink_do(s, vec, hop_size); 99 // check writing more than in the input 100 aubio_sink_do(s, vec, hop_size+1); 101 // check write 0 frames 102 aubio_sink_do(s, vec, 0); 103 del_fvec(vec); 104 105 // check writing an oversized vector 106 vec = new_fvec(oversized_hop_size); 107 aubio_sink_do(s, vec, oversized_hop_size); 108 del_fvec(vec); 109 110 // test delete without closing 111 del_aubio_sink(s); 112 113 s = new_aubio_sink(sink_path, 0); 114 115 // preset channels first 116 if (aubio_sink_preset_channels(s, channels)) return 1; 117 if (aubio_sink_preset_samplerate(s, samplerate)) return 1; 118 119 if (aubio_sink_get_samplerate(s) != samplerate) return 1; 120 if (aubio_sink_get_channels(s) != channels) return 1; 121 122 mat = new_fmat(channels, hop_size); 123 // check writing a vector with valid length 124 aubio_sink_do_multi(s, mat, hop_size); 125 // check writing 0 frames 126 aubio_sink_do_multi(s, mat, 0); 127 // check writing more than in the input 128 aubio_sink_do_multi(s, mat, hop_size+1); 129 del_fmat(mat); 130 131 // check writing oversized input 132 mat = new_fmat(channels, oversized_hop_size); 133 aubio_sink_do_multi(s, mat, oversized_hop_size); 134 del_fmat(mat); 135 136 // check writing undersized input 137 mat = new_fmat(channels - 1, hop_size); 138 aubio_sink_do_multi(s, mat, hop_size); 139 del_fmat(mat); 140 141 aubio_sink_close(s); 142 // test closing twice 143 aubio_sink_close(s); 144 145 del_aubio_sink(s); 146 147 // delete temp file 148 close_temp_sink(sink_path, fd); 149 150 return run_on_default_source_and_sink(main); 151 }
Note: See TracChangeset
for help on using the changeset viewer.