|
@@ -206,11 +206,11 @@ class PQMovieFilter: PQBaseFilter {
|
|
|
startTimeStamp = currentTime
|
|
|
}
|
|
|
|
|
|
- let stickerTime = CMTime(value: Int64(moveSticker?.model_in ?? 0) * Int64(BASE_FILTER_TIMESCALE), timescale: BASE_FILTER_TIMESCALE)
|
|
|
+ let stickerTime = CMTime(value: Int64((moveSticker?.model_in ?? 0) * Float64(BASE_FILTER_TIMESCALE)), timescale: BASE_FILTER_TIMESCALE)
|
|
|
|
|
|
let PTSTime = CMTimeAdd(stickerTime, CMTimeSubtract(currentTime, startTimeStamp ?? .zero))
|
|
|
-
|
|
|
- readNextVideoFrame(showTimeStamp: CMTime(value: CMTimeValue(Int(Float(PTSTime.value) * Float(stickerInfo!.speedRate))), timescale: PTSTime.timescale))
|
|
|
+
|
|
|
+ readNextVideoFrame(showTimeStamp: CMTime(value: CMTimeValue(Int(Float(Float64(PTSTime.value) - (moveSticker?.model_in ?? 0) * Float64(BASE_FILTER_TIMESCALE)) * Float(stickerInfo!.speedRate))), timescale: PTSTime.timescale))
|
|
|
|
|
|
// } else {
|
|
|
// FilterLog(message: "movefilter 了 结束了 timelineIN\(String(describing: moveSticker?.timelineIn)) timelineOut\(String(describing: moveSticker?.timelineOut)) currentTime \(CMTimeGetSeconds(currentTime)) 裁剪in:\(String(describing: moveSticker?.model_in)) 裁剪out:\(String(describing: moveSticker?.out)) ")
|
|
@@ -336,9 +336,11 @@ class PQMovieFilter: PQBaseFilter {
|
|
|
if lastImageBuffer != nil {
|
|
|
renderPixelBuffler(movieFrame: lastImageBuffer!, withSampleTime: currentTime)
|
|
|
}
|
|
|
+
|
|
|
+ if CMTimeGetSeconds(targetTimeStamp) - (stickerInfo?.model_in ?? 0) >= CMTimeGetSeconds(showTimeStamp) && CMTimeGetSeconds(targetTimeStamp) != 0 {
|
|
|
|
|
|
// 最后一帧的PTS > 要显示的目标时间 就不从解码器要数据,直接返回 view 不刷新 只有慢速时会调用
|
|
|
- if CMTimeGetSeconds(targetTimeStamp) >= CMTimeGetSeconds(showTimeStamp) + (stickerInfo?.model_in ?? 0) && CMTimeGetSeconds(targetTimeStamp) != 0 {
|
|
|
+// if CMTimeGetSeconds(targetTimeStamp) >= CMTimeGetSeconds(showTimeStamp) + (stickerInfo?.model_in ?? 0) && CMTimeGetSeconds(targetTimeStamp) != 0 {
|
|
|
FilterLog(message: "目标显示时间 \(String(format: "%.6f", (CMTimeGetSeconds(showTimeStamp)))) 最后显示的时间 \(String(format: "%.6f", CMTimeGetSeconds(targetTimeStamp) + (stickerInfo?.model_in ?? 0))) 裁剪开始时间:\(String(describing: moveSticker?.model_in)) speedRate is \(stickerInfo!.speedRate)")
|
|
|
return
|
|
|
}
|
|
@@ -373,7 +375,7 @@ class PQMovieFilter: PQBaseFilter {
|
|
|
// 目标帧 时间
|
|
|
if sampleBuffer != nil && CMTimeGetSeconds(targetTimeStamp) >= (CMTimeGetSeconds(showTimeStamp).truncatingRemainder(dividingBy: moveSticker!.out)) {
|
|
|
let endDecoderTime: TimeInterval = Date().timeIntervalSince1970
|
|
|
- FilterLog(message: " speedRate is \(stickerInfo!.speedRate) 当前主线时间为:\(String(format: "%.6f", CMTimeGetSeconds(currentTime))) 查找的帧时间为:\(String(format: "%.6f", CMTimeGetSeconds(showTimeStamp).truncatingRemainder(dividingBy: moveSticker!.out))) 命中时间为: \(String(format: "%.6f", CMTimeGetSeconds(targetTimeStamp))) 查找耗时为:\(String(format: "%.6f", TimeInterval(endDecoderTime - beginDecoderTime))) 查找次数\(count) 进场时间: \(String(describing: moveSticker?.timelineIn)) 裁剪开始时间:\(String(describing: moveSticker?.model_in)) 裁剪结束时间:\(String(describing: moveSticker?.out))")
|
|
|
+ FilterLog(message: " speedRate is \(stickerInfo!.speedRate) 当前主线时间为:\(String(format: "%.6f", CMTimeGetSeconds(currentTime))) 查找的帧时间为:\(String(format: "%.6f", CMTimeGetSeconds(showTimeStamp).truncatingRemainder(dividingBy: moveSticker!.out))) 命中时间为: \(String(format: "%.6f", CMTimeGetSeconds(targetTimeStamp))) 差值\(CMTimeGetSeconds(targetTimeStamp) - (stickerInfo?.model_in ?? 0)) 查找耗时为:\(String(format: "%.6f", TimeInterval(endDecoderTime - beginDecoderTime))) 查找次数\(count) 进场时间: \(String(describing: moveSticker?.timelineIn)) 裁剪开始时间:\(String(describing: moveSticker?.model_in)) 裁剪结束时间:\(String(describing: moveSticker?.out)) ")
|
|
|
break
|
|
|
|
|
|
} else {
|