我正在编写一个使用 AVFoundation 和 CMTime 的应用程序。我已经记录了CMTime
使用创建的实例的值CMTimeMake()
。这个值似乎被四舍五入到最接近的整数。我需要一个CMTime
具有精确值的实例,而不是四舍五入。
我在CMTime
参考文献中看到了舍入常量:
enum {
kCMTimeRoundingMethod_RoundHalfAwayFromZero = 1,
kCMTimeRoundingMethod_RoundTowardZero = 2,
kCMTimeRoundingMethod_RoundAwayFromZero = 3,
kCMTimeRoundingMethod_QuickTime = 4,
kCMTimeRoundingMethod_RoundTowardPositiveInfinity = 5,
kCMTimeRoundingMethod_RoundTowardNegativeInfinity = 6,
kCMTimeRoundingMethod_Default = kCMTimeRoundingMethod_RoundHalfAwayFromZero
};
没有任何示例说明我如何控制将这些策略中的哪些应用于CMTime
实例?或者,如果这不是正确的方法,我如何从CMTime
实例中提取精确值?
编辑:
我已经找到并测试了CMTIME_HAS_BEEN_ROUNDED()
. 我将我的CMTime
实例传递给该函数并返回No
(表明该值尚未四舍五入)。那么为什么我会失去精度呢?