realFrames method

int realFrames(
  1. int timecodeFrames
)

timecode frames will be equal to or larger than real frames. Example: in 29.97 fps, after each minute, two frames will be added to the timecode frame count, except after 10 minutes, no frames are added This code removes the extra timecode frames to get the real underlying frame count.

Implementation

int realFrames(int timecodeFrames) {
  var frames = timecodeFrames;

  if (isDropFrame) {
    var seconds = frames ~/ integerFps;
    var timecodeMinutes = seconds ~/ 60;
    var minutesWithDroppedFrames = timecodeMinutes - (timecodeMinutes ~/ 10);

    // Remove the extra timecode frames (the `drop frames`)
    frames -= minutesWithDroppedFrames * skippedFrameNumbersPerMinute;
  }
  return frames;
}