TimecodeFramerate constructor

TimecodeFramerate(
  1. double fps, {
  2. dynamic forceNonDropFrame = false,
})

Will create a TimecodeFramerate instance. fps may be any arbitrary floating point value, but usually will be one of the industry standard framerates: 23.976, 23.98, 24, 25, 29.97, 30, 50, 59.94, 60, 1000. If the framerate is either 29.97 or 59.94, the internal isDropFrame flag will be set unless forceNonDropFrame is specified in the constructor.

Implementation

factory TimecodeFramerate(double fps, {forceNonDropFrame = false}) {
  var integerFramerate = fps.round();
  var isDropFrame = false;

  // compute the integer framerate and drop frame status if needed.
  switch ((fps * 100).round()) {
    case 2997:
      isDropFrame = !forceNonDropFrame;
      break;
    case 5994:
      isDropFrame = !forceNonDropFrame;
      break;
  }
  return TimecodeFramerate._(
    fps,
    integerFramerate,
    isDropFrame,
  );
}