Loading...
Searching...
No Matches
ALSAMiniAudioInterface.hpp
1#pragma once
2#if defined(__linux__)
3#include <Audio/AudioInterface.hpp>
4
5#include <ossia/audio/miniaudio_protocol.hpp>
6#if OSSIA_ENABLE_MINIAUDIO
7#include <Audio/GenericMiniAudioInterface.hpp>
8
9#include <ossia/audio/libasound.hpp>
10namespace Audio
11{
12class ALSAMiniAudioFactory final : public GenericMiniAudioFactory
13{
14 SCORE_CONCRETE("e0c533da-a1f4-4795-90b5-a805cdfcb79f")
15public:
16 ALSAMiniAudioFactory() { rescan(); }
17 ~ALSAMiniAudioFactory() override { }
18 QString prettyName() const override { return QObject::tr("ALSA (MiniAudio)"); }
19 bool available() const noexcept override
20 {
21 try
22 {
23 ossia::libasound::instance();
24 return true;
25 }
26 catch(...)
27 {
28 return false;
29 }
30 }
31
32 bool
33 compareDeviceId(const ma_device_id& id, const QString& str) const noexcept override
34 {
35 return id.alsa == str;
36 }
37 bool
38 compareDeviceId(const ma_device_id& id, std::string_view str) const noexcept override
39 {
40 return id.alsa == str;
41 }
42 void setDeviceId(ma_device_id& id, const QString& str) const noexcept override
43 {
44 auto u = str.toUtf8();
45 std::fill_n(id.alsa, 256, 0);
46 std::copy_n(u.data(), std::min((int)u.size(), 255), id.alsa);
47 }
48
49 QString deviceIdToString(const ma_device_id& id) const noexcept override
50 {
51 return QString::fromUtf8(id.alsa);
52 }
53};
54}
55#endif
56#endif