1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

AudioPlayHead: Move HostTimeNs out of AudioProcessor, to consolidate timing information

This commit is contained in:
reuk 2022-06-13 20:25:18 +01:00
parent 8fbd99c424
commit 752c913cd2
No known key found for this signature in database
GPG key ID: 9ADCD339CFC98A11
13 changed files with 107 additions and 122 deletions

View file

@ -1173,6 +1173,10 @@ public:
outCurrentSampleInTimeLine = audioUnit.lastTimeStamp.mSampleTime;
}
info.setHostTimeNs ((audioUnit.lastTimeStamp.mFlags & kAudioTimeStampHostTimeValid) != 0
? makeOptional (audioUnit.timeConversions.hostTimeToNanos (audioUnit.lastTimeStamp.mHostTime))
: nullopt);
return info;
}
@ -1323,19 +1327,6 @@ public:
{
lastTimeStamp = inTimeStamp;
jassert (! juceFilter->getHostTimeNs());
if ((inTimeStamp.mFlags & kAudioTimeStampHostTimeValid) != 0)
juceFilter->setHostTimeNanos (timeConversions.hostTimeToNanos (inTimeStamp.mHostTime));
struct AtEndOfScope
{
~AtEndOfScope() { proc.setHostTimeNanos (nullopt); }
AudioProcessor& proc;
};
const AtEndOfScope scope { *juceFilter };
// prepare buffers
{
pullInputAudio (ioActionFlags, inTimeStamp, nFrames);

View file

@ -1069,6 +1069,9 @@ public:
}
}
if ((lastTimeStamp.mFlags & kAudioTimeStampHostTimeValid) != 0)
info.setHostTimeNs (timeConversions.hostTimeToNanos (lastTimeStamp.mHostTime));
return info;
}
@ -1541,20 +1544,6 @@ private:
const auto numProcessorBusesOut = AudioUnitHelpers::getBusCount (processor, false);
if (timestamp != nullptr)
{
if ((timestamp->mFlags & kAudioTimeStampHostTimeValid) != 0)
getAudioProcessor().setHostTimeNanos (timeConversions.hostTimeToNanos (timestamp->mHostTime));
}
struct AtEndOfScope
{
~AtEndOfScope() { proc.setHostTimeNanos (nullopt); }
AudioProcessor& proc;
};
const AtEndOfScope scope { getAudioProcessor() };
if (lastTimeStamp.mSampleTime != timestamp->mSampleTime)
{
// process params and incoming midi (only once for a given timestamp)

View file

@ -398,14 +398,6 @@ public:
{
updateCallbackContextInfo();
struct AtEndOfScope
{
~AtEndOfScope() { proc.setHostTimeNanos (nullopt); }
AudioProcessor& proc;
};
const AtEndOfScope scope { *processor };
int i;
for (i = 0; i < numOut; ++i)
{
@ -676,7 +668,7 @@ public:
info.setLoopPoints ((ti->flags & Vst2::kVstCyclePosValid) != 0 ? makeOptional (LoopPoints { ti->cycleStartPos, ti->cycleEndPos })
: nullopt);
processor->setHostTimeNanos ((ti->flags & Vst2::kVstNanosValid) != 0 ? makeOptional ((uint64_t) ti->nanoSeconds) : nullopt);
info.setHostTimeNs ((ti->flags & Vst2::kVstNanosValid) != 0 ? makeOptional ((uint64_t) ti->nanoSeconds) : nullopt);
}
//==============================================================================

View file

@ -2907,6 +2907,10 @@ public:
? makeOptional ((double) processContext.smpteOffsetSubframes / (80.0 * info.getFrameRate()->getEffectiveRate()))
: nullopt);
info.setHostTimeNs ((processContext.state & Vst::ProcessContext::kSystemTimeValid) != 0
? makeOptional ((uint64_t) processContext.systemTime)
: nullopt);
return info;
}
@ -3346,9 +3350,6 @@ public:
{
processContext = *data.processContext;
if ((processContext.state & Vst::ProcessContext::kSystemTimeValid) != 0)
getPluginInstance().setHostTimeNanos ((uint64_t) processContext.systemTime);
if (juceVST3EditController != nullptr)
juceVST3EditController->vst3IsPlaying = (processContext.state & Vst::ProcessContext::kPlaying) != 0;
}
@ -3360,14 +3361,6 @@ public:
juceVST3EditController->vst3IsPlaying = false;
}
struct AtEndOfScope
{
~AtEndOfScope() { proc.setHostTimeNanos (nullopt); }
AudioProcessor& proc;
};
const AtEndOfScope scope { getPluginInstance() };
midiBuffer.clear();
if (data.inputParameterChanges != nullptr)