CMTimeClampToRange() 似乎没有 return 给定范围内的 CMTime
CMTimeClampToRange() doesn't seem to return a CMTime that's inside the given range
我的项目中有以下代码:
CMTimeRange clipRange = clip.range;
CMTime clipTime = CMTimeClampToRange(editor.currentClipTime, clipRange);
根据 documentation,CMTimeClampToRange()
应该表现得像:
For a given CMTime
and CMTimeRange
, returns the nearest CMTime
inside that time range.
然而,当我添加这个时:
assert(CMTimeRangeContainsTime(clipRange, clipTime));
断言失败。 CMTimeRangeContainsTime()
的文档指出:
Indicates whether a time is contained within a time range.
我假设 inside 和 within 意思相同,但显然不是;有没有一种优雅的方法可以将 CMTime
限制在一个范围内,使其满足 CMTimeRangeContainsTime()
?
我已经解决了以下问题:
clipTime = CMTimeMaximum(clipRange.start, CMTimeSubtract(clipTime, CMTimeMake(1, clipTime.timescale)));
基本上,它从钳位时间中减去相同时间尺度内的最小非空时间跨度,并确保我们不会产生负值。
我的项目中有以下代码:
CMTimeRange clipRange = clip.range;
CMTime clipTime = CMTimeClampToRange(editor.currentClipTime, clipRange);
根据 documentation,CMTimeClampToRange()
应该表现得像:
For a given
CMTime
andCMTimeRange
, returns the nearestCMTime
inside that time range.
然而,当我添加这个时:
assert(CMTimeRangeContainsTime(clipRange, clipTime));
断言失败。 CMTimeRangeContainsTime()
的文档指出:
Indicates whether a time is contained within a time range.
我假设 inside 和 within 意思相同,但显然不是;有没有一种优雅的方法可以将 CMTime
限制在一个范围内,使其满足 CMTimeRangeContainsTime()
?
我已经解决了以下问题:
clipTime = CMTimeMaximum(clipRange.start, CMTimeSubtract(clipTime, CMTimeMake(1, clipTime.timescale)));
基本上,它从钳位时间中减去相同时间尺度内的最小非空时间跨度,并确保我们不会产生负值。