Changes in / [1dfe409:08246ee]


Ignore:
Files:
1 added
22 edited

Legend:

Unmodified
Added
Removed
  • .travis.yml

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

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

    r1dfe409 r08246ee  
    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")
    67[![Commits since last release](https://img.shields.io/github/commits-since/aubio/aubio/latest.svg)](https://github.com/aubio/aubio "Commits since last release")
    78
  • VERSION

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

    r1dfe409 r08246ee  
    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

    r1dfe409 r08246ee  
    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
    1216.. image:: https://readthedocs.org/projects/aubio/badge/?version=latest
    1317   :target: https://aubio.readthedocs.io/en/latest/?badge=latest
  • python/demos/demo_wav2midi.py

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

    r1dfe409 r08246ee  
    582582    } else if (PyLong_AsLong(size) > 0) {
    583583      // short read, return a shorter array
    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);
     584      PyArrayObject *shortread = (PyArrayObject*)PyTuple_GetItem(done, 0);
    588585      PyArray_Dims newdims;
    589586      PyObject *reshaped;
     
    598595      reshaped = PyArray_Newshape(shortread, &newdims, NPY_CORDER);
    599596      Py_DECREF(shortread);
    600       Py_DECREF(vec);
    601597      return reshaped;
    602598    } else {
  • python/lib/moresetuptools.py

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

    r1dfe409 r08246ee  
    44from aubio import fvec, source, sink
    55from utils import list_all_sounds, get_tmp_sink_path, del_tmp_sink_path
    6 from utils import parse_file_samplerate
    7 from _tools import parametrize, skipTest, assert_raises, assert_warns
     6from _tools import parametrize, skipTest, assert_raises
    87
    98list_of_sounds = list_all_sounds('sounds')
     
    6261    @parametrize('hop_size, samplerate, path', all_params)
    6362    def test_read_and_write(self, hop_size, samplerate, path):
    64         orig_samplerate = parse_file_samplerate(soundfile)
    6563        try:
    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)
     64            f = source(path, samplerate, hop_size)
    7265        except RuntimeError as e:
    7366            err_msg = '{:s} (hop_s = {:d}, samplerate = {:d})'
     
    8679    @parametrize('hop_size, samplerate, path', all_params)
    8780    def test_read_and_write_multi(self, hop_size, samplerate, path):
    88         orig_samplerate = parse_file_samplerate(soundfile)
    8981        try:
    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)
     82            f = source(path, samplerate, hop_size)
    9683        except RuntimeError as e:
    9784            err_msg = '{:s} (hop_s = {:d}, samplerate = {:d})'
  • python/tests/test_source.py

    r1dfe409 r08246ee  
    44from numpy.testing import TestCase, assert_equal
    55from aubio import source
    6 from utils import list_all_sounds, parse_file_samplerate
     6from utils import list_all_sounds
    77import unittest
    8 from _tools import assert_raises, assert_equal, assert_warns
    9 from _tools import parametrize, skipTest
     8from _tools import parametrize, assert_raises, assert_equal, skipTest
    109
    1110list_of_sounds = list_all_sounds('sounds')
     
    2423
    2524_debug = False
    26 
    2725
    2826class Test_aubio_source_test_case(TestCase):
     
    7775    @parametrize('hop_size, samplerate, soundfile', all_params)
    7876    def test_samplerate_hopsize(self, hop_size, samplerate, soundfile):
    79         orig_samplerate = parse_file_samplerate(soundfile)
    8077        try:
    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)
     78            f = source(soundfile, samplerate, hop_size)
    8779        except RuntimeError as e:
    8880            err_msg = 'failed opening with hop_s={:d}, samplerate={:d} ({:s})'
  • python/tests/utils.py

    r1dfe409 r08246ee  
    22
    33import os
    4 import re
    54import glob
    65import numpy as np
     
    7978                    total_files += 1
    8079    return total_files
    81 
    82 def 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

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

    r1dfe409 r08246ee  
    6363#endif
    6464
    65 #ifdef HAVE_ERRNO_H
    66 #include <errno.h>
    67 #endif
    68 
    6965#ifdef HAVE_LIMITS_H
    7066#include <limits.h> // for CHAR_BIT, in C99 standard
     
    7571#endif
    7672
    77 #if defined(HAVE_BLAS) // --enable-blas=true
    78 // check which cblas header we found
     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)
    7979#if defined(HAVE_ATLAS_CBLAS_H)
    8080#define HAVE_ATLAS 1
     
    8484#elif defined(HAVE_CBLAS_H)
    8585#include <cblas.h>
    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
     86#endif
     87#endif
     88
     89#ifdef HAVE_ACCELERATE
    9590#include <Accelerate/Accelerate.h>
    96 
    9791#ifndef HAVE_AUBIO_DOUBLE
    9892#define aubio_vDSP_mmov       vDSP_mmov
     
    337331#endif
    338332
    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 
    351333/* handy shortcuts */
    352334#define DB2LIN(g) (POW(10.0,(g)*0.05f))
  • src/io/sink.c

    r1dfe409 r08246ee  
    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

    r1dfe409 r08246ee  
    2828#include "io/sink_wavwrite.h"
    2929#include "io/ioutils.h"
     30
     31#include <errno.h>
    3032
    3133#define MAX_SIZE 4096
     
    166168  s->fid = fopen((const char *)s->path, "wb");
    167169  if (!s->fid) {
    168     AUBIO_STRERR("sink_wavwrite: could not open %s (%s)\n", s->path, errorstr);
     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);
    169173    goto beach;
    170174  }
     
    212216
    213217  // fwrite(*, *, 1, s->fid) was called 13 times, check success
    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;
     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);
    219223    return AUBIO_FAIL;
    220224  }
     
    243247
    244248  if (written_frames != write) {
    245     AUBIO_STRERR("sink_wavwrite: trying to write %d frames to %s, but only %d"
     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"
    246252        " could be written (%s)\n", write, s->path, written_frames, errorstr);
    247253  }
     
    292298  written += fwrite(write_little_endian(data_size, buf, 4), 4, 1, s->fid);
    293299  if (written != 2 || err != 0) {
    294     AUBIO_STRERR("sink_wavwrite: updating header of %s failed, expected %d"
     300    char errorstr[256];
     301    AUBIO_STRERROR(errno, errorstr, sizeof(errorstr));
     302    AUBIO_WRN("sink_wavwrite: updating header of %s failed, expected %d"
    295303        " write but got only %d (%s)\n", s->path, 2, written, errorstr);
    296304  }
    297305  // close file
    298306  if (fclose(s->fid)) {
    299     AUBIO_STRERR("sink_wavwrite: Error closing file %s (%s)\n", s->path, errorstr);
     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);
    300310  }
    301311  s->fid = NULL;
  • src/io/source.c

    r1dfe409 r08246ee  
    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

    r1dfe409 r08246ee  
    3131#endif
    3232#include <libavutil/opt.h>
     33#include <stdlib.h>
    3334
    3435// determine whether we use libavformat from ffmpeg or from libav
     
    120121    uint_t samplerate, uint_t hop_size) {
    121122  aubio_source_avcodec_t * s = AUBIO_NEW(aubio_source_avcodec_t);
    122   AVFormatContext *avFormatCtx = NULL;
    123   AVCodecContext *avCodecCtx = NULL;
    124   AVFrame *avFrame = NULL;
     123  AVFormatContext *avFormatCtx = s->avFormatCtx;
     124  AVCodecContext *avCodecCtx = s->avCodecCtx;
     125  AVFrame *avFrame = s->avFrame;
    125126  sint_t selected_stream = -1;
    126127#if FF_API_LAVF_AVCTX
     
    464465      (const uint8_t **)avFrame->data, in_samples);
    465466#endif /* HAVE_AVRESAMPLE || HAVE_SWRESAMPLE */
    466   if (out_samples < 0) {
    467     AUBIO_WRN("source_avcodec: error while resampling %s (%d)\n",
    468         s->path, out_samples);
     467  if (out_samples <= 0) {
     468    AUBIO_WRN("source_avcodec: no sample found while converting frame (%s)\n",
     469        s->path);
    469470    goto beach;
    470471  }
     
    473474
    474475beach:
     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
    475484  av_packet_unref(&avPacket);
    476485}
     
    620629#ifdef HAVE_AVRESAMPLE
    621630    avresample_close( s->avr );
     631#elif defined(HAVE_SWRESAMPLE)
     632    swr_close ( s->avr );
     633#endif
    622634    av_free ( s->avr );
    623 #elif defined(HAVE_SWRESAMPLE)
    624     swr_close ( s->avr );
    625     swr_free ( &s->avr );
    626 #endif
    627635  }
    628636  s->avr = NULL;
  • src/io/source_sndfile.c

    r1dfe409 r08246ee  
    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 
    182177  if (!s->handle) {
    183178    AUBIO_ERR("source_sndfile: could not read from %s (file was closed)\n",
     
    187182  }
    188183
     184  uint_t read_length = read_samples / s->input_channels;
     185
     186  /* where to store de-interleaved data */
     187  smpl_t *ptr_data;
    189188#ifdef HAVE_SAMPLERATE
    190189  if (s->ratio != 1) {
     
    227226  sf_count_t read_samples = aubio_sf_read_smpl (s->handle, s->scratch_data,
    228227      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 
    234228  if (!s->handle) {
    235229    AUBIO_ERR("source_sndfile: could not read from %s (file was closed)\n",
     
    239233  }
    240234
     235  uint_t read_length = read_samples / s->input_channels;
     236
     237  /* where to store de-interleaved data */
     238  smpl_t **ptr_data;
    241239#ifdef HAVE_SAMPLERATE
    242240  if (s->ratio != 1) {
  • src/io/source_wavread.c

    r1dfe409 r08246ee  
    2828#include "source_wavread.h"
    2929
     30#include <errno.h>
     31
    3032#define AUBIO_WAVREAD_BUFSIZE 1024
    3133
    32 //#define SHORT_TO_FLOAT(x) (smpl_t)(x * 3.0517578125e-05)
     34#define SHORT_TO_FLOAT(x) (smpl_t)(x * 3.0517578125e-05)
    3335
    3436struct _aubio_source_wavread_t {
     
    99101  s->fid = fopen((const char *)path, "rb");
    100102  if (!s->fid) {
    101     AUBIO_STRERR("source_wavread: Failed opening %s (%s)\n", s->path, errorstr);
     103    AUBIO_ERR("source_wavread: Failed opening %s (System error: %s)\n", s->path, strerror(errno));
    102104    goto beach;
    103105  }
     
    132134    bytes_junk += read_little_endian(buf, 4);
    133135    if (fseek(s->fid, bytes_read + bytes_junk, SEEK_SET) != 0) {
    134       AUBIO_STRERR("source_wavread: Failed opening %s (could not seek past JUNK Chunk: %s)\n",
    135           s->path, errorstr);
     136      AUBIO_ERR("source_wavread: Failed opening %s (could not seek past JUNK Chunk: %s)\n",
     137          s->path, strerror(errno));
    136138      goto beach;
    137139    }
     
    260262    bytes_junk += read_little_endian(buf, 4);
    261263    if (fseek(s->fid, bytes_read + bytes_junk, SEEK_SET) != 0) {
    262       AUBIO_STRERR("source_wavread: could not seek past unknown chunk in %s (%s)\n",
    263           s->path, errorstr);
     264      AUBIO_ERR("source_wavread: could not seek past unknown chunk in %s (%s)\n",
     265          s->path, strerror(errno));
    264266      goto beach;
    265267    }
     
    441443  ret = fseek(s->fid, s->seek_start + pos * s->blockalign, SEEK_SET);
    442444  if (ret != 0) {
    443     AUBIO_STRERR("source_wavread: could not seek %s at %d (%s)\n", s->path, pos, errorstr);
     445    AUBIO_ERR("source_wavread: could not seek %s at %d (%s)\n", s->path, pos, strerror(errno));
    444446    return AUBIO_FAIL;
    445447  }
     
    462464  }
    463465  if (fclose(s->fid)) {
    464     AUBIO_STRERR("source_wavread: could not close %s (%s)\n", s->path, errorstr);
     466    AUBIO_ERR("source_wavread: could not close %s (%s)\n", s->path, strerror(errno));
    465467    return AUBIO_FAIL;
    466468  }
  • tests/src/spectral/test-mfcc.c

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

    r1dfe409 r08246ee  
    146146    ctx.check(header_name='math.h')
    147147    ctx.check(header_name='string.h')
    148     ctx.check(header_name='errno.h')
    149148    ctx.check(header_name='limits.h')
    150149    ctx.check(header_name='stdarg.h')
     
    651650    ctx.excl += ' **/.cache'
    652651    ctx.excl += ' **/**.zip **/**.tar.bz2'
    653     ctx.excl += ' **.tar.bz2**'
     652    ctx.excl += ' **.tar.bz2'
    654653    ctx.excl += ' **/doc/full/* **/doc/web/*'
    655654    ctx.excl += ' **/doc/full.cfg'
     
    663662    ctx.excl += ' **/.DS_Store'
    664663    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.