Loading...
Searching...
No Matches
CoreAudioInterface.hpp
1#pragma once
2#if defined(__APPLE__)
3#include <Audio/AudioInterface.hpp>
4
5#include <ossia/audio/miniaudio_protocol.hpp>
6#if OSSIA_ENABLE_MINIAUDIO
7#include <Audio/GenericMiniAudioInterface.hpp>
8namespace Audio
9{
10class CoreAudioFactory final : public GenericMiniAudioFactory
11{
12 SCORE_CONCRETE("85115103-694a-4a3b-9274-76ef47aec5a9")
13public:
14 CoreAudioFactory() { rescan(); }
15 ~CoreAudioFactory() override { }
16 QString prettyName() const override { return QObject::tr("CoreAudio"); }
17 bool available() const noexcept override { return true; }
18
19 bool
20 compareDeviceId(const ma_device_id& id, const QString& str) const noexcept override
21 {
22 return id.coreaudio == str;
23 }
24 bool
25 compareDeviceId(const ma_device_id& id, std::string_view str) const noexcept override
26 {
27 return id.coreaudio == str;
28 }
29 void setDeviceId(ma_device_id& id, const QString& str) const noexcept override
30 {
31 auto u = str.toUtf8();
32 std::fill_n(id.coreaudio, 256, 0);
33 std::copy_n(u.data(), std::min((int)u.size(), 255), id.coreaudio);
34 }
35
36 QString deviceIdToString(const ma_device_id& id) const noexcept override
37 {
38 return QString::fromUtf8(id.coreaudio);
39 }
40};
41}
42#endif
43#endif