Changeset 1dfe409


Ignore:
Timestamp:
Mar 31, 2019, 11:12:40 PM (8 months ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/autosink
Children:
76b6dd3
Parents:
08246ee (diff), f55630c (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.
Message:

Merge branch 'master' into feature/autosink

Files:
1 deleted
22 edited

Legend:

Unmodified
Added
Removed
  • .travis.yml

    r08246ee r1dfe409  
    99      os: linux
    1010      compiler: gcc
     11      env: WAFOPTS="--build-type=debug"
    1112    - python: 2.7
    1213      os: linux
  • ChangeLog

    r08246ee r1dfe409  
     12018-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
    1812018-11-21 Paul Brossier <piem@aubio.org>
    282
  • README.md

    r08246ee r1dfe409  
    44[![Travis build status](https://travis-ci.org/aubio/aubio.svg?branch=master)](https://travis-ci.org/aubio/aubio "Travis build status")
    55[![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")
    76[![Commits since last release](https://img.shields.io/github/commits-since/aubio/aubio/latest.svg)](https://github.com/aubio/aubio "Commits since last release")
    87
  • VERSION

    r08246ee r1dfe409  
    11AUBIO_MAJOR_VERSION=0
    2 AUBIO_MINOR_VERSION=4
    3 AUBIO_PATCH_VERSION=9
     2AUBIO_MINOR_VERSION=5
     3AUBIO_PATCH_VERSION=0
    44AUBIO_VERSION_STATUS='~alpha'
    55LIBAUBIO_LT_CUR=5
  • azure-pipelines.yml

    r08246ee r1dfe409  
    44- job: linux
    55  pool:
    6     vmImage: 'Ubuntu 16.04'
     6    vmImage: 'ubuntu-16.04'
    77  steps:
    88  - script: |
     
    1414- job: windows
    1515  pool:
    16     vmIMage: 'VS2017-Win2016'
     16    vmImage: 'vs2017-win2016'
    1717  steps:
    1818  - script: |
     
    2525- job: macos
    2626  pool:
    27     vmIMage: macOS-10.13
     27    vmImage: 'macos-10.13'
    2828  steps:
    2929  - script: |
  • doc/statuslinks.rst

    r08246ee r1dfe409  
    1010   :alt: Appveyor build status
    1111
    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 
    1612.. image:: https://readthedocs.org/projects/aubio/badge/?version=latest
    1713   :target: https://aubio.readthedocs.io/en/latest/?badge=latest
  • python/demos/demo_wav2midi.py

    r08246ee r1dfe409  
    6464        if new_note[2] > 0:
    6565            track.append(Message('note_off', note=int(new_note[2]),
    66                 velocity=127, time=0)
     66                velocity=127, time=delta)
    6767                )
    6868        track.append(Message('note_on',
  • python/ext/py-source.c

    r08246ee r1dfe409  
    582582    } else if (PyLong_AsLong(size) > 0) {
    583583      // short read, return a shorter array
    584       PyArrayObject *shortread = (PyArrayObject*)PyTuple_GetItem(done, 0);
     584      PyObject *vec = PyTuple_GetItem(done, 0);
     585      // take a copy to prevent resizing internal arrays
     586      PyArrayObject *shortread = (PyArrayObject*)PyArray_FROM_OTF(vec,
     587          NPY_NOTYPE, NPY_ARRAY_ENSURECOPY);
    585588      PyArray_Dims newdims;
    586589      PyObject *reshaped;
     
    595598      reshaped = PyArray_Newshape(shortread, &newdims, NPY_CORDER);
    596599      Py_DECREF(shortread);
     600      Py_DECREF(vec);
    597601      return reshaped;
    598602    } else {
  • python/lib/moresetuptools.py

    r08246ee r1dfe409  
    6969    for define_macro in ['HAVE_STDLIB_H', 'HAVE_STDIO_H',
    7070                         'HAVE_MATH_H', 'HAVE_STRING_H',
    71                          'HAVE_C99_VARARGS_MACROS',
     71                         'HAVE_ERRNO_H', 'HAVE_C99_VARARGS_MACROS',
    7272                         'HAVE_LIMITS_H', 'HAVE_STDARG_H',
    7373                         'HAVE_MEMCPY_HACKS']:
  • python/tests/test_sink.py

    r08246ee r1dfe409  
    44from aubio import fvec, source, sink
    55from utils import list_all_sounds, get_tmp_sink_path, del_tmp_sink_path
    6 from _tools import parametrize, skipTest, assert_raises
     6from utils import parse_file_samplerate
     7from _tools import parametrize, skipTest, assert_raises, assert_warns
    78
    89list_of_sounds = list_all_sounds('sounds')
     
    6162    @parametrize('hop_size, samplerate, path', all_params)
    6263    def test_read_and_write(self, hop_size, samplerate, path):
     64        orig_samplerate = parse_file_samplerate(soundfile)
    6365        try:
    64             f = source(path, samplerate, hop_size)
     66            if orig_samplerate is not None and orig_samplerate < samplerate:
     67                # upsampling should emit a warning
     68                with assert_warns(UserWarning):
     69                    f = source(soundfile, samplerate, hop_size)
     70            else:
     71                f = source(soundfile, samplerate, hop_size)
    6572        except RuntimeError as e:
    6673            err_msg = '{:s} (hop_s = {:d}, samplerate = {:d})'
     
    7986    @parametrize('hop_size, samplerate, path', all_params)
    8087    def test_read_and_write_multi(self, hop_size, samplerate, path):
     88        orig_samplerate = parse_file_samplerate(soundfile)
    8189        try:
    82             f = source(path, samplerate, hop_size)
     90            if orig_samplerate is not None and orig_samplerate < samplerate:
     91                # upsampling should emit a warning
     92                with assert_warns(UserWarning):
     93                    f = source(soundfile, samplerate, hop_size)
     94            else:
     95                f = source(soundfile, samplerate, hop_size)
    8396        except RuntimeError as e:
    8497            err_msg = '{:s} (hop_s = {:d}, samplerate = {:d})'
  • python/tests/test_source.py

    r08246ee r1dfe409  
    44from numpy.testing import TestCase, assert_equal
    55from aubio import source
    6 from utils import list_all_sounds
     6from utils import list_all_sounds, parse_file_samplerate
    77import unittest
    8 from _tools import parametrize, assert_raises, assert_equal, skipTest
     8from _tools import assert_raises, assert_equal, assert_warns
     9from _tools import parametrize, skipTest
    910
    1011list_of_sounds = list_all_sounds('sounds')
     
    2324
    2425_debug = False
     26
    2527
    2628class Test_aubio_source_test_case(TestCase):
     
    7577    @parametrize('hop_size, samplerate, soundfile', all_params)
    7678    def test_samplerate_hopsize(self, hop_size, samplerate, soundfile):
     79        orig_samplerate = parse_file_samplerate(soundfile)
    7780        try:
    78             f = source(soundfile, samplerate, hop_size)
     81            if orig_samplerate is not None and orig_samplerate < samplerate:
     82                # upsampling should emit a warning
     83                with assert_warns(UserWarning):
     84                    f = source(soundfile, samplerate, hop_size)
     85            else:
     86                f = source(soundfile, samplerate, hop_size)
    7987        except RuntimeError as e:
    8088            err_msg = 'failed opening with hop_s={:d}, samplerate={:d} ({:s})'
  • python/tests/utils.py

    r08246ee r1dfe409  
    22
    33import os
     4import re
    45import glob
    56import numpy as np
     
    7879                    total_files += 1
    7980    return total_files
     81
     82def parse_file_samplerate(soundfile):
     83    samplerate = None
     84    # parse samplerate
     85    re_sr = re.compile(r'/([0-9]{4,})Hz_.*')
     86    match_samplerate = re_sr.findall(soundfile)
     87    if match_samplerate:
     88        samplerate = int(match_samplerate[0])
     89    else:
     90        import warnings
     91        warnings.warn(UserWarning("could not parse samplerate for {:s}"
     92            .format(soundfile)))
     93    return samplerate
  • scripts/get_waf.sh

    r08246ee r1dfe409  
    44#set -x
    55
    6 WAFVERSION=2.0.13
     6WAFVERSION=2.0.14
    77WAFTARBALL=waf-$WAFVERSION.tar.bz2
    88WAFURL=https://waf.io/$WAFTARBALL
  • src/aubio_priv.h

    r08246ee r1dfe409  
    6363#endif
    6464
     65#ifdef HAVE_ERRNO_H
     66#include <errno.h>
     67#endif
     68
    6569#ifdef HAVE_LIMITS_H
    6670#include <limits.h> // for CHAR_BIT, in C99 standard
     
    7175#endif
    7276
    73 #if defined(HAVE_ACCELERATE)
    74 #define HAVE_ATLAS 1
    75 #define HAVE_BLAS 1
    76 #include <Accelerate/Accelerate.h>
    77 #elif defined(HAVE_ATLAS_CBLAS_H)
    78 #elif defined(HAVE_BLAS)
     77#if defined(HAVE_BLAS) // --enable-blas=true
     78// check which cblas header we found
    7979#if defined(HAVE_ATLAS_CBLAS_H)
    8080#define HAVE_ATLAS 1
     
    8484#elif defined(HAVE_CBLAS_H)
    8585#include <cblas.h>
    86 #endif
    87 #endif
    88 
    89 #ifdef HAVE_ACCELERATE
     86#elif !defined(HAVE_ACCELERATE)
     87#error "HAVE_BLAS was defined, but no blas header was found"
     88#endif /* end of cblas includes */
     89#endif
     90
     91#if defined(HAVE_ACCELERATE)
     92// include accelerate framework after blas
     93#define HAVE_ATLAS 1
     94#define HAVE_BLAS 1
    9095#include <Accelerate/Accelerate.h>
     96
    9197#ifndef HAVE_AUBIO_DOUBLE
    9298#define aubio_vDSP_mmov       vDSP_mmov
     
    331337#endif
    332338
     339#ifdef HAVE_C99_VARARGS_MACROS
     340#define AUBIO_STRERR(...)            \
     341    char errorstr[256]; \
     342    AUBIO_STRERROR(errno, errorstr, sizeof(errorstr)); \
     343    AUBIO_ERR(__VA_ARGS__)
     344#else
     345#define AUBIO_STRERR(format, args...)   \
     346    char errorstr[256]; \
     347    AUBIO_STRERROR(errno, errorstr, sizeof(errorstr)); \
     348    AUBIO_ERR(format, ##args)
     349#endif
     350
    333351/* handy shortcuts */
    334352#define DB2LIN(g) (POW(10.0,(g)*0.05f))
  • src/io/sink.c

    r08246ee r1dfe409  
    216216
    217217void del_aubio_sink(aubio_sink_t * s) {
    218   AUBIO_ASSERT(s);
     218  //AUBIO_ASSERT(s);
    219219  if (s && s->s_del && s->sink)
    220220    s->s_del((void *)s->sink);
  • src/io/sink_wavwrite.c

    r08246ee r1dfe409  
    2828#include "io/sink_wavwrite.h"
    2929#include "io/ioutils.h"
    30 
    31 #include <errno.h>
    3230
    3331#define MAX_SIZE 4096
     
    168166  s->fid = fopen((const char *)s->path, "wb");
    169167  if (!s->fid) {
    170     char errorstr[256];
    171     AUBIO_STRERROR(errno, errorstr, sizeof(errorstr));
    172     AUBIO_ERR("sink_wavwrite: could not open %s (%s)\n", s->path, errorstr);
     168    AUBIO_STRERR("sink_wavwrite: could not open %s (%s)\n", s->path, errorstr);
    173169    goto beach;
    174170  }
     
    216212
    217213  // fwrite(*, *, 1, s->fid) was called 13 times, check success
    218   if (written != 13) {
    219     char errorstr[256];
    220     AUBIO_STRERROR(errno, errorstr, sizeof(errorstr));
    221     AUBIO_WRN("sink_wavwrite: writing header to %s failed, expected %d"
    222         " write but got only %d (%s)\n", s->path, 13, written, errorstr);
     214  if (written != 13 || fflush(s->fid)) {
     215    AUBIO_STRERR("sink_wavwrite: writing header to %s failed"
     216        " (wrote %d/%d, %s)\n", s->path, written, 13, errorstr);
     217    fclose(s->fid);
     218    s->fid = NULL;
    223219    return AUBIO_FAIL;
    224220  }
     
    247243
    248244  if (written_frames != write) {
    249     char errorstr[256];
    250     AUBIO_STRERROR(errno, errorstr, sizeof(errorstr));
    251     AUBIO_WRN("sink_wavwrite: trying to write %d frames to %s, but only %d"
     245    AUBIO_STRERR("sink_wavwrite: trying to write %d frames to %s, but only %d"
    252246        " could be written (%s)\n", write, s->path, written_frames, errorstr);
    253247  }
     
    298292  written += fwrite(write_little_endian(data_size, buf, 4), 4, 1, s->fid);
    299293  if (written != 2 || err != 0) {
    300     char errorstr[256];
    301     AUBIO_STRERROR(errno, errorstr, sizeof(errorstr));
    302     AUBIO_WRN("sink_wavwrite: updating header of %s failed, expected %d"
     294    AUBIO_STRERR("sink_wavwrite: updating header of %s failed, expected %d"
    303295        " write but got only %d (%s)\n", s->path, 2, written, errorstr);
    304296  }
    305297  // close file
    306298  if (fclose(s->fid)) {
    307     char errorstr[256];
    308     AUBIO_STRERROR(errno, errorstr, sizeof(errorstr));
    309     AUBIO_ERR("sink_wavwrite: Error closing file %s (%s)\n", s->path, errorstr);
     299    AUBIO_STRERR("sink_wavwrite: Error closing file %s (%s)\n", s->path, errorstr);
    310300  }
    311301  s->fid = NULL;
  • src/io/source.c

    r08246ee r1dfe409  
    139139
    140140void del_aubio_source(aubio_source_t * s) {
    141   AUBIO_ASSERT(s);
     141  //AUBIO_ASSERT(s);
    142142  if (s && s->s_del && s->source)
    143143    s->s_del((void *)s->source);
  • src/io/source_avcodec.c

    r08246ee r1dfe409  
    3131#endif
    3232#include <libavutil/opt.h>
    33 #include <stdlib.h>
    3433
    3534// determine whether we use libavformat from ffmpeg or from libav
     
    121120    uint_t samplerate, uint_t hop_size) {
    122121  aubio_source_avcodec_t * s = AUBIO_NEW(aubio_source_avcodec_t);
    123   AVFormatContext *avFormatCtx = s->avFormatCtx;
    124   AVCodecContext *avCodecCtx = s->avCodecCtx;
    125   AVFrame *avFrame = s->avFrame;
     122  AVFormatContext *avFormatCtx = NULL;
     123  AVCodecContext *avCodecCtx = NULL;
     124  AVFrame *avFrame = NULL;
    126125  sint_t selected_stream = -1;
    127126#if FF_API_LAVF_AVCTX
     
    465464      (const uint8_t **)avFrame->data, in_samples);
    466465#endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */
    467   if (out_samples <= 0) {
    468     AUBIO_WRN("source_avcodec: no sample found while converting frame (%s)\n",
    469         s->path);
     466  if (out_samples < 0) {
     467    AUBIO_WRN("source_avcodec: error while resampling %s (%d)\n",
     468        s->path, out_samples);
    470469    goto beach;
    471470  }
     
    474473
    475474beach:
    476   s->avFormatCtx = avFormatCtx;
    477   s->avCodecCtx = avCodecCtx;
    478   s->avFrame = avFrame;
    479 #if defined(HAVE_AVRESAMPLE) || defined(HAVE_SWRESAMPLE)
    480   s->avr = avr;
    481 #endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */
    482   s->output = output;
    483 
    484475  av_packet_unref(&avPacket);
    485476}
     
    629620#ifdef HAVE_AVRESAMPLE
    630621    avresample_close( s->avr );
     622    av_free ( s->avr );
    631623#elif defined(HAVE_SWRESAMPLE)
    632624    swr_close ( s->avr );
    633 #endif
    634     av_free ( s->avr );
     625    swr_free ( &s->avr );
     626#endif
    635627  }
    636628  s->avr = NULL;
  • src/io/source_sndfile.c

    r08246ee r1dfe409  
    175175  sf_count_t read_samples = aubio_sf_read_smpl (s->handle, s->scratch_data,
    176176      s->scratch_size);
     177  uint_t read_length = read_samples / s->input_channels;
     178
     179  /* where to store de-interleaved data */
     180  smpl_t *ptr_data;
     181
    177182  if (!s->handle) {
    178183    AUBIO_ERR("source_sndfile: could not read from %s (file was closed)\n",
     
    182187  }
    183188
    184   uint_t read_length = read_samples / s->input_channels;
    185 
    186   /* where to store de-interleaved data */
    187   smpl_t *ptr_data;
    188189#ifdef HAVE_SAMPLERATE
    189190  if (s->ratio != 1) {
     
    226227  sf_count_t read_samples = aubio_sf_read_smpl (s->handle, s->scratch_data,
    227228      s->scratch_size);
     229  uint_t read_length = read_samples / s->input_channels;
     230
     231  /* where to store de-interleaved data */
     232  smpl_t **ptr_data;
     233
    228234  if (!s->handle) {
    229235    AUBIO_ERR("source_sndfile: could not read from %s (file was closed)\n",
     
    233239  }
    234240
    235   uint_t read_length = read_samples / s->input_channels;
    236 
    237   /* where to store de-interleaved data */
    238   smpl_t **ptr_data;
    239241#ifdef HAVE_SAMPLERATE
    240242  if (s->ratio != 1) {
  • src/io/source_wavread.c

    r08246ee r1dfe409  
    2828#include "source_wavread.h"
    2929
    30 #include <errno.h>
    31 
    3230#define AUBIO_WAVREAD_BUFSIZE 1024
    3331
    34 #define SHORT_TO_FLOAT(x) (smpl_t)(x * 3.0517578125e-05)
     32//#define SHORT_TO_FLOAT(x) (smpl_t)(x * 3.0517578125e-05)
    3533
    3634struct _aubio_source_wavread_t {
     
    10199  s->fid = fopen((const char *)path, "rb");
    102100  if (!s->fid) {
    103     AUBIO_ERR("source_wavread: Failed opening %s (System error: %s)\n", s->path, strerror(errno));
     101    AUBIO_STRERR("source_wavread: Failed opening %s (%s)\n", s->path, errorstr);
    104102    goto beach;
    105103  }
     
    134132    bytes_junk += read_little_endian(buf, 4);
    135133    if (fseek(s->fid, bytes_read + bytes_junk, SEEK_SET) != 0) {
    136       AUBIO_ERR("source_wavread: Failed opening %s (could not seek past JUNK Chunk: %s)\n",
    137           s->path, strerror(errno));
     134      AUBIO_STRERR("source_wavread: Failed opening %s (could not seek past JUNK Chunk: %s)\n",
     135          s->path, errorstr);
    138136      goto beach;
    139137    }
     
    262260    bytes_junk += read_little_endian(buf, 4);
    263261    if (fseek(s->fid, bytes_read + bytes_junk, SEEK_SET) != 0) {
    264       AUBIO_ERR("source_wavread: could not seek past unknown chunk in %s (%s)\n",
    265           s->path, strerror(errno));
     262      AUBIO_STRERR("source_wavread: could not seek past unknown chunk in %s (%s)\n",
     263          s->path, errorstr);
    266264      goto beach;
    267265    }
     
    443441  ret = fseek(s->fid, s->seek_start + pos * s->blockalign, SEEK_SET);
    444442  if (ret != 0) {
    445     AUBIO_ERR("source_wavread: could not seek %s at %d (%s)\n", s->path, pos, strerror(errno));
     443    AUBIO_STRERR("source_wavread: could not seek %s at %d (%s)\n", s->path, pos, errorstr);
    446444    return AUBIO_FAIL;
    447445  }
     
    464462  }
    465463  if (fclose(s->fid)) {
    466     AUBIO_ERR("source_wavread: could not close %s (%s)\n", s->path, strerror(errno));
     464    AUBIO_STRERR("source_wavread: could not close %s (%s)\n", s->path, errorstr);
    467465    return AUBIO_FAIL;
    468466  }
  • tests/src/spectral/test-mfcc.c

    r08246ee r1dfe409  
    3434  aubio_mfcc_t *mfcc = 0;
    3535
    36   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
     36  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
    3939
    4040  if (!in || !fftgrain || !out) { err = 1; goto failure; }
  • wscript

    r08246ee r1dfe409  
    146146    ctx.check(header_name='math.h')
    147147    ctx.check(header_name='string.h')
     148    ctx.check(header_name='errno.h')
    148149    ctx.check(header_name='limits.h')
    149150    ctx.check(header_name='stdarg.h')
     
    650651    ctx.excl += ' **/.cache'
    651652    ctx.excl += ' **/**.zip **/**.tar.bz2'
    652     ctx.excl += ' **.tar.bz2'
     653    ctx.excl += ' **.tar.bz2**'
    653654    ctx.excl += ' **/doc/full/* **/doc/web/*'
    654655    ctx.excl += ' **/doc/full.cfg'
     
    662663    ctx.excl += ' **/.DS_Store'
    663664    ctx.excl += ' **/.travis.yml'
    664     ctx.excl += ' **/.landscape.yml'
    665665    ctx.excl += ' **/.appveyor.yml'
    666666    ctx.excl += ' **/.circleci/*'
Note: See TracChangeset for help on using the changeset viewer.