mirror of
https://github.com/robbert-vdh/yabridge.git
synced 2026-05-14 20:40:03 +02:00
Reword caching to prefetching
Since that makes it much clearer what we're actually doing. With old `cache_time_info` was actually caching the response, but now we're querying it before the plugin has even requested the information.
This commit is contained in:
@@ -556,16 +556,16 @@ struct AudioBuffers {
|
||||
int sample_frames;
|
||||
|
||||
/**
|
||||
* We'll send the current transport information as part of an audio
|
||||
* processing call. This lets us a void an unnecessary callback (or in some
|
||||
* cases, more than one) during every processing cycle.
|
||||
* We'll prefetch the current transport information as part of handling an
|
||||
* audio processing call. This lets us a void an unnecessary callback (or in
|
||||
* some cases, more than one) during every processing cycle.
|
||||
*/
|
||||
std::optional<VstTimeInfo> current_time_info;
|
||||
|
||||
/**
|
||||
* Some plugins will also ask for the current process level during audio
|
||||
* processing. To prevent unnecessary expensive callbacks, we'll send this
|
||||
* information along with the processing call.
|
||||
* processing. To prevent unnecessary expensive callbacks there, we'll
|
||||
* prefetch this information as well.
|
||||
*/
|
||||
int current_process_level;
|
||||
|
||||
|
||||
@@ -568,8 +568,8 @@ void Vst2PluginBridge::do_process(T** inputs, T** outputs, int sample_frames) {
|
||||
current_time_info = *returned_time_info;
|
||||
}
|
||||
|
||||
// Some plugisn also ask for the current process level, so we'll cache that
|
||||
// information as well
|
||||
// Some plugisn also ask for the current process level, so we'll prefetch
|
||||
// that information as well
|
||||
const int current_process_level = static_cast<int>(host_callback_function(
|
||||
&plugin, audioMasterGetCurrentProcessLevel, 0, 0, nullptr, 0.0));
|
||||
if (returned_time_info) {
|
||||
|
||||
@@ -188,7 +188,7 @@ Vst2Bridge::Vst2Bridge(MainContext& main_context,
|
||||
[&](AudioBuffers request, std::vector<uint8_t>& buffer) {
|
||||
// Since the value cannot change during this processing cycle,
|
||||
// we'll send the current transport information as part of the
|
||||
// request so we cache it to avoid unnecessary callbacks from
|
||||
// request so we prefetch it to avoid unnecessary callbacks from
|
||||
// the audio thread
|
||||
std::optional<decltype(time_info_cache)::Guard>
|
||||
time_info_cache_guard =
|
||||
@@ -197,8 +197,8 @@ Vst2Bridge::Vst2Bridge(MainContext& main_context,
|
||||
*request.current_time_info))
|
||||
: std::nullopt;
|
||||
|
||||
// We'll also cache the process level, since some plugins will
|
||||
// ask for this during every processing cycle
|
||||
// We'll also prefetch the process level, since some plugins
|
||||
// will ask for this during every processing cycle
|
||||
decltype(process_level_cache)::Guard process_level_cache_guard =
|
||||
process_level_cache.set(request.current_process_level);
|
||||
|
||||
|
||||
@@ -114,8 +114,8 @@ class Vst2Bridge : public HostBridge {
|
||||
* We'll store the last transport information obtained from the host as a
|
||||
* result of `audioMasterGetTime()` here so we can return a pointer to it if
|
||||
* the request was successful. To prevent unnecessary back and forth
|
||||
* communication, we'll send a copy of the current transport information to
|
||||
* the plugin as part of the audio processing call.
|
||||
* communication, we'll prefetch the current transport information in the
|
||||
* plugin as part of the audio processing call.
|
||||
*
|
||||
* @see cached_time_info
|
||||
*/
|
||||
@@ -131,7 +131,7 @@ class Vst2Bridge : public HostBridge {
|
||||
|
||||
/**
|
||||
* Some plugins will also ask for the current process level during audio
|
||||
* processing, so we'll also cache that to prevent expensive callbacks.
|
||||
* processing, so we'll also prefetch that to prevent expensive callbacks.
|
||||
*/
|
||||
ScopedValueCache<int> process_level_cache;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user