OSSIA
Open Scenario System for Interactive Application
Loading...
Searching...
No Matches
audio_protocol.hpp
1#pragma once
2#include <ossia/audio/audio_tick.hpp>
3#include <ossia/network/base/protocol.hpp>
4#include <ossia/network/generic/generic_device.hpp>
5
6namespace ossia
7{
8class audio_parameter;
9class virtual_audio_parameter;
10class mapped_audio_parameter;
11class OSSIA_EXPORT audio_protocol final : public ossia::net::protocol_base
12{
13public:
14 audio_protocol();
15 ~audio_protocol() override;
16
17 // Allocates and mutates the node tree: must not be called from the audio thread.
18 void setup_tree(int inputs, int outputs);
19 void advance_tick(std::size_t count);
20 void setup_buffers(audio_tick_state state);
21
22 // Drops every span pointing into the driver's buffers.
23 void clear_buffers() noexcept;
24
25 bool pull(ossia::net::parameter_base&) override;
26 bool push(const ossia::net::parameter_base&, const ossia::value& v) override;
27 bool push_bundle(const std::vector<const ossia::net::parameter_base*>&) override;
28 bool push_raw(const ossia::net::full_parameter_data&) override;
29 bool push_raw_bundle(const std::vector<ossia::net::full_parameter_data>&) override;
30 bool observe(ossia::net::parameter_base&, bool) override;
31 bool update(ossia::net::node_base& node_base) override;
32 void set_device(ossia::net::device_base& dev) override;
33 void stop() override;
34
35 void register_parameter(mapped_audio_parameter& p);
36 void unregister_parameter(mapped_audio_parameter& p);
37 void register_parameter(virtual_audio_parameter& p);
38 void unregister_parameter(virtual_audio_parameter& p);
39
40 [[nodiscard]] ossia::net::device_base& get_device() const { return *m_dev; }
41 ossia::audio_parameter* main_audio_in{};
42 ossia::audio_parameter* main_audio_out{};
43 std::vector<ossia::audio_parameter*> audio_ins;
44 std::vector<ossia::audio_parameter*> audio_outs;
45
46 std::vector<ossia::mapped_audio_parameter*> in_mappings;
47 std::vector<ossia::mapped_audio_parameter*> out_mappings;
48 std::vector<ossia::virtual_audio_parameter*> virtaudio;
49
50protected:
51 ossia::net::device_base* m_dev{};
52};
53
54}
Definition git_info.h:7