EHS
Loading...
Searching...
No Matches
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
61
63
64 private:
65 Str_8 GetCategory() const;
66 };
67}
Definition Array.h:16
void CloseStream() override
Definition AudioDevice_PW.cpp:249
AudioDevice()
Definition AudioDevice_PW.cpp:95
void OpenStream() override
Definition AudioDevice_PW.cpp:161
UInt_64 ReceiveStream(void *data, UInt_64 size) override
Definition AudioDevice_PW.cpp:313
bool IsValid() const override
Definition AudioDevice_PW.cpp:352
AudioDevice & operator=(AudioDevice &&device) noexcept
Definition AudioDevice_PW.cpp:118
UInt_64 SendStream(const void *data, UInt_64 size) override
Definition AudioDevice_PW.cpp:278
bool IsStreaming() const override
Definition AudioDevice_PW.cpp:347
static AudioDevice GetDefault(AudioDeviceType type)
Definition AudioDevice_PW.cpp:357
static Array< AudioDevice > Get(AudioDeviceType type, AudioDeviceState state)
Definition AudioDevice_PW.cpp:368
BaseAudioDevice()
Definition BaseAudioDevice.cpp:6
AudioDeviceType type
Definition BaseAudioDevice.h:29
Definition Anchor.h:6
AudioDeviceState
Definition BaseAudioDevice.h:19
AudioDeviceType
Definition BaseAudioDevice.h:12
unsigned int UInt_32
Definition Types.h:49
Str< Char_8, UInt_64 > Str_8
Definition Str.h:1902