Refactor audio buffering API, this should mainly prevent SDL audio driver from allocating memory in the mixer callback.

This commit is contained in:
elasota
2021-04-25 00:34:02 -04:00
parent f9d3b91f72
commit 5d9dde6589
17 changed files with 374 additions and 180 deletions

View File

@@ -0,0 +1,8 @@
#pragma once
struct IGpAudioBuffer
{
public:
virtual void AddRef() = 0;
virtual void Release() = 0;
};

View File

@@ -3,11 +3,12 @@
#include <stddef.h>
struct IGpAudioChannelCallbacks;
struct IGpAudioBuffer;
struct IGpAudioChannel
{
virtual void SetAudioChannelContext(IGpAudioChannelCallbacks *callbacks) = 0;
virtual void PostBuffer(const void *buffer, size_t bufferSize) = 0;
virtual bool PostBuffer(IGpAudioBuffer *buffer) = 0;
virtual void Stop() = 0;
virtual void Destroy() = 0;
};

View File

@@ -4,10 +4,12 @@
struct IGpAudioChannel;
struct IGpPrefsHandler;
struct IGpAudioBuffer;
struct IGpAudioDriver
{
public:
virtual IGpAudioBuffer *CreateBuffer(const void *buffer, size_t bufferSize) = 0;
virtual IGpAudioChannel *CreateChannel() = 0;
virtual void SetMasterVolume(uint32_t vol, uint32_t maxVolume) = 0;