1

我正在使用以下代码从像素缓冲区初始化 vImage_Buffer。我已将 vImageBuffer_InitWithCVPixelBuffer 中的第二个参数作为 NULL (vImage_CGImageFormat) 传递,因此没有从像素缓冲区到 vImageBuffer 的内部格式转换。它在 XCode 中给出警告-“Null 传递给需要非空参数的被调用者”,但有效。问题是如果我将它转换为 Swift,它不会编译,因为它需要一个非零参数。以直通方式从像素缓冲区制作 vImage 缓冲区的正确方法是什么?甚至函数的声明都说第二个参数中的 NULL 值是可以接受的,但不确定为什么会出现警告。

  // vImage processing
vImage_Error err;
vImage_Buffer buffer;
buffer.data = (unsigned char *)CVPixelBufferGetBaseAddress( pixelBuffer );
buffer.rowBytes = CVPixelBufferGetBytesPerRow( pixelBuffer );
buffer.width = CVPixelBufferGetWidth( pixelBuffer );
buffer.height = CVPixelBufferGetHeight( pixelBuffer );

vImageCVImageFormatRef vformat = vImageCVImageFormat_CreateWithCVPixelBuffer( pixelBuffer );
/*
vImage_CGImageFormat cgformat = {
    .bitsPerComponent = 8,
    .bitsPerPixel = 32,
    .bitmapInfo = kCGBitmapByteOrderDefault,
    .colorSpace = NULL,    //sRGB
};
*/
vImageBuffer_InitWithCVPixelBuffer(&buffer, NULL, pixelBuffer, vformat, NULL, kvImageNoAllocate);
4

0 回答 0