我目前正在使用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#中包装它?
非常感谢任何帮助。
答案 0 :(得分:0)
unsigned char** yuvData
应定义为[MarshalAs(UnmanagedType.ByValArray,SizeConst=3)] IntPtr[] yuvData
然后您将获得3个IntPtrs的数组。您可以使用Marshal.Read或Marshal.Copy读取实际数据。