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
10#include "di/util/exchange.h"
11#include "di/util/immovable.h"
12#include "di/util/noncopyable.h"
14#include "diusaudio/frame.h"
16#include "diusaudio/sink.h"
17
18namespace audio::linux {
20public:
22 PipewireLibrary(PipewireLibrary&& other) : m_active(di::exchange(other.m_active, false)) {}
24
25private:
26 bool m_active { false };
27};
28
30public:
33
34 void run();
35 void quit();
37
38 auto raw_loop() const -> pw_loop*;
39
40private:
41 pw_main_loop* m_loop { nullptr };
42 di::TreeMap<u32, di::Function<void()>> m_handlers;
43};
44
46public:
47 explicit PipewireStream(PipewireMainloop& loop, SinkCallback callback, FrameInfo info);
49
50 void connect();
51
52private:
53 pw_stream* m_stream { nullptr };
54 SinkCallback m_sink_callback;
55 FrameInfo m_info;
56};
57
59}
PipewireLibrary(PipewireLibrary &&other)
Definition pipewire.h:22
Definition pipewire.h:29
auto raw_loop() const -> pw_loop *
void register_signal_handler(u32 signo, di::Function< void()>)
PipewireStream(PipewireMainloop &loop, SinkCallback callback, FrameInfo info)
Definition tree_map.h:80
Definition function.h:365
Definition pipewire.h:18
auto make_pipewire_sink(SinkCallback callback, FrameInfo info) -> di::Result< Sink >
di::Function< void(ExclusiveFrame &)> SinkCallback
Definition sink.h:21
__UINT32_TYPE__ u32
Definition integers.h:11
Expected< T, Error > Result
Definition result.h:8
Definition zstring_parser.h:9
constexpr auto exchange(T &object, U &&new_value) -> T
Definition exchange.h:8
Definition frame_info.h:39
Definition immovable.h:4
Definition noncopyable.h:4