             _displayLink.paused = true
             _lastTimestamp = CACurrentMediaTime()
             _remainingPresentationTime = 0.0
+            _previousTimestamp = 0.0
             _playbackRate = CFTimeInterval(rate)
         } else {
 

            if _producer.startReading(rate: rate, atPosition: position) {
                _lastTimestamp = CACurrentMediaTime()
                _remainingPresentationTime = 0.0
                _displayLink.paused = false
                _playbackRate = CFTimeInterval(rate)
            }

    */
    @objc func _displayLinkCallback(displayLink: CADisplayLink) {

        // 表示時間を計算
        let now = CACurrentMediaTime()
        var delta: CFTimeInterval
        if _previousTimestamp.isZero {
            delta = displayLink.duration * CFTimeInterval(displayLink.frameInterval)
        } else {
            delta = now - _previousTimestamp
        }
        _previousTimestamp = now

        // 時間を消費
        _remainingPresentationTime -= delta

        // フレームの表示時間を、消費したぶんだけ補充する
        while _remainingPresentationTime < 0.0 {
