iOS/AVFoundation

CMTime 時間の表現

時間を int64_t / int32_t という有理数で表す

var time1: CMTime = CMTimeMake(200, 2)  // 200 * 1/2 seconds
var time2: CMtime = CMTimeMake(400, 4)  // 400 * 1/4 seconds

if CMTImeCompare(time1, time2) == 0) {
  print("same")
}

let float64Seconds: Float64 = 200.0 / 3
var time3 = CMTimeMultiply(time3, 3)     // 66.6 * 1/3 seconds
time3 = CMTimeSubtract(time3, tim1)

CMTimeの特殊な値

  • kCMTimeZero?
  • kCMTimeInvalid?
  • kCMTimePositiveInfinity?
  • kCMTimeNegativeInfinity?

CMTIme出は時間として無効な値を表すことができるが、有効か否か、非数値かはマクロ (CMTIME_IS_INVALID, CMTIME_IS_POSITIVE_INFINITY, CMTIME_IS_INDEFINITE) などを使う (Objective-C) 。 任意のCMTime構造体の値を kCMTimeInvalid? と比較してはいけない。

//[Objective-C]
CMTime time = ...
if (CMTIME_IS_INVALID(myTime)) pirnt("invalid")

注釈またはCOre FoundationコンテナでCMTIme構造体を使用する場合hあ、CMTime構造体と CFDictionary不透過型を相互に変換すること。

  • CMTimeCopyAsDictionary?関数 - Dictionaryへ
  • CMTimeMakeFromDictionary?関数 - CMTimeへ
  • CMTimeCopyDescription?関数 -- 文字列へ

CMTime構造体のエポック番号は通常0であるが、これを使用してタイムラインを区別することができる。 表示ループを1回遠すたびにエポックを増やすことで、ループ0の時間tと、ループ1の時間tを区別できる。

CMTimeRange? 時間範囲を表す

  • CMTimeRangeMake?
  • CMTimeRangeFromTimeToTime?
  • 異なるエポックにまたがる CMTImeRange? 構造体は作成できない。
  • 持続時間を表す CMTime 構造体は、エポックは非負であること。

時間範囲の操舵

  • CMTimeRangeContainsTime?
  • CMTimeRangeEqual?
  • CMTimeRangeContainsTimeRange?
  • CMTimeRangeGetUnion?

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-06-25 (土) 17:11:27 (397d)