2#include <ossia/audio/audio_tick.hpp>
3#include <ossia/network/base/protocol.hpp>
4#include <ossia/network/generic/generic_device.hpp>
9class virtual_audio_parameter;
10class mapped_audio_parameter;
11class OSSIA_EXPORT audio_protocol final :
public ossia::net::protocol_base
15 ~audio_protocol()
override;
18 void setup_tree(
int inputs,
int outputs);
19 void advance_tick(std::size_t count);
20 void setup_buffers(audio_tick_state state);
23 void clear_buffers() noexcept;
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;
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);
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;
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;
51 ossia::net::device_base* m_dev{};