Changeset 8177483
- Timestamp:
- Mar 26, 2017, 1:09:06 PM (8 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, sampler
- Children:
- 6e8f021
- Parents:
- 42f1cd01 (diff), c7d444a (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. - Files:
-
- 1 added
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
Makefile
r42f1cd01 r8177483 11 11 12 12 WAFCMD=python waf 13 WAFURL=https://waf.io/waf-1.9.614 13 15 14 #WAFOPTS:= -
python/lib/moresetuptools.py
r42f1cd01 r8177483 113 113 # loof for additional packages 114 114 print("Info: looking for *optional* additional packages") 115 packages = ['libavcodec', 'libavformat', 'libavutil', 'libavresample', 116 'jack', 117 'jack', 115 packages = ['libavcodec', 'libavformat', 'libavutil', 116 'libswresample', 'libavresample', 118 117 'sndfile', 119 118 #'fftw3f', … … 127 126 if 'avcodec' in ext.libraries \ 128 127 and 'avformat' in ext.libraries \ 129 and 'avutil' in ext.libraries \ 130 and 'avresample' in ext.libraries: 131 ext.define_macros += [('HAVE_LIBAV', 1)] 132 if 'jack' in ext.libraries: 133 ext.define_macros += [('HAVE_JACK', 1)] 128 and 'avutil' in ext.libraries: 129 if 'swresample' in ext.libraries: 130 ext.define_macros += [('HAVE_SWRESAMPLE', 1)] 131 elif 'avresample' in ext.libraries: 132 ext.define_macros += [('HAVE_AVRESAMPLE', 1)] 133 if 'swresample' in ext.libraries or 'avresample' in ext.libraries: 134 ext.define_macros += [('HAVE_LIBAV', 1)] 134 135 if 'sndfile' in ext.libraries: 135 136 ext.define_macros += [('HAVE_SNDFILE', 1)] -
scripts/build_mingw
r42f1cd01 r8177483 1 1 #! /bin/bash 2 2 3 # This script cross compiles aubio for windows using mingw, both for 32 and 64 4 # bits. Built binaries will be placed in ./dist-win32 and ./dist-win64. 5 3 # This script cross compiles aubio for windows using mingw, four times: 4 # 5 # - 32 and 64 bits with no external dependencies 6 # - 32 and 64 bits against ffmpeg 7 # 6 8 # On debian or ubuntu, you will want to 'apt-get install gcc-mingw-w64' 7 9 … … 9 11 set -x 10 12 11 WAFOPTS="-v --disable-avcodec --disable-samplerate --disable-jack --disable-sndfile" 13 source VERSION 14 VERSION="$AUBIO_MAJOR_VERSION.$AUBIO_MINOR_VERSION.$AUBIO_PATCH_VERSION" 15 VERSION+="$AUBIO_VERSION_STATUS" 12 16 13 [ -d dist-win32 ] && rm -rf dist-win32 14 [ -d dist-win64 ] && rm -rf dist-win64 17 FFMPEG_BUILDS_URL="https://ffmpeg.zeranoe.com/builds" 18 FFMPEG_DEFAULT="20170315-6c4665d" 15 19 16 CFLAGS="-Os" \ 17 LDFLAGS="" \ 18 CC=x86_64-w64-mingw32-gcc \ 19 ./waf distclean configure build install --destdir=$PWD/dist-win64 \ 20 --testcmd="echo %s" \ 21 $WAFOPTS --with-target-platform=win64 20 # define some default CFLAGS 21 DEF_CFLAGS="-Os -I/usr/share/mingw-w64" 22 DEF_LDFLAGS="" 22 23 23 CFLAGS="-Os" \ 24 LDFLAGS="" \ 25 CC=i686-w64-mingw32-gcc \ 26 ./waf distclean configure build install --destdir=$PWD/dist-win32 \ 27 --testcmd="echo %s" \ 28 $WAFOPTS --with-target-platform=win32 24 WAFOPTS="" 25 # disable external deps to make sure we don't try to use the host package 26 WAFOPTS+=" --disable-samplerate --disable-jack --disable-sndfile" 27 # enable ffmpeg build 28 WAFOPTS+=" --disable-avcodec" 29 # install without a prefix 30 WAFOPTS+=" --prefix=/" 31 # compile the tests, but fake running them 32 # passing this option WAFOPTS fails (escaping?), added in actual waf call below 33 #WAFOPTS+=" --testcmd='echo %s'" 34 35 # debugging 36 #WAFOPTS+=" -v" 37 #WAFOPTS+=" -j1" 38 #WAFOPTS+=" --notests" 39 40 function fetch_ffpmeg() { 41 ## manually add ffmpeg (no pkg-config .pc files in bins) 42 [ -n "$FFMPEG_VERSION" ] || FFMPEG_VERSION=$FFMPEG_DEFAULT 43 FFMPEG_TARBALL="$PWD/ffmpeg-$FFMPEG_VERSION-$TARGET-dev.zip" 44 FFMPEG_BINARIES="${FFMPEG_TARBALL%%.zip}" 45 if [ ! -d "$FFMPEG_BINARIES" ] 46 then 47 if [ ! -f "$FFMPEG_TARBALL" ] 48 then 49 curl -O $FFMPEG_BUILDS_URL/$TARGET/dev/ffmpeg-$FFMPEG_VERSION-$TARGET-dev.zip 50 else 51 echo "using $FFMPEG_TARBALL" 52 fi 53 unzip -x $FFMPEG_TARBALL 54 else 55 echo "using $FFMPEG_BINARIES" 56 fi 57 } 58 59 function get_cflags() { 60 CFLAGS="$DEF_CFLAGS" 61 LDFLAGS="$DEF_LDFLAGS" 62 if [ -n "$WITH_FFMEG" ] 63 then 64 fetch_ffpmeg 65 CFLAGS+=" -DHAVE_LIBAV=1 -DHAVE_SWRESAMPLE=1" 66 CFLAGS+=" -I$FFMPEG_BINARIES/include" 67 LDFLAGS+=" -lavcodec -lavformat -lavutil -lswresample" 68 LDFLAGS+=" -L$FFMPEG_BINARIES/lib" 69 fi 70 } 71 72 function build_mingw() { 73 DESTDIR="$PWD/aubio-$VERSION-$TARGET" 74 [ -n "$WITH_FFMEG" ] && DESTDIR+="-ffmpeg" 75 [ -f $DESTDIR.zip ] && echo "Remove existing $DESTDIR.zip first" && exit 1 76 [ -d $DESTDIR ] && rm -rf $DESTDIR 77 WAFOPTS_TGT="$WAFOPTS --destdir=$DESTDIR" 78 WAFOPTS_TGT+=" --with-target-platform=$TARGET" 79 get_cflags 80 CFLAGS="$CFLAGS" LDFLAGS="$LDFLAGS" \ 81 ./waf distclean configure build install $WAFOPTS_TGT --testcmd='echo %s' 82 zip -r $DESTDIR.zip `basename $DESTDIR` 83 rm -rf $DESTDIR 84 sha256sum $DESTDIR.zip > $DESTDIR.zip.sha256 85 } 86 87 function build_mingw32() { 88 TARGET=win32 89 export CC=i686-w64-mingw32-gcc 90 build_mingw 91 } 92 93 function build_mingw64() { 94 TARGET=win64 95 export CC=x86_64-w64-mingw32-gcc 96 build_mingw 97 } 98 99 # fetch waf if needed 100 [ -f "waf" ] || make getwaf 101 102 # first build without ffmpeg 103 build_mingw32 104 build_mingw64 105 106 # then build against ffmpeg 107 WITH_FFMEG=1 108 build_mingw32 109 build_mingw64 110 111 set +x 112 echo "" 113 echo "All done! The following files were generated:" 114 echo "" 115 ls -lart aubio*.zip* -
scripts/get_waf.sh
r42f1cd01 r8177483 4 4 set -x 5 5 6 WAFURL=https://waf.io/waf-1. 8.226 WAFURL=https://waf.io/waf-1.9.6 7 7 8 8 ( which wget > /dev/null && wget -qO waf $WAFURL ) || ( which curl > /dev/null && curl $WAFURL > waf ) -
src/io/source_avcodec.c
r42f1cd01 r8177483 25 25 #include <libavcodec/avcodec.h> 26 26 #include <libavformat/avformat.h> 27 #if defined(HAVE_SWRESAMPLE) 28 #include <libswresample/swresample.h> 29 #elif defined(HAVE_AVRESAMPLE) 27 30 #include <libavresample/avresample.h> 31 #endif 28 32 #include <libavutil/opt.h> 29 33 #include <stdlib.h> … … 69 73 AVFrame *avFrame; 70 74 AVPacket avPacket; 75 #ifdef HAVE_AVRESAMPLE 71 76 AVAudioResampleContext *avr; 77 #elif defined(HAVE_SWRESAMPLE) 78 SwrContext *avr; 79 #endif 72 80 smpl_t *output; 73 81 uint_t read_samples; … … 277 285 uint_t output_channels = multi ? s->input_channels : 1; 278 286 int64_t output_layout = av_get_default_channel_layout(output_channels); 287 #ifdef HAVE_AVRESAMPLE 279 288 AVAudioResampleContext *avr = avresample_alloc_context(); 280 289 AVAudioResampleContext *oldavr = s->avr; 290 #elif defined(HAVE_SWRESAMPLE) 291 SwrContext *avr = swr_alloc(); 292 SwrContext *oldavr = s->avr; 293 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 281 294 282 295 av_opt_set_int(avr, "in_channel_layout", input_layout, 0); … … 293 306 //av_opt_set_int(avr, "out_sample_fmt", AV_SAMPLE_FMT_FLTP, 0); 294 307 int err; 308 #ifdef HAVE_AVRESAMPLE 295 309 if ( ( err = avresample_open(avr) ) < 0) { 310 #elif defined(HAVE_SWRESAMPLE) 311 if ( ( err = swr_init(avr) ) < 0) { 312 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 296 313 char errorstr[256]; 297 314 av_strerror (err, errorstr, sizeof(errorstr)); … … 303 320 s->avr = avr; 304 321 if (oldavr != NULL) { 322 #ifdef HAVE_AVRESAMPLE 305 323 avresample_close( oldavr ); 324 #elif defined(HAVE_SWRESAMPLE) 325 swr_close ( oldavr ); 326 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 306 327 av_free ( oldavr ); 307 328 oldavr = NULL; … … 317 338 AVPacket avPacket = s->avPacket; 318 339 av_init_packet (&avPacket); 340 #ifdef HAVE_AVRESAMPLE 319 341 AVAudioResampleContext *avr = s->avr; 342 #elif defined(HAVE_SWRESAMPLE) 343 SwrContext *avr = s->avr; 344 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 320 345 smpl_t *output = s->output; 321 346 *read_samples = 0; … … 370 395 } 371 396 397 #ifdef HAVE_AVRESAMPLE 372 398 int in_linesize = 0; 373 399 av_samples_get_buffer_size(&in_linesize, avCodecCtx->channels, … … 379 405 (uint8_t **)&output, out_linesize, max_out_samples, 380 406 (uint8_t **)avFrame->data, in_linesize, in_samples); 407 #elif defined(HAVE_SWRESAMPLE) 408 int in_samples = avFrame->nb_samples; 409 int max_out_samples = AUBIO_AVCODEC_MAX_BUFFER_SIZE / avCodecCtx->channels; 410 int out_samples = swr_convert( avr, 411 (uint8_t **)&output, max_out_samples, 412 (const uint8_t **)avFrame->data, in_samples); 413 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 381 414 if (out_samples <= 0) { 382 415 AUBIO_WRN("source_avcodec: no sample found while converting frame (%s)\n", s->path); … … 390 423 s->avCodecCtx = avCodecCtx; 391 424 s->avFrame = avFrame; 425 #if defined(HAVE_AVRESAMPLE) || defined(HAVE_SWRESAMPLE) 392 426 s->avr = avr; 427 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 393 428 s->output = output; 394 429 … … 499 534 s->read_index = 0; 500 535 s->read_samples = 0; 536 #ifdef HAVE_AVRESAMPLE 501 537 // reset the AVAudioResampleContext 502 538 avresample_close(s->avr); 503 539 avresample_open(s->avr); 540 #elif defined(HAVE_SWRESAMPLE) 541 swr_close(s->avr); 542 swr_init(s->avr); 543 #endif 504 544 return ret; 505 545 } … … 515 555 uint_t aubio_source_avcodec_close(aubio_source_avcodec_t * s) { 516 556 if (s->avr != NULL) { 557 #ifdef HAVE_AVRESAMPLE 517 558 avresample_close( s->avr ); 559 #elif defined(HAVE_SWRESAMPLE) 560 swr_close ( s->avr ); 561 #endif 518 562 av_free ( s->avr ); 519 563 } -
src/utils/windll.c
r42f1cd01 r8177483 42 42 #include "aubio.h" 43 43 44 BOOL APIENTRY DllMain( HMODULE hModule ,44 BOOL APIENTRY DllMain( HMODULE hModule UNUSED, 45 45 DWORD ul_reason_for_call, 46 LPVOID lpReserved )46 LPVOID lpReserved UNUSED) 47 47 { 48 48 switch (ul_reason_for_call) -
src/wscript_build
r42f1cd01 r8177483 8 8 uselib += ['AVCODEC'] 9 9 uselib += ['AVFORMAT'] 10 uselib += ['SWRESAMPLE'] 10 11 uselib += ['AVRESAMPLE'] 11 12 uselib += ['AVUTIL'] -
wscript
r42f1cd01 r8177483 325 325 args = '--cflags --libs', uselib_store = 'AVUTIL', 326 326 mandatory = ctx.options.enable_avcodec) 327 ctx.check_cfg(package = 'libavresample', atleast_version = '1.0.1', 328 args = '--cflags --libs', uselib_store = 'AVRESAMPLE', 329 mandatory = ctx.options.enable_avcodec) 330 if all ( 'HAVE_' + i in ctx.env 331 for i in ['AVCODEC', 'AVFORMAT', 'AVUTIL', 'AVRESAMPLE'] ): 327 ctx.check_cfg(package = 'libswresample', atleast_version = '2.3.0', 328 args = '--cflags --libs', uselib_store = 'SWRESAMPLE', 329 mandatory = False) 330 if 'HAVE_SWRESAMPLE' not in ctx.env: 331 ctx.check_cfg(package = 'libavresample', atleast_version = '1.0.1', 332 args = '--cflags --libs', uselib_store = 'AVRESAMPLE', 333 mandatory = False) 334 335 msg_check = 'Checking for all libav libraries' 336 if 'HAVE_AVCODEC' not in ctx.env: 337 ctx.msg(msg_check, 'not found (missing avcodec)', color = 'YELLOW') 338 elif 'HAVE_AVFORMAT' not in ctx.env: 339 ctx.msg(msg_check, 'not found (missing avformat)', color = 'YELLOW') 340 elif 'HAVE_AVUTIL' not in ctx.env: 341 ctx.msg(msg_check, 'not found (missing avutil)', color = 'YELLOW') 342 elif 'HAVE_SWRESAMPLE' not in ctx.env and 'HAVE_AVRESAMPLE' not in ctx.env: 343 resample_missing = 'not found (avresample or swresample required)' 344 ctx.msg(msg_check, resample_missing, color = 'YELLOW') 345 else: 346 ctx.msg(msg_check, 'yes') 347 if 'HAVE_SWRESAMPLE' in ctx.env: 348 ctx.define('HAVE_SWRESAMPLE', 1) 349 elif 'HAVE_AVRESAMPLE' in ctx.env: 350 ctx.define('HAVE_AVRESAMPLE', 1) 332 351 ctx.define('HAVE_LIBAV', 1) 333 ctx.msg('Checking for all libav libraries', 'yes')334 else:335 ctx.msg('Checking for all libav libraries', 'not found', color = 'YELLOW')336 352 337 353 if (ctx.options.enable_wavread != False):
Note: See TracChangeset
for help on using the changeset viewer.