OSSIA
Open Scenario System for Interactive Application
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
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 void setup_tree(int inputs, int outputs);
18 void advance_tick(std::size_t count);
19 void setup_buffers(audio_tick_state state);
20
21 bool pull(ossia::net::parameter_base&) override;
22 bool push(const ossia::net::parameter_base&, const ossia::value& v) override;
23 bool push_bundle(const std::vector<const ossia::net::parameter_base*>&) override;
24 bool push_raw(const ossia::net::full_parameter_data&) override;
25 bool push_raw_bundle(const std::vector<ossia::net::full_parameter_data>&) override;
26 bool observe(ossia::net::parameter_base&, bool) override;
27 bool update(ossia::net::node_base& node_base) override;
28 void set_device(ossia::net::device_base& dev) override;
29
30 void register_parameter(mapped_audio_parameter& p);
31 void unregister_parameter(mapped_audio_parameter& p);
32 void register_parameter(virtual_audio_parameter& p);
33 void unregister_parameter(virtual_audio_parameter& p);
34
35 [[nodiscard]] ossia::net::device_base& get_device() const { return *m_dev; }
36 ossia::audio_parameter* main_audio_in{};
37 ossia::audio_parameter* main_audio_out{};
38 std::vector<ossia::audio_parameter*> audio_ins;
39 std::vector<ossia::audio_parameter*> audio_outs;
40
41 std::vector<ossia::mapped_audio_parameter*> in_mappings;
42 std::vector<ossia::mapped_audio_parameter*> out_mappings;
43 std::vector<ossia::virtual_audio_parameter*> virtaudio;
44
45protected:
47};
48
49}
Root of a device tree.
Definition ossia/network/base/device.hpp:58
The node_base class.
Definition node.hpp:48
The parameter_base class.
Definition ossia/network/base/parameter.hpp:48
The protocol_base class.
Definition protocol.hpp:40
The value class.
Definition value.hpp:173
Definition git_info.h:7
Full information about a parameter.
Definition parameter_data.hpp:61