#author("2016-06-25T08:11:27+00:00","default:nitta","nitta")
[[iOS/AVFoundation]]

*CMTime 時間の表現 [#p297764b]

時間を 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