|
| OSStatus | property_info (AudioUnitScope scope, UInt32 &out_size, bool &out_writable) const noexcept |
| OSStatus | get (AudioUnitScope scope, void *out_data) const noexcept |
| OSStatus | set (AudioUnitScope scope, const void *in_data, UInt32 in_size) noexcept |
| void | begin_session () noexcept |
| | Start a render session (call from Initialize()).
|
| bool | offline () const noexcept |
| | Render-thread read of the latest host value.
|
Host offline-render intent for an AU v2 instance.
kAudioUnitProperty_OfflineRender is a global-scope, read/write UInt32 that a host (Logic's offline bounce, REAPER's render) sets non-zero before a faster-than-realtime render and back to zero afterwards. AUBase does not implement it, so without this an AU v2 plug-in rejects the write and every block reports realtime. The value is written on the host's property thread and read on the render thread, so it is held in an atomic.
The flag is scoped to one render session. Not every host writes it back after a bounce, and a processor that waits for worker results on offline blocks would then wait on every later realtime block. So each adapter calls begin_session() from Initialize(): a host write made since the previous Initialize() survives it (a host may set the flag and then re-initialize for the bounce, or set it before the first Initialize()), and an older write belongs to a previous session and is cleared. Reset() does not clear it, because hosts reset at transport start, which can follow the write that set up the bounce.