VISR  0.11.6
Versatile Interactive Scene Renderer
signal_routing.hpp
Go to the documentation of this file.
1 /* Copyright Institute of Sound and Vibration Research - All rights reserved */
2 
3 #ifndef VISR_LIBRCL_SIGNAL_ROUTING_HPP_INCLUDED
4 #define VISR_LIBRCL_SIGNAL_ROUTING_HPP_INCLUDED
5 
6 #include "export_symbols.hpp"
7 
10 
12 #include <libvisr/audio_input.hpp>
13 #include <libvisr/audio_output.hpp>
15 
16 #include <map>
17 #include <memory>
18 #include <tuple>
19 
20 namespace visr
21 {
22 namespace rcl
23 {
24 
31 class VISR_RCL_LIBRARY_SYMBOL SignalRouting: public AtomicComponent
32 {
33 public:
40  explicit SignalRouting( SignalFlowContext const & context,
41  char const * name,
42  CompositeComponent * parent = nullptr );
43 
47  ~SignalRouting();
48 
57  void setup( std::size_t inputWidth, std::size_t outputWidth, bool controlPort = false );
58 
68  void setup( std::size_t inputWidth,
69  std::size_t outputWidth,
70  pml::SignalRoutingParameter const & initialRouting,
71  bool controlPort = false);
72 
79  void process();
80 
85  void setRouting( pml::SignalRoutingParameter const & newRouting );
86 
95 
103 
104 private:
108  AudioInput mInput;
109 
113  AudioOutput mOutput;
114 
115  std::unique_ptr<ParameterInput< pml::DoubleBufferingProtocol, pml::SignalRoutingParameter > > mControlInput;
116 
122  using RoutingEntry = std::tuple<pml::SignalRoutingParameter::IndexType, pml::SignalRoutingParameter::IndexType>;
123 
124  using RoutingTable = std::set<RoutingEntry>;
125 
131  RoutingTable mRoutings;
132 
139 };
140 
141 } // namespace rcl
142 } // namespace visr
143 
144 #endif // #ifndef VISR_LIBRCL_SIGNAL_ROUTING_HPP_INCLUDED
Definition: signal_routing_parameter.hpp:32
Definition: options.cpp:10
Definition: atomic_component.hpp:21
Definition: composite_component.hpp:29
Definition: signal_routing.hpp:31
Definition: signal_flow_context.hpp:15
std::size_t IndexType
Definition: signal_routing_parameter.hpp:35