Iros
Loading...
Searching...
No Matches
pipewire.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <pipewire/loop.h>
4
#include <pipewire/main-loop.h>
5
#include <pipewire/pipewire.h>
6
#include <pipewire/stream.h>
7
8
#include "
di/container/tree/tree_map.h
"
9
#include "
di/function/container/function.h
"
10
#include "
di/util/exchange.h
"
11
#include "
di/util/immovable.h
"
12
#include "
di/util/noncopyable.h
"
13
#include "
di/vocab/error/result.h
"
14
#include "
diusaudio/frame.h
"
15
#include "
diusaudio/frame_info.h
"
16
#include "
diusaudio/sink.h
"
17
18
namespace
audio::linux
{
19
class
PipewireLibrary
:
di::NonCopyable
{
20
public
:
21
PipewireLibrary
();
22
PipewireLibrary
(
PipewireLibrary
&& other) : m_active(
di
::
exchange
(other.m_active, false)) {}
23
~PipewireLibrary
();
24
25
private
:
26
bool
m_active {
false
};
27
};
28
29
class
PipewireMainloop
:
di::Immovable
{
30
public
:
31
PipewireMainloop
();
32
~PipewireMainloop
();
33
34
void
run
();
35
void
quit
();
36
void
register_signal_handler
(
u32
signo,
di::Function
<
void
()>);
37
38
auto
raw_loop
() const -> pw_loop*;
39
40
private:
41
pw_main_loop* m_loop {
nullptr
};
42
di::TreeMap
<
u32
,
di::Function
<void()>> m_handlers;
43
};
44
45
class
PipewireStream
:
di::Immovable
{
46
public
:
47
explicit
PipewireStream
(
PipewireMainloop
& loop,
SinkCallback
callback,
FrameInfo
info);
48
~PipewireStream
();
49
50
void
connect
();
51
52
private
:
53
pw_stream* m_stream {
nullptr
};
54
SinkCallback
m_sink_callback;
55
FrameInfo
m_info;
56
};
57
58
auto
make_pipewire_sink
(
SinkCallback
callback,
FrameInfo
info) ->
di::Result<Sink>
;
59
}
audio::linux::PipewireLibrary::~PipewireLibrary
~PipewireLibrary()
audio::linux::PipewireLibrary::PipewireLibrary
PipewireLibrary(PipewireLibrary &&other)
Definition
pipewire.h:22
audio::linux::PipewireLibrary::PipewireLibrary
PipewireLibrary()
audio::linux::PipewireMainloop
Definition
pipewire.h:29
audio::linux::PipewireMainloop::raw_loop
auto raw_loop() const -> pw_loop *
audio::linux::PipewireMainloop::run
void run()
audio::linux::PipewireMainloop::quit
void quit()
audio::linux::PipewireMainloop::register_signal_handler
void register_signal_handler(u32 signo, di::Function< void()>)
audio::linux::PipewireMainloop::PipewireMainloop
PipewireMainloop()
audio::linux::PipewireMainloop::~PipewireMainloop
~PipewireMainloop()
audio::linux::PipewireStream::PipewireStream
PipewireStream(PipewireMainloop &loop, SinkCallback callback, FrameInfo info)
audio::linux::PipewireStream::~PipewireStream
~PipewireStream()
audio::linux::PipewireStream::connect
void connect()
di::container::TreeMap
Definition
tree_map.h:80
di::function::function_ns::Function
Definition
function.h:365
exchange.h
frame.h
frame_info.h
function.h
immovable.h
audio::linux
Definition
pipewire.h:18
audio::linux::make_pipewire_sink
auto make_pipewire_sink(SinkCallback callback, FrameInfo info) -> di::Result< Sink >
audio::SinkCallback
di::Function< void(ExclusiveFrame &)> SinkCallback
Definition
sink.h:21
di::types::u32
__UINT32_TYPE__ u32
Definition
integers.h:11
di::vocab::Result
Expected< T, Error > Result
Definition
result.h:8
di
Definition
zstring_parser.h:9
di::exchange
constexpr auto exchange(T &object, U &&new_value) -> T
Definition
exchange.h:8
noncopyable.h
result.h
sink.h
audio::FrameInfo
Definition
frame_info.h:39
di::util::Immovable
Definition
immovable.h:4
di::util::NonCopyable
Definition
noncopyable.h:4
tree_map.h
libs
diusaudio
linux
pipewire.h
Generated by
1.13.0