VISR
0.11.8
Versatile Interactive Scene Renderer
channel_object_routing_calculator.hpp
Go to the documentation of this file.
1
/* Copyright Institute of Sound and Vibration Research - All rights reserved */
2
3
#ifndef VISR_LIBRCL_CHANNEL_OBJECT_ROUTING_CALCULATOR_HPP_INCLUDED
4
#define VISR_LIBRCL_CHANNEL_OBJECT_ROUTING_CALCULATOR_HPP_INCLUDED
5
6
#include "
export_symbols.hpp
"
7
8
#include <
libvisr/atomic_component.hpp
>
9
#include <
libvisr/parameter_input.hpp
>
10
#include <
libvisr/parameter_output.hpp
>
11
12
#include <
libobjectmodel/channel_object.hpp
>
13
#include <
libobjectmodel/object.hpp
>
// needed basically for type definitions
14
15
#include <
libpml/double_buffering_protocol.hpp
>
16
#include <
libpml/object_vector.hpp
>
17
#include <
libpml/signal_routing_parameter.hpp
>
18
19
#include <vector>
20
#include <map>
21
22
namespace
visr
23
{
24
// forward declarations
25
namespace
panning
26
{
27
class
LoudspeakerArray;
28
}
29
30
namespace
rcl
31
{
32
36
class
VISR_RCL_LIBRARY_SYMBOL
ChannelObjectRoutingCalculator
:
public
AtomicComponent
37
{
38
public
:
42
using
CoefficientType
=
SampleType
;
43
52
explicit
ChannelObjectRoutingCalculator
(
SignalFlowContext
const
& context,
53
char
const
* name,
54
CompositeComponent
* parent,
55
std::size_t numberOfObjectChannels,
56
panning::LoudspeakerArray
const
& config );
57
61
ChannelObjectRoutingCalculator
(
ChannelObjectRoutingCalculator
const
& ) =
delete
;
62
66
~
ChannelObjectRoutingCalculator
();
67
68
void
process()
override
;
69
70
private
:
77
void
process(
pml::ObjectVector
const
& objects,
pml::SignalRoutingParameter
& routings );
78
79
ParameterInput<pml::DoubleBufferingProtocol, pml::ObjectVector>
mObjectInput;
80
ParameterOutput<pml::DoubleBufferingProtocol, pml::SignalRoutingParameter>
mRoutingOutput;
81
85
std::size_t
const
cNumberOfObjectChannels;
86
87
using
ChannelLookup = std::map< objectmodel::ChannelObject::OutputChannelId, std::size_t >;
88
89
ChannelLookup mLookup;
90
};
91
92
}
// namespace rcl
93
}
// namespace visr
94
95
#endif // #ifndef VISR_LIBRCL_CHANNEL_OBJECT_ROUTING_CALCULATOR_HPP_INCLUDED
double_buffering_protocol.hpp
visr::ParameterOutput
Definition:
parameter_output.hpp:45
parameter_input.hpp
signal_routing_parameter.hpp
visr::rcl::ChannelObjectRoutingCalculator
Definition:
channel_object_routing_calculator.hpp:36
object.hpp
channel_object.hpp
visr::pml::SignalRoutingParameter
Definition:
signal_routing_parameter.hpp:32
visr
Definition:
options.cpp:10
visr::AtomicComponent
Definition:
atomic_component.hpp:21
visr::rcl::ChannelObjectRoutingCalculator::CoefficientType
SampleType CoefficientType
Definition:
channel_object_routing_calculator.hpp:42
object_vector.hpp
visr::ParameterInput
Definition:
parameter_input.hpp:45
visr::CompositeComponent
Definition:
composite_component.hpp:29
visr::panning::LoudspeakerArray
Definition:
LoudspeakerArray.h:42
parameter_output.hpp
visr::SignalFlowContext
Definition:
signal_flow_context.hpp:15
export_symbols.hpp
atomic_component.hpp
visr::SampleType
float SampleType
Definition:
constants.hpp:14
visr::pml::ObjectVector
Definition:
object_vector.hpp:25
src
librcl
channel_object_routing_calculator.hpp
Generated on Fri Nov 16 2018 13:49:44 for VISR by
1.8.14