Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_AUDIO_SOUNDLOADER_WAV_H__
00009 #define __SP_AUDIO_SOUNDLOADER_WAV_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #if defined(SP_COMPILE_WITH_SOUNDLOADER_WAV)
00015
00016
00017 #include "FileFormats/Sound/spSoundLoader.hpp"
00018
00019
00020 namespace sp
00021 {
00022 namespace audio
00023 {
00024
00025
00026 class SP_EXPORT SoundLoaderWAV : public SoundLoader
00027 {
00028
00029 public:
00030
00031 SoundLoaderWAV();
00032 ~SoundLoaderWAV();
00033
00034
00035
00036 SAudioBufferPtr loadSoundData(io::File* File);
00037
00038 private:
00039
00040
00041
00042 static const u32 CHUNK_ID_FMT;
00043 static const u32 CHUNK_ID_DATA;
00044
00045
00046
00047 #if defined(_MSC_VER)
00048 # pragma pack(push, packing)
00049 # pragma pack(1)
00050 # define SP_PACK_STRUCT
00051 #elif defined(__GNUC__)
00052 # define SP_PACK_STRUCT __attribute__((packed))
00053 #else
00054 # define SP_PACK_STRUCT
00055 #endif
00056
00057 struct SChunkWAV
00058 {
00059 u32 ChunkID;
00060 u32 ChunkSize;
00061 }
00062 SP_PACK_STRUCT;
00063
00064 struct SFormatWAV
00065 {
00066 s16 AudioFormat;
00067 s16 Channels;
00068 s32 SampleRate;
00069 s32 ByteRate;
00070 s16 BlockAlign;
00071 s16 BitsPerSample;
00072 }
00073 SP_PACK_STRUCT;
00074
00075 #ifdef _MSC_VER
00076 # pragma pack(pop, packing)
00077 #endif
00078
00079 #undef SP_PACK_STRUCT
00080
00081
00082
00083 bool readChunk(SChunkWAV &Chunk);
00084
00085 bool readHeader();
00086 bool readChunks();
00087
00088 bool readChunkFmt (const SChunkWAV &Chunk);
00089 bool readChunkData (const SChunkWAV &Chunk);
00090
00091
00092
00093 SFormatWAV Format_;
00094 c8 StrBuffer_[5];
00095
00096 };
00097
00098
00099 }
00100
00101 }
00102
00103
00104 #endif
00105
00106 #endif
00107
00108
00109
00110