之前已经有人问过这个问题,但自从问过这个问题以来,Swift 中肯定发生了一些变化。我正在尝试存储CMSampleBuffer
从返回的对象AVCaptureSession
待稍后处理。经过一些实验我发现AVCaptureSession
必须重用它的CMSampleBuffer
参考。当我尝试保留超过 15 个时,会话会挂起。所以我想我应该复制样本缓冲区。但我似乎无法让它发挥作用。这是我写的:
var allocator: Unmanaged<CFAllocator>! = CFAllocatorGetDefault()
var bufferCopy: UnsafeMutablePointer<CMSampleBuffer?>
let err = CMSampleBufferCreateCopy(allocator.takeRetainedValue(), sampleBuffer, bufferCopy)
if err == noErr {
bufferArray.append(bufferCopy.memory!)
} else {
NSLog("Failed to copy buffer. Error: \(err)")
}
这不会编译,因为它说Variable 'bufferCopy' used before being initialized
。我看过很多例子,它们要么编译但不起作用,要么无法编译。
有人看到我在这里做错了什么吗?
你可以简单地通过一个CMSampleBuffer?
变量(作为可选变量,
隐式初始化为nil
) 作为 inout 参数&
:
var bufferCopy : CMSampleBuffer?
let err = CMSampleBufferCreateCopy(kCFAllocatorDefault, buffer, &bufferCopy)
if err == noErr {
// ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)