We are working on a plugin that offloads some heavier computation tasks that might occur on parameter changes to a background thread and applies the new processing parameters derived on the background thread to the processing as soon as possible. While this works fast enough for real-time playback, this will obviously fail on offline rendering. Therefore we need to have a 100% reliable way to find out if we are currently in an offline rendering situation to switch over to synchronous processing parameter computation on parameter changes.
The strategy of choice would be to query isNonRealtime on every processBlock callback. However I found some older threads that report some hosts not correctly setting this flag. Is that still the case in 2020 for any major host, so should we create a fallback non realtime detection mechanism such as comparing the play head timestamp with a wall clock timestamp or something like that?
Haven’t worked on the project for a while, but in 2018 FinalCutProX didn’t set it. I had to add a flag to always assume non-realtime in FCPX, otherwise it didn’t work.
It was especially peculiar, because it spawns background instances to render the waveform in the background (which is a nice feature to see the applied effect in the wave profile).
Samplers are not a problem there, because FCPX doesn’t support augn generator plugins. Only aufx to apply on clips.
Alright, thank you for your feedback. Since FinalCut is probably not one of the major hosts of our customers we’ll go with the builtin isNonRealtime function at first…
I’ll let you know if we find hosts that don’t reliably report this!