Я записываю видео, используя AVFoundation, и у меня есть видеовыход, настроенный для предоставления кадров с форматом пикселя: CVPixelFormatType.CV32BGRA.
Я выбрал этот формат, поскольку в этом формате проще делать кадрирование и другие преобразования, чем в кадре yuv420p. Однако окончательный формат должен быть CVPixelFormatType.CV420YpCbCr8BiPlanarVideoRange, поэтому я сейчас пытаюсь использовать следующий метод из vImageConvert, но мне не удается связать его должным образом.
Я пытаюсь получить доступ к функции C vImageConvert_ARGB8888To420Yp8_CbCr8 из Xamarin, но она не поддерживается или, по крайней мере, не связана.
Я пробовал следующее:
[DllImport("/System/Library/Frameworks/Accelerate.framework/Frameworks/vImage.framework/vImage")]
extern static vImageError vImageConvert_ARGB8888To420Yp8_CbCr8(ref vImageBuffer src, ref vImageBuffer destYp, ref vImageBuffer destCbCr, vImage_ARGBToYpCbCr info, [MarshalAs(UnmanagedType.LPArray)]uint[] permuteMap, vImageFlags flags);
Однако мне не удалось найти правильный тип для параметра info. Должно ли это быть просто IntPtr? И если как мне разрешить правильный тип, когда мне нужно вызвать этот внешний статический метод?
Я следил за этим SO вопросом: Как преобразовать BGRA в RGBA в Xamarin.iOS? , но теперь я застрял в типе для параметра info.
Спасибо.