 import AVFoundation
 
 let kMaximumNumOfReaders = 3 // AVAssetReaderで事前にstartReading()しておくムービーの数
+
+/**
+*  アセット配列の中における位置を特定するためのデータ構造
+*/
+struct AssetPosition {
+    var index: Int
+    var time: CMTime
+}
 
 /**
 :class: StreamFrameProducer

    :returns: 再生位置(0.0-1.0)。値域外の場合はnilを返す
    */
    func getPositionOf(index:Int, time:CMTime) -> Float? {
        let target = (index:index, time:time)

        /*
        「offset = window * position」であることを利用して位置を求める


    :returns: 指定期間内のduration.
    */
    func _getDurationBetweenAssets(from lhs: AssetPosition, to rhs: AssetPosition) -> CMTime {
            var sumTime: CMTime = kCMTimeZero

        // lhsとrhsが同じアセットの場合は、単純に時間の差を返す
