OSSIA
Open Scenario System for Interactive Application
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 
6 namespace ossia
7 {
8 class audio_parameter;
9 class virtual_audio_parameter;
10 class mapped_audio_parameter;
11 class OSSIA_EXPORT audio_protocol final : public ossia::net::protocol_base
12 {
13 public:
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 
45 protected:
46  ossia::net::device_base* m_dev{};
47 };
48 
49 }
Root of a device tree.
Definition: ossia/network/base/device.hpp:58
The node_base class.
Definition: network/base/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