Skip to content

Releases: orchetect/TimecodeKit

1.6.11

18 Jun 04:24
Compare
Choose a tag to compare

Improvements

  • AVMutableMovie: add and replace Timecode Track methods allow omitting duration parameter to auto-detect video duration (#59)

1.6.10

22 Mar 05:13
Compare
Choose a tag to compare
  • AVAssetTrack: Added durationTimecode() method
  • CMTimeRange: Added timecodeRange() method

1.6.9

15 Feb 22:59
Compare
Choose a tag to compare

New

  • Added Feet+Frames conversion support (Avid / Pro Tools 35mm 4-perf standard)

    • New FeetAndFrames struct
    • Added related Timecode init and feetAndFramesValue property
  • Timecode / TimecodeFrameRate: Added 96 fps & 95.904 fps (96/1.001) (#57)

  • VideoFrameRate: Added 96p & 95.9p (#57)

  • VideoFrameRate: Added 59.94i

Improvements

  • Timecode.SubFramesBase: Added Identifiable conformance
  • VideoFrameRate: Added strict: Bool = false parameter to init(fps:interlaced:)

Fixes

  • VideoFrameRate: Fixed typo in _59_94p.stringValue string value

1.6.8

10 Feb 00:12
Compare
Choose a tag to compare

AVFoundation Related

It is now possible to fully read, mutate, and create timecode tracks in supported video file formats (.mov, .mp4).

  • AVAsset: Improved resiliency of reading timecode
  • AVMutableMovie
    • Added addTimecodeTrack(startTimecode:duration:extensions:fileType:)
    • Added replaceTimecodeTrack(startTimecode:duration:extensions:fileType:)
  • Timecode: Added cmFormatDescription(extensions:)

In a future release, some of the AVAsset methods will be improved to handle AVAsset timecode tracks with multiple samples (ie: not just a start timecode and total duration, but subranges as well if the track contains edit segments). For the time being, all origin timecodes are returned for timecode tracks without ranges. The first of which is the start timecode which is most important.

Timecode Comparison and Sorting

  • Timecode: Added compare(to:timelineStart:) method to return ComparisonResult
  • Collection of Timecode: Added mutating sort(ascending:timelineStart:)
  • Collection of Timecode: Added sorted(ascending:timelineStart:) -> [Timecode]
  • Collection of Timecode: Added isSorted(ascending:timelineStart:) -> Bool
  • Added new TimecodeSortComparator

Misc

  • Timecode: Added isZero property
  • Timecode.FrameCount: Added isZero property
  • Timecode.FrameCount.Value: Added isZero property
  • Readme updated
  • Unit tests updated

1.6.7

02 Feb 23:15
Compare
Choose a tag to compare
  • AVAsset: Added videoFrameRate(interlaced:)
  • AVAsset: Renamed frameRate() to timecodeFrameRate()
  • TimecodeFrameRate: Added videoFrameRate(interlaced:)
  • VideoFrameRate: Added init(asset:)
  • VideoFrameRate: Fixed typo in _48p case name

1.6.6

02 Feb 20:53
Compare
Choose a tag to compare
  • Added methods to extract start timecode and frame rate from AVAsset

1.6.5

22 Jan 01:39
Compare
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
Compare
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
Compare
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
Compare
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