Sigrid Solveig Haflínudóttirport/build the library09908e63 years agoHistory
103 lines · 2.4 KB · C
RawDownload
/*  Copyright (C) 2003-2009 Paul Brossier <piem@aubio.org>   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 <http://www.gnu.org/licenses/>. */ #include "aubio_priv.h"#include "fvec.h"#include "temporal/resampler.h" #ifdef HAVE_SAMPLERATE #if HAVE_AUBIO_DOUBLE#error "Should not use libsamplerate with aubio in double precision"#endif #include <samplerate.h>         /* from libsamplerate */ struct _aubio_resampler_t{  SRC_DATA *proc;  SRC_STATE *stat;  smpl_t ratio;  uint_t type;}; aubio_resampler_t *new_aubio_resampler (smpl_t ratio, uint_t type){  aubio_resampler_t *s = AUBIO_NEW (aubio_resampler_t);  int error = 0;  s->stat = src_new (type, 1, &error);  /* only one channel */  if (error) {    AUBIO_ERR ("Failed creating resampler: %s\n", src_strerror (error));    del_aubio_resampler(s);    return NULL;  }  s->proc = AUBIO_NEW (SRC_DATA);  s->ratio = ratio;  return s;} voiddel_aubio_resampler (aubio_resampler_t * s){  if (s->stat) src_delete (s->stat);  AUBIO_FREE (s->proc);  AUBIO_FREE (s);} voidaubio_resampler_do (aubio_resampler_t * s, const fvec_t * input, fvec_t * output){  s->proc->input_frames = input->length;  s->proc->output_frames = output->length;  s->proc->src_ratio = (double) s->ratio;  /* make SRC_PROC data point to input outputs */  s->proc->data_in = (float *) input->data;  s->proc->data_out = (float *) output->data;  /* do resampling */  src_process (s->stat, s->proc);} #elsestruct _aubio_resampler_t{  void *dummy;}; aubio_resampler_t *new_aubio_resampler (smpl_t ratio UNUSED, uint_t type UNUSED){  USED(ratio, type);  AUBIO_ERR ("aubio was not compiled with libsamplerate\n");  return NULL;} voiddel_aubio_resampler (aubio_resampler_t * s UNUSED){  USED(s);} voidaubio_resampler_do (aubio_resampler_t * s UNUSED, const fvec_t * input UNUSED, fvec_t * output UNUSED){  USED(s, input, output);}#endif /* HAVE_SAMPLERATE */

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t