Core Media
概要
code:swift
struct CMTime {
public var value: CMTimeValue
public var timescale: CMTimeScale
public var flags: CMTimeFlags
public var epoch: CMTimeEpoch
// ...
}
code:swift
// 0.25 seconds
let quarterSecond = CMTime(value: 1, timescale: 4)
// 10 second mark in a 44.1 kHz audio file
let tenSeconds = CMTime(value: 441000, timescale: 44100)
// 3 seconds into a 30fps video
let cursor = CMTime(value: 90, timescale: 30)
単純な時刻だけでなく、正の無限大や負の無限大、あるいは不定 (indefinite) も表現できる。immutable な値型である CFDictionary との間で相互変換が行える。また、その他様々な操作が Time Utilities として定義されている。異なるタイミングのタイムスタンプを識別するのに epoch が利用されるらしい。これは例えば、描画のループが行われている際に、異なるループだと異なる値にすることで、epoch が異なるタイムスタンプ同士で比較計算を行ってしまうことなどを避ける目的で利用されるようだ。