aboutsummaryrefslogtreecommitdiff
path: root/sound/resample.h
diff options
context:
space:
mode:
authorMax Horn2003-08-06 17:13:04 +0000
committerMax Horn2003-08-06 17:13:04 +0000
commit69ee268e7fc0c335962bbc65be9e13f932636429 (patch)
treeb04b80f4fd860b348e48bccba1e1c99190dbd5ec /sound/resample.h
parent32107ae69a6f4d8ab55a1ba801a721ee0c838de8 (diff)
downloadscummvm-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.h93
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