26 struct BaseProcessingCache
28 units::sample_rate_t sample_rate_;
31 std::vector<dsp::ProcessorParameter *> live_params_;
32 std::vector<dsp::PortPtrVariant> live_input_ports_;
33 std::vector<dsp::PortPtrVariant> live_output_ports_;
39 dsp::PortRegistry &port_registry_;
54 void add_input_port (
const dsp::PortUuidReference &uuid);
55 void add_output_port (
const dsp::PortUuidReference &uuid);
56 void add_parameter (
const dsp::ProcessorParameterUuidReference &uuid);
58 auto &get_input_ports ()
const {
return input_ports_; }
59 auto &get_output_ports ()
const {
return output_ports_; }
60 auto &get_parameters ()
const {
return params_; }
81 units::sample_rate_t sample_rate,
95 const dsp::
ITransport &transport) noexcept [[clang::nonblocking]];
97 virtual
void custom_prepare_for_processing (
98 const graph::GraphNode * node,
99 units::sample_rate_t sample_rate,
104 virtual void custom_release_resources () { }
106 auto dependencies ()
const {
return dependencies_; }
109 static constexpr auto kProcessorNameKey =
"processorName"sv;
110 static constexpr auto kInputPortsKey =
"inputPorts"sv;
111 static constexpr auto kOutputPortsKey =
"outputPorts"sv;
112 static constexpr auto kParametersKey =
"parameters"sv;
113 friend void to_json (nlohmann::json &j,
const ProcessorBase &p);
114 friend void from_json (
const nlohmann::json &j, ProcessorBase &p);
117 ProcessorBaseDependencies dependencies_;
118 utils::Utf8String name_;
119 std::vector<dsp::PortUuidReference> input_ports_;
120 std::vector<dsp::PortUuidReference> output_ports_;
121 std::vector<dsp::ProcessorParameterUuidReference> params_;
124 std::unique_ptr<BaseProcessingCache> processing_caches_;
126 BOOST_DESCRIBE_CLASS (ProcessorBase, (), (), (), (name_))