[APU] Support XAudio 2.7
This commit is contained in:
@@ -11,6 +11,7 @@
|
||||
#define XENIA_APU_XAUDIO2_XAUDIO2_AUDIO_DRIVER_H_
|
||||
|
||||
#include "xenia/apu/audio_driver.h"
|
||||
#include "xenia/apu/xaudio2/xaudio2_api.h"
|
||||
#include "xenia/base/threading.h"
|
||||
|
||||
struct IXAudio2;
|
||||
@@ -31,16 +32,31 @@ class XAudio2AudioDriver : public AudioDriver {
|
||||
void Shutdown();
|
||||
|
||||
private:
|
||||
template <typename Objects>
|
||||
bool InitializeObjects(Objects& objects);
|
||||
template <typename Objects>
|
||||
void ShutdownObjects(Objects& objects);
|
||||
|
||||
void* xaudio2_module_ = nullptr;
|
||||
IXAudio2* audio_ = nullptr;
|
||||
IXAudio2MasteringVoice* mastering_voice_ = nullptr;
|
||||
IXAudio2SourceVoice* pcm_voice_ = nullptr;
|
||||
uint32_t api_minor_version_ = 7;
|
||||
union {
|
||||
struct {
|
||||
api::IXAudio2_7* audio;
|
||||
api::IXAudio2_7MasteringVoice* mastering_voice;
|
||||
api::IXAudio2_7SourceVoice* pcm_voice;
|
||||
} api_2_7;
|
||||
struct {
|
||||
api::IXAudio2_8* audio;
|
||||
api::IXAudio2_8MasteringVoice* mastering_voice;
|
||||
api::IXAudio2_8SourceVoice* pcm_voice;
|
||||
} api_2_8;
|
||||
} objects_ = {};
|
||||
xe::threading::Semaphore* semaphore_ = nullptr;
|
||||
|
||||
class VoiceCallback;
|
||||
VoiceCallback* voice_callback_ = nullptr;
|
||||
|
||||
static const uint32_t frame_count_ = 64;
|
||||
static const uint32_t frame_count_ = api::XE_XAUDIO2_MAX_QUEUED_BUFFERS;
|
||||
static const uint32_t frame_channels_ = 6;
|
||||
static const uint32_t channel_samples_ = 256;
|
||||
static const uint32_t frame_samples_ = frame_channels_ * channel_samples_;
|
||||
|
||||
Reference in New Issue
Block a user