- Timestamp:
- Aug 12, 2015, 7:21:38 PM (10 years ago)
- Branches:
- feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
- Children:
- 60fc05b
- Parents:
- 3a1a5d6 (diff), 7b2d740 (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. - Location:
- src
- Files:
-
- 23 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified src/aubio_priv.h ¶
r3a1a5d6 rb257b60 129 129 #define AUBIO_SPRINTF sprintf 130 130 131 /* Libc shortcuts */ 131 /* pi and 2*pi */ 132 #ifndef M_PI 133 #define PI (3.14159265358979323846) 134 #else 132 135 #define PI (M_PI) 136 #endif 133 137 #define TWO_PI (PI*2.) 134 138 … … 214 218 #define SAFE_LOG(f) LOG(CEIL_DENORMAL(f)) 215 219 220 /** silence unused parameter warning by adding an attribute */ 221 #if defined(__GNUC__) 216 222 #define UNUSED __attribute__((unused)) 223 #else 224 #define UNUSED 225 #endif 217 226 218 227 #endif /* _AUBIO__PRIV_H */ -
TabularUnified src/io/audio_unit.c ¶
r3a1a5d6 rb257b60 234 234 audioFormat.mChannelsPerFrame = 2; 235 235 audioFormat.mFormatID = kAudioFormatLinearPCM; 236 audioFormat.mFormatFlags = kAudioFormatFlag sCanonical;236 audioFormat.mFormatFlags = kAudioFormatFlagIsSignedInteger | kAudioFormatFlagsNativeEndian | kAudioFormatFlagIsPacked; 237 237 audioFormat.mFramesPerPacket = 1; 238 audioFormat.mBitsPerChannel = 8 * sizeof( AudioSampleType);238 audioFormat.mBitsPerChannel = 8 * sizeof(SInt16); 239 239 #if 1 // interleaving 240 audioFormat.mBytesPerFrame = 2 * sizeof( AudioSampleType);241 audioFormat.mBytesPerPacket = 2 * sizeof( AudioSampleType);240 audioFormat.mBytesPerFrame = 2 * sizeof(SInt16); 241 audioFormat.mBytesPerPacket = 2 * sizeof(SInt16); 242 242 #else 243 audioFormat.mBytesPerPacket = audioFormat.mBytesPerFrame = sizeof( AudioUnitSampleType);243 audioFormat.mBytesPerPacket = audioFormat.mBytesPerFrame = sizeof(SInt32); 244 244 audioFormat.mFormatFlags |= kAudioFormatFlagIsNonInterleaved; 245 245 #endif -
TabularUnified src/io/sink_apple_audio.c ¶
r3a1a5d6 rb257b60 61 61 s->max_frames = MAX_SIZE; 62 62 s->async = true; 63 64 if (uri == NULL) { 65 AUBIO_ERROR("sink_apple_audio: Aborted opening null path\n"); 66 goto beach; 67 } 63 68 64 69 s->samplerate = 0; -
TabularUnified src/io/sink_sndfile.c ¶
r3a1a5d6 rb257b60 142 142 void aubio_sink_sndfile_do(aubio_sink_sndfile_t *s, fvec_t * write_data, uint_t write){ 143 143 uint_t i, j, channels = s->channels; 144 int nsamples = channels*write;144 int nsamples = 0; 145 145 smpl_t *pwrite; 146 146 sf_count_t written_frames; 147 147 148 148 if (write > s->max_size) { 149 AUBIO_WRN(" trying to write %d frames, but only %d can be written at a time",149 AUBIO_WRN("sink_sndfile: trying to write %d frames, but only %d can be written at a time\n", 150 150 write, s->max_size); 151 151 write = s->max_size; 152 152 } 153 154 nsamples = channels * write; 153 155 154 156 /* interleaving data */ … … 162 164 written_frames = sf_write_float (s->handle, s->scratch_data, nsamples); 163 165 if (written_frames/channels != write) { 164 AUBIO_WRN("sink_sndfile: trying to write %d frames to %s, but only %d could be written ",166 AUBIO_WRN("sink_sndfile: trying to write %d frames to %s, but only %d could be written\n", 165 167 write, s->path, (uint_t)written_frames); 166 168 } … … 170 172 void aubio_sink_sndfile_do_multi(aubio_sink_sndfile_t *s, fmat_t * write_data, uint_t write){ 171 173 uint_t i, j, channels = s->channels; 172 int nsamples = channels*write;174 int nsamples = 0; 173 175 smpl_t *pwrite; 174 176 sf_count_t written_frames; 175 177 176 178 if (write > s->max_size) { 177 AUBIO_WRN(" trying to write %d frames, but only %d can be written at a time",179 AUBIO_WRN("sink_sndfile: trying to write %d frames, but only %d can be written at a time\n", 178 180 write, s->max_size); 179 181 write = s->max_size; 180 182 } 183 184 nsamples = channels * write; 181 185 182 186 /* interleaving data */ … … 190 194 written_frames = sf_write_float (s->handle, s->scratch_data, nsamples); 191 195 if (written_frames/channels != write) { 192 AUBIO_WRN("sink_sndfile: trying to write %d frames to %s, but only %d could be written ",196 AUBIO_WRN("sink_sndfile: trying to write %d frames to %s, but only %d could be written\n", 193 197 write, s->path, (uint_t)written_frames); 194 198 } -
TabularUnified src/io/sink_wavwrite.c ¶
r3a1a5d6 rb257b60 45 45 #define HTOLES(x) x 46 46 #else 47 #ifdef HAVE_WIN_HACKS 48 #define HTOLES(x) x 49 #else 47 50 #define HTOLES(x) SWAPS(htons(x)) 51 #endif 48 52 #endif 49 53 … … 98 102 // zero samplerate given. do not open yet 99 103 if ((sint_t)samplerate == 0) return s; 104 // samplerate way too large, fail 105 if ((sint_t)samplerate > 192000 * 4) goto beach; 100 106 101 107 s->samplerate = samplerate; -
TabularUnified src/io/source_sndfile.c ¶
r3a1a5d6 rb257b60 152 152 void aubio_source_sndfile_do(aubio_source_sndfile_t * s, fvec_t * read_data, uint_t * read){ 153 153 uint_t i,j, input_channels = s->input_channels; 154 /* do actual reading*/154 /* read from file into scratch_data */ 155 155 sf_count_t read_samples = sf_read_float (s->handle, s->scratch_data, s->scratch_size); 156 156 157 smpl_t *data;158 157 /* where to store de-interleaved data */ 158 smpl_t *ptr_data; 159 159 #ifdef HAVE_SAMPLERATE 160 160 if (s->ratio != 1) { 161 data = s->input_data->data;161 ptr_data = s->input_data->data; 162 162 } else 163 163 #endif /* HAVE_SAMPLERATE */ 164 164 { 165 data = read_data->data;165 ptr_data = read_data->data; 166 166 } 167 167 168 168 /* de-interleaving and down-mixing data */ 169 169 for (j = 0; j < read_samples / input_channels; j++) { 170 data[j] = 0;170 ptr_data[j] = 0; 171 171 for (i = 0; i < input_channels; i++) { 172 data[j] += s->scratch_data[input_channels*j+i];173 } 174 data[j] /= (smpl_t)input_channels;172 ptr_data[j] += s->scratch_data[input_channels*j+i]; 173 } 174 ptr_data[j] /= (smpl_t)input_channels; 175 175 } 176 176 … … 196 196 sf_count_t read_samples = sf_read_float (s->handle, s->scratch_data, s->scratch_size); 197 197 198 smpl_t **data;199 198 /* where to store de-interleaved data */ 199 smpl_t **ptr_data; 200 200 #ifdef HAVE_SAMPLERATE 201 201 if (s->ratio != 1) { 202 AUBIO_ERR("source_sndfile: no multi channel resampling yet ");202 AUBIO_ERR("source_sndfile: no multi channel resampling yet\n"); 203 203 return; 204 // data = s->input_data->data;204 //ptr_data = s->input_data->data; 205 205 } else 206 206 #endif /* HAVE_SAMPLERATE */ 207 207 { 208 data = read_data->data;208 ptr_data = read_data->data; 209 209 } 210 210 … … 214 214 for (j = 0; j < read_samples / input_channels; j++) { 215 215 for (i = 0; i < read_data->height; i++) { 216 data[i][j] = (smpl_t)s->scratch_data[j * input_channels + i];216 ptr_data[i][j] = (smpl_t)s->scratch_data[j * input_channels + i]; 217 217 } 218 218 } … … 222 222 for (j = 0; j < read_samples / input_channels; j++) { 223 223 for (i = 0; i < input_channels; i++) { 224 data[i][j] = (smpl_t)s->scratch_data[j * input_channels + i];224 ptr_data[i][j] = (smpl_t)s->scratch_data[j * input_channels + i]; 225 225 } 226 226 } … … 232 232 for (j = 0; j < read_samples / input_channels; j++) { 233 233 for (i = input_channels; i < read_data->height; i++) { 234 data[i][j] = (smpl_t)s->scratch_data[j * input_channels + (input_channels - 1)];234 ptr_data[i][j] = (smpl_t)s->scratch_data[j * input_channels + (input_channels - 1)]; 235 235 } 236 236 } … … 265 265 uint_t aubio_source_sndfile_seek (aubio_source_sndfile_t * s, uint_t pos) { 266 266 uint_t resampled_pos = (uint_t)ROUND(pos / s->ratio); 267 return sf_seek (s->handle, resampled_pos, SEEK_SET); 267 sf_count_t sf_ret = sf_seek (s->handle, resampled_pos, SEEK_SET); 268 if (sf_ret == -1) { 269 AUBIO_ERR("source_sndfile: Failed seeking %s at %d: %s\n", s->path, pos, sf_strerror (NULL)); 270 return AUBIO_FAIL; 271 } 272 if (sf_ret != resampled_pos) { 273 AUBIO_ERR("source_sndfile: Tried seeking %s at %d, but got %d: %s\n", 274 s->path, resampled_pos, (uint_t)sf_ret, sf_strerror (NULL)); 275 return AUBIO_FAIL; 276 } 277 return AUBIO_OK; 268 278 } 269 279 … … 273 283 } 274 284 if(sf_close(s->handle)) { 275 AUBIO_ERR("source_sndfile: Error closing file %s: %s ", s->path, sf_strerror (NULL));285 AUBIO_ERR("source_sndfile: Error closing file %s: %s\n", s->path, sf_strerror (NULL)); 276 286 return AUBIO_FAIL; 277 287 } -
TabularUnified src/io/source_wavread.c ¶
r3a1a5d6 rb257b60 93 93 s->fid = fopen((const char *)path, "rb"); 94 94 if (!s->fid) { 95 AUBIO_ERR("source_wavread: could not open %s (%s)\n", s->path, strerror(errno));95 AUBIO_ERR("source_wavread: Failed opening %s (System error: %s)\n", s->path, strerror(errno)); 96 96 goto beach; 97 97 } … … 220 220 #ifndef HAVE_WIN_HACKS 221 221 AUBIO_ERR("source_wavread: short read (%zd instead of %zd) in %s\n", 222 bytes_read, bytes_expected, s->path); 222 223 #else // mingw does not know about %zd... 223 224 AUBIO_ERR("source_wavread: short read (%d instead of %d) in %s\n", 225 (int)bytes_read, (int)bytes_expected, s->path); 224 226 #endif 225 bytes_read, bytes_expected, s->path);226 227 goto beach; 227 228 } … … 356 357 357 358 uint_t aubio_source_wavread_seek (aubio_source_wavread_t * s, uint_t pos) { 358 uint_t ret = fseek(s->fid, s->seek_start + pos * s->blockalign, SEEK_SET); 359 uint_t ret = 0; 360 if ((sint_t)pos < 0) { 361 return AUBIO_FAIL; 362 } 363 ret = fseek(s->fid, s->seek_start + pos * s->blockalign, SEEK_SET); 364 if (ret != 0) { 365 AUBIO_ERR("source_wavread: could not seek %s at %d (%s)\n", s->path, pos, strerror(errno)); 366 return AUBIO_FAIL; 367 } 368 // reset some values 359 369 s->eof = 0; 360 370 s->read_index = 0; 361 return ret;371 return AUBIO_OK; 362 372 } 363 373 -
TabularUnified src/mathutils.c ¶
r3a1a5d6 rb257b60 141 141 case aubio_win_parzen: 142 142 for (i=0;i<size;i++) 143 w[i] = 1.0 - ABS((2. *i-size)/(size+1.0));143 w[i] = 1.0 - ABS((2.f*i-size)/(size+1.0f)); 144 144 break; 145 145 default: -
TabularUnified src/musicutils.h ¶
r3a1a5d6 rb257b60 113 113 smpl_t aubio_zero_crossing_rate (fvec_t * v); 114 114 115 /** compute sound level on a linear 115 /** compute sound level on a linear scale 116 116 117 117 This gives the average of the square amplitudes. 118 118 119 \param v vector to compute dB SPLfrom119 \param v vector to compute level from 120 120 121 121 \return level of v -
TabularUnified src/onset/onset.c ¶
r3a1a5d6 rb257b60 69 69 } else { 70 70 // we are at the beginning of the file, and we don't find silence 71 if (o->total_frames == 0&& aubio_silence_detection(input, o->silence) == 0) {71 if (o->total_frames <= o->delay && o->last_onset < o ->minioi && aubio_silence_detection(input, o->silence) == 0) { 72 72 //AUBIO_DBG ("beginning of file is not silent, marking as onset\n"); 73 73 isonset = o->delay / o->hop_size; … … 100 100 } 101 101 102 smpl_t aubio_onset_get_silence(aubio_onset_t * o) { 103 return o->silence; 104 } 105 102 106 uint_t aubio_onset_set_threshold(aubio_onset_t * o, smpl_t threshold) { 103 107 aubio_peakpicker_set_threshold(o->pp, threshold); … … 173 177 { 174 178 aubio_onset_t * o = AUBIO_NEW(aubio_onset_t); 179 180 /* check parameters are valid */ 181 if ((sint_t)hop_size < 1) { 182 AUBIO_ERR("onset: got hop_size %d, but can not be < 1\n", hop_size); 183 goto beach; 184 } else if ((sint_t)buf_size < 1) { 185 AUBIO_ERR("onset: got buffer_size %d, but can not be < 1\n", buf_size); 186 goto beach; 187 } else if (buf_size < hop_size) { 188 AUBIO_ERR("onset: hop size (%d) is larger than win size (%d)\n", buf_size, hop_size); 189 goto beach; 190 } else if ((sint_t)samplerate < 1) { 191 AUBIO_ERR("onset: samplerate (%d) can not be < 1\n", samplerate); 192 goto beach; 193 } 194 175 195 /* store creation parameters */ 176 196 o->samplerate = samplerate; … … 194 214 o->total_frames = 0; 195 215 return o; 216 217 beach: 218 AUBIO_FREE(o); 219 return NULL; 196 220 } 197 221 -
TabularUnified src/onset/onset.h ¶
r3a1a5d6 rb257b60 126 126 uint_t aubio_onset_set_silence(aubio_onset_t * o, smpl_t silence); 127 127 128 /** get onset detection silence threshold 129 130 \param o onset detection object as returned by new_aubio_onset() 131 132 \return current silence threshold 133 134 */ 135 smpl_t aubio_onset_get_silence(aubio_onset_t * o); 136 128 137 /** get onset detection function 129 138 -
TabularUnified src/pitch/pitch.c ¶
r3a1a5d6 rb257b60 130 130 pitch_type = aubio_pitcht_default; 131 131 } 132 133 // check parameters are valid 134 if ((sint_t)hopsize < 1) { 135 AUBIO_ERR("onset: got hopsize %d, but can not be < 1\n", hopsize); 136 goto beach; 137 } else if ((sint_t)bufsize < 1) { 138 AUBIO_ERR("onset: got buffer_size %d, but can not be < 1\n", bufsize); 139 goto beach; 140 } else if (bufsize < hopsize) { 141 AUBIO_ERR("onset: hop size (%d) is larger than win size (%d)\n", bufsize, hopsize); 142 goto beach; 143 } else if ((sint_t)samplerate < 1) { 144 AUBIO_ERR("onset: samplerate (%d) can not be < 1\n", samplerate); 145 goto beach; 146 } 147 132 148 p->samplerate = samplerate; 133 149 p->type = pitch_type; … … 179 195 } 180 196 return p; 197 198 beach: 199 AUBIO_FREE(p); 200 return NULL; 181 201 } 182 202 … … 238 258 pitch_mode = aubio_pitchm_freq; 239 259 else if (strcmp (pitch_unit, "hertz") == 0) 260 pitch_mode = aubio_pitchm_freq; 261 else if (strcmp (pitch_unit, "Hertz") == 0) 240 262 pitch_mode = aubio_pitchm_freq; 241 263 else if (strcmp (pitch_unit, "Hz") == 0) … … 296 318 aubio_pitch_set_silence (aubio_pitch_t * p, smpl_t silence) 297 319 { 298 if (silence < 0 && silence >-200) {320 if (silence <= 0 && silence >= -200) { 299 321 p->silence = silence; 300 322 return AUBIO_OK; 301 323 } else { 302 AUBIO_ERR("pitch: could doset silence to %.2f", silence);324 AUBIO_ERR("pitch: could not set silence to %.2f", silence); 303 325 return AUBIO_FAIL; 304 326 } -
TabularUnified src/pitch/pitchyin.c ¶
r3a1a5d6 rb257b60 146 146 } 147 147 tmp2 += yin->data[tau]; 148 yin->data[tau] *= tau / tmp2; 148 if (tmp2 != 0) { 149 yin->data[tau] *= tau / tmp2; 150 } else { 151 yin->data[tau] = 1.; 152 } 149 153 period = tau - 3; 150 154 if (tau > 4 && (yin->data[period] < tol) && -
TabularUnified src/pitch/pitchyinfft.c ¶
r3a1a5d6 rb257b60 136 136 // and the cumulative mean normalized difference function 137 137 tmp += yin->data[tau]; 138 yin->data[tau] *= tau / tmp; 138 if (tmp != 0) { 139 yin->data[tau] *= tau / tmp; 140 } else { 141 yin->data[tau] = 1.; 142 } 139 143 } 140 144 // find best candidates -
TabularUnified src/spectral/phasevoc.c ¶
r3a1a5d6 rb257b60 78 78 79 79 if ((sint_t)hop_s < 1) { 80 AUBIO_ERR(" got hop_size %d, but can not be < 1\n", hop_s);80 AUBIO_ERR("pvoc: got hop_size %d, but can not be < 1\n", hop_s); 81 81 goto beach; 82 82 } else if ((sint_t)win_s < 1) { 83 AUBIO_ERR(" got buffer_size %d, but can not be < 1\n", win_s);83 AUBIO_ERR("pvoc: got buffer_size %d, but can not be < 1\n", win_s); 84 84 goto beach; 85 85 } else if (win_s < hop_s) { 86 AUBIO_ERR(" hop size (%d) is larger than win size (%d)\n", win_s, hop_s);86 AUBIO_ERR("pvoc: hop size (%d) is larger than win size (%d)\n", win_s, hop_s); 87 87 goto beach; 88 88 } -
TabularUnified src/spectral/specdesc.c ¶
r3a1a5d6 rb257b60 119 119 onset->data[0] += 120 120 SQRT (ABS (SQR (o->oldmag->data[j]) + SQR (fftgrain->norm[j]) 121 - 2 .* o->oldmag->data[j] * fftgrain->norm[j]121 - 2 * o->oldmag->data[j] * fftgrain->norm[j] 122 122 * COS (o->dev1->data[j] - fftgrain->phas[j]))); 123 123 /* swap old phase data (need to remember 2 frames behind)*/ -
TabularUnified src/spectral/specdesc.h ¶
r3a1a5d6 rb257b60 158 158 /** execute spectral description function on a spectral frame 159 159 160 Generic function to compute spectral de tescription.160 Generic function to compute spectral description. 161 161 162 162 \param o spectral description object as returned by new_aubio_specdesc() -
TabularUnified src/synth/sampler.c ¶
r3a1a5d6 rb257b60 40 40 { 41 41 aubio_sampler_t *s = AUBIO_NEW(aubio_sampler_t); 42 if ((sint_t)blocksize < 1) { 43 AUBIO_ERR("sampler: got blocksize %d, but can not be < 1\n", blocksize); 44 goto beach; 45 } 42 46 s->samplerate = samplerate; 43 47 s->blocksize = blocksize; … … 47 51 s->playing = 0; 48 52 return s; 53 beach: 54 AUBIO_FREE(s); 55 return NULL; 49 56 } 50 57 -
TabularUnified src/tempo/beattracking.c ¶
r3a1a5d6 rb257b60 267 267 sint_t k = 0; 268 268 smpl_t three_energy = 0., four_energy = 0.; 269 if (gp < 2) return 4; 269 270 if (acflen > 6 * gp + 2) { 270 271 for (k = -2; k < 2; k++) { … … 331 332 if (counter == 1 && flagstep == 1) { 332 333 //check for consistency between previous beatperiod values 333 if (ABS (2 .* rp - rp1 - rp2) < bt->g_var) {334 if (ABS (2 * rp - rp1 - rp2) < bt->g_var) { 334 335 //if true, can activate context dependent model 335 336 flagconst = 1; -
TabularUnified src/tempo/tempo.c ¶
r3a1a5d6 rb257b60 110 110 tempo->data[0] = o->out->data[i] - FLOOR(o->out->data[i]); /* set tactus */ 111 111 /* test for silence */ 112 /*113 112 if (aubio_silence_detection(input, o->silence)==1) { 114 113 tempo->data[0] = 0; // unset beat if silent 115 114 } 116 */117 115 o->last_beat = o->total_frames + (uint_t)ROUND(tempo->data[0] * o->hop_size); 118 116 } … … 149 147 o->silence = silence; 150 148 return AUBIO_OK; 149 } 150 151 smpl_t aubio_tempo_get_silence(aubio_tempo_t * o) { 152 return o->silence; 151 153 } 152 154 … … 157 159 } 158 160 161 smpl_t aubio_tempo_get_threshold(aubio_tempo_t * o) { 162 return o->threshold; 163 } 164 159 165 /* Allocate memory for an tempo detection */ 160 166 aubio_tempo_t * new_aubio_tempo (char_t * tempo_mode, … … 164 170 char_t specdesc_func[20]; 165 171 o->samplerate = samplerate; 172 // check parameters are valid 173 if ((sint_t)hop_size < 1) { 174 AUBIO_ERR("tempo: got hop size %d, but can not be < 1\n", hop_size); 175 goto beach; 176 } else if ((sint_t)buf_size < 1) { 177 AUBIO_ERR("tempo: got window size %d, but can not be < 1\n", buf_size); 178 goto beach; 179 } else if (buf_size < hop_size) { 180 AUBIO_ERR("tempo: hop size (%d) is larger than window size (%d)\n", buf_size, hop_size); 181 goto beach; 182 } else if ((sint_t)samplerate < 1) { 183 AUBIO_ERR("tempo: samplerate (%d) can not be < 1\n", samplerate); 184 goto beach; 185 } 186 166 187 /* length of observations, worth about 6 seconds */ 167 188 o->winlen = aubio_next_power_of_two(5.8 * samplerate / hop_size); 189 if (o->winlen < 4) o->winlen = 4; 168 190 o->step = o->winlen/4; 169 191 o->blockpos = 0; … … 194 216 }*/ 195 217 return o; 218 219 beach: 220 AUBIO_FREE(o); 221 return NULL; 196 222 } 197 223 -
TabularUnified src/tempo/tempo.h ¶
r3a1a5d6 rb257b60 94 94 uint_t aubio_tempo_set_silence(aubio_tempo_t * o, smpl_t silence); 95 95 96 /** get tempo detection silence threshold 97 98 \param o tempo detection object as returned by new_aubio_tempo() 99 100 \return current silence threshold 101 102 */ 103 smpl_t aubio_tempo_get_silence(aubio_tempo_t * o); 104 96 105 /** set tempo detection peak picking threshold 97 106 … … 103 112 */ 104 113 uint_t aubio_tempo_set_threshold(aubio_tempo_t * o, smpl_t threshold); 114 115 /** get tempo peak picking threshold 116 117 \param o tempo detection object as returned by new_aubio_tempo() 118 119 \return current tempo detection threshold 120 121 */ 122 smpl_t aubio_tempo_get_threshold(aubio_tempo_t * o); 105 123 106 124 /** get current tempo -
TabularUnified src/temporal/resampler.c ¶
r3a1a5d6 rb257b60 77 77 struct _aubio_resampler_t 78 78 { 79 void *dummy; 79 80 }; 80 81 -
TabularUnified src/wscript_build ¶
r3a1a5d6 rb257b60 21 21 # build libaubio.so (cshlib) and/or libaubio.a (cstlib) 22 22 if ctx.env['DEST_OS'] in ['ios', 'iosimulator']: 23 build_features = ['cstlib' ]23 build_features = ['cstlib', 'cshlib'] 24 24 elif ctx.env['DEST_OS'] in ['win32', 'win64']: 25 25 build_features = ['cshlib'] … … 30 30 ctx(features = 'c ' + target, 31 31 use = ['lib_objects'], 32 uselib = uselib, 32 33 lib = 'm', 33 34 target = 'aubio', 34 install_path = '${PREFIX}/lib',35 35 vnum = ctx.env['LIB_VERSION']) 36 36
Note: See TracChangeset
for help on using the changeset viewer.