2021-04-25 00:34:02 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
#include "IGpAudioBuffer.h"
|
|
|
|
|
|
2021-04-25 01:59:48 -04:00
|
|
|
#include <xaudio2.h>
|
2021-04-25 00:34:02 -04:00
|
|
|
|
2021-04-28 01:46:07 -04:00
|
|
|
struct IGpAllocator;
|
|
|
|
|
|
2021-04-25 00:34:02 -04:00
|
|
|
class GpAudioBufferXAudio2 final : public IGpAudioBuffer
|
|
|
|
|
{
|
|
|
|
|
public:
|
2021-04-28 01:46:07 -04:00
|
|
|
static GpAudioBufferXAudio2 *Create(IGpAllocator *alloc, const void *buffer, size_t size);
|
2021-04-25 00:34:02 -04:00
|
|
|
|
|
|
|
|
void AddRef() override;
|
|
|
|
|
void Release() override;
|
|
|
|
|
|
|
|
|
|
const XAUDIO2_BUFFER *GetXA2Buffer() const;
|
|
|
|
|
|
|
|
|
|
private:
|
2021-04-28 01:46:07 -04:00
|
|
|
GpAudioBufferXAudio2(IGpAllocator *alloc, const void *data, size_t size);
|
2021-04-25 00:34:02 -04:00
|
|
|
~GpAudioBufferXAudio2();
|
|
|
|
|
|
|
|
|
|
void Destroy();
|
|
|
|
|
|
|
|
|
|
const void *m_data;
|
|
|
|
|
size_t m_size;
|
2021-04-28 01:46:07 -04:00
|
|
|
IGpAllocator *m_alloc;
|
2021-04-25 00:34:02 -04:00
|
|
|
|
|
|
|
|
XAUDIO2_BUFFER m_xa2Buffer;
|
|
|
|
|
|
|
|
|
|
volatile unsigned int m_count;
|
|
|
|
|
};
|