Hey Jules,
I’ve decided to extend the frame-rate functionality a little bit:
This method is for the sake of DRYing:
void configureHostTimePerFrameRate (int frameRateIndex, double frameRateTime, double currentTime)
{
vstHostTime.smpteFrameRate = frameRateIndex;
vstHostTime.smpteOffset = (long) (currentTime * 80.0 * frameRateTime + 0.5);
vstHostTime.flags |= kVstSmpteValid;
}
Somewhere in processBlock…
switch (position.frameRate)
{
case AudioPlayHead::fps24:
configureHostTimePerFrameRate (0, 24.0, position.timeInSeconds);
break;
case AudioPlayHead::fps25:
configureHostTimePerFrameRate (1, 25.0, position.timeInSeconds);
break;
case AudioPlayHead::fps2997:
configureHostTimePerFrameRate (2, 29.97, position.timeInSeconds);
break;
case AudioPlayHead::fps30:
configureHostTimePerFrameRate (3, 30.0, position.timeInSeconds);
break;
default: break;
}
I’m not sure if the following is correct (never dealt with 29.97 drop… doesn’t make sense to me. I thought 29.97 = 30 dropped frame?) - so here it is, but separated:
case AudioPlayHead::fps2997drop:
configureHostTimePerFrameRate (4, 29.97, position.timeInSeconds);
break;
case AudioPlayHead::fps30drop:
configureHostTimePerFrameRate (5, 29.97, position.timeInSeconds);
break;
