EHS
AudioDevice_PW.h
Go to the documentation of this file.
1#pragma once
2
3#include "ehs/EHS.h"
4#include "BaseAudioDevice.h"
5
6#include <pipewire/pipewire.h>
7#include <pipewire/loop.h>
8#include <pipewire/context.h>
9#include <pipewire/stream.h>
10#include <spa/param/audio/format-utils.h>
11
12namespace ehs
13{
14 class EHS_LIB_IO AudioDevice final : public BaseAudioDevice
15 {
16 private:
17 static Array<AudioDevice> devices;
18 static AudioDevice defOut;
19 static AudioDevice defIn;
20
21 UInt_32 id;
22 Str_8 name;
23 pw_loop *loop;
24 pw_context *context;
25 pw_core *core;
26 pw_stream *input;
27 pw_stream *output;
28
29 static void RegistryEventGlobal(void *data, UInt_32 id, UInt_32 permissions, const char *type, UInt_32 version, const spa_dict *props);
30
31 static void RegistryEventGlobalRemove(void *data, UInt_32 id);
32
33 static void OnParamChanged(void *data, UInt_32 id, const spa_pod *param);
34
35 public:
36 ~AudioDevice() override;
37
39
40 AudioDevice(AudioDevice&& device) noexcept;
41
42 AudioDevice(const AudioDevice& device);
43
44 AudioDevice& operator=(AudioDevice&& device) noexcept;
45
46 AudioDevice& operator=(const AudioDevice& device);
47
48 void OpenStream() override;
49
50 void CloseStream() override;
51
52 UInt_64 SendStream(const void *data, UInt_64 size) override;
53
54 UInt_64 ReceiveStream(void *data, UInt_64 size) override;
55
56 bool IsStreaming() const override;
57
58 bool IsValid() const override;
59
60 static AudioDevice GetDefault(AudioDeviceType type);
61
63
64 private:
65 Str_8 GetCategory() const;
66 };
67}
Definition: Array.h:16
Definition: AudioDevice_PW.h:15
Definition: BaseAudioDevice.h:27
Definition: Anchor.h:6
AudioDeviceState
Definition: BaseAudioDevice.h:19
AudioDeviceType
Definition: BaseAudioDevice.h:12
unsigned int UInt_32
Definition: Types.h:49