diff options
author | Max Horn | 2003-08-06 17:13:04 +0000 |
---|---|---|
committer | Max Horn | 2003-08-06 17:13:04 +0000 |
commit | 69ee268e7fc0c335962bbc65be9e13f932636429 (patch) | |
tree | b04b80f4fd860b348e48bccba1e1c99190dbd5ec /sound/resample.h | |
parent | 32107ae69a6f4d8ab55a1ba801a721ee0c838de8 (diff) | |
download | scummvm-rg350-69ee268e7fc0c335962bbc65be9e13f932636429.tar.gz scummvm-rg350-69ee268e7fc0c335962bbc65be9e13f932636429.tar.bz2 scummvm-rg350-69ee268e7fc0c335962bbc65be9e13f932636429.zip |
some cleanup
svn-id: r9575
Diffstat (limited to 'sound/resample.h')
-rw-r--r-- | sound/resample.h | 93 |
1 files changed, 38 insertions, 55 deletions
diff --git a/sound/resample.h b/sound/resample.h index f66ad75a5d..c64787906d 100644 --- a/sound/resample.h +++ b/sound/resample.h @@ -1,61 +1,44 @@ -/* - * FILE: resample.h - * BY: Julius Smith (at CCRMA, Stanford U) - * C BY: translated from SAIL to C by Christopher Lee Fraley - * (cf0v@andrew.cmu.edu) - * DATE: 7-JUN-88 - * VERS: 2.0 (17-JUN-88, 3:00pm) - */ - -/* - * October 29, 1999 - * Various changes, bugfixes(?), increased precision, by Stan Brooks. +/* ScummVM - Scumm Interpreter + * Copyright (C) 2001-2003 The ScummVM project * - * This source code is distributed in the hope that it will be useful, + * This program 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 2 + * of the License, or (at your option) any later version. + + * This program 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. - * - */ + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. -/* Conversion constants */ -#define Lc 7 -#define Nc (1<<Lc) -#define La 16 -#define Na (1<<La) -#define Lp (Lc+La) -#define Np (1<<Lp) -#define Amask (Na-1) -#define Pmask (Np-1) - -#define MAXNWING (80<<Lc) -/* Description of constants: - * - * Nc - is the number of look-up values available for the lowpass filter - * between the beginning of its impulse response and the "cutoff time" - * of the filter. The cutoff time is defined as the reciprocal of the - * lowpass-filter cut off frequence in Hz. For example, if the - * lowpass filter were a sinc function, Nc would be the index of the - * impulse-response lookup-table corresponding to the first zero- - * crossing of the sinc function. (The inverse first zero-crossing - * time of a sinc function equals its nominal cutoff frequency in Hz.) - * Nc must be a power of 2 due to the details of the current - * implementation. The default value of 128 is sufficiently high that - * using linear interpolation to fill in between the table entries - * gives approximately 16-bit precision, and quadratic interpolation - * gives about 23-bit (float) precision in filter coefficients. - * - * Lc - is log base 2 of Nc. + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * - * La - is the number of bits devoted to linear interpolation of the - * filter coefficients. - * - * Lp - is La + Lc, the number of bits to the right of the binary point - * in the integer "time" variable. To the left of the point, it indexes - * the input array (X), and to the right, it is interpreted as a number - * between 0 and 1 sample of the input X. The default value of 23 is - * about right. There is a constraint that the filter window must be - * "addressable" in a int32_t, more precisely, if Nmult is the number - * of sinc zero-crossings in the right wing of the filter window, then - * (Nwing<<Lp) must be expressible in 31 bits. + * $Header$ * */ + +#ifndef SOUND_RESAMPLE_H +#define SOUND_RESAMPLE_H + +#include "sound/rate.h" + +typedef struct { + byte priv[1024]; +} eff_struct; +typedef eff_struct *eff_t; + +/** High quality rate conversion algorithm, based on SoX (http://sox.sourceforge.net). */ +class ResampleRateConverter : public RateConverter { +protected: + eff_struct effp; +public: + ResampleRateConverter(st_rate_t inrate, st_rate_t outrate, int quality); + ~ResampleRateConverter(); + virtual int flow(AudioInputStream &input, st_sample_t *obuf, st_size_t osamp, st_volume_t vol); + virtual int drain(st_sample_t *obuf, st_size_t osamp, st_volume_t vol); +}; + + +#endif |