mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-10 23:44:24 +00:00
AudioPlayHead: Update wrappers to use new FrameRate type
This commit is contained in:
parent
718307b516
commit
3850a2bb20
6 changed files with 158 additions and 133 deletions
|
|
@ -681,6 +681,31 @@ namespace AAXClasses
|
|||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (JuceAAX_GUI)
|
||||
};
|
||||
|
||||
// Copied here, because not all versions of the AAX SDK define all of these values
|
||||
enum JUCE_AAX_EFrameRate : std::underlying_type_t<AAX_EFrameRate>
|
||||
{
|
||||
JUCE_AAX_eFrameRate_Undeclared = 0,
|
||||
JUCE_AAX_eFrameRate_24Frame = 1,
|
||||
JUCE_AAX_eFrameRate_25Frame = 2,
|
||||
JUCE_AAX_eFrameRate_2997NonDrop = 3,
|
||||
JUCE_AAX_eFrameRate_2997DropFrame = 4,
|
||||
JUCE_AAX_eFrameRate_30NonDrop = 5,
|
||||
JUCE_AAX_eFrameRate_30DropFrame = 6,
|
||||
JUCE_AAX_eFrameRate_23976 = 7,
|
||||
JUCE_AAX_eFrameRate_47952 = 8,
|
||||
JUCE_AAX_eFrameRate_48Frame = 9,
|
||||
JUCE_AAX_eFrameRate_50Frame = 10,
|
||||
JUCE_AAX_eFrameRate_5994NonDrop = 11,
|
||||
JUCE_AAX_eFrameRate_5994DropFrame = 12,
|
||||
JUCE_AAX_eFrameRate_60NonDrop = 13,
|
||||
JUCE_AAX_eFrameRate_60DropFrame = 14,
|
||||
JUCE_AAX_eFrameRate_100Frame = 15,
|
||||
JUCE_AAX_eFrameRate_11988NonDrop = 16,
|
||||
JUCE_AAX_eFrameRate_11988DropFrame = 17,
|
||||
JUCE_AAX_eFrameRate_120NonDrop = 18,
|
||||
JUCE_AAX_eFrameRate_120DropFrame = 19
|
||||
};
|
||||
|
||||
static void AAX_CALLBACK algorithmProcessCallback (JUCEAlgorithmContext* const instancesBegin[], const void* const instancesEnd);
|
||||
|
||||
static Array<JuceAAX_Processor*> activeProcessors;
|
||||
|
|
@ -1047,31 +1072,54 @@ namespace AAXClasses
|
|||
info.ppqLoopStart = (double) loopStartTick / 960000.0;
|
||||
info.ppqLoopEnd = (double) loopEndTick / 960000.0;
|
||||
|
||||
info.editOriginTime = 0;
|
||||
info.frameRate = AudioPlayHead::fpsUnknown;
|
||||
|
||||
AAX_EFrameRate frameRate;
|
||||
int32_t offset;
|
||||
|
||||
if (transport.GetTimeCodeInfo (&frameRate, &offset) == AAX_SUCCESS)
|
||||
std::tie (info.frameRate, info.editOriginTime) = [&transport]
|
||||
{
|
||||
double framesPerSec = 24.0;
|
||||
AAX_EFrameRate frameRate;
|
||||
int32_t offset;
|
||||
|
||||
switch (frameRate)
|
||||
if (transport.GetTimeCodeInfo (&frameRate, &offset) != AAX_SUCCESS)
|
||||
return std::make_tuple (FrameRate(), 0.0);
|
||||
|
||||
const auto rate = [&]
|
||||
{
|
||||
case AAX_eFrameRate_Undeclared: break;
|
||||
case AAX_eFrameRate_24Frame: info.frameRate = AudioPlayHead::fps24; break;
|
||||
case AAX_eFrameRate_25Frame: info.frameRate = AudioPlayHead::fps25; framesPerSec = 25.0; break;
|
||||
case AAX_eFrameRate_2997NonDrop: info.frameRate = AudioPlayHead::fps2997; framesPerSec = 30.0 * 1000.0 / 1001.0; break;
|
||||
case AAX_eFrameRate_2997DropFrame: info.frameRate = AudioPlayHead::fps2997drop; framesPerSec = 30.0 * 1000.0 / 1001.0; break;
|
||||
case AAX_eFrameRate_30NonDrop: info.frameRate = AudioPlayHead::fps30; framesPerSec = 30.0; break;
|
||||
case AAX_eFrameRate_30DropFrame: info.frameRate = AudioPlayHead::fps30drop; framesPerSec = 30.0; break;
|
||||
case AAX_eFrameRate_23976: info.frameRate = AudioPlayHead::fps23976; framesPerSec = 24.0 * 1000.0 / 1001.0; break;
|
||||
default: break;
|
||||
}
|
||||
switch ((JUCE_AAX_EFrameRate) frameRate)
|
||||
{
|
||||
case JUCE_AAX_eFrameRate_24Frame: return FrameRate().withBaseRate (24);
|
||||
case JUCE_AAX_eFrameRate_23976: return FrameRate().withBaseRate (24).withPullDown();
|
||||
|
||||
info.editOriginTime = offset / framesPerSec;
|
||||
}
|
||||
case JUCE_AAX_eFrameRate_25Frame: return FrameRate().withBaseRate (25);
|
||||
|
||||
case JUCE_AAX_eFrameRate_30NonDrop: return FrameRate().withBaseRate (30);
|
||||
case JUCE_AAX_eFrameRate_30DropFrame: return FrameRate().withBaseRate (30).withDrop();
|
||||
case JUCE_AAX_eFrameRate_2997NonDrop: return FrameRate().withBaseRate (30).withPullDown();
|
||||
case JUCE_AAX_eFrameRate_2997DropFrame: return FrameRate().withBaseRate (30).withPullDown().withDrop();
|
||||
|
||||
case JUCE_AAX_eFrameRate_48Frame: return FrameRate().withBaseRate (48);
|
||||
case JUCE_AAX_eFrameRate_47952: return FrameRate().withBaseRate (48).withPullDown();
|
||||
|
||||
case JUCE_AAX_eFrameRate_50Frame: return FrameRate().withBaseRate (50);
|
||||
|
||||
case JUCE_AAX_eFrameRate_60NonDrop: return FrameRate().withBaseRate (60);
|
||||
case JUCE_AAX_eFrameRate_60DropFrame: return FrameRate().withBaseRate (60).withDrop();
|
||||
case JUCE_AAX_eFrameRate_5994NonDrop: return FrameRate().withBaseRate (60).withPullDown();
|
||||
case JUCE_AAX_eFrameRate_5994DropFrame: return FrameRate().withBaseRate (60).withPullDown().withDrop();
|
||||
|
||||
case JUCE_AAX_eFrameRate_100Frame: return FrameRate().withBaseRate (100);
|
||||
|
||||
case JUCE_AAX_eFrameRate_120NonDrop: return FrameRate().withBaseRate (120);
|
||||
case JUCE_AAX_eFrameRate_120DropFrame: return FrameRate().withBaseRate (120).withDrop();
|
||||
case JUCE_AAX_eFrameRate_11988NonDrop: return FrameRate().withBaseRate (120).withPullDown();
|
||||
case JUCE_AAX_eFrameRate_11988DropFrame: return FrameRate().withBaseRate (120).withPullDown().withDrop();
|
||||
|
||||
case JUCE_AAX_eFrameRate_Undeclared: break;
|
||||
}
|
||||
|
||||
return FrameRate();
|
||||
}();
|
||||
|
||||
const auto effectiveRate = rate.getEffectiveRate();
|
||||
return std::make_tuple (rate, effectiveRate != 0.0 ? offset / effectiveRate : 0.0);
|
||||
}();
|
||||
|
||||
// No way to get these: (?)
|
||||
info.isRecording = false;
|
||||
|
|
@ -2377,7 +2425,7 @@ namespace AAXClasses
|
|||
jassert (pluginIds.size() > 0);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
} // namespace AAXClasses
|
||||
|
||||
void AAX_CALLBACK AAXClasses::algorithmProcessCallback (JUCEAlgorithmContext* const instancesBegin[], const void* const instancesEnd)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue