Skip to content

Releases: orchetect/swift-timecode

1.6.6

02 Feb 20:53

Choose a tag to compare

  • Added methods to extract start timecode and frame rate from AVAsset

1.6.5

22 Jan 01:39

Choose a tag to compare

  • Timecode: Added roundedUp(toNearest:) / roundUp(toNearest:) methods
  • Timecode: Added roundedDown(toNearest:) / roundDown(toNearest:) methods

1.6.4

03 Jan 03:57

Choose a tag to compare

  • TimecodeInterval: Added init(cmTime:) and cmTime property
  • CMTime: Added toTimecodeInterval(at:) method
  • Added Fraction(_: CMTime) and CMTime(_: Fraction) inits
  • Added Fraction(...).toCMTime() and CMTime(...).toFraction() methods

1.6.3

02 Jan 02:24

Choose a tag to compare

  • Timecode: Negative value calculations now more accurate
  • Timecode: init(rawValues:) negative input now returns Components with only largest non-zero component negated
  • Timecode.FrameCount: Added isNegative
  • TimecodeInterval: Added Equatable, Hashable conformance
  • TimecodeInterval: Added init(_: Fraction) and rationalValue
  • TimecodeInterval: Removed Sign, now using FloatingPointSign
  • TimecodeInterval: sign property is now public
  • Fraction: Added abs()
  • Fraction: Added isNegative, negate(), negated()
  • Fraction: isSimplestForm renamed to isReduced
  • Fraction: Added toTimecodeInterval(at:) convenience method

Full Changelog: 1.6.2...1.6.3

1.6.2

01 Jan 04:49

Choose a tag to compare

  • Timecode: Rational value (fraction, including CMTime) now supports subframes.
    Subframes were previously truncated in 1.6.1.

Full Changelog: 1.6.1...1.6.2

1.6.1

20 Dec 03:31

Choose a tag to compare

  • Timecode: Added CMTime init, setTimecode(CMTime) methods and cmTime property
  • Fraction: refined instance methods

Full Changelog: 1.6.0...1.6.1

1.6.0

15 Dec 06:32
8d068a2

Choose a tag to compare

TimecodeKit 1.6.0

New Frame Rate Paradigm

Version 1.6.0 introduces a new frame rate paradigm:

  • Renamed: Timecode.FrameRate to top-level TimecodeFrameRate
  • New: VideoFrameRate

In summary:

  • VideoFrameRate rates are actual video format rates (25p, 25i, 29.97p, 29.97i, etc.)
    • can be constructed from a raw floating-point fps value: init(fps:)
    • can be converted to a corresponding TimecodeFrameRate: timecodeFrameRate(drop:)
  • TimecodeFrameRate rates are timecode display rates (25, 29.97, 29.97d, etc.)

New Rational Fraction Notation

Some file formats encode video frame rate and/or time locations (timecode) in rational number notation: a fraction of two whole number integers. (AAF encodes video rate this way, whereas FCPXML (Final Cut Pro) encodes both video rate and time locations as fractions.)

TimecodeKit now incorporates initializers and properties to facilitate the use of rational fractions, and can convert to/from them.

1.5.0

07 Dec 06:21

Choose a tag to compare

  • For ancillary value types (real time, audio samples, FrameCount):
    • Added clamping, wrapping, and rawValues variants to both init and setTimecode() methods.
      Previously only primary value types (String, TCC) had these. (#49)
  • Added Int overloads for audio samples in addition to where Double was already used (#50)
  • Minor API consistency tweaks

1.4.0

31 Oct 08:16

Choose a tag to compare

Fixed

  • 30d / 60d / 120d: Conversions for real time and audio samples are now correct
  • 30d / 60d / 120d: Rate fraction is now correct (inherently fixes aafMetadata and CMTime as well)

Improvements

  • Internal refactors to simplify various calculations
  • Timecode(raw:) video frame rate heuristic now omits 30d/60d/120d from being possible matches, as they are not video rates and are display rates only

1.3.1

22 Aug 02:55

Choose a tag to compare

  • Bugfix: Fixed Timecode Comparable calculation regression