From ab41f5cef352a9bcd81e0992491670d1ff552c23 Mon Sep 17 00:00:00 2001 From: Paul Brossier Date: Tue, 10 Dec 2013 08:36:54 -0500 Subject: [PATCH] src/io/sndfileio.{c,h}: remove old sndfile interface Signed-off-by: Paul Brossier --- doc/web.cfg | 1 - src/aubio.h | 1 - src/io/sndfileio.c | 254 ----------------------------------------------------- src/io/sndfileio.h | 84 ------------------ 4 files changed, 340 deletions(-) delete mode 100644 src/io/sndfileio.c delete mode 100644 src/io/sndfileio.h diff --git a/doc/web.cfg b/doc/web.cfg index 6c277932..c05e67af 100644 --- a/doc/web.cfg +++ b/doc/web.cfg @@ -777,7 +777,6 @@ EXCLUDE = ../src/aubio_priv.h \ ../src/io/source_avcodec.h \ ../src/io/sink_sndfile.h \ ../src/io/sink_apple_audio.h \ - ../src/io/sndfileio.h \ ../src/onset/peakpicker.h \ ../src/pitch/pitchmcomb.h \ ../src/pitch/pitchyin.h \ diff --git a/src/aubio.h b/src/aubio.h index 58aa5c2a..fc3a2430 100644 --- a/src/aubio.h +++ b/src/aubio.h @@ -196,7 +196,6 @@ extern "C" #include "io/source_avcodec.h" #include "io/sink_sndfile.h" #include "io/sink_apple_audio.h" -#include "io/sndfileio.h" #include "onset/peakpicker.h" #include "pitch/pitchmcomb.h" #include "pitch/pitchyin.h" diff --git a/src/io/sndfileio.c b/src/io/sndfileio.c deleted file mode 100644 index e7fb67be..00000000 --- a/src/io/sndfileio.c +++ /dev/null @@ -1,254 +0,0 @@ -/* - Copyright (C) 2003-2009 Paul Brossier - - This file is part of aubio. - - aubio is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - aubio is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with aubio. If not, see . - -*/ - -#include "config.h" - -#ifdef HAVE_SNDFILE - -#include - -#include - -#include "aubio_priv.h" -#include "fvec.h" -#include "sndfileio.h" -#include "mathutils.h" - -#define MAX_CHANNELS 6 -#define MAX_SIZE 4096 - -struct _aubio_sndfile_t { - SNDFILE *handle; - int samplerate; - int channels; - int format; - float *tmpdata; /** scratch pad for interleaving/deinterleaving. */ - int size; /** store the size to check if realloc needed */ -}; - -aubio_sndfile_t * new_aubio_sndfile_ro(const char* outputname) { - aubio_sndfile_t * f = AUBIO_NEW(aubio_sndfile_t); - SF_INFO sfinfo; - AUBIO_MEMSET(&sfinfo, 0, sizeof (sfinfo)); - - f->handle = sf_open (outputname, SFM_READ, &sfinfo); - - if (f->handle == NULL) { - AUBIO_ERR("Failed opening %s: %s\n", outputname, - sf_strerror (NULL)); /* libsndfile err msg */ - return NULL; - } - - if (sfinfo.channels > MAX_CHANNELS) { - AUBIO_ERR("Not able to process more than %d channels\n", MAX_CHANNELS); - return NULL; - } - - f->size = MAX_SIZE*sfinfo.channels; - f->tmpdata = AUBIO_ARRAY(float,f->size); - /* get input specs */ - f->samplerate = sfinfo.samplerate; - f->channels = sfinfo.channels; - f->format = sfinfo.format; - - return f; -} - -int aubio_sndfile_open_wo(aubio_sndfile_t * f, const char* inputname) { - SF_INFO sfinfo; - AUBIO_MEMSET(&sfinfo, 0, sizeof (sfinfo)); - - /* define file output spec */ - sfinfo.samplerate = f->samplerate; - sfinfo.channels = f->channels; - sfinfo.format = f->format; - - if (! (f->handle = sf_open (inputname, SFM_WRITE, &sfinfo))) { - AUBIO_ERR("Not able to open output file %s.\n", inputname); - AUBIO_ERR("%s\n",sf_strerror (NULL)); /* libsndfile err msg */ - AUBIO_QUIT(AUBIO_FAIL); - } - - if (sfinfo.channels > MAX_CHANNELS) { - AUBIO_ERR("Not able to process more than %d channels\n", MAX_CHANNELS); - AUBIO_QUIT(AUBIO_FAIL); - } - f->size = MAX_SIZE*sfinfo.channels; - f->tmpdata = AUBIO_ARRAY(float,f->size); - return AUBIO_OK; -} - -/* setup file struct from existing one */ -aubio_sndfile_t * new_aubio_sndfile_wo(aubio_sndfile_t * fmodel, const char *outputname) { - aubio_sndfile_t * f = AUBIO_NEW(aubio_sndfile_t); - f->samplerate = fmodel->samplerate; - f->channels = 1; //fmodel->channels; - f->format = fmodel->format; - aubio_sndfile_open_wo(f, outputname); - return f; -} - - -/* return 0 if properly closed, 1 otherwise */ -int del_aubio_sndfile(aubio_sndfile_t * f) { - if (sf_close(f->handle)) { - AUBIO_ERR("Error closing file."); - puts (sf_strerror (NULL)); - return 1; - } - AUBIO_FREE(f->tmpdata); - AUBIO_FREE(f); - //AUBIO_DBG("File closed.\n"); - return 0; -} - -/************************************************************** - * - * Read write methods - * - */ - - -/* read frames from file in data - * return the number of frames actually read */ -int aubio_sndfile_read(aubio_sndfile_t * f, int frames, fvec_t ** read) { - sf_count_t read_frames; - int i,j, channels = f->channels; - int nsamples = frames*channels; - int aread; - smpl_t *pread; - - /* allocate data for de/interleaving reallocated when needed. */ - if (nsamples >= f->size) { - AUBIO_ERR("Maximum aubio_sndfile_read buffer size exceeded."); - return -1; - /* - AUBIO_FREE(f->tmpdata); - f->tmpdata = AUBIO_ARRAY(float,nsamples); - */ - } - //f->size = nsamples; - - /* do actual reading */ - read_frames = sf_read_float (f->handle, f->tmpdata, nsamples); - - aread = (int)FLOOR(read_frames/(float)channels); - - /* de-interleaving data */ - for (i=0; itmpdata[channels*j+i]; - } - } - return aread; -} - -int -aubio_sndfile_read_mono (aubio_sndfile_t * f, int frames, fvec_t * read) -{ - sf_count_t read_frames; - int i, j, channels = f->channels; - int nsamples = frames * channels; - int aread; - smpl_t *pread; - - /* allocate data for de/interleaving reallocated when needed. */ - if (nsamples >= f->size) { - AUBIO_ERR ("Maximum aubio_sndfile_read buffer size exceeded."); - return -1; - /* - AUBIO_FREE(f->tmpdata); - f->tmpdata = AUBIO_ARRAY(float,nsamples); - */ - } - //f->size = nsamples; - - /* do actual reading */ - read_frames = sf_read_float (f->handle, f->tmpdata, nsamples); - - aread = (int) FLOOR (read_frames / (float) channels); - - /* de-interleaving data */ - pread = (smpl_t *) fvec_get_data (read); - for (i = 0; i < channels; i++) { - for (j = 0; j < aread; j++) { - pread[j] += (smpl_t) f->tmpdata[channels * j + i]; - } - } - for (j = 0; j < aread; j++) { - pread[j] /= (smpl_t)channels; - } - - return aread; -} - -/* write 'frames' samples to file from data - * return the number of frames actually written - */ -int aubio_sndfile_write(aubio_sndfile_t * f, int frames, fvec_t ** write) { - sf_count_t written_frames = 0; - int i, j, channels = f->channels; - int nsamples = channels*frames; - smpl_t *pwrite; - - /* allocate data for de/interleaving reallocated when needed. */ - if (nsamples >= f->size) { - AUBIO_ERR("Maximum aubio_sndfile_write buffer size exceeded."); - return -1; - /* - AUBIO_FREE(f->tmpdata); - f->tmpdata = AUBIO_ARRAY(float,nsamples); - */ - } - //f->size = nsamples; - - /* interleaving data */ - for (i=0; itmpdata[channels*j+i] = (float)pwrite[j]; - } - } - written_frames = sf_write_float (f->handle, f->tmpdata, nsamples); - return written_frames/channels; -} - -/******************************************************************* - * - * Get object info - * - */ - -uint_t aubio_sndfile_channels(aubio_sndfile_t * f) { - return f->channels; -} - -uint_t aubio_sndfile_samplerate(aubio_sndfile_t * f) { - return f->samplerate; -} - -void aubio_sndfile_info(aubio_sndfile_t * f) { - AUBIO_DBG("srate : %d\n", f->samplerate); - AUBIO_DBG("channels : %d\n", f->channels); - AUBIO_DBG("format : %d\n", f->format); -} - -#endif /* HAVE_SNDFILE */ diff --git a/src/io/sndfileio.h b/src/io/sndfileio.h deleted file mode 100644 index 36846437..00000000 --- a/src/io/sndfileio.h +++ /dev/null @@ -1,84 +0,0 @@ -/* - Copyright (C) 2003-2009 Paul Brossier - - This file is part of aubio. - - aubio is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - aubio is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with aubio. If not, see . - -*/ - -#ifndef SNDFILEIO_H -#define SNDFILEIO_H - -/** \file - - sndfile functions - - */ - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * sndfile object - */ -typedef struct _aubio_sndfile_t aubio_sndfile_t; -/** - * Open a sound file for reading - */ -aubio_sndfile_t * new_aubio_sndfile_ro (const char * inputfile); -/** - * Copy file model from previously opened sound file. - */ -aubio_sndfile_t * new_aubio_sndfile_wo(aubio_sndfile_t * existingfile, const char * outputname); -/** - * Open a sound file for writing - */ -int aubio_sndfile_open_wo (aubio_sndfile_t * file, const char * outputname); -/** - * Read frames data from file into an array of buffers - */ -int aubio_sndfile_read(aubio_sndfile_t * file, int frames, fvec_t ** read); -/** - * Read frames data from file into a single buffer - */ -int aubio_sndfile_read_mono (aubio_sndfile_t * f, int frames, fvec_t * read); -/** - * Write data of length frames to file - */ -int aubio_sndfile_write(aubio_sndfile_t * file, int frames, fvec_t ** write); -/** - * Close file and delete file object - */ -int del_aubio_sndfile(aubio_sndfile_t * file); -/** - * Return some files facts - */ -void aubio_sndfile_info(aubio_sndfile_t * file); -/** - * Return number of channel in file - */ -uint_t aubio_sndfile_channels(aubio_sndfile_t * file); -/** - * Return samplerate of a file (Hz) - */ -uint_t aubio_sndfile_samplerate(aubio_sndfile_t * file); - -#ifdef __cplusplus -} -#endif - -#endif - -- 2.11.0