Как преобразовать ARGB8888 в 420Yp8_CbCr8 в Xamarin.iOS? - PullRequest
0 голосов
/ 23 января 2019

Я записываю видео, используя 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.

Спасибо.

...