///
<summary>
/// 解码回调函数
///
/// typedef void (*DECODER_VIDEO_CAPTURE_CALLBACK)(UINT nChannelNumber, void *DataBuf,UINT width,UINT height,UINT nFrameNum,UINT nFrameTime, SYSTEMTIME *pFrameAbsoluteTime,void *context)
/// </summary>
/// <param name="nChannelNumber"> 解码通道句柄 </param>
/// <param name="DataBuf"> 缓冲区地址 </param>
/// <param name="width"> 图像宽度 </param>
/// <param name="height"> 图像高度 </param>
/// <param name="nFrameNum"> 捕获的当前帧的序号 </param>
/// <param name="nFrameTime"> 捕获的当前帧的相对时间,单位:毫秒 </param>
/// <param name="pFrameAbsoluteTime"> 捕获的当前帧的绝对时间 </param>
/// <param name="context"> 设备上下文 </param>
public delegate void DECODER_VIDEO_CAPTURE_CALLBACK( uint nChannelNumber, IntPtr DataBuf, uint width, uint height, uint nFrameNum, uint nFrameTime, SYSTEMTIME pFrameAbsoluteTime, IntPtr context);
/// <summary>
/// 创建索引完成回调函数
///
/// typedef void (*FILE_REF_DONE_CALLBACK)(UINT nChannel,UINT nSize)
/// </summary>
/// <param name="nChannel"> 通道号 </param>
/// <param name="nSize"> 索引大小(暂时无效,以后可以增加索引导出、导入功能) </param>
public delegate void FILE_REF_DONE_CALLBACK( uint nChannel, uint nSize);
#endregion
/// <summary>
/// DS40xxSDK.dll
/// </summary>
public class HikVisionSDK
{
/// <summary>
/// 状态
/// </summary>
public static readonly List < string > state = new List < string > ( new string []{
"" , " 正在打开 " , " 音频信号丢失 " , " 视频信号丢失 " , " 有物体移动 " , // 0-4
" 自动分割录像 " , " 开始录像 " , " 停止录像 " , " 启动声音监听 " , " 停止声音监听 " , // 5-9
" 启动视频预览 " , " 停止视频预览 " , " 启动录像 " , " 停止录像 " , " 启动视频报警 " , // 10-14
" 关闭视频报警 " , " 启动音频报警 " , " 停止音频报警 " , " 启动移动侦测 " , " 停止移动侦测 " , // 15-19
" 启动视频遮挡 " , " 关闭视频遮挡 " , " 开始屏幕输出 " , " 停止屏幕输出 " , " 启动视频LOGO " , // 20-24
" 停止视频LOGO " , " 开始视频OSD " , " 停止视频OSD " , " 切换为黑白视频 " , " 切换为彩色视频 " , // 25-29
" 切换为黑屏显示 " , " 切换为白屏显示 " , " 视频色彩复位 " , " 启动全屏显示 " , " 采集卡已经加载 " , // 30-34
" 采集卡已经卸截 " , " 视频服务启动成功 " , " 视频服务已停止 " , " 静音 " , " 音量恢复 " , // 35-39
" 云台控制命令发送 " , " 系统出现未知错误 " , " 录像文件大小 " , " 配置端口号成功 " , " 连接服务端成功 " , // 40-44
" 正在连接 " , " 开始接收图象 " , " 异常退出 " , " 接收完毕,退出 " , " 无法联系服务端 " , // 45-49
" 服务端拒绝访问 " , " 无效 " , " 停止客户端连接 " , " 图像抓取成功 " , " 初始化服务端网络连接成功 " , // 50-54
" 视频服务启动失败 " , " 退出全屏预览 " , "" , "" , "" // 55-59
});
// 可以用新版函数替代功能或者无效的API
// GetTotalChannels:可用GetEncodeChannelCount替代
// GetTotalDSPs:可用GetDspCount 替代
// SetupDateTime:4.0版本起无效
// HW_GetChannelNum:无效,请使用GetBoardDetail
// HW_GetDeviceSerialNo:无效,请使用GetBoardDetail
// HW_SetVideoOutStandard:无效,请使用SetDisplayStandard或SetDefaultVideoStandard
// HW_SetDspDeadlockMsg:无效
// HW_ResetDsp:无效
// HW_SetDisplayPara:DISPLAY_PARA结构中bToVideoOut无效,MD卡模拟视频输出功能
// 已经整合到视频矩阵之中。
#region 流类型宏定义
/// <summary>
/// 视频流
/// #define STREAM_TYPE_VIDEO
/// </summary>
private const int STREAM_TYPE_VIDEO = 1 ;
/// <summary>
/// 音频流
/// #define STREAM_TYPE_AUDIO
/// </summary>
private const int STREAM_TYPE_AUDIO = 2 ;
/// <summary>
/// 音视频复合流
/// #define STREAM_TYPE_AVSYNC
/// </summary>
private const int STREAM_TYPE_AVSYNC = 3 ;
#endregion
#region 1.板卡初始化及卸载
/// <summary>
/// 1.1初始化DSP InitDSPs
/// 说 明: 初始化系统中每一块板卡,应在应用软件程序启动时完成。如果返回值为0则表
/// 明初始化失败,可能没有找到相应的DSP软件模块。
///
/// int __stdcall InitDSPs()
/// </summary>
/// <returns> 系统内可用的编码通道个数。 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int InitDSPs();
/// <summary>
/// 1.2卸载DSP DeInitDSPs
/// 说 明: 关闭每一块板卡上的功能,应在应用软件程序退出时调用。
///
/// int __stdcall DeInitDSPs()
/// </summary>
/// <returns> 0 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int DeInitDSPs();
#endregion
#region 2.板卡信息获取
/// <summary>
/// 2.1获取系统中板卡的张数GetBoardCount
/// 说 明: 获取系统中所有板卡的张数,包含编码卡和解码卡。
///
/// unsigned int __stdcall GetBoardCount()
/// </summary>
/// <returns> 系统中板卡的总张数。 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetBoardCount();
/// <summary>
/// 2.2获取系统中DSP的个数GetDspCount
/// 说 明: 获取系统中所有板卡的DSP的个数。
///
/// unsigned int __stdcall GetDspCount()
/// </summary>
/// <returns> 系统中DSP的总个数 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetDspCount();
/// <summary>
/// GetTotalDSPs:可用GetDspCount 替代
/// 获得实际可用DSP
/// </summary>
/// <returns></returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetTotalDSPs();
/// <summary>
/// 2.3获取系统中编码通道的个数GetEncodeChannelCount
/// 说 明: 获取系统中所有编码卡的编码通道总个数,包含H系列和HC系列编码卡。
///
/// unsigned int __stdcall GetEncodeChannelCount()
/// </summary>
/// <returns> 系统中编码通道的个数 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetEncodeChannelCount();
/// <summary>
/// 2.4获取系统中解码通道的个数GetDecodeChannelCount
/// 说 明: 获取系统中MD卡的解码通道个数
///
/// unsigned int __stdcall GetDecodeChannelCount()
/// </summary>
/// <returns></returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetDecodeChannelCount();
/// <summary>
/// 2.5获取系统中解码显示通道的个数GetDisplayChannelCount
/// 说 明: 获取系统中MD卡显示通道的个数,即模拟视频输出通道的个数
///
/// unsigned int __stdcall GetDisplayChannelCount()
/// </summary>
/// <returns> 系统中显示通道的个数 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetDisplayChannelCount();
/// <summary>
/// 2.6获取板卡详细信息GetBoardDetail
/// 说 明: 获取某张板卡的详细信息
///
/// int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail)
/// </summary>
/// <param name="boardNum"> 板卡索引 </param>
/// <param name="pBoardDetail"> 板卡信息 </param>
/// <returns> 成功返回0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetBoardDetail( uint boardNum, ref DS_BOARD_DETAIL pBoardDetail);
/// <summary>
/// 2.7获取DSP详细信息GetDspDetail
/// 说 明: 获取某个DSP的详细信息
///
/// int __stdcall GetDspDetail(UINT dspNum,DSP_DETAIL *pDspDetail)
/// </summary>
/// <param name="dspNum"> DSP索引 </param>
/// <param name="pDspDetail"> DSP信息 </param>
/// <returns> 成功返回0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetDspDetail( uint dspNum, ref DSP_DETAIL pDspDetail);
/// <summary>
/// 2.8获取板卡型号及序列号信息GetBoardInfo
/// 说 明: 获取板卡的型号及序列号信息
///
/// int __stdcall GetBoardInfo(HANDLE hChannelHandle, ULONG *BoardType, UCHAR *SerialNo)
/// </summary>
/// <param name="hChannelHandle"> 通道句柄 </param>
/// <param name="BoardType"> 板卡型号 </param>
/// <param name="SerialNo">
/// 板卡ID号, 内容为板卡序列号的ASCII的数值,次序为SerialNo[0] 对应最高位,
/// SerialNo[11]对应最低位。比如卡号为“40000002345”的值对应为 4,0,0,0,0,1,0,0,2,3,4,5 的整形数组。
/// </param>
/// <returns> 成功为0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetBoardInfo(IntPtr hChannelHandle, ulong BoardType, byte [] SerialNo);
/// <summary>
/// 2.9获取板卡特殊功能信息GetCapability
/// 说 明: 获取板卡特殊功能信息
///
/// int __stdcall GetCapability(HANDLE hChannelHandle, CHANNEL_CAPABILITY *Capability)
/// </summary>
/// <param name="hChannelHandle"> 通道句柄 </param>
/// <param name="Capability"> 特殊功能 </param>
/// <returns> 成功返回0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetCapability(IntPtr hChannelHandle, CHANNEL_CAPABILITY Capability);
/// <summary>
/// 2.10获取板卡SDK信息GetSDKVersion
/// 说 明: 获取当前所使用的DSP、Driver、SDK版本号
///
/// int __stdcall GetSDKVersion(PVERSION_INFO VersionInfo)
/// </summary>
/// <param name="VersionInfo"> 版本信息 </param>
/// <returns> 成功返回0;失败返回错误号。 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetSDKVersion( ref PVERSION_INFO VersionInfo);
/// <summary>
/// 2.11获取板卡SDK及DSP错误报告GetLastErrorNum*,此函数只对H卡有效
/// 说 明: 获取SDK及DSP错误报告。此函数只对H卡有效,用于HC卡上返回0且无效
///
/// int __stdcall GetLastErrorNum(HANDLE hChannelHandle, ULONG *DspError, ULONG *SdkError)
/// </summary>
/// <param name="hChannelHandle"> 通道句柄 </param>
/// <param name="DspError"> DSP错误 </param>
/// <param name="SdkError"> SDK错误 </param>
/// <returns> DSP错误信息、SDK错误信息 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetLastErrorNum(IntPtr hChannelHandle, ref int DspError, ref int SdkError);
#endregion
#region 3.编码卡API
#region 3.1通道打开及关闭
/// <summary>
/// 3.1.1打开通道ChannelOpen
/// 说 明: 打开通道,获取编码通道的操作句柄,与通道相关的操作需使用相对应的句柄。
///
/// HANDLE __stdcall ChannelOpen(int ChannelNum)
/// </summary>
/// <param name="ChannelNum"> 通道号(从0开始) </param>
/// <returns> 成功返回有效句柄(值可能为0);失败返回0xFFFFFFFF。 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern IntPtr ChannelOpen( int ChannelNum);
/// <summary>
/// 3.1.2关闭通道ChannelClose
/// 说 明: 关闭通道,释放相关资源
///
/// int __stdcall ChannelClose(HANDLE hChannelHandle)
/// </summary>
/// <param name="hChannelHandle"> 通道句柄 </param>
/// <returns> 成功返回0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int ChannelClose(IntPtr hChannelHandle);
#endregion
#region 3.2视频预览
#region 3.2.1 Overlay预览模式
// 释 义: overlay预览模式
// Overlay通常被称为重叠页面或者是覆盖层,是一种需要特定的硬件支持的页面,通常
// 被用于显示实时视频于主页面之上,而不需要Blit操作到主页面或用任何方法改变主页面的
/// 解码回调函数
///
/// typedef void (*DECODER_VIDEO_CAPTURE_CALLBACK)(UINT nChannelNumber, void *DataBuf,UINT width,UINT height,UINT nFrameNum,UINT nFrameTime, SYSTEMTIME *pFrameAbsoluteTime,void *context)
/// </summary>
/// <param name="nChannelNumber"> 解码通道句柄 </param>
/// <param name="DataBuf"> 缓冲区地址 </param>
/// <param name="width"> 图像宽度 </param>
/// <param name="height"> 图像高度 </param>
/// <param name="nFrameNum"> 捕获的当前帧的序号 </param>
/// <param name="nFrameTime"> 捕获的当前帧的相对时间,单位:毫秒 </param>
/// <param name="pFrameAbsoluteTime"> 捕获的当前帧的绝对时间 </param>
/// <param name="context"> 设备上下文 </param>
public delegate void DECODER_VIDEO_CAPTURE_CALLBACK( uint nChannelNumber, IntPtr DataBuf, uint width, uint height, uint nFrameNum, uint nFrameTime, SYSTEMTIME pFrameAbsoluteTime, IntPtr context);
/// <summary>
/// 创建索引完成回调函数
///
/// typedef void (*FILE_REF_DONE_CALLBACK)(UINT nChannel,UINT nSize)
/// </summary>
/// <param name="nChannel"> 通道号 </param>
/// <param name="nSize"> 索引大小(暂时无效,以后可以增加索引导出、导入功能) </param>
public delegate void FILE_REF_DONE_CALLBACK( uint nChannel, uint nSize);
#endregion
/// <summary>
/// DS40xxSDK.dll
/// </summary>
public class HikVisionSDK
{
/// <summary>
/// 状态
/// </summary>
public static readonly List < string > state = new List < string > ( new string []{
"" , " 正在打开 " , " 音频信号丢失 " , " 视频信号丢失 " , " 有物体移动 " , // 0-4
" 自动分割录像 " , " 开始录像 " , " 停止录像 " , " 启动声音监听 " , " 停止声音监听 " , // 5-9
" 启动视频预览 " , " 停止视频预览 " , " 启动录像 " , " 停止录像 " , " 启动视频报警 " , // 10-14
" 关闭视频报警 " , " 启动音频报警 " , " 停止音频报警 " , " 启动移动侦测 " , " 停止移动侦测 " , // 15-19
" 启动视频遮挡 " , " 关闭视频遮挡 " , " 开始屏幕输出 " , " 停止屏幕输出 " , " 启动视频LOGO " , // 20-24
" 停止视频LOGO " , " 开始视频OSD " , " 停止视频OSD " , " 切换为黑白视频 " , " 切换为彩色视频 " , // 25-29
" 切换为黑屏显示 " , " 切换为白屏显示 " , " 视频色彩复位 " , " 启动全屏显示 " , " 采集卡已经加载 " , // 30-34
" 采集卡已经卸截 " , " 视频服务启动成功 " , " 视频服务已停止 " , " 静音 " , " 音量恢复 " , // 35-39
" 云台控制命令发送 " , " 系统出现未知错误 " , " 录像文件大小 " , " 配置端口号成功 " , " 连接服务端成功 " , // 40-44
" 正在连接 " , " 开始接收图象 " , " 异常退出 " , " 接收完毕,退出 " , " 无法联系服务端 " , // 45-49
" 服务端拒绝访问 " , " 无效 " , " 停止客户端连接 " , " 图像抓取成功 " , " 初始化服务端网络连接成功 " , // 50-54
" 视频服务启动失败 " , " 退出全屏预览 " , "" , "" , "" // 55-59
});
// 可以用新版函数替代功能或者无效的API
// GetTotalChannels:可用GetEncodeChannelCount替代
// GetTotalDSPs:可用GetDspCount 替代
// SetupDateTime:4.0版本起无效
// HW_GetChannelNum:无效,请使用GetBoardDetail
// HW_GetDeviceSerialNo:无效,请使用GetBoardDetail
// HW_SetVideoOutStandard:无效,请使用SetDisplayStandard或SetDefaultVideoStandard
// HW_SetDspDeadlockMsg:无效
// HW_ResetDsp:无效
// HW_SetDisplayPara:DISPLAY_PARA结构中bToVideoOut无效,MD卡模拟视频输出功能
// 已经整合到视频矩阵之中。
#region 流类型宏定义
/// <summary>
/// 视频流
/// #define STREAM_TYPE_VIDEO
/// </summary>
private const int STREAM_TYPE_VIDEO = 1 ;
/// <summary>
/// 音频流
/// #define STREAM_TYPE_AUDIO
/// </summary>
private const int STREAM_TYPE_AUDIO = 2 ;
/// <summary>
/// 音视频复合流
/// #define STREAM_TYPE_AVSYNC
/// </summary>
private const int STREAM_TYPE_AVSYNC = 3 ;
#endregion
#region 1.板卡初始化及卸载
/// <summary>
/// 1.1初始化DSP InitDSPs
/// 说 明: 初始化系统中每一块板卡,应在应用软件程序启动时完成。如果返回值为0则表
/// 明初始化失败,可能没有找到相应的DSP软件模块。
///
/// int __stdcall InitDSPs()
/// </summary>
/// <returns> 系统内可用的编码通道个数。 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int InitDSPs();
/// <summary>
/// 1.2卸载DSP DeInitDSPs
/// 说 明: 关闭每一块板卡上的功能,应在应用软件程序退出时调用。
///
/// int __stdcall DeInitDSPs()
/// </summary>
/// <returns> 0 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int DeInitDSPs();
#endregion
#region 2.板卡信息获取
/// <summary>
/// 2.1获取系统中板卡的张数GetBoardCount
/// 说 明: 获取系统中所有板卡的张数,包含编码卡和解码卡。
///
/// unsigned int __stdcall GetBoardCount()
/// </summary>
/// <returns> 系统中板卡的总张数。 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetBoardCount();
/// <summary>
/// 2.2获取系统中DSP的个数GetDspCount
/// 说 明: 获取系统中所有板卡的DSP的个数。
///
/// unsigned int __stdcall GetDspCount()
/// </summary>
/// <returns> 系统中DSP的总个数 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetDspCount();
/// <summary>
/// GetTotalDSPs:可用GetDspCount 替代
/// 获得实际可用DSP
/// </summary>
/// <returns></returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetTotalDSPs();
/// <summary>
/// 2.3获取系统中编码通道的个数GetEncodeChannelCount
/// 说 明: 获取系统中所有编码卡的编码通道总个数,包含H系列和HC系列编码卡。
///
/// unsigned int __stdcall GetEncodeChannelCount()
/// </summary>
/// <returns> 系统中编码通道的个数 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetEncodeChannelCount();
/// <summary>
/// 2.4获取系统中解码通道的个数GetDecodeChannelCount
/// 说 明: 获取系统中MD卡的解码通道个数
///
/// unsigned int __stdcall GetDecodeChannelCount()
/// </summary>
/// <returns></returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetDecodeChannelCount();
/// <summary>
/// 2.5获取系统中解码显示通道的个数GetDisplayChannelCount
/// 说 明: 获取系统中MD卡显示通道的个数,即模拟视频输出通道的个数
///
/// unsigned int __stdcall GetDisplayChannelCount()
/// </summary>
/// <returns> 系统中显示通道的个数 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern uint GetDisplayChannelCount();
/// <summary>
/// 2.6获取板卡详细信息GetBoardDetail
/// 说 明: 获取某张板卡的详细信息
///
/// int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail)
/// </summary>
/// <param name="boardNum"> 板卡索引 </param>
/// <param name="pBoardDetail"> 板卡信息 </param>
/// <returns> 成功返回0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetBoardDetail( uint boardNum, ref DS_BOARD_DETAIL pBoardDetail);
/// <summary>
/// 2.7获取DSP详细信息GetDspDetail
/// 说 明: 获取某个DSP的详细信息
///
/// int __stdcall GetDspDetail(UINT dspNum,DSP_DETAIL *pDspDetail)
/// </summary>
/// <param name="dspNum"> DSP索引 </param>
/// <param name="pDspDetail"> DSP信息 </param>
/// <returns> 成功返回0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetDspDetail( uint dspNum, ref DSP_DETAIL pDspDetail);
/// <summary>
/// 2.8获取板卡型号及序列号信息GetBoardInfo
/// 说 明: 获取板卡的型号及序列号信息
///
/// int __stdcall GetBoardInfo(HANDLE hChannelHandle, ULONG *BoardType, UCHAR *SerialNo)
/// </summary>
/// <param name="hChannelHandle"> 通道句柄 </param>
/// <param name="BoardType"> 板卡型号 </param>
/// <param name="SerialNo">
/// 板卡ID号, 内容为板卡序列号的ASCII的数值,次序为SerialNo[0] 对应最高位,
/// SerialNo[11]对应最低位。比如卡号为“40000002345”的值对应为 4,0,0,0,0,1,0,0,2,3,4,5 的整形数组。
/// </param>
/// <returns> 成功为0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetBoardInfo(IntPtr hChannelHandle, ulong BoardType, byte [] SerialNo);
/// <summary>
/// 2.9获取板卡特殊功能信息GetCapability
/// 说 明: 获取板卡特殊功能信息
///
/// int __stdcall GetCapability(HANDLE hChannelHandle, CHANNEL_CAPABILITY *Capability)
/// </summary>
/// <param name="hChannelHandle"> 通道句柄 </param>
/// <param name="Capability"> 特殊功能 </param>
/// <returns> 成功返回0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetCapability(IntPtr hChannelHandle, CHANNEL_CAPABILITY Capability);
/// <summary>
/// 2.10获取板卡SDK信息GetSDKVersion
/// 说 明: 获取当前所使用的DSP、Driver、SDK版本号
///
/// int __stdcall GetSDKVersion(PVERSION_INFO VersionInfo)
/// </summary>
/// <param name="VersionInfo"> 版本信息 </param>
/// <returns> 成功返回0;失败返回错误号。 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetSDKVersion( ref PVERSION_INFO VersionInfo);
/// <summary>
/// 2.11获取板卡SDK及DSP错误报告GetLastErrorNum*,此函数只对H卡有效
/// 说 明: 获取SDK及DSP错误报告。此函数只对H卡有效,用于HC卡上返回0且无效
///
/// int __stdcall GetLastErrorNum(HANDLE hChannelHandle, ULONG *DspError, ULONG *SdkError)
/// </summary>
/// <param name="hChannelHandle"> 通道句柄 </param>
/// <param name="DspError"> DSP错误 </param>
/// <param name="SdkError"> SDK错误 </param>
/// <returns> DSP错误信息、SDK错误信息 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int GetLastErrorNum(IntPtr hChannelHandle, ref int DspError, ref int SdkError);
#endregion
#region 3.编码卡API
#region 3.1通道打开及关闭
/// <summary>
/// 3.1.1打开通道ChannelOpen
/// 说 明: 打开通道,获取编码通道的操作句柄,与通道相关的操作需使用相对应的句柄。
///
/// HANDLE __stdcall ChannelOpen(int ChannelNum)
/// </summary>
/// <param name="ChannelNum"> 通道号(从0开始) </param>
/// <returns> 成功返回有效句柄(值可能为0);失败返回0xFFFFFFFF。 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern IntPtr ChannelOpen( int ChannelNum);
/// <summary>
/// 3.1.2关闭通道ChannelClose
/// 说 明: 关闭通道,释放相关资源
///
/// int __stdcall ChannelClose(HANDLE hChannelHandle)
/// </summary>
/// <param name="hChannelHandle"> 通道句柄 </param>
/// <returns> 成功返回0;失败返回错误号 </returns>
[DllImport( " DS40xxSDK.dll " )]
public static extern int ChannelClose(IntPtr hChannelHandle);
#endregion
#region 3.2视频预览
#region 3.2.1 Overlay预览模式
// 释 义: overlay预览模式
// Overlay通常被称为重叠页面或者是覆盖层,是一种需要特定的硬件支持的页面,通常
// 被用于显示实时视频于主页面之上,而不需要Blit操作到主页面或用任何方法改变主页面的
//内容。使用该方式进行预览可以提高预览的画质和降低CPU利用率。
本文转自over140 51CTO博客,原文链接:http://blog.51cto.com/over140/586677,如需转载请自行联系原作者