diff options
Diffstat (limited to 'engines/cge/wav.h')
-rw-r--r-- | engines/cge/wav.h | 175 |
1 files changed, 93 insertions, 82 deletions
diff --git a/engines/cge/wav.h b/engines/cge/wav.h index a8da4f9e72..6d46769cf9 100644 --- a/engines/cge/wav.h +++ b/engines/cge/wav.h @@ -25,117 +25,128 @@ * Copyright (c) 1994-1995 Janus B. Wisniewski and L.K. Avalon */ -#ifndef __WAV__ -#define __WAV__ +#ifndef __WAV__ +#define __WAV__ -#include "cge/general.h" -#include <string.h> +#include "cge/general.h" +#include <string.h> namespace CGE { -#define WAVE_FORMAT_PCM 0x0001 -#define IBM_FORMAT_MULAW 0x0101 -#define IBM_FORMAT_ALAW 0x0102 -#define IBM_FORMAT_ADPCM 0x0103 +#define WAVE_FORMAT_PCM 0x0001 +#define IBM_FORMAT_MULAW 0x0101 +#define IBM_FORMAT_ALAW 0x0102 +#define IBM_FORMAT_ADPCM 0x0103 +typedef char FOURCC[4]; // Four-character code +typedef uint32 CKSIZE; // 32-bit unsigned size -typedef char FOURCC[4]; // Four-character code -typedef uint32 CKSIZE; // 32-bit unsigned size - -class CKID // Chunk type identifier -{ - union { FOURCC Tx; uint32 Id; }; +class CKID { // Chunk type identifier + union { + FOURCC Tx; + uint32 Id; + }; protected: - static XFILE * ckFile; + static XFILE *ckFile; public: - CKID (FOURCC t) { memcpy(Tx, t, sizeof(Tx)); } - CKID (uint32 d) { Id = d; } - CKID (XFILE * xf) { (ckFile = xf)->Read(Tx, sizeof(Tx)); } - bool operator !=(CKID& X) { return Id != X.Id; } - bool operator ==(CKID& X) { return Id == X.Id; } - const char * Name (void); + CKID(FOURCC t) { + memcpy(Tx, t, sizeof(Tx)); + } + CKID(uint32 d) { + Id = d; + } + CKID(XFILE *xf) { + (ckFile = xf)->Read(Tx, sizeof(Tx)); + } + bool operator !=(CKID &X) { + return Id != X.Id; + } + bool operator ==(CKID &X) { + return Id == X.Id; + } + const char *Name(void); }; - - -class CKHEA : public CKID -{ +class CKHEA : public CKID { protected: - CKSIZE ckSize; // Chunk size field (size of ckData) + CKSIZE ckSize; // Chunk size field (size of ckData) public: - CKHEA (XFILE * xf) : CKID(xf) { XRead(xf, &ckSize); } - CKHEA (char id[]) : CKID(id), ckSize(0) { } - void Skip (void); - CKSIZE Size (void) { return ckSize; } + CKHEA(XFILE *xf) : CKID(xf) { + XRead(xf, &ckSize); + } + CKHEA(char id[]) : CKID(id), ckSize(0) { } + void Skip(void); + CKSIZE Size(void) { + return ckSize; + } }; - - - -class FMTCK : public CKHEA -{ - struct WAV - { - uint16 wFormatTag; // Format category - uint16 wChannels; // Number of channels - uint32 dwSamplesPerSec; // Sampling rate - uint32 dwAvgBytesPerSec; // For buffer estimation - uint16 wBlockAlign; // Data block size - } Wav; - - union - { - struct PCM - { - uint16 wBitsPerSample; // Sample size - } Pcm; - }; +class FMTCK : public CKHEA { + struct WAV { + uint16 wFormatTag; // Format category + uint16 wChannels; // Number of channels + uint32 dwSamplesPerSec; // Sampling rate + uint32 dwAvgBytesPerSec; // For buffer estimation + uint16 wBlockAlign; // Data block size + } Wav; + + union { + struct PCM { + uint16 wBitsPerSample; // Sample size + } Pcm; + }; public: - FMTCK (CKHEA& hea); - inline uint16 Channels (void) { return Wav.wChannels; } - inline uint32 SmplRate (void) { return Wav.dwSamplesPerSec; } - inline uint32 ByteRate (void) { return Wav.dwAvgBytesPerSec; } - inline uint16 BlckSize (void) { return Wav.wBlockAlign; } - inline uint16 SmplSize (void) { return Pcm.wBitsPerSample; } + FMTCK(CKHEA &hea); + inline uint16 Channels(void) { + return Wav.wChannels; + } + inline uint32 SmplRate(void) { + return Wav.dwSamplesPerSec; + } + inline uint32 ByteRate(void) { + return Wav.dwAvgBytesPerSec; + } + inline uint16 BlckSize(void) { + return Wav.wBlockAlign; + } + inline uint16 SmplSize(void) { + return Pcm.wBitsPerSample; + } }; - - - -class DATACK : public CKHEA -{ - bool e; - union - { - uint8 * Buf; - EMS * EBuf; - }; +class DATACK : public CKHEA { + bool e; + union { + uint8 *Buf; + EMS *EBuf; + }; public: - DATACK (CKHEA& hea); - DATACK (CKHEA& hea, EMM * emm); - DATACK (int first, int last); - ~DATACK (void); - inline uint8 * Addr (void) { return Buf; } - inline EMS * EAddr (void) { return EBuf; } + DATACK(CKHEA &hea); + DATACK(CKHEA &hea, EMM *emm); + DATACK(int first, int last); + ~DATACK(void); + inline uint8 *Addr(void) { + return Buf; + } + inline EMS *EAddr(void) { + return EBuf; + } }; +extern CKID RIFF; +extern CKID WAVE; +extern CKID FMT; +extern CKID DATA; -extern CKID RIFF; -extern CKID WAVE; -extern CKID FMT; -extern CKID DATA; - - -DATACK * LoadWave (XFILE * file, EMM * emm = NULL); +DATACK *LoadWave(XFILE *file, EMM *emm = NULL); } // End of namespace CGE - #endif |