Changeset b1ed6ce
- Timestamp:
- Jun 29, 2019, 2:45:48 PM (5 years ago)
- Branches:
- feature/cnn, feature/crepe, feature/crepe_org, fix/ffmpeg5, master
- Children:
- 63fc1df
- Parents:
- 982629c (diff), 2244f00 (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 deleted
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
.travis.yml
r982629c rb1ed6ce 39 39 os: osx 40 40 compiler: clang 41 env: WAFOPTS="--enable-fat --disable-avcodec --disable-sndfile "41 env: WAFOPTS="--enable-fat --disable-avcodec --disable-sndfile --disable-samplerate" 42 42 - language: C 43 43 os: osx 44 44 compiler: clang 45 env: WAFOPTS="--with-target-platform=ios --disable-avcodec --disable-sndfile " AUBIO_NOTESTS=145 env: WAFOPTS="--with-target-platform=ios --disable-avcodec --disable-sndfile --disable-samplerate" AUBIO_NOTESTS=1 46 46 - language: C 47 47 os: osx 48 48 compiler: clang 49 env: WAFOPTS="--with-target-platform=iosimulator --disable-avcodec --disable-sndfile " AUBIO_NOTESTS=149 env: WAFOPTS="--with-target-platform=iosimulator --disable-avcodec --disable-sndfile --disable-samplerate" AUBIO_NOTESTS=1 50 50 51 51 # use trusty … … 74 74 - libsndfile 75 75 - lcov 76 #update: true76 update: true 77 77 78 78 before_install: -
ChangeLog
r982629c rb1ed6ce 1 2018-12-19 Paul Brossier <piem@aubio.org> 2 3 [ Overview ] 4 5 * VERSION: bump to 0.4.9 6 * library: improve stability, fixing potential crashes and memory leaks on 7 invalid arguments; improve library messages and reporting of system errors 8 * tests/: major clean-up, check return codes, increase code coverage 9 * python/tests/: switch to pytest (closes gh-163), check emitted warnings 10 * python/: add pages to manual with brief descriptions of classes 11 12 [ Fixes ] 13 14 * security: improve arguments validation in new_aubio_filterbank (prevent 15 possible null-pointer dereference on invalid n_filters, CVE-2018-19801), 16 new_aubio-tempo (prevent possible buffer overflow, CVE-2018-19800), and 17 new_aubio_onset (prevent null-pointer dereference, CVE-2018-19802). Thanks 18 to Guoxiang Niu (@niugx), from the EaglEye Team for reporting these issues. 19 * tempo: fix delay_ms methods 20 * filterbank: fix aubio_filterbank_get_power (thanks to @romanbsd who 21 also noticed this issue) 22 * dct: creation fail on negative sizes or invalid accelerate radix, 23 fix typo in error and warning messages, prevent possible memory leak 24 * pitch: prevent null pointer dereference in yinfast, comment out unused 25 functions in mcomb and yin, prevent possible leak in specacf 26 * mfcc: always use dct module, strengthen input validation, change 27 get_{scale,power} to return smpl_t 28 * specdesc: improve error message 29 * notes: prevent null pointer dereference 30 * hist: add validation for size argument, prevent possible leak 31 * awhitening: use shortest length available (closes gh-216) 32 * io: add macros to display system errors, add helpers to validate input 33 arguments of source and sink methods, always clean-up after failure 34 * source: validate input sizes to prevent invalid reads 35 * apple_audio: use native format conversions in source and sink, prevent 36 possible apple_audio crash on empty string, get_duration returns 0 on failure 37 * ffmpeg/avcodec: prevent deprecation warnings, read after close, and skipped 38 samples warnings, improve warning messages, only show a warning when 39 swr_convert failed, prevent possible memory leak when closing swr context 40 * wavwrite: copy to all channels if needed, check fseek and fwrite return 41 values, call fflush in open to return failure on full disk-system 42 * source_sndfile: fix reading sizes when resampling, set error message when 43 reading after close 44 * aubio_priv.h: include blas first (see gh-225), add STRERROR macros 45 46 [ Python ] 47 48 * documentation: add pages to manual, add minimal docstrings for fft, 49 digital_filter, and generated objects, improve specdesc documentation 50 * filterbank: add get_norm/power documentation 51 * source: take a copy of the last frame before resizing it, raise an 52 exception when read failed, fix compilation warning 53 * fixes: remove unneeded check convert with PyFloat_FromDouble or 54 PyFloat_FromDouble, check if sink, digital_filter, were created before 55 deleting 56 57 [ Tests ] 58 59 * python/tests/: switch to pytest (slightly slower than nose2 but better at 60 capturing warnings and parametrization), improve coding style and coverage. 61 Tests should now be run with `pytest`. 62 * tests/: Each test program in C must now return 0, otherwise the test will 63 fail. Examples have been modified to run themselves on a test audio file, 64 but can still be run with arguments. Tests for `source` and `sink` have been 65 factorised, and some code cleaning. A python script is used to create a 66 test sound file. Tested on linux, macos, and windows, improvements to 67 test-mfcc (closes gh-219). 68 69 [ Build system ] 70 71 * waf: upgrade to 2.0.14, check the return code of each test program, 72 update rules to build manual and api documentation into build/, check 73 for errno.h 74 * osx: use -Os in scripts/build_apple_frameworks 75 * Makefile: improve coverage reports 76 * appveyor, travis, circleci: switch to pytest, set one travis config to use 77 sndfile only 78 * travis: add py3.6, drop py3.4, use py3.5 to test debug mode 79 * azure: add basic configuration 80 1 81 2018-11-21 Paul Brossier <piem@aubio.org> 2 82 -
README.md
r982629c rb1ed6ce 4 4 [![Travis build status](https://travis-ci.org/aubio/aubio.svg?branch=master)](https://travis-ci.org/aubio/aubio "Travis build status") 5 5 [![Appveyor build status](https://img.shields.io/appveyor/ci/piem/aubio/master.svg)](https://ci.appveyor.com/project/piem/aubio "Appveyor build status") 6 [![Landscape code health](https://landscape.io/github/aubio/aubio/master/landscape.svg?style=flat)](https://landscape.io/github/aubio/aubio/master "Landscape code health")7 6 [![Commits since last release](https://img.shields.io/github/commits-since/aubio/aubio/latest.svg)](https://github.com/aubio/aubio "Commits since last release") 8 7 -
VERSION
r982629c rb1ed6ce 1 1 AUBIO_MAJOR_VERSION=0 2 AUBIO_MINOR_VERSION= 43 AUBIO_PATCH_VERSION= 92 AUBIO_MINOR_VERSION=5 3 AUBIO_PATCH_VERSION=0 4 4 AUBIO_VERSION_STATUS='~alpha' 5 5 LIBAUBIO_LT_CUR=5 -
azure-pipelines.yml
r982629c rb1ed6ce 4 4 - job: linux 5 5 pool: 6 vmImage: ' Ubuntu16.04'6 vmImage: 'ubuntu-16.04' 7 7 steps: 8 8 - script: | … … 14 14 - job: windows 15 15 pool: 16 vmI Mage: 'VS2017-Win2016'16 vmImage: 'vs2017-win2016' 17 17 steps: 18 18 - script: | … … 25 25 - job: macos 26 26 pool: 27 vmI Mage: macOS-10.1327 vmImage: 'macos-10.13' 28 28 steps: 29 29 - script: | -
doc/binaries.rst
r982629c rb1ed6ce 9 9 `windows <https://aubio.org/download#win>`_ 10 10 11 For Windows, aubio is also available from `vcpkg 12 <https://vcpkg.readthedocs.io/en/latest/examples/installing-and-using-packages/>`_. 13 11 14 To use aubio in a macOS or iOS application, see :ref:`xcode-frameworks-label`. 12 15 -
doc/statuslinks.rst
r982629c rb1ed6ce 10 10 :alt: Appveyor build status 11 11 12 .. image:: https://landscape.io/github/aubio/aubio/master/landscape.svg?style=flat13 :target: https://landscape.io/github/aubio/aubio/master14 :alt: Landscape code health15 16 12 .. image:: https://readthedocs.org/projects/aubio/badge/?version=latest 17 13 :target: https://aubio.readthedocs.io/en/latest/?badge=latest -
python/demos/demo_wav2midi.py
r982629c rb1ed6ce 64 64 if new_note[2] > 0: 65 65 track.append(Message('note_off', note=int(new_note[2]), 66 velocity=127, time= 0)66 velocity=127, time=delta) 67 67 ) 68 68 track.append(Message('note_on', -
python/ext/aubio-docstrings.h
r982629c rb1ed6ce 2 2 "dct(size=1024)\n"\ 3 3 "\n"\ 4 "Compute Discrete Fourier Trans orms of Type-II.\n"\4 "Compute Discrete Fourier Transforms of Type-II.\n"\ 5 5 "\n"\ 6 6 "Parameters\n"\ -
python/ext/py-fft.c
r982629c rb1ed6ce 4 4 "fft(size=1024)\n" 5 5 "\n" 6 "Compute Fast Fourier Trans orms.\n"6 "Compute Fast Fourier Transforms.\n" 7 7 "\n" 8 8 "Parameters\n" -
python/ext/py-filter.c
r982629c rb1ed6ce 157 157 err = aubio_filter_set_c_weighting (self->o, samplerate); 158 158 if (err > 0) { 159 PyErr_SetString (PyExc_ValueError, 160 "error when setting filter to C-weighting"); 159 if (PyErr_Occurred() == NULL) { 160 PyErr_SetString (PyExc_ValueError, 161 "error when setting filter to C-weighting"); 162 } else { 163 // change the RuntimeError into ValueError 164 PyObject *type, *value, *traceback; 165 PyErr_Fetch(&type, &value, &traceback); 166 Py_XDECREF(type); 167 type = PyExc_ValueError; 168 Py_XINCREF(type); 169 PyErr_Restore(type, value, traceback); 170 } 161 171 return NULL; 162 172 } … … 175 185 err = aubio_filter_set_a_weighting (self->o, samplerate); 176 186 if (err > 0) { 177 PyErr_SetString (PyExc_ValueError, 178 "error when setting filter to A-weighting"); 187 if (PyErr_Occurred() == NULL) { 188 PyErr_SetString (PyExc_ValueError, 189 "error when setting filter to A-weighting"); 190 } else { 191 // change the RuntimeError into ValueError 192 PyObject *type, *value, *traceback; 193 PyErr_Fetch(&type, &value, &traceback); 194 Py_XDECREF(type); 195 type = PyExc_ValueError; 196 Py_XINCREF(type); 197 PyErr_Restore(type, value, traceback); 198 } 179 199 return NULL; 180 200 } … … 193 213 err = aubio_filter_set_biquad (self->o, b0, b1, b2, a1, a2); 194 214 if (err > 0) { 195 PyErr_SetString (PyExc_ValueError, 196 "error when setting filter with biquad coefficients"); 215 if (PyErr_Occurred() == NULL) { 216 PyErr_SetString (PyExc_ValueError, 217 "error when setting filter with biquad coefficients"); 218 } else { 219 // change the RuntimeError into ValueError 220 PyObject *type, *value, *traceback; 221 PyErr_Fetch(&type, &value, &traceback); 222 Py_XDECREF(type); 223 type = PyExc_ValueError; 224 Py_XINCREF(type); 225 PyErr_Restore(type, value, traceback); 226 } 197 227 return NULL; 198 228 } -
python/ext/py-filterbank.c
r982629c rb1ed6ce 327 327 PyObject *type, *value, *traceback; 328 328 PyErr_Fetch(&type, &value, &traceback); 329 PyErr_Restore(PyExc_ValueError, value, traceback); 329 Py_XDECREF(type); 330 type = PyExc_ValueError; 331 Py_XINCREF(type); 332 PyErr_Restore(type, value, traceback); 330 333 } 331 334 return NULL; … … 352 355 PyObject *type, *value, *traceback; 353 356 PyErr_Fetch(&type, &value, &traceback); 354 PyErr_Restore(PyExc_ValueError, value, traceback); 357 Py_XDECREF(type); 358 type = PyExc_ValueError; 359 Py_XINCREF(type); 360 PyErr_Restore(type, value, traceback); 355 361 } 356 362 return NULL; … … 381 387 PyObject *type, *value, *traceback; 382 388 PyErr_Fetch(&type, &value, &traceback); 383 PyErr_Restore(PyExc_ValueError, value, traceback); 389 Py_XDECREF(type); 390 type = PyExc_ValueError; 391 Py_XINCREF(type); 392 PyErr_Restore(type, value, traceback); 384 393 } 385 394 return NULL; … … 410 419 PyObject *type, *value, *traceback; 411 420 PyErr_Fetch(&type, &value, &traceback); 412 PyErr_Restore(PyExc_ValueError, value, traceback); 421 Py_XDECREF(type); 422 type = PyExc_ValueError; 423 Py_XINCREF(type); 424 PyErr_Restore(type, value, traceback); 413 425 } 414 426 return NULL; … … 464 476 PyObject *type, *value, *traceback; 465 477 PyErr_Fetch(&type, &value, &traceback); 466 PyErr_Restore(PyExc_ValueError, value, traceback); 478 Py_XDECREF(type); 479 type = PyExc_ValueError; 480 Py_XINCREF(type); 481 PyErr_Restore(type, value, traceback); 467 482 } 468 483 return NULL; … … 494 509 PyObject *type, *value, *traceback; 495 510 PyErr_Fetch(&type, &value, &traceback); 496 PyErr_Restore(PyExc_ValueError, value, traceback); 511 Py_XDECREF(type); 512 type = PyExc_ValueError; 513 Py_XINCREF(type); 514 PyErr_Restore(type, value, traceback); 497 515 } 498 516 return NULL; -
python/ext/py-sink.c
r982629c rb1ed6ce 82 82 "\n" 83 83 "By default, the sink will be closed before being deleted.\n" 84 "Explicit ely closing a sink can be useful to control the number\n"84 "Explicitly closing a sink can be useful to control the number\n" 85 85 "of files simultaneously opened.\n" 86 86 ""; -
python/lib/gen_code.py
r982629c rb1ed6ce 510 510 PyObject *type, *value, *traceback; 511 511 PyErr_Fetch(&type, &value, &traceback); 512 PyErr_Restore(PyExc_ValueError, value, traceback); 512 Py_XDECREF(type); 513 type = PyExc_ValueError; 514 Py_XINCREF(type); 515 PyErr_Restore(type, value, traceback); 513 516 }} 514 517 return NULL; -
python/lib/gen_external.py
r982629c rb1ed6ce 121 121 proc = subprocess.Popen(cpp_cmd, 122 122 stderr=subprocess.PIPE, 123 stdout=subprocess.PIPE) 123 stdout=subprocess.PIPE, 124 universal_newlines=True) 124 125 assert proc, 'Proc was none' 125 126 cpp_output = proc.stdout.read() … … 127 128 if err_output: 128 129 print("Warning: preprocessor produced errors or warnings:\n%s" \ 129 % err_output .decode('utf8'))130 % err_output) 130 131 if not cpp_output: 131 132 raise_msg = "preprocessor output is empty! Running command " \ 132 133 + "\"%s\" failed" % " ".join(cpp_cmd) 133 134 if err_output: 134 raise_msg += " with stderr: \"%s\"" % err_output .decode('utf8')135 raise_msg += " with stderr: \"%s\"" % err_output 135 136 else: 136 137 raise_msg += " with no stdout or stderr" 137 138 raise Exception(raise_msg) 138 139 if not isinstance(cpp_output, list): 139 cpp_output = [l.strip() for l in cpp_output. decode('utf8').split('\n')]140 cpp_output = [l.strip() for l in cpp_output.split('\n')] 140 141 141 142 return cpp_output -
python/tests/test_hztomel.py
r982629c rb1ed6ce 5 5 from numpy.testing import assert_equal, assert_almost_equal 6 6 from _tools import assert_warns 7 from utils import is32bit 7 8 import numpy as np 8 9 import aubio … … 10 11 from aubio import hztomel, meltohz 11 12 from aubio import hztomel_htk, meltohz_htk 12 13 13 14 14 class aubio_hztomel_test_case(TestCase): … … 18 18 assert_almost_equal(hztomel(400. / 3.), 2., decimal=5) 19 19 assert_almost_equal(hztomel(1000. / 3), 5.) 20 assert_equal(hztomel(200.), 3.) 20 # on 32bit, some of these tests fails unless compiling with -ffloat-store 21 try: 22 assert_equal(hztomel(200.), 3.) 23 except AssertionError: 24 if not is32bit(): raise 25 assert_almost_equal(hztomel(200.), 3., decimal=5) 21 26 assert_almost_equal(hztomel(1000.), 15) 22 assert_almost_equal(hztomel(6400), 42 )23 assert_almost_equal(hztomel(40960), 69 )27 assert_almost_equal(hztomel(6400), 42, decimal=5) 28 assert_almost_equal(hztomel(40960), 69, decimal=5) 24 29 25 30 for m in np.linspace(0, 1000, 100): … … 29 34 assert_equal(meltohz(0.), 0.) 30 35 assert_almost_equal(meltohz(2), 400. / 3., decimal=4) 31 assert_equal(meltohz(3.), 200.) 36 try: 37 assert_equal(meltohz(3.), 200.) 38 except AssertionError: 39 if not is32bit(): raise 40 assert_almost_equal(meltohz(3.), 200., decimal=5) 32 41 assert_almost_equal(meltohz(5), 1000. / 3., decimal=4) 33 42 assert_almost_equal(meltohz(15), 1000., decimal=4) -
python/tests/test_phasevoc.py
r982629c rb1ed6ce 2 2 3 3 from numpy.testing import TestCase, assert_equal, assert_array_less 4 from _tools import parametrize 4 from _tools import parametrize, skipTest 5 5 from aubio import fvec, cvec, pvoc, float_type 6 6 import numpy as np … … 52 52 assert_equal (s.phas[s.phas < 0], -np.pi) 53 53 assert_equal (np.abs(s.phas[np.abs(s.phas) != np.pi]), 0) 54 s elf.skipTest('pvoc(fvec(%d)).phas != +0, ' % win_s \54 skipTest('pvoc(fvec(%d)).phas != +0, ' % win_s \ 55 55 + 'This is expected when using fftw3 on powerpc.') 56 56 assert_equal ( r, 0.) -
python/tests/utils.py
r982629c rb1ed6ce 4 4 import re 5 5 import glob 6 import struct 6 7 import numpy as np 7 8 from tempfile import mkstemp 8 9 9 10 DEFAULT_SOUND = '22050Hz_5s_brownnoise.wav' 11 12 def is32bit(): 13 return struct.calcsize("P") * 8 == 32 10 14 11 15 def array_from_text_file(filename, dtype = 'float'): -
scripts/get_waf.sh
r982629c rb1ed6ce 4 4 #set -x 5 5 6 WAFVERSION=2.0.1 36 WAFVERSION=2.0.17 7 7 WAFTARBALL=waf-$WAFVERSION.tar.bz2 8 8 WAFURL=https://waf.io/$WAFTARBALL -
tests/src/spectral/test-mfcc.c
r982629c rb1ed6ce 34 34 aubio_mfcc_t *mfcc = 0; 35 35 36 fvec_t *in = new_fvec ( win_s); // input buffer37 cvec_t *fftgrain = new_cvec (win_s); // input buffer38 fvec_t *out = new_fvec (n_coeffs); // output coefficients36 fvec_t *in = new_fvec (hop_s); // phase vocoder input 37 cvec_t *fftgrain = new_cvec (win_s); // pvoc output / mfcc input 38 fvec_t *out = new_fvec (n_coeffs); // mfcc output 39 39 40 40 if (!in || !fftgrain || !out) { err = 1; goto failure; } -
wscript
r982629c rb1ed6ce 631 631 ctx.excl += ' **/.cache' 632 632 ctx.excl += ' **/**.zip **/**.tar.bz2' 633 ctx.excl += ' **.tar.bz2 '633 ctx.excl += ' **.tar.bz2**' 634 634 ctx.excl += ' **/doc/full/* **/doc/web/*' 635 635 ctx.excl += ' **/doc/full.cfg' … … 643 643 ctx.excl += ' **/.DS_Store' 644 644 ctx.excl += ' **/.travis.yml' 645 ctx.excl += ' **/.landscape.yml'646 645 ctx.excl += ' **/.appveyor.yml' 647 646 ctx.excl += ' **/.circleci/*'
Note: See TracChangeset
for help on using the changeset viewer.