から取得した一連のデータを維持してい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 関数ポインターは、コンテキストをキャプチャーするクロージャーから形成できません
可能かどうかはわかりませんが、ポインターが破棄された回数をカウントできると非常に便利です