kCMTimeInvalid是无效的CMTime,但是基于Apple文档,有更多无效的CMTime,它们是什么? 什么CMTime"无效"手段?它溢出,不知情还是其他什么?
https://developer.apple.com/documentation/coremedia/kcmtimeinvalid
所有字段均为0,因此您可以使用calloc或填充0来制作大量字段。不要使用(time == kCMTimeInvalid)对此进行测试,除此之外还有许多CMTime也无效。改为使用CMTIME_IS_INVALID(时间)。
我发现一些CMTime无效的情况:
当标志(CMTimeFlags)未设置kCMTimeFlags_Valid时。
kCMTimeFlags_Valid必须设置,否则CMTime将被视为无效。
CMTimeAdd的一些操作
+无穷大+ +无穷大== +无穷大
-infinity + -infinity == -infinity + infinity + -infinity ==无效 -infinity + + infinity == invalid
答案 0 :(得分:1)
有五种可能的状态:
答案 1 :(得分:0)
从您发布的文档中,它说:
改为使用CMTIME_IS_INVALID(时间)。
从CMTime.h
开始,CMTIME_IS_INVALID
似乎定义为:
#define CMTIME_IS_INVALID(time) (! CMTIME_IS_VALID(time))
CMTIME_IS_VALID
定义为:
#define CMTIME_IS_VALID(time) ((Boolean)(((time).flags & kCMTimeFlags_Valid) != 0))
因此看起来确定CMTime
是否有效的唯一因素是kCMTimeFlags_Valid
标志是否已设置。