2023-12-17 03:29:08 -08:00
|
|
|
#pragma once
|
|
|
|
|
2024-01-14 09:38:57 -08:00
|
|
|
#include "ehs/EHS.h"
|
2023-12-17 03:29:08 -08:00
|
|
|
#include "BaseAudioDevice.h"
|
|
|
|
|
|
|
|
#include <alsa/asoundlib.h>
|
|
|
|
|
2023-12-17 15:56:13 -08:00
|
|
|
namespace ehs
|
2023-12-17 03:29:08 -08:00
|
|
|
{
|
|
|
|
class AudioDevice : public BaseAudioDevice
|
|
|
|
{
|
|
|
|
private:
|
|
|
|
snd_pcm_t* hdl;
|
|
|
|
|
|
|
|
public:
|
|
|
|
~AudioDevice() override;
|
|
|
|
|
|
|
|
AudioDevice();
|
|
|
|
|
|
|
|
AudioDevice(AudioDevice&& device) noexcept;
|
|
|
|
|
|
|
|
AudioDevice(const AudioDevice& device);
|
|
|
|
|
|
|
|
AudioDevice& operator=(AudioDevice&& device) noexcept;
|
|
|
|
|
|
|
|
AudioDevice& operator=(const AudioDevice& device);
|
|
|
|
|
|
|
|
void Release() override;
|
|
|
|
|
|
|
|
void OpenStream() override;
|
|
|
|
|
|
|
|
void CloseStream() override;
|
|
|
|
|
|
|
|
UInt_64 GetAvailFrames() const override;
|
|
|
|
|
|
|
|
Byte* Map(UInt_64* offset, UInt_64* frames) override;
|
|
|
|
|
|
|
|
void UnMap(const UInt_64 offset, const UInt_64 frames) override;
|
|
|
|
|
|
|
|
bool IsValid() const override;
|
|
|
|
|
|
|
|
static AudioDevice GetDefault(const AudioDeviceType type);
|
|
|
|
|
|
|
|
static Array<AudioDevice> Get(const AudioDeviceType type, const AudioDeviceState state);
|
|
|
|
};
|
|
|
|
}
|