C#包装器,用于三个指针的数组

时间:2010-03-15 02:08:57

标签: c# arrays pointers wrapper

我目前正在使用C#包装器来处理Dallmeier Common API灯 请参阅上一篇文章:C# wrapper and Callbacks

我已经拥有了所有“包裹”的东西,但是我仍然坚持包含一个包含三个指针数组的回调。数组整数:

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:当前会话的句柄 返回 PlayerID(请参阅回调) 回调 - IPlayerId:播放器对象的身份
               - yuvData:指向图像的Y,U和V部分的三个指针的数组                 使用的YUV格式是YUV420平面(未打包)                 char * y = yuvData [0];
                char * u = yuvData [1];
                char * v = yuvData [2];
               - pitch:用于图像的Y,U和V部分的音高的整数数组                - 宽度:图像的固有宽度                - 高度
               - ts:当前帧的时间戳
               - extData:框架的附加数据

如何在c#中包装它?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

unsigned char** yuvData应定义为[MarshalAs(UnmanagedType.ByValArray,SizeConst=3)] IntPtr[] yuvData

然后您将获得3个IntPtrs的数组。您可以使用Marshal.Read或Marshal.Copy读取实际数据。