1 /* ScummVM - Graphic Adventure Engine
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
29 #include "common/scummsys.h"
30 #include "engines/engine.h"
37 typedef int16 st_sample_t
;
38 typedef uint16 st_volume_t
;
39 typedef uint32 st_size_t
;
40 typedef uint32 st_rate_t
;
42 /* Minimum and maximum values a sample can hold. */
44 ST_SAMPLE_MAX
= 0x7fffL
,
45 ST_SAMPLE_MIN
= (-ST_SAMPLE_MAX
- 1L)
53 static inline void clampedAdd(int16
& a
, int b
) {
55 #ifdef OUTPUT_UNSIGNED_AUDIO
56 val
= (a
^ 0x8000) + b
;
61 if (val
> ST_SAMPLE_MAX
)
63 else if (val
< ST_SAMPLE_MIN
)
66 #ifdef OUTPUT_UNSIGNED_AUDIO
67 a
= ((int16
)val
) ^ 0x8000;
76 virtual ~RateConverter() {}
77 virtual int flow(AudioStream
&input
, st_sample_t
*obuf
, st_size_t osamp
, st_volume_t vol_l
, st_volume_t vol_r
) = 0;
78 virtual int drain(st_sample_t
*obuf
, st_size_t osamp
, st_volume_t vol
) = 0;
81 RateConverter
*makeRateConverter(st_rate_t inrate
, st_rate_t outrate
, bool stereo
, bool reverseStereo
= false);
83 } // End of namespace Audio