Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_AUDIO_SOUND_XAUDIO2_H__
00009 #define __SP_AUDIO_SOUND_XAUDIO2_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #if defined(SP_COMPILE_WITH_XAUDIO2)
00015
00016
00017 #include "SoundSystem/spSound.hpp"
00018
00019 #include <xaudio2.h>
00020
00021
00022 namespace sp
00023 {
00024 namespace audio
00025 {
00026
00027
00028 class SP_EXPORT XAudio2Sound : public Sound
00029 {
00030
00031 public:
00032
00033 XAudio2Sound();
00034 ~XAudio2Sound();
00035
00036
00037
00038 bool reload(const io::stringc &Filename, u8 BufferCount = DEF_SOUND_BUFFERCOUNT);
00039 void close();
00040
00041 void play();
00042 void pause(bool Paused = true);
00043 void stop();
00044
00045 void setSeek(f32 Seek);
00046 f32 getSeek() const;
00047
00048 void setVolume(f32 Volume);
00049 void setSpeed(f32 Speed);
00050 void setBalance(f32 Balance);
00051
00052 f32 getLength() const;
00053 bool valid() const;
00054
00055 private:
00056
00057
00058
00059
00060
00061
00062 inline s16 getBlockAlign(s16 SoundChannels, s16 BitsPerSecond) const
00063 {
00064 return SoundChannels * BitsPerSecond / 8;
00065 }
00066
00067
00068
00069 IXAudio2SourceVoice* SoruceVoice_;
00070
00071 BYTE* WaveBuffer_;
00072
00073 };
00074
00075
00076 }
00077
00078 }
00079
00080
00081 #endif
00082
00083 #endif
00084
00085
00086
00087