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);

根据 documentationCMTimeClampToRange() 应该表现得像:

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.

我假设 insidewithin 意思相同,但显然不是;有没有一种优雅的方法可以将 CMTime 限制在一个范围内,使其满足 CMTimeRangeContainsTime()?

我已经解决了以下问题:

clipTime = CMTimeMaximum(clipRange.start, CMTimeSubtract(clipTime, CMTimeMake(1, clipTime.timescale)));

基本上,它从钳位时间中减去相同时间尺度内的最小非空时间跨度,并确保我们不会产生负值。