-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathXA2Player.h
48 lines (48 loc) · 1.24 KB
/
XA2Player.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#pragma once
#include <windows.h>
#include <xaudio2.h>
namespace AwpSoftGameModule
{
class XA2PlayerMaster
{
private:
int Reference;
bool Enable;
IXAudio2 *XA2;
IXAudio2MasteringVoice *XA2Master;
~XA2PlayerMaster();
public:
XA2PlayerMaster();
void addRef();
void release();
void setVolume(float volume = 1.0f);
float getVolume();
bool isEnable();
IXAudio2* getInnerXAudio2Ptr();
};
class XA2Player
{
protected:
XA2PlayerMaster *Master;
IXAudio2SourceVoice *SourcePoster;
XAUDIO2_BUFFER LastBuffer;
WAVEFORMATEX OriginFormat[4]; //Can Enlarge
bool Enable;
public:
XA2Player(XA2PlayerMaster* master, WAVEFORMATEX* inputFormat = nullptr);
virtual ~XA2Player();
bool isEnable();
bool isSafeToReleasePostedBuffers();
void play(XAUDIO2_BUFFER * xa2Buffer,bool resetIfNotChange = true);
void play(unsigned char* startAddress,unsigned int endSize, bool resetIfNoChange = true,bool loop = false,unsigned int loopStartOffset = 0,unsigned int loopEndOffset = 0xFFFFFFFF);
void replay();
void stop();
void pause();
void continuePlay();
void setVolume(float volume = 1.0f);
float getVolume();
void setFreqRate(float rate = 1.0f);
float getFreqRate();
void setInputSampleRate(unsigned int sampleRate = 0);
};
};