vImage_Buffer init с пиксельным буфером

Я использую следующий код для инициализации vImage_Buffer из пиксельного буфера. Я передал второй аргумент в vImageBuffer_InitWithCVPixelBuffer как NULL (vImage_CGImageFormat), чтобы не было внутренних преобразований формата из пиксельного буфера в vImageBuffer. В XCode он выдает предупреждение - "Нулевое значение передано вызываемому объекту, который требует ненулевой аргумент", но работает. Проблема в том, что если я конвертирую его в 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);

0 ответов

Другие вопросы по тегам