diff --git a/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp b/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp index fe28f0056b..b9aa48c299 100644 --- a/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/AAX/juce_AAX_Wrapper.cpp @@ -61,6 +61,7 @@ #include "AAX_ITransport.h" #include "AAX_IMIDINode.h" #include "AAX_UtilsNative.h" +#include "AAX_Enums.h" #ifdef __clang__ #pragma clang diagnostic pop @@ -511,11 +512,35 @@ struct AAXClasses if (transport.IsTransportPlaying (&info.isPlaying) != AAX_SUCCESS) info.isPlaying = false; + info.editOriginTime = 0; + info.frameRate = AudioPlayHead::fpsUnknown; + + AAX_EFrameRate frameRate; + int32_t offset; + + if (transport.GetTimeCodeInfo (&frameRate, &offset) == AAX_SUCCESS) + { + double framesPerSec = 24.0; + + switch (frameRate) + { + 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 = 29.97002997; break; + case AAX_eFrameRate_2997DropFrame: info.frameRate = AudioPlayHead::fps2997drop; framesPerSec = 29.97002997; 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::fps24; framesPerSec = 23.976; break; + default: break; + } + + info.editOriginTime = offset / framesPerSec; + } + // No way to get these: (?) info.isRecording = false; info.ppqPositionOfLastBarStart = 0; - info.editOriginTime = 0; - info.frameRate = AudioPlayHead::fpsUnknown; return true; }