Can the AE SDK recover keyframe times with greater precision than A_Time ticks?
I'm working on a plugin where very small differences in keyframe timing affect the final result.
From what I understand, keyframe times in the SDK are represented by A_Time:
typedef struct {
A_long value;
A_u_long scale;
} A_Time;
For example, suppose I have a 60 fps composition with a duration of 666 ms. A keyframe is intended to be placed at 13.947372 ms.
Since AE uses a time scale of 30720 ticks/second, that time corresponds to:
13.947372 ms × 30720 / 1000 = 428.46 ticksBecause only whole ticks can be stored, the keyframe becomes:
428 ticksor
428 / 30720 = 13.932292 msWhen I later retrieve it:
A_Time kfTime;
AEGP_GetKeyframeTime(stream, keyIndex, AEGP_LTimeMode_LayerTime, &kfTime);I only receive those integer tick values. The original time of 13.947372 ms appears to be unrecoverable.
My question:
Is the integer A_Time representation the fundamental precision limit of After Effects, or is there any SDK/API that can recover keyframe times with greater precision than the tick values returned by AEGP_GetKeyframeTime()? Basically, is there any way to not lose the 0.46 ticks (in this case)?
