111,126
社区成员
发帖
与我相关
我的任务
分享
/*
struct _dhir_rect
{
int32_t x;
int32_t y;
int32_t width;
int32_t height;
};*/
[StructLayout(LayoutKind.Sequential)]
public struct _dhir_rect
{
public Int32 x;
public Int32 y;
public Int32 width;
public Int32 height;
}
/*
struct _dhir_format
{
char identifier[128];
dhir_rect_t size;
dhir_rect_t min_size;
dhir_rect_t max_size;
int32_t bpp;
u_int32_t fourcc;
u_int32_t flags;
int32_t buffer_size;
};
*/
[StructLayout(LayoutKind.Sequential)]
public struct _dhir_format
{
[MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 128)]
public string identifier;
public _dhir_rect size;
public _dhir_rect min_size;
public _dhir_rect max_size;
public Int32 bpp;
public UInt32 fourcc;
public UInt32 flags;
public Int32 buffer_size;
}
/*
struct timeval
{
long tv_sec;
long tv_usec;
};
*/
[StructLayout(LayoutKind.Sequential)]
public struct timeval
{
public Int64 tv_sec;
public Int64 tv_usec;
}
/*
struct _dhir_data_buffer
{
dhir_format_t format;
int32_t frame_number;
int32_t process_finish;
struct timeval fill_time;
unsigned char *data;
void *ptr_user;
u_int32_t reserved[8];
};
*/
[StructLayout(LayoutKind.Sequential)]
public struct _dhir_data_buffer
{
public _dhir_format format;
public Int32 frame_number;
public Int32 process_finish;
public timeval fill_time;
public IntPtr data;
public IntPtr ptr_user;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)]
public UInt32[] reserved;
}
/*
int __stdcall dhir_start_capture(IN dhir_handle_t handle,IN dhir_callback_func_t callback_func,void *user_data);
*/
[DllImport("dhircam.dll", EntryPoint = "dhir_start_capture", CharSet = CharSet.Ansi)]
public static extern int dhir_start_capture(IntPtr handle, dhir_callback_func_t callback_func, IntPtr user_data);
--------------------------------------------------------
c++
/* user callback function */
typedef dhir_status_t (*dhir_callback_func_t)( dhir_data_buffer_t *buffer);
c#
[UnmanagedFunctionPointer(CallingConvention.Winapi)]
public delegate Int32 dhir_callback_func_t(ref dhirCam._dhir_data_buffer indata);
static dhir_callback_func_t myStreamCallback = new dhir_callback_func_t(StreamCallback);
public static Int32 StreamCallback(ref dhirCam._dhir_data_buffer indata)
{
return 0;
}