diff options
Diffstat (limited to 'sound/audiostream.h')
| -rw-r--r-- | sound/audiostream.h | 72 | 
1 files changed, 4 insertions, 68 deletions
diff --git a/sound/audiostream.h b/sound/audiostream.h index 38c012a9e9..1eca349967 100644 --- a/sound/audiostream.h +++ b/sound/audiostream.h @@ -22,7 +22,8 @@  #ifndef AUDIOSTREAM_H  #define AUDIOSTREAM_H -#include "mixer.h" +#include "scummsys.h" +#include <assert.h>  // TODO:  // * maybe make readIntern return 16.16 or 24.8 fixed point values @@ -46,7 +47,7 @@ public:  class ZeroInputStream : public AudioInputStream {  protected: -	uint _len; +	int _len;  	int16 readIntern() { return 0; }  	void advance() { _len--; }  public: @@ -54,71 +55,6 @@ public:  	virtual int size() { return _len; }  }; -template<int channels, int sampleSize> -class MemoryAudioInputStream : public AudioInputStream { -protected: -	const byte *_ptr; -	const byte *_end; -	void advance() { _ptr += channels * sampleSize; } -public: -	MemoryAudioInputStream(const byte *ptr, uint len) : _ptr(ptr), _end(ptr+len) { } -	virtual int size() { return (_end - _ptr) / (channels * sampleSize); } -}; - - -template<int channels> -class Input8bitSignedStream : public MemoryAudioInputStream<channels, 1> { -protected: -	int16 readIntern() { int8 v = (int8)*_ptr; return v << 8; } -public: -	Input8bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 1>(ptr, len) { } -}; - -template<int channels> -class Input8bitUnsignedStream : public MemoryAudioInputStream<channels, 1> { -protected: -	int16 readIntern() { int8 v = (int8)(*_ptr ^ 0x80); return v << 8; } -public: -	Input8bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 1>(ptr, len) { } -}; - -template<int channels> -class Input16bitSignedStream : public MemoryAudioInputStream<channels, 2> { -protected: -	int16 readIntern() { return (int16)READ_BE_UINT16(_ptr); } -public: -	Input16bitSignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 2>(ptr, len) { } -}; - -template<int channels> -class Input16bitUnsignedStream : public MemoryAudioInputStream<channels, 2> { -protected: -	int16 readIntern() { return (int16)(READ_BE_UINT16(_ptr) ^ 0x8000); } -public: -	Input16bitUnsignedStream(const byte *ptr, int len) : MemoryAudioInputStream<channels, 2>(ptr, len) { } -}; - - -template<int channels> -static AudioInputStream *makeInputStream(const byte *ptr, uint32 len, bool isUnsigned, bool is16Bit) { -	if (isUnsigned) { -		if (is16Bit) -			return new Input16bitUnsignedStream<channels>(ptr, len); -		else -			return new Input8bitUnsignedStream<channels>(ptr, len); -	} else { -		if (is16Bit) -			return new Input16bitSignedStream<channels>(ptr, len); -		else -			return new Input8bitSignedStream<channels>(ptr, len); -	} -} - -static inline AudioInputStream *makeInputStream(byte _flags, const byte *ptr, uint32 len) { -	if (_flags & SoundMixer::FLAG_STEREO) -		return makeInputStream<2>(ptr, len, _flags & SoundMixer::FLAG_UNSIGNED, _flags & SoundMixer::FLAG_16BITS); -	else -		return makeInputStream<1>(ptr, len, _flags & SoundMixer::FLAG_UNSIGNED, _flags & SoundMixer::FLAG_16BITS); -} +AudioInputStream *makeInputStream(byte _flags, const byte *ptr, uint32 len);  #endif  | 
