2014-01-25 11:18:22 +00:00
|
|
|
/**
|
|
|
|
******************************************************************************
|
|
|
|
* Xenia : Xbox 360 Emulator Research Project *
|
|
|
|
******************************************************************************
|
|
|
|
* Copyright 2013 Ben Vanik. All rights reserved. *
|
|
|
|
* Released under the BSD license - see LICENSE in the root for more details. *
|
|
|
|
******************************************************************************
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef XENIA_APU_XAUDIO2_XAUDIO2_AUDIO_DRIVER_H_
|
|
|
|
#define XENIA_APU_XAUDIO2_XAUDIO2_AUDIO_DRIVER_H_
|
|
|
|
|
2014-12-20 06:04:57 +00:00
|
|
|
#include <xaudio2.h>
|
2014-01-25 11:18:22 +00:00
|
|
|
|
2015-02-01 06:49:47 +00:00
|
|
|
#include "xenia/apu/audio_driver.h"
|
|
|
|
#include "xenia/apu/xaudio2/xaudio2_apu-private.h"
|
2014-01-25 11:18:22 +00:00
|
|
|
|
|
|
|
namespace xe {
|
|
|
|
namespace apu {
|
|
|
|
namespace xaudio2 {
|
|
|
|
|
|
|
|
class XAudio2AudioDriver : public AudioDriver {
|
2015-03-29 18:27:33 +00:00
|
|
|
public:
|
2014-01-25 11:18:22 +00:00
|
|
|
XAudio2AudioDriver(Emulator* emulator, HANDLE wait);
|
|
|
|
virtual ~XAudio2AudioDriver();
|
|
|
|
|
|
|
|
virtual void Initialize();
|
|
|
|
virtual void SubmitFrame(uint32_t frame_ptr);
|
|
|
|
virtual void Shutdown();
|
|
|
|
|
2015-03-29 18:27:33 +00:00
|
|
|
private:
|
2014-01-25 11:18:22 +00:00
|
|
|
IXAudio2* audio_;
|
|
|
|
IXAudio2MasteringVoice* mastering_voice_;
|
|
|
|
IXAudio2SourceVoice* pcm_voice_;
|
|
|
|
static const int frame_channels_ = 6;
|
|
|
|
static const int channel_samples_ = 256;
|
|
|
|
float frame_[frame_channels_ * channel_samples_];
|
|
|
|
HANDLE wait_handle_;
|
|
|
|
|
|
|
|
class VoiceCallback;
|
|
|
|
VoiceCallback* voice_callback_;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace xaudio2
|
|
|
|
} // namespace apu
|
|
|
|
} // namespace xe
|
|
|
|
|
|
|
|
#endif // XENIA_APU_XAUDIO2_XAUDIO2_AUDIO_DRIVER_H_
|