Оболочка C # для массива из трех указателей - PullRequest
1 голос
/ 15 марта 2010

В настоящее время я работаю над оболочкой C # для работы с Dallmeier Common API light.
Смотрите предыдущие публикации: Оболочка C # и обратные вызовы

У меня почти все "обернуто", но я застрял при переносе обратного вызова, который содержит массив из трех указателей и целые числа массива:

dlm_setYUVDataCllback

int(int SessionHandle, void (*callback) (long IPlayerID, unsigned char** yuvData,  
    int* pitch, int width, int height, int64_t ts, char* extData))  

Функция Установить обратный вызов для получения текущего изображения YUV.
Аргументы SessionHandle: дескриптор текущего сеанса.
Return PlayerID (см. Обратный вызов).
Обратный вызов - IPlayerId: идентификатор объекта Player
- yuvData: массив из трех указателей на Y, U и V часть изображения
Используемый формат YUV - плоский YUV420 (не упакован).
char * y = yuvData [0];
char * u = yuvData [1];
char * v = yuvData [2];
- шаг: массив целых чисел для шагов для Y, U и V части изображения
- ширина: собственная ширина изображения.
- высота
- ts: метка времени текущего кадра
- extData: дополнительные данные для кадра

Как мне обернуть это в c #?

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 15 марта 2010

unsigned char** yuvData следует определить как [MarshalAs(UnmanagedType.ByValArray,SizeConst=3)] IntPtr[] yuvData

Затем вы получите массив из 3 IntPtrs. Вы можете прочитать фактические данные, используя Marshal.Read или Marshal.Copy.

...