Objective c CMTimeClampToRange()不';似乎没有返回一个时间';s在给定范围内
我的项目中有以下代码:Objective c CMTimeClampToRange()不';似乎没有返回一个时间';s在给定范围内,objective-c,ios8,cmtime,Objective C,Ios8,Cmtime,我的项目中有以下代码: CMTimeRange clipRange = clip.range; CMTime clipTime = CMTimeClampToRange(editor.currentClipTime, clipRange); 根据CMTimeClampToRange()的行为应类似于: 对于给定的CMTime和CMTimeRange,返回该时间范围内最近的CMTime 但是,当我添加以下内容时: assert(CMTimeRangeContainsTime(clipRange,
CMTimeRange clipRange = clip.range;
CMTime clipTime = CMTimeClampToRange(editor.currentClipTime, clipRange);
根据CMTimeClampToRange()的行为应类似于:
对于给定的CMTime
和CMTimeRange
,返回该时间范围内最近的CMTime
但是,当我添加以下内容时:
assert(CMTimeRangeContainsTime(clipRange, clipTime));
断言失败了。CMTimeRangeContainsTime()的文档说明:
指示时间是否包含在时间范围内
我会假设“内在”和“内在”的意思是一样的,但显然不是;是否有一种优雅的方法将CMTime
钳制在一个范围内,以使其满足CMTimeRangeContainsTime()
?我想出了以下方法:
clipTime = CMTimeMaximum(clipRange.start, CMTimeSubtract(clipTime, CMTimeMake(1, clipTime.timescale)));
基本上,它从固定时间中减去同一时间刻度内的最小非空时间跨度,并确保不会产生负值