mirror of
https://github.com/elasota/Aerofoil.git
synced 2025-12-15 04:29:37 +00:00
More work. Audio driver works enough to play music now.
This commit is contained in:
42
GpAudioDriver_XAudio2/GpAudioChannelXAudio2.h
Normal file
42
GpAudioDriver_XAudio2/GpAudioChannelXAudio2.h
Normal file
@@ -0,0 +1,42 @@
|
||||
#pragma once
|
||||
|
||||
#include "IGpAudioChannel.h"
|
||||
|
||||
#include "GpAudioChannelXAudio2Callbacks.h"
|
||||
|
||||
class GpAudioDriverXAudio2;
|
||||
class GpAudioChannelXAudio2Callbacks;
|
||||
struct IXAudio2SourceVoice;
|
||||
|
||||
class GpAudioChannelXAudio2 final : public IGpAudioChannel
|
||||
{
|
||||
public:
|
||||
friend class GpAudioChannelXAudio2Callbacks;
|
||||
|
||||
static GpAudioChannelXAudio2 *Create(GpAudioDriverXAudio2 *driver);
|
||||
|
||||
void SetAudioChannelContext(IGpAudioChannelCallbacks *callbacks);
|
||||
void PostBuffer(const void *buffer, size_t bufferSize);
|
||||
void Destroy() override;
|
||||
|
||||
bool Init();
|
||||
|
||||
protected:
|
||||
void OnBufferEnd();
|
||||
|
||||
private:
|
||||
enum VoiceState
|
||||
{
|
||||
VoiceState_Idle,
|
||||
VoiceState_Active,
|
||||
};
|
||||
|
||||
explicit GpAudioChannelXAudio2(GpAudioDriverXAudio2 *driver);
|
||||
~GpAudioChannelXAudio2();
|
||||
|
||||
GpAudioDriverXAudio2 *m_driver;
|
||||
IXAudio2SourceVoice *m_sourceVoice;
|
||||
GpAudioChannelXAudio2Callbacks m_xAudioCallbacks;
|
||||
IGpAudioChannelCallbacks *m_contextCallbacks;
|
||||
VoiceState m_voiceState;
|
||||
};
|
||||
Reference in New Issue
Block a user