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:
parent
8fbd99c424
commit
752c913cd2
13 changed files with 107 additions and 122 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
//==============================================================================
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue