VISR
0.12.0
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
8
#include <
libpml/signal_routing_parameter.hpp
>
9
#include <
libpml/double_buffering_protocol.hpp
>
10
11
#include <
libvisr/atomic_component.hpp
>
12
#include <
libvisr/audio_input.hpp
>
13
#include <
libvisr/audio_output.hpp
>
14
#include <
libvisr/parameter_input.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
94
void
setRouting(
pml::SignalRoutingParameter::IndexType
in,
pml::SignalRoutingParameter::IndexType
out );
95
102
bool
removeRouting(
pml::SignalRoutingParameter::IndexType
in,
pml::SignalRoutingParameter::IndexType
out );
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
138
void
checkRoutingIndexRanges(
pml::SignalRoutingParameter::IndexType
in,
pml::SignalRoutingParameter::IndexType
out );
139
};
140
141
}
// namespace rcl
142
}
// namespace visr
143
144
#endif // #ifndef VISR_LIBRCL_SIGNAL_ROUTING_HPP_INCLUDED
double_buffering_protocol.hpp
parameter_input.hpp
signal_routing_parameter.hpp
visr::AudioOutputT< SampleType >
visr::pml::SignalRoutingParameter
Definition:
signal_routing_parameter.hpp:32
visr
Definition:
options.cpp:10
visr::AtomicComponent
Definition:
atomic_component.hpp:21
visr::CompositeComponent
Definition:
composite_component.hpp:29
visr::rcl::SignalRouting
Definition:
signal_routing.hpp:31
visr::SignalFlowContext
Definition:
signal_flow_context.hpp:15
audio_output.hpp
visr::AudioInputT< SampleType >
export_symbols.hpp
visr::pml::SignalRoutingParameter::IndexType
std::size_t IndexType
Definition:
signal_routing_parameter.hpp:35
atomic_component.hpp
audio_input.hpp
src
librcl
signal_routing.hpp
Generated on Mon Nov 19 2018 19:03:18 for VISR by
1.8.14