41 lines
914 B
C++
41 lines
914 B
C++
#ifndef WAVE_HEADER_H
|
|
#define WAVE_HEADER_H
|
|
|
|
namespace Wave {
|
|
|
|
enum AudioFormat {
|
|
PCM = 0x01,
|
|
IMA_ADPCM = 0x11,
|
|
MP3 = 0x55,
|
|
};
|
|
|
|
struct Header {
|
|
|
|
uint32_t chunkID;
|
|
uint32_t chunkSize; // file-size - 8
|
|
char format[4] = {'W', 'A', 'V', 'E'};
|
|
|
|
char subChunk1ID[4] = {'f', 'm', 't', ' '};
|
|
uint32_t subChunk1Size = 20;
|
|
|
|
uint16_t audioFormat = AudioFormat::PCM;
|
|
uint16_t numChannels = 1;
|
|
uint32_t sampleRate = 22050;
|
|
uint32_t byteRate = sampleRate * 256 / 505;
|
|
uint16_t blockAlign = 0x100;
|
|
uint16_t bitsPerSample = 8;
|
|
|
|
uint16_t byteExtraData = 2;
|
|
uint16_t extraData = 505; // samples-per-block. see byteRate
|
|
|
|
char subChunk2ID[4] = {'f', 'a', 'c', 't'};
|
|
uint32_t subChunk2Size = 4;
|
|
uint32_t numOfSamples = 0xFFFFFFFF; // play forever
|
|
|
|
char subChunk3ID[4] = {'d', 'a', 't', 'a'};
|
|
uint32_t subChunk3Size = 0xFFFFFFFF; // file-size - 60
|
|
|
|
};
|
|
|
|
#endif
|