41 std::uint32_t max_block_size)
noexcept;
55 const void*
data() const noexcept {
58 std::size_t
size() const noexcept {
59 return descriptor_.state_size;
62 return descriptor_.state_alignment;
73 void* storage_ =
nullptr;
74 bool constructed_ = false;
90 explicit operator bool() const noexcept {
91 return domain_ !=
nullptr;
97 void release() noexcept;
109 return adopted_generation_.load(std::memory_order_relaxed);
114 void leave() noexcept {
115 busy_.clear(std::memory_order_release);
117 std::atomic_flag busy_ = ATOMIC_FLAG_INIT;
118 std::atomic<std::uint64_t> adopted_generation_{0};
123 using CellMap = std::map<SampleRegionStateKey, std::shared_ptr<SampleRegionStateCell>>;
128 static std::shared_ptr<SampleRegionStateBank>
129 create_fresh(std::span<const PreparedSampleRegionPlan> plans,
double sample_rate,
134 static std::shared_ptr<SampleRegionStateBank>
136 double sample_rate, std::uint32_t max_block_size,
140 std::span<const std::shared_ptr<SampleRegionStateCell>>
ordered_cells() const noexcept {
141 return ordered_cells_;
147 return binding_generation_;
161 std::uint32_t max_block_size) noexcept;
164 std::uint64_t binding_generation_ = 0;
165 std::uint64_t state_bytes_ = 0;
186 static std::shared_ptr<PreparedSampleRegion>
191 return plan_.region_id;
199 const std::shared_ptr<SampleRegionStateBank>&
bank() const noexcept {
206 int num_samples)
noexcept;
209 struct BoundarySlot {
210 std::uint32_t boundary_index = 0;
211 std::uint32_t slot = 0;
213 struct KernelRuntime {
215 std::shared_ptr<SampleRegionStateCell> cell_keepalive;
216 void*
state =
nullptr;
219 PreparedSampleRegion(PreparedSampleRegionPlan plan, std::shared_ptr<SampleRegionStateBank> bank,
220 const SampleRegionParameterBinding* parameters)
noexcept;
221 bool finish_prepare() noexcept;
223 PreparedSampleRegionPlan plan_;
224 std::shared_ptr<SampleRegionStateBank> bank_;
225 const SampleRegionParameterBinding* parameters_ =
nullptr;
226 std::vector<KernelRuntime> kernels_;
227 std::vector<
float> scalar_slots_;
228 std::vector<
float> promoted_values_;
229 std::vector<BoundarySlot> input_boundaries_;
230 std::vector<BoundarySlot> output_boundaries_;
231 SampleRegionRuntimeReceipt receipt_;
Non-owning view over multi-channel audio sample data.
Definition buffer.hpp:30
PreparedSampleRegion(const PreparedSampleRegion &)=delete
const SampleRegionRuntimeReceipt & receipt() const noexcept
Definition sample_region_runtime.hpp:196
const std::shared_ptr< SampleRegionStateBank > & bank() const noexcept
Definition sample_region_runtime.hpp:199
SampleRegionId region_id() const noexcept
Definition sample_region_runtime.hpp:190
PreparedSampleRegion & operator=(const PreparedSampleRegion &)=delete
static std::shared_ptr< PreparedSampleRegion > create(PreparedSampleRegionPlan plan, std::shared_ptr< SampleRegionStateBank > bank, const SampleRegionParameterBinding *parameters) noexcept
const PreparedSampleRegionPlan & plan() const noexcept
Definition sample_region_runtime.hpp:193
void process(audio::BufferView< float > &output, const audio::BufferView< const float > &input, int num_samples) noexcept
Definition sample_region_runtime.hpp:81
friend class SampleRegionExecutionDomain
Definition sample_region_runtime.hpp:95
Admission(Admission &&other) noexcept
Admission & operator=(Admission &&other) noexcept
Admission & operator=(const Admission &)=delete
Admission(const Admission &)=delete
Definition sample_region_runtime.hpp:79
Admission try_admit(std::uint64_t binding_generation) noexcept
std::uint64_t adopted_generation() const noexcept
Definition sample_region_runtime.hpp:108
SampleRegionExecutionDomain()=default
Definition sample_region_parameters.hpp:80
std::uint64_t binding_generation() const noexcept
Definition sample_region_runtime.hpp:146
bool was_retained(const SampleRegionStateKey &key) const noexcept
static std::shared_ptr< SampleRegionStateBank > adopt(std::span< const PreparedSampleRegionPlan > plans, const SampleRegionStateBank &live, double sample_rate, std::uint32_t max_block_size, std::uint64_t binding_generation) noexcept
SampleRegionStateBank & operator=(const SampleRegionStateBank &)=delete
SampleRegionStateBank(const SampleRegionStateBank &)=delete
std::span< const std::shared_ptr< SampleRegionStateCell > > ordered_cells() const noexcept
Definition sample_region_runtime.hpp:140
std::map< SampleRegionStateKey, std::shared_ptr< SampleRegionStateCell > > CellMap
Definition sample_region_runtime.hpp:123
std::uint64_t state_bytes() const noexcept
Definition sample_region_runtime.hpp:149
SampleRegionExecutionDomain & domain() const noexcept
Definition sample_region_runtime.hpp:143
std::shared_ptr< SampleRegionStateCell > cell(const SampleRegionStateKey &key) const noexcept
static std::shared_ptr< SampleRegionStateBank > create_fresh(std::span< const PreparedSampleRegionPlan > plans, double sample_rate, std::uint32_t max_block_size, std::uint64_t binding_generation) noexcept
Definition sample_region_runtime.hpp:31
const SampleRegionStateKey & key() const noexcept
Definition sample_region_runtime.hpp:43
SampleRegionStateCell(const SampleRegionStateCell &)=delete
static std::shared_ptr< SampleRegionStateCell > create(SampleRegionStateKey key, const SampleKernelDescriptor &descriptor, const PreparedSampleKernelConfig &config, double sample_rate, std::uint32_t max_block_size) noexcept
std::size_t alignment() const noexcept
Definition sample_region_runtime.hpp:61
const SampleKernelDescriptor & descriptor() const noexcept
Definition sample_region_runtime.hpp:46
std::size_t size() const noexcept
Definition sample_region_runtime.hpp:58
const void * data() const noexcept
Definition sample_region_runtime.hpp:55
SampleRegionStateCell & operator=(const SampleRegionStateCell &)=delete
const PreparedSampleKernelConfig & config() const noexcept
Definition sample_region_runtime.hpp:49
void * data() noexcept
Definition sample_region_runtime.hpp:52
std::uint32_t NodeId
Definition graph_types.hpp:7
Bounded event contracts shared by host ingress and graph-authored nodes.
Definition anticipation_eligibility.hpp:9
std::uint32_t SampleRegionId
Definition sample_region_proof.hpp:13
SequencerStateChannel is the audio-safe transport for a plugin's structured NON-parameter state: the ...
Definition audio_device_manager.hpp:48
Definition sample_region_plan.hpp:10
Definition custom_node_type.hpp:346
Definition sample_region_plan.hpp:45
Definition custom_node_type.hpp:386
Definition sample_region_proof.hpp:88
Definition sample_region_runtime.hpp:171
std::uint32_t scalar_slots
Definition sample_region_runtime.hpp:176
std::uint64_t private_boundary_copy_bytes
Definition sample_region_runtime.hpp:175
SampleRegionId region_id
Definition sample_region_runtime.hpp:172
SampleRegionResourceStats resources
Definition sample_region_runtime.hpp:173
std::uint32_t retained_state_cells
Definition sample_region_runtime.hpp:177
std::uint64_t physical_executor_bytes
Definition sample_region_runtime.hpp:174
std::uint32_t fresh_state_cells
Definition sample_region_runtime.hpp:178
Definition sample_region_runtime.hpp:20
std::string type_id
Definition sample_region_runtime.hpp:23
friend bool operator==(const SampleRegionStateKey &, const SampleRegionStateKey &)=default
SampleRegionId region_id
Definition sample_region_runtime.hpp:21
friend bool operator<(const SampleRegionStateKey &lhs, const SampleRegionStateKey &rhs) noexcept
NodeId node
Definition sample_region_runtime.hpp:22
int version
Definition sample_region_runtime.hpp:24