Swift和C API(CoreVideo)

时间:2014-06-10 19:09:05

标签: c swift flags core-video

我尝试将CoreVideo与Swift一起使用,但我收到了此错误:

let flags : CVOptionFlags = 0
CVPixelBufferLockBaseAddress(imageBuffer, flags)
^~~~~~~~~~~~~~~~~

无法转换表达式' CVReturn'输入' CVPixelBuffer!'

CVPixelBufferLockBaseAddress(imageBuffer, 0)
^~~~~~~~~~~~~~~~~

无法转换表达式' CVReturn'输入' CVOptionFlags'

如果我不使用它,为什么它无法转换价值呢?我应该以不同的方式传递第二个论点吗?

2 个答案:

答案 0 :(得分:2)

我想它会起作用。

var tmp : COpaquePointer = CMSampleBufferGetImageBuffer(imageBuffer).toOpaque()
var pixelBuf : CVPixelBuffer = (Unmanaged<CVPixelBuffer>.fromOpaque(tmp)).takeUnretainedValue()
CVPixelBufferLockBaseAddress(pixelBuf, 0)

答案 1 :(得分:1)

我对CoreVideo不太熟悉,但我想问题更多的是imageBuffer init,因为你的第一个实现似乎是正确的。 这段代码至少可以编译:

var pixelBuffer : CVPixelBuffer?
let optionFlags : CVOptionFlags = 0
CVPixelBufferLockBaseAddress(pixelBuffer, optionFlags)