から取得した一連のデータを維持していAVCaptureSynchronizedDataます。私が使用する方法の 1 つは、CVPixelBuffersから取得した を変更しAVCaptureSynchronizedDataます。改造中。、ビアCVPixelBufferのコピーを作成しますCVPixelBuffer
let status = CVPixelBufferCreateWithBytes(nil, scaleWidth, scaleHeight,
pixelFormat, destData,
destBytesPerRow, releaseCallback,
nil, nil, &dstPixelBuffer)
は次のreleaseCallBackように参照されます。
let releaseCallback: CVPixelBufferReleaseBytesCallback = { _, ptr in
if let ptr = ptr {
free(UnsafeMutableRawPointer(mutating: ptr))
}
}
ただし、これが呼び出される回数についていくことができるようにしたいと思います。しかし、次のようなものを追加すると
var num:Int = 0
let releaseCallback: CVPixelBufferReleaseBytesCallback = { _, ptr in
if let ptr = ptr {
num += 1
free(UnsafeMutableRawPointer(mutating: ptr))
}
}
エラーが発生します
AC 関数ポインターは、コンテキストをキャプチャーするクロージャーから形成できません
可能かどうかはわかりませんが、ポインターが破棄された回数をカウントできると非常に便利です