Files
Aerofoil/PortabilityLayer/PLSound.h
2020-01-18 18:20:16 -05:00

31 lines
666 B
C++

#pragma once
#include "PLCore.h"
namespace PortabilityLayer
{
struct AudioChannel;
typedef void (*AudioChannelCallback_t)(PortabilityLayer::AudioChannel *channel);
struct AudioChannel
{
virtual void Destroy(bool wait) = 0;
virtual bool AddBuffer(const void *lengthTaggedBuffer, bool blocking) = 0;
virtual bool AddCallback(AudioChannelCallback_t callback, bool blocking) = 0;
virtual void ClearAllCommands() = 0;
virtual void Stop() = 0;
};
class SoundSystem
{
public:
virtual AudioChannel *CreateChannel() = 0;
virtual void SetVolume(uint8_t vol) = 0;
virtual uint8_t GetVolume() const = 0;
static SoundSystem *GetInstance();
};
}