Changeset bad88364
- Timestamp:
- Mar 17, 2017, 10:59:51 AM (7 years ago)
- Branches:
- sampler
- Children:
- f8bdcb2
- Parents:
- bff692e (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
rbff692e rbad88364 11 11 12 12 WAFCMD=python waf 13 WAFURL=https://waf.io/waf-1.9.614 13 15 14 #WAFOPTS:= -
python/lib/moresetuptools.py
rbff692e rbad88364 114 114 print("Info: looking for *optional* additional packages") 115 115 packages = ['libavcodec', 'libavformat', 'libavutil', 'libavresample', 116 'jack',117 116 'sndfile', 118 'samplerate',119 117 'rubberband', 120 118 #'fftw3f', … … 128 126 if 'avcodec' in ext.libraries \ 129 127 and 'avformat' in ext.libraries \ 130 and 'avutil' in ext.libraries \ 131 and 'avresample' in ext.libraries: 132 ext.define_macros += [('HAVE_LIBAV', 1)] 133 if 'jack' in ext.libraries: 134 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)] 135 135 if 'sndfile' in ext.libraries: 136 136 ext.define_macros += [('HAVE_SNDFILE', 1)] -
scripts/build_mingw
rbff692e rbad88364 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
rbff692e rbad88364 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
rbff692e rbad88364 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> … … 77 81 AVFrame *avFrame; 78 82 AVPacket avPacket; 83 #ifdef HAVE_AVRESAMPLE 79 84 AVAudioResampleContext *avr; 85 #elif defined(HAVE_SWRESAMPLE) 86 SwrContext *avr; 87 #endif 80 88 smpl_t *output; 81 89 uint_t read_samples; … … 309 317 uint_t output_channels = multi ? s->input_channels : 1; 310 318 int64_t output_layout = av_get_default_channel_layout(output_channels); 319 #ifdef HAVE_AVRESAMPLE 311 320 AVAudioResampleContext *avr = avresample_alloc_context(); 312 321 AVAudioResampleContext *oldavr = s->avr; 322 #elif defined(HAVE_SWRESAMPLE) 323 SwrContext *avr = swr_alloc(); 324 SwrContext *oldavr = s->avr; 325 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 313 326 314 327 av_opt_set_int(avr, "in_channel_layout", input_layout, 0); … … 325 338 //av_opt_set_int(avr, "out_sample_fmt", AV_SAMPLE_FMT_FLTP, 0); 326 339 int err; 340 #ifdef HAVE_AVRESAMPLE 327 341 if ( ( err = avresample_open(avr) ) < 0) { 342 #elif defined(HAVE_SWRESAMPLE) 343 if ( ( err = swr_init(avr) ) < 0) { 344 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 328 345 char errorstr[256]; 329 346 av_strerror (err, errorstr, sizeof(errorstr)); … … 335 352 s->avr = avr; 336 353 if (oldavr != NULL) { 354 #ifdef HAVE_AVRESAMPLE 337 355 avresample_close( oldavr ); 356 #elif defined(HAVE_SWRESAMPLE) 357 swr_close ( oldavr ); 358 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 338 359 av_free ( oldavr ); 339 360 oldavr = NULL; … … 349 370 AVPacket avPacket = s->avPacket; 350 371 av_init_packet (&avPacket); 372 #ifdef HAVE_AVRESAMPLE 351 373 AVAudioResampleContext *avr = s->avr; 374 #elif defined(HAVE_SWRESAMPLE) 375 SwrContext *avr = s->avr; 376 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 352 377 smpl_t *output = s->output; 353 378 *read_samples = 0; … … 402 427 } 403 428 429 #ifdef HAVE_AVRESAMPLE 404 430 int in_linesize = 0; 405 431 av_samples_get_buffer_size(&in_linesize, avCodecCtx->channels, … … 411 437 (uint8_t **)&output, out_linesize, max_out_samples, 412 438 (uint8_t **)avFrame->data, in_linesize, in_samples); 439 #elif defined(HAVE_SWRESAMPLE) 440 int in_samples = avFrame->nb_samples; 441 int max_out_samples = AUBIO_AVCODEC_MAX_BUFFER_SIZE / avCodecCtx->channels; 442 int out_samples = swr_convert( avr, 443 (uint8_t **)&output, max_out_samples, 444 (const uint8_t **)avFrame->data, in_samples); 445 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 413 446 if (out_samples <= 0) { 414 447 AUBIO_WRN("source_avcodec: no sample found while converting frame (%s)\n", s->path); … … 422 455 s->avCodecCtx = avCodecCtx; 423 456 s->avFrame = avFrame; 457 #if defined(HAVE_AVRESAMPLE) || defined(HAVE_SWRESAMPLE) 424 458 s->avr = avr; 459 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */ 425 460 s->output = output; 426 461 … … 531 566 s->read_index = 0; 532 567 s->read_samples = 0; 568 #ifdef HAVE_AVRESAMPLE 533 569 // reset the AVAudioResampleContext 534 570 avresample_close(s->avr); 535 571 avresample_open(s->avr); 572 #elif defined(HAVE_SWRESAMPLE) 573 swr_close(s->avr); 574 swr_init(s->avr); 575 #endif 536 576 return ret; 537 577 } … … 547 587 uint_t aubio_source_avcodec_close(aubio_source_avcodec_t * s) { 548 588 if (s->avr != NULL) { 589 #ifdef HAVE_AVRESAMPLE 549 590 avresample_close( s->avr ); 591 #elif defined(HAVE_SWRESAMPLE) 592 swr_close ( s->avr ); 593 #endif 550 594 av_free ( s->avr ); 551 595 } -
src/utils/windll.c
rbff692e rbad88364 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
rbff692e rbad88364 9 9 uselib += ['AVCODEC'] 10 10 uselib += ['AVFORMAT'] 11 uselib += ['SWRESAMPLE'] 11 12 uselib += ['AVRESAMPLE'] 12 13 uselib += ['AVUTIL'] -
wscript
rbff692e rbad88364 339 339 args = '--cflags --libs', uselib_store = 'AVUTIL', 340 340 mandatory = ctx.options.enable_avcodec) 341 ctx.check_cfg(package = 'libavresample', atleast_version = '1.0.1', 342 args = '--cflags --libs', uselib_store = 'AVRESAMPLE', 343 mandatory = ctx.options.enable_avcodec) 344 if all ( 'HAVE_' + i in ctx.env 345 for i in ['AVCODEC', 'AVFORMAT', 'AVUTIL', 'AVRESAMPLE'] ): 341 ctx.check_cfg(package = 'libswresample', atleast_version = '2.3.0', 342 args = '--cflags --libs', uselib_store = 'SWRESAMPLE', 343 mandatory = False) 344 if 'HAVE_SWRESAMPLE' not in ctx.env: 345 ctx.check_cfg(package = 'libavresample', atleast_version = '1.0.1', 346 args = '--cflags --libs', uselib_store = 'AVRESAMPLE', 347 mandatory = False) 348 349 msg_check = 'Checking for all libav libraries' 350 if 'HAVE_AVCODEC' not in ctx.env: 351 ctx.msg(msg_check, 'not found (missing avcodec)', color = 'YELLOW') 352 elif 'HAVE_AVFORMAT' not in ctx.env: 353 ctx.msg(msg_check, 'not found (missing avformat)', color = 'YELLOW') 354 elif 'HAVE_AVUTIL' not in ctx.env: 355 ctx.msg(msg_check, 'not found (missing avutil)', color = 'YELLOW') 356 elif 'HAVE_SWRESAMPLE' not in ctx.env and 'HAVE_AVRESAMPLE' not in ctx.env: 357 resample_missing = 'not found (avresample or swresample required)' 358 ctx.msg(msg_check, resample_missing, color = 'YELLOW') 359 else: 360 ctx.msg(msg_check, 'yes') 361 if 'HAVE_SWRESAMPLE' in ctx.env: 362 ctx.define('HAVE_SWRESAMPLE', 1) 363 elif 'HAVE_AVRESAMPLE' in ctx.env: 364 ctx.define('HAVE_AVRESAMPLE', 1) 346 365 ctx.define('HAVE_LIBAV', 1) 347 ctx.msg('Checking for all libav libraries', 'yes')348 else:349 ctx.msg('Checking for all libav libraries', 'not found', color = 'YELLOW')350 366 351 367 if (ctx.options.enable_wavread != False):
Note: See TracChangeset
for help on using the changeset viewer.