Changes in / [2f16966:3d73183]
- Files:
-
- 1 added
- 21 edited
Legend:
- Unmodified
- Added
- Removed
-
.travis.yml
r2f16966 r3d73183 39 39 os: osx 40 40 compiler: clang 41 env: WAFOPTS="--enable-fat --disable-avcodec --disable-sndfile --disable-samplerate"41 env: WAFOPTS="--enable-fat --disable-avcodec --disable-sndfile" 42 42 - language: C 43 43 os: osx 44 44 compiler: clang 45 env: WAFOPTS="--with-target-platform=ios --disable-avcodec --disable-sndfile --disable-samplerate" AUBIO_NOTESTS=145 env: WAFOPTS="--with-target-platform=ios --disable-avcodec --disable-sndfile" 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 --disable-samplerate" AUBIO_NOTESTS=149 env: WAFOPTS="--with-target-platform=iosimulator --disable-avcodec --disable-sndfile" 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
r2f16966 r3d73183 1 2018-12-19 Paul Brossier <piem@aubio.org>2 3 [ Overview ]4 5 * VERSION: bump to 0.4.96 * library: improve stability, fixing potential crashes and memory leaks on7 invalid arguments; improve library messages and reporting of system errors8 * tests/: major clean-up, check return codes, increase code coverage9 * python/tests/: switch to pytest (closes gh-163), check emitted warnings10 * python/: add pages to manual with brief descriptions of classes11 12 [ Fixes ]13 14 * security: improve arguments validation in new_aubio_filterbank (prevent15 possible null-pointer dereference on invalid n_filters, CVE-2018-19801),16 new_aubio-tempo (prevent possible buffer overflow, CVE-2018-19800), and17 new_aubio_onset (prevent null-pointer dereference, CVE-2018-19802). Thanks18 to Guoxiang Niu (@niugx), from the EaglEye Team for reporting these issues.19 * tempo: fix delay_ms methods20 * filterbank: fix aubio_filterbank_get_power (thanks to @romanbsd who21 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 leak24 * pitch: prevent null pointer dereference in yinfast, comment out unused25 functions in mcomb and yin, prevent possible leak in specacf26 * mfcc: always use dct module, strengthen input validation, change27 get_{scale,power} to return smpl_t28 * specdesc: improve error message29 * notes: prevent null pointer dereference30 * hist: add validation for size argument, prevent possible leak31 * awhitening: use shortest length available (closes gh-216)32 * io: add macros to display system errors, add helpers to validate input33 arguments of source and sink methods, always clean-up after failure34 * source: validate input sizes to prevent invalid reads35 * apple_audio: use native format conversions in source and sink, prevent36 possible apple_audio crash on empty string, get_duration returns 0 on failure37 * ffmpeg/avcodec: prevent deprecation warnings, read after close, and skipped38 samples warnings, improve warning messages, only show a warning when39 swr_convert failed, prevent possible memory leak when closing swr context40 * wavwrite: copy to all channels if needed, check fseek and fwrite return41 values, call fflush in open to return failure on full disk-system42 * source_sndfile: fix reading sizes when resampling, set error message when43 reading after close44 * aubio_priv.h: include blas first (see gh-225), add STRERROR macros45 46 [ Python ]47 48 * documentation: add pages to manual, add minimal docstrings for fft,49 digital_filter, and generated objects, improve specdesc documentation50 * filterbank: add get_norm/power documentation51 * source: take a copy of the last frame before resizing it, raise an52 exception when read failed, fix compilation warning53 * fixes: remove unneeded check convert with PyFloat_FromDouble or54 PyFloat_FromDouble, check if sink, digital_filter, were created before55 deleting56 57 [ Tests ]58 59 * python/tests/: switch to pytest (slightly slower than nose2 but better at60 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 will63 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 been65 factorised, and some code cleaning. A python script is used to create a66 test sound file. Tested on linux, macos, and windows, improvements to67 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/, check73 for errno.h74 * osx: use -Os in scripts/build_apple_frameworks75 * Makefile: improve coverage reports76 * appveyor, travis, circleci: switch to pytest, set one travis config to use77 sndfile only78 * travis: add py3.6, drop py3.4, use py3.5 to test debug mode79 * azure: add basic configuration80 81 1 2018-11-21 Paul Brossier <piem@aubio.org> 82 2 -
README.md
r2f16966 r3d73183 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") 6 7 [![Commits since last release](https://img.shields.io/github/commits-since/aubio/aubio/latest.svg)](https://github.com/aubio/aubio "Commits since last release") 7 8 -
VERSION
r2f16966 r3d73183 1 1 AUBIO_MAJOR_VERSION=0 2 AUBIO_MINOR_VERSION= 53 AUBIO_PATCH_VERSION= 02 AUBIO_MINOR_VERSION=4 3 AUBIO_PATCH_VERSION=9 4 4 AUBIO_VERSION_STATUS='~alpha' 5 5 LIBAUBIO_LT_CUR=5 -
azure-pipelines.yml
r2f16966 r3d73183 4 4 - job: linux 5 5 pool: 6 vmImage: ' ubuntu-16.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.13'27 vmIMage: macOS-10.13 28 28 steps: 29 29 - script: | -
doc/binaries.rst
r2f16966 r3d73183 9 9 `windows <https://aubio.org/download#win>`_ 10 10 11 For Windows, aubio is also available from `vcpkg12 <https://vcpkg.readthedocs.io/en/latest/examples/installing-and-using-packages/>`_.13 14 11 To use aubio in a macOS or iOS application, see :ref:`xcode-frameworks-label`. 15 12 -
doc/statuslinks.rst
r2f16966 r3d73183 10 10 :alt: Appveyor build status 11 11 12 .. image:: https://landscape.io/github/aubio/aubio/master/landscape.svg?style=flat 13 :target: https://landscape.io/github/aubio/aubio/master 14 :alt: Landscape code health 15 12 16 .. image:: https://readthedocs.org/projects/aubio/badge/?version=latest 13 17 :target: https://aubio.readthedocs.io/en/latest/?badge=latest -
python/demos/demo_wav2midi.py
r2f16966 r3d73183 64 64 if new_note[2] > 0: 65 65 track.append(Message('note_off', note=int(new_note[2]), 66 velocity=127, time= delta)66 velocity=127, time=0) 67 67 ) 68 68 track.append(Message('note_on', -
python/ext/aubio-docstrings.h
r2f16966 r3d73183 2 2 "dct(size=1024)\n"\ 3 3 "\n"\ 4 "Compute Discrete Fourier Trans forms of Type-II.\n"\4 "Compute Discrete Fourier Transorms of Type-II.\n"\ 5 5 "\n"\ 6 6 "Parameters\n"\ -
python/ext/py-fft.c
r2f16966 r3d73183 4 4 "fft(size=1024)\n" 5 5 "\n" 6 "Compute Fast Fourier Trans forms.\n"6 "Compute Fast Fourier Transorms.\n" 7 7 "\n" 8 8 "Parameters\n" -
python/ext/py-filter.c
r2f16966 r3d73183 157 157 err = aubio_filter_set_c_weighting (self->o, samplerate); 158 158 if (err > 0) { 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 } 159 PyErr_SetString (PyExc_ValueError, 160 "error when setting filter to C-weighting"); 171 161 return NULL; 172 162 } … … 185 175 err = aubio_filter_set_a_weighting (self->o, samplerate); 186 176 if (err > 0) { 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 } 177 PyErr_SetString (PyExc_ValueError, 178 "error when setting filter to A-weighting"); 199 179 return NULL; 200 180 } … … 213 193 err = aubio_filter_set_biquad (self->o, b0, b1, b2, a1, a2); 214 194 if (err > 0) { 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 } 195 PyErr_SetString (PyExc_ValueError, 196 "error when setting filter with biquad coefficients"); 227 197 return NULL; 228 198 } -
python/ext/py-filterbank.c
r2f16966 r3d73183 327 327 PyObject *type, *value, *traceback; 328 328 PyErr_Fetch(&type, &value, &traceback); 329 Py_XDECREF(type); 330 type = PyExc_ValueError; 331 Py_XINCREF(type); 332 PyErr_Restore(type, value, traceback); 329 PyErr_Restore(PyExc_ValueError, value, traceback); 333 330 } 334 331 return NULL; … … 355 352 PyObject *type, *value, *traceback; 356 353 PyErr_Fetch(&type, &value, &traceback); 357 Py_XDECREF(type); 358 type = PyExc_ValueError; 359 Py_XINCREF(type); 360 PyErr_Restore(type, value, traceback); 354 PyErr_Restore(PyExc_ValueError, value, traceback); 361 355 } 362 356 return NULL; … … 387 381 PyObject *type, *value, *traceback; 388 382 PyErr_Fetch(&type, &value, &traceback); 389 Py_XDECREF(type); 390 type = PyExc_ValueError; 391 Py_XINCREF(type); 392 PyErr_Restore(type, value, traceback); 383 PyErr_Restore(PyExc_ValueError, value, traceback); 393 384 } 394 385 return NULL; … … 419 410 PyObject *type, *value, *traceback; 420 411 PyErr_Fetch(&type, &value, &traceback); 421 Py_XDECREF(type); 422 type = PyExc_ValueError; 423 Py_XINCREF(type); 424 PyErr_Restore(type, value, traceback); 412 PyErr_Restore(PyExc_ValueError, value, traceback); 425 413 } 426 414 return NULL; … … 476 464 PyObject *type, *value, *traceback; 477 465 PyErr_Fetch(&type, &value, &traceback); 478 Py_XDECREF(type); 479 type = PyExc_ValueError; 480 Py_XINCREF(type); 481 PyErr_Restore(type, value, traceback); 466 PyErr_Restore(PyExc_ValueError, value, traceback); 482 467 } 483 468 return NULL; … … 509 494 PyObject *type, *value, *traceback; 510 495 PyErr_Fetch(&type, &value, &traceback); 511 Py_XDECREF(type); 512 type = PyExc_ValueError; 513 Py_XINCREF(type); 514 PyErr_Restore(type, value, traceback); 496 PyErr_Restore(PyExc_ValueError, value, traceback); 515 497 } 516 498 return NULL; -
python/ext/py-sink.c
r2f16966 r3d73183 82 82 "\n" 83 83 "By default, the sink will be closed before being deleted.\n" 84 "Explicit ly closing a sink can be useful to control the number\n"84 "Explicitely 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
r2f16966 r3d73183 510 510 PyObject *type, *value, *traceback; 511 511 PyErr_Fetch(&type, &value, &traceback); 512 Py_XDECREF(type); 513 type = PyExc_ValueError; 514 Py_XINCREF(type); 515 PyErr_Restore(type, value, traceback); 512 PyErr_Restore(PyExc_ValueError, value, traceback); 516 513 }} 517 514 return NULL; -
python/lib/gen_external.py
r2f16966 r3d73183 121 121 proc = subprocess.Popen(cpp_cmd, 122 122 stderr=subprocess.PIPE, 123 stdout=subprocess.PIPE, 124 universal_newlines=True) 123 stdout=subprocess.PIPE) 125 124 assert proc, 'Proc was none' 126 125 cpp_output = proc.stdout.read() … … 128 127 if err_output: 129 128 print("Warning: preprocessor produced errors or warnings:\n%s" \ 130 % err_output )129 % err_output.decode('utf8')) 131 130 if not cpp_output: 132 131 raise_msg = "preprocessor output is empty! Running command " \ 133 132 + "\"%s\" failed" % " ".join(cpp_cmd) 134 133 if err_output: 135 raise_msg += " with stderr: \"%s\"" % err_output 134 raise_msg += " with stderr: \"%s\"" % err_output.decode('utf8') 136 135 else: 137 136 raise_msg += " with no stdout or stderr" 138 137 raise Exception(raise_msg) 139 138 if not isinstance(cpp_output, list): 140 cpp_output = [l.strip() for l in cpp_output. split('\n')]139 cpp_output = [l.strip() for l in cpp_output.decode('utf8').split('\n')] 141 140 142 141 return cpp_output -
python/tests/test_hztomel.py
r2f16966 r3d73183 5 5 from numpy.testing import assert_equal, assert_almost_equal 6 6 from _tools import assert_warns 7 from utils import is32bit8 7 import numpy as np 9 8 import aubio … … 11 10 from aubio import hztomel, meltohz 12 11 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 # 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) 20 assert_equal(hztomel(200.), 3.) 26 21 assert_almost_equal(hztomel(1000.), 15) 27 assert_almost_equal(hztomel(6400), 42 , decimal=5)28 assert_almost_equal(hztomel(40960), 69 , decimal=5)22 assert_almost_equal(hztomel(6400), 42) 23 assert_almost_equal(hztomel(40960), 69) 29 24 30 25 for m in np.linspace(0, 1000, 100): … … 34 29 assert_equal(meltohz(0.), 0.) 35 30 assert_almost_equal(meltohz(2), 400. / 3., decimal=4) 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) 31 assert_equal(meltohz(3.), 200.) 41 32 assert_almost_equal(meltohz(5), 1000. / 3., decimal=4) 42 33 assert_almost_equal(meltohz(15), 1000., decimal=4) -
python/tests/test_phasevoc.py
r2f16966 r3d73183 2 2 3 3 from numpy.testing import TestCase, assert_equal, assert_array_less 4 from _tools import parametrize , skipTest4 from _tools import parametrize 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 kipTest('pvoc(fvec(%d)).phas != +0, ' % win_s \54 self.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
r2f16966 r3d73183 4 4 import re 5 5 import glob 6 import struct7 6 import numpy as np 8 7 from tempfile import mkstemp 9 8 10 9 DEFAULT_SOUND = '22050Hz_5s_brownnoise.wav' 11 12 def is32bit():13 return struct.calcsize("P") * 8 == 3214 10 15 11 def array_from_text_file(filename, dtype = 'float'): -
scripts/get_waf.sh
r2f16966 r3d73183 4 4 #set -x 5 5 6 WAFVERSION=2.0.1 76 WAFVERSION=2.0.13 7 7 WAFTARBALL=waf-$WAFVERSION.tar.bz2 8 8 WAFURL=https://waf.io/$WAFTARBALL -
tests/src/spectral/test-mfcc.c
r2f16966 r3d73183 34 34 aubio_mfcc_t *mfcc = 0; 35 35 36 fvec_t *in = new_fvec ( hop_s); // phase vocoder input37 cvec_t *fftgrain = new_cvec (win_s); // pvoc output / mfcc input38 fvec_t *out = new_fvec (n_coeffs); // mfcc output36 fvec_t *in = new_fvec (win_s); // input buffer 37 cvec_t *fftgrain = new_cvec (win_s); // input buffer 38 fvec_t *out = new_fvec (n_coeffs); // output coefficients 39 39 40 40 if (!in || !fftgrain || !out) { err = 1; goto failure; } -
wscript
r2f16966 r3d73183 634 634 ctx.excl += ' **/.cache' 635 635 ctx.excl += ' **/**.zip **/**.tar.bz2' 636 ctx.excl += ' **.tar.bz2 **'636 ctx.excl += ' **.tar.bz2' 637 637 ctx.excl += ' **/doc/full/* **/doc/web/*' 638 638 ctx.excl += ' **/doc/full.cfg' … … 646 646 ctx.excl += ' **/.DS_Store' 647 647 ctx.excl += ' **/.travis.yml' 648 ctx.excl += ' **/.landscape.yml' 648 649 ctx.excl += ' **/.appveyor.yml' 649 650 ctx.excl += ' **/.circleci/*'
Note: See TracChangeset
for help on using the changeset viewer.