Pulp 1.88.0
Cross-platform audio plugin framework
Loading...
Searching...
No Matches
prepare_resources.hpp
Go to the documentation of this file.
1#pragma once
2
3// Prepare-time resource caps and the PrepareContext a host passes to
4// Processor::prepare(). processor.hpp includes this header, so existing
5// consumers keep compiling unchanged; new code should include it directly.
6
7#include <cstddef>
8#include <limits>
9
10namespace pulp::format {
11
28
46
54 std::size_t persistent_bytes = 0;
55 std::size_t block_scratch_bytes = 0;
56 int block_size = 0;
60 int midi_events = 0;
61 int voices = 0;
62
63 std::size_t total_bytes() const noexcept {
64 return block_scratch_bytes >
65 std::numeric_limits<std::size_t>::max() - persistent_bytes
66 ? std::numeric_limits<std::size_t>::max()
68 }
69};
70
72 const PrepareResourceUsage& usage,
73 const PrepareResourceLimits& limits) noexcept {
74 auto over_size = [](std::size_t value, std::size_t limit) {
75 return limit > 0 && value > limit;
76 };
77 auto over_int = [](int value, int limit) {
78 return limit > 0 && value > limit;
79 };
80
81 if (over_size(usage.persistent_bytes, limits.max_persistent_bytes))
83 if (over_size(usage.block_scratch_bytes, limits.max_block_scratch_bytes))
85 if (over_size(usage.total_bytes(), limits.max_total_bytes))
87 if (over_int(usage.block_size, limits.max_block_size))
89 if (over_int(usage.input_channels, limits.max_input_channels))
91 if (over_int(usage.output_channels, limits.max_output_channels))
93 if (over_int(usage.parameter_events, limits.max_parameter_events))
95 if (over_int(usage.midi_events, limits.max_midi_events))
97 if (over_int(usage.voices, limits.max_voices))
100}
101
109
110} // namespace pulp::format
What the product grants a device: the quota table indexed by capability tier and live thermal state.
Definition aax_editor.hpp:31
PrepareResourceLimit
Prepare context — passed once before processing starts.
Definition prepare_resources.hpp:16
@ OutputChannels
Definition prepare_resources.hpp:23
@ BlockSize
Definition prepare_resources.hpp:21
@ ParameterEvents
Definition prepare_resources.hpp:24
@ None
Definition prepare_resources.hpp:17
@ TotalBytes
Definition prepare_resources.hpp:20
@ PersistentBytes
Definition prepare_resources.hpp:18
@ BlockScratchBytes
Definition prepare_resources.hpp:19
@ MidiEvents
Definition prepare_resources.hpp:25
@ Voices
Definition prepare_resources.hpp:26
@ InputChannels
Definition prepare_resources.hpp:22
PrepareResourceLimit first_exceeded_prepare_resource_limit(const PrepareResourceUsage &usage, const PrepareResourceLimits &limits) noexcept
Definition prepare_resources.hpp:71
@ None
Definition ara.hpp:21
Definition prepare_resources.hpp:102
double sample_rate
Definition prepare_resources.hpp:103
int input_channels
Definition prepare_resources.hpp:105
PrepareResourceLimits resource_limits
Definition prepare_resources.hpp:107
int max_buffer_size
Definition prepare_resources.hpp:104
int output_channels
Definition prepare_resources.hpp:106
Optional prepare-time resource caps supplied by a host or test harness.
Definition prepare_resources.hpp:35
std::size_t max_total_bytes
Definition prepare_resources.hpp:38
int max_input_channels
Definition prepare_resources.hpp:40
int max_output_channels
Definition prepare_resources.hpp:41
int max_voices
Definition prepare_resources.hpp:44
int max_midi_events
Definition prepare_resources.hpp:43
std::size_t max_persistent_bytes
Definition prepare_resources.hpp:36
std::size_t max_block_scratch_bytes
Definition prepare_resources.hpp:37
int max_parameter_events
Definition prepare_resources.hpp:42
int max_block_size
Definition prepare_resources.hpp:39
Processor-reported prepared resource usage estimate.
Definition prepare_resources.hpp:53
int midi_events
Definition prepare_resources.hpp:60
int output_channels
Definition prepare_resources.hpp:58
int input_channels
Definition prepare_resources.hpp:57
std::size_t total_bytes() const noexcept
Definition prepare_resources.hpp:63
int block_size
Definition prepare_resources.hpp:56
int voices
Definition prepare_resources.hpp:61
std::size_t persistent_bytes
Definition prepare_resources.hpp:54
std::size_t block_scratch_bytes
Definition prepare_resources.hpp:55
int parameter_events
Definition prepare_resources.hpp:59