海康威视DS-4100、4000HC 系列板卡SDK编程指南

目    录
板卡介绍篇............................................................................................................................... ........8
SDK 版本更新篇............................................................................................................................... 9
错误代码及说明.............................................................................................................................17  
数据类型及数据结构定义.............................................................................................................18
API调用顺序............................................................................................................................... ...19
函数说明篇............................................................................................................................... ......22
1. 板卡初始化及卸载..............................................................................................................22
1.1初始化DSP InitDSPs ................................................................................................22
1.2卸载DSP DeInitDSPs ...............................................................................................22
2. 板卡信息获取......................................................................................................................22
2.1获取系统中板卡的张数GetBoardCount..................................................................22
2.2获取系统中DSP 的个数GetDspCount......................................................................22
2.3获取系统中编码通道的个数GetEncodeChannelCount..........................................23
2.4获取系统中解码通道的个数GetDecodeChannelCount..........................................23
2.5获取系统中解码显示通道的个数GetDisplayChannelCount..................................23
2.6获取板卡详细信息GetBoardDetail..........................................................................23
2.7获取DSP 详细信息GetDspDetail..............................................................................24
2.8获取板卡型号及序列号信息GetBoardInfo.............................................................25
2.9获取板卡特殊功能信息GetCapability ....................................................................25
2.10 获取板卡SDK 信息GetSDKVersion.......................................................................26
3. 编码卡API ...........................................................................................................................26
3.1通道打开及关闭 .......................................................................................................26
3.1.1打开通道ChannelOpen..................................................................................26
3.1.2关闭通道ChannelClose .................................................................................26
3.2视频预览...................................................................................................................27
3.2.1Overlay预览模式............................................................................................27
3.2.1.1 设置视频预览模式SetPreviewOverlayMode.....................................27
3.2.1.2 设置overlay关键色SetOverlayColorKey ...........................................27
3.2.1.3 恢复当前丢失的表面RestoreOverlay................................................27
3.2.2开启及停止视频预览 ....................................................................................28
3.2.2.1 开启视频预览StartVideoPreview .......................................................28
3.2.2.2 停止视频预览StopVideoPreview .......................................................28
3.2.3视频参数的设置及获取 ................................................................................28
3.2.3.1 设置视频参数SetVideoPara ...............................................................28
3.2.3.2 获取视频参数GetVideoPara...............................................................29
3.3视频信号设置(制式、状况、输入位置等) .......................................................29
3.3.1设置系统默认的视频制式SetDefaultVideoStandard...................................29
3.3.2设置视频信号灵敏度SetVideoDetectPrecision ............................................29
3.3.3获取视频信号输入情况GetVideoSignal......................................................30
3.3.4调整视频信号输入位置SetInputVideoPosition............................................30
3.3.5设置反隔行变换及强度SetDeInterlace ........................................................30
3.4视频编码参数设置 ...................................................................................................31
版权所有(C)杭州海康威视数字技术股份有限公司  2
海康威视DS-4100、4000HC 系列板卡SDK编程指南
3.4.1主、子通道切换SetupSubChannel...............................................................31
3.4.2获取双编码时数据流类型GetSubChannelStreamType................................31
3.4.3编码流类型的设置及获取(不支持动态修改) ........................................32
3.4.3.1 设置主通道编码流类型SetStreamType.............................................32
3.4.3.2 获取主通道编码流类型GetStreamType ............................................32
3.4.3.3 设置子通道编码流类型SetSubStreamType .......................................32
3.4.3.4 获取子通道编码流类型GetSubStreamType ......................................32
3.4.4(支持动态修改)的编码参数设置 .............................................................33
3.4.4.1 设置编码图像质量SetDefaultQuant ..................................................33
3.4.4.2 设置编码帧结构、帧率SetIBPMode................................................33
3.4.4.3 设置编码分辨率 .................................................................................33
3.4.4.3.1 设置主通道分辨率SetEncoderPictureFormat.........................33
3.4.4.3.2 设置子通道编码分辨率SetSubEncoderPictureFormat ...........34
3.4.4.4 设置码率及码流控制模式 .................................................................34
3.4.4.4.1 设置码流最大比特率SetupBitrateControl..............................34
3.4.4.4.2 设置码流控制方式SetBitrateControlMode.............................34
3.4.5强制设定I帧CaptureIFrame..........................................................................35
3.4.6获取帧统计信息GetFramesStatistics ............................................................35
3.5数据捕获...................................................................................................................35
3.5.1抓图(获取单帧图像数据) ........................................................................35
3.5.1.1 抓取BMP格式图像............................................................................35
3.5.1.1.1 获取原始yuv422格式数据GetOriginalImage........................35
3.5.1.1.2 图像格式转换YUVtoBMP SaveYUVToBmpFile ..................36
3.5.1.2 抓取JPEG格式图像GetJpegImage .....................................................36
3.5.2原始图像数据流捕获(获取YUV420 格式数据流) ................................36
3.5.2.1 注册原始图像数据流回调函数RegisterImageStreamCallback........36
3.5.2.2 开启及停止原始数据流捕获SetImageStream ...................................37
3.5.3编码数据流捕获(获取编码后H.264 格式数据流)即录像 .....................37
3.5.3.1 编码数据流捕获方式设置 .................................................................37
3.5.3.1.1 方式一、直接读取方式 ..........................................................37
3.5.3.1.1.1 注册编码图像数据流直接读取回调函数
RegisterStreamDirectReadCallback................................................37
3.5.3.1.2 方式二、消息读取方式 ..........................................................38
3.5.3.1.2.1 注册消息读取码流函数RegisterMessageNotifyHandle
.........................................................................................................38
3.5.3.1.3 方式三、另一种直接读取方式 ..............................................38
3.5.3.1.3.1 注册直接读取码流回调函数
RegisterStreamReadCallback ..........................................................38
3.5.3.2 读取码流函数ReadStreamData ..........................................................38
3.5.3.3 开启及停止录像 .................................................................................39
3.5.3.3.1 启动主通道编码数据流捕获StartVideoCapture ....................39
3.5.3.3.2 停止主通道编码数据流捕获StopVideoCapture.....................39
3.5.3.3.3 启动子通道编码数据流捕获StartSubVideoCapture ..............39
3.5.3.3.4 停止子通道编码数据流捕获StopSubVideoCapture ...............40
版权所有(C)杭州海康威视数字技术股份有限公司  3
海康威视DS-4100、4000HC 系列板卡SDK编程指南
3.6移动侦测...................................................................................................................40
3.6.1设置方式一 ....................................................................................................40
3.6.1.1 设置移动侦测灵敏度AdjustMotionDetectPrecision .........................40
3.6.1.2 设置移动侦测区域范围及个数SetupMotionDetection.....................41
3.6.1.3 移动侦测分析MotionAnalyzer...........................................................41
3.6.2设置方式二 ....................................................................................................41
3.6.2.1 设置移动侦测(扩展)SetupMotionDetectionEx............................41
3.6.3启动及停止移动侦测 ....................................................................................42
3.6.3.1 启动移动侦测StartMotionDetection ..................................................42
3.6.3.2 停止移动侦测StopMotionDetection ..................................................42
3.7视频信息叠加 ...........................................................................................................43
3.7.1信息叠入视频编码(OSD 、LOGO 、MASK ).........................................43
3.7.1.1 OSD.....................................................................................................43
3.7.1.1.1 设置OSD 显示模式SetOsdDisplayMode.................................43
3.7.1.1.2 设置OSD 显示模式(扩展)SetOsdDisplayModeEx ............44
3.7.1.1.3 设置OSD 显示SetOsd ..............................................................45
3.7.1.2 LOGO ..................................................................................................45
3.7.1.2.1 数据格式转换(bmp 转yuv422)LoadYUVFromBmpFile ....45
3.7.1.2.2 设置LOGO 显示模式SetLogoDisplayMode ............................46
3.7.1.2.3 设置LOGO 显示位置及数据SetLogo .....................................46
3.7.1.2.4 停止LOGO 显示StopLogo .......................................................46
3.7.1.3 视频遮挡MASK .................................................................................47
3.7.1.3.1 设置屏幕遮挡SetupMask ........................................................47
3.7.1.3.1 停止屏幕遮挡StopMask..........................................................47
3.7.2仅在预览画面上叠加信息 ............................................................................47
3.7.2.1 注册画图回调函数RegisterDrawFun.................................................47
3.7.2.2 停止画图回调StopRegisterDrawFun .................................................48
3.8音频...........................................................................................................................48
3.8.1设置音频预览SetAudioPreview....................................................................48
3.8.2获取音频输入音量幅度GetSoundLevel.......................................................48
3.9其他...........................................................................................................................48
3.9.1复位DSP ResetDSP**...................................................................................48
3.9.2设置看门狗SetWatchDog ..............................................................................49
3.9.3码流数字水印校验 ........................................................................................49
3.9.3.1 设置主通道数字水印校验SetChannelStreamCRC ...........................49
3.9.3.2 设置子通道数字水印校验SetSubChannelStreamCRC .....................49
4. 解码卡API ...........................................................................................................................50
4.1解码卡初始化及释放 ...............................................................................................50
4.1.1初始化及释放解码卡 ....................................................................................50
4.1.1.1 初始化解码卡HW_InitDecDevice .....................................................50
4.1.1.2 释放解码卡HW_ReleaseDecDevice ..................................................50
4.1.2初始化及释放DirectDraw .............................................................................50
4.1.2.1 初始化DirectDraw HW_InitDirectDraw............................................50
4.1.2.2 释放DirectDraw HW_ReleaseDirectDraw .........................................51
版权所有(C)杭州海康威视数字技术股份有限公司  4
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.1.3打开及关闭解码通道 ....................................................................................51
4.1.3.1 打开解码通道HW_ChannelOpen ......................................................51
4.1.3.2.关闭解码通道HW_ChannelClose ......................................................51
4.2解码卡信息获取 .......................................................................................................51
4.2.1版本信息获取HW_GetVersion .....................................................................51
4.3解码卡音视频信号输出设置 ...................................................................................52
4.3.1音频输出设置 ................................................................................................52
4.3.1.1 音频预览设置HW_SetAudioPreview................................................52
4.3.1.2 音频模拟输出设置SetDecoderAudioOutput .....................................52
4.3.2视频输出设置 ................................................................................................53
4.3.2.1 视频制式设置 .....................................................................................53
4.3.2.1.1 设置视频显示通道的视频制式SetDisplayStandard ...............53
4.3.2.2 视频预览设置 .....................................................................................53
4.3.2.2.1 设置视频显示参数HW_SetDisplayPara.................................53
4.3.2.2.2 刷新overlay表面HW_RefreshSurface.....................................53
4.3.2.2.3 重载overlay表面HW_RestoreSurface.....................................54
4.3.2.2.4 清除overlay表面中的数据HW_ClearSurface.........................54
4.3.2.2.5 缩放overlay表面的显示区域HW_ZoomOverlay ...................54
4.3.2.2.6 预览去闪烁功能HW_SetDecoderPostProcess........................54
4.3.2.3 视频模拟输出显示区域设置 .............................................................55
4.3.2.3.1 设置显示区域的形式及参数(视频模拟输出的画面分割情
况)SetDisplayRegion............................................................................55
4.3.2.3.2 改变某个显示区域的位置SetDisplayRegionPosition ............55
4.3.2.3.3 用自定义的图像填充显示区域FillDisplayRegion.................56
4.3.2.3.4 清空显示区域ClearDisplayRegion.........................................56
4.3.3.4 视频模拟输出设置 .............................................................................56
4.3.3.4.1 视频解码模拟输出(MD卡内部输出)SetDecoderVideoOutput
.................................................................................................................56
4.3.3.4.2 视频解码通道模拟输出扩展(MD卡外部输出)
SetDecoderVideoExtOutput....................................................................57
4.3.3.4.3 视频编码通道模拟输出(MD 卡外部输出)
SetEncoderVideoExtOutput....................................................................57
4.3.3.4.4 设置视频模拟输出亮度SetDisplayVideoBrightness..............57
4.4解码卡解码及播放 ...................................................................................................58
4.4.1解码卡数据解码方式设置(解码数据流、解码录像文件) ....................58
4.4.1.1 解码卡解码数据流 .............................................................................58
4.4.1.1.1 打开数据流HW_OpenStream.................................................58
4.4.1.1.2 关闭数据流HW_CloseStream.................................................58
4.4.1.1.3 输入数据流HW_InputData.....................................................58
4.4.1.1.4 流模式下重启解码器HW_ResetStream.................................58
4.4.1.2 解码卡解码数据流功能扩展(以视、音频分开的形式) .............59
4.4.1.2.1 打开数据流HW_OpenStreamEx.............................................59
4.4.1.2.2 关闭数据流HW_CloseStreamEx.............................................59
4.4.1.2.3 输入视频数据流HW_InputVideoData....................................59
版权所有(C)杭州海康威视数字技术股份有限公司  5
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.4.1.2.4 输入音频数据流HW_InputAudioData ...................................59
4.4.1.3 解码卡解码录像文件 .........................................................................60
4.4.1.3.1 打开录像文件HW_OpenFile ..................................................60
4.4.1.3.2 关闭录像文件HW_CloseFile..................................................60
4.4.1.4 设置及获取流播放参数 .....................................................................60
4.4.1.4.1 设置流播放模式及参数HW_SetStreamOpenMode ...............60
4.4.1.4.2 获取流播放模式及参数HW_GetStreamOpenMode ...............60
4.4.2视音频播放 ....................................................................................................61
4.4.2.1 视频播放 .............................................................................................61
4.4.2.1.1 开始视频播放HW_Play ..........................................................61
4.4.2.1.2 停止视频播放HW_Stop ..........................................................61
4.4.2.2 音频播放 .............................................................................................61
4.4.2.2.1 打开声音HW_PlaySound........................................................61
4.4.2.2.2 关闭声音HW_StopSound........................................................61
4.4.2.2.3 音量调节HW_SetVolume........................................................61
4.4.2.3 暂停播放HW_Pause...........................................................................62
4.4.3解码播放信息设置及获取 ............................................................................62
4.4.3.1 解码播放速度设置及获取 .................................................................62
4.4.3.1.1 设置播放速度HW_SetSpeed ..................................................62
4.4.3.1.2 获取播放速度HW_GetSpeed..................................................62
4.4.3.2 解码播放位置设置及获取 .................................................................63
4.4.3.2.1 设置播放位置HW_SetPlayPos ...............................................63
4.4.3.2.2 获取播放位置HW_GetPlayPos ...............................................63
4.4.3.3 设置解码播放跳跃 .............................................................................63
4.4.3.3.1 设置播放跳跃时间间隔HW_SetJumpInterval .......................63
4.4.3.3.2 设置播放跳跃方向HW_Jump.................................................63
4.4.4解码时间及帧信息获取 ................................................................................64
4.4.4.1 时间信息获取 .....................................................................................64
4.4.4.1.1 获取文件总时间HW_GetFileTime.........................................64
4.4.4.1.2 获取当前播放帧的时间(相对时间)
HW_GetCurrentFrameTime....................................................................64
4.4.4.1.3 获取文件的起止的绝对时间HW_GetFileAbsoluteTime .......64
4.4.4.1.4 获取文件当前播放的绝对时间HW_GetCurrentAbsoluteTime
.................................................................................................................64
4.4.4.1.5 按照绝对时间定位文件播放位置HW_LocateByAbsoluteTime
.................................................................................................................65
4.4.4.2 帧信息获取 .........................................................................................65
4.4.4.2.1 获取文件总帧数HW_GetFileTotalFrames..............................65
4.4.4.2.2 获取已解码的视频帧数HW_GetPlayedFrames.....................65
4.4.4.2.3 获取当前播放帧率HW_GetCurrentFrameRate......................65
4.4.4.2.4 获取当前播放帧序号HW_GetCurrentFrameNum.................66
4.4.4.2.5 按照帧号定位文件播放位置HW_LocateByFrameNumber ...66
4.5数据捕获...................................................................................................................66
4.5.1抓图................................................................................................................66
版权所有(C)杭州海康威视数字技术股份有限公司  6
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.5.1.1 抓取MD卡解码后YV12格式图像HW_GetYV12Image..................66
4.5.1.2 图像格式转换(YV12转为BMP)HW_ConvertToBmpFile ..........66
4.5.2录像................................................................................................................67
4.5.2.1 启动码流捕获HW_StartCapFile........................................................67
4.5.2.2 停止码流捕获HW_StopCapFile........................................................67
4.5.2.3 获取码流中图像尺寸HW_GetPictureSize........................................67
4.5.3解码后原始数据流捕获(YUV420 格式)................................................68
4.5.3.1 MD 卡解码通道原始图像数据回调 ...................................................68
4.5.3.1.1 注册解码通道数据流捕获回调函数
RegisterDecoderVideoCaptureCallback ..................................................68
4.5.3.1.2 设置解码通道数据流捕获函数HW_SetDecoderVideoCapture
.................................................................................................................68
4.5.3.2 MD 卡显示通道原始图像数据回调 ...................................................69
4.5.3.2.1 注册显示通道数据流捕获回调函数
RegisterDisplayVideoCaptureCallback...................................................69
4.5.3.2.2 设置显示通道数据流捕获函数SetDisplayVideoCapture .......69
4.6其他...........................................................................................................................69
4.6.1文件结束标志HW_SetFileEndMsg..............................................................69
4.6.2文件索引 ........................................................................................................70
4.6.2.1 设置文件索引HW_SetFileRef...........................................................70
4.6.2.2 文件索引导入HW_ImportFileRef .....................................................70
4.6.2.3 文件索引导出HW_ExportFileRef .....................................................70
4.6.3解码画图回调(在offscreen 预览模式下有效) .........................................71
4.6.3.1 注册解码画图回调函数HW_RegisterDrawFun................................71
4.6.3.2 停止解码画图回调函数HW_StopRegisterDrawFun.........................71
5.0 版本SDK新增函数..........................................................................................................71
编码通道音频矩阵输出(内部输出)SetEncoderAudioOutput ..................71
编码通道音频矩阵输出(外部输出)SetEncoderAudioExtOutput............72
解码通道音频矩阵输出(外部输出)SetDecoderAudioExtOutput............72
函数索引(按英文字母排序).....................................................................................................72
附录............................................................................................................................... .................74
 
 
 
 
 
 
板卡介绍篇
海康威视DS-4100、4000HC 系列是面向数字监控行业而推出的专用板卡,采用了高性
能的视频压缩技术标准H.264 及OggVorbis(相当于G.722) 的音频编码标准,完全依靠硬件实
现了视频及音频的实时编码(CIF 格式25 帧PA L /  3 0 帧NTSC)并精确同步,实现了动态
码率、可控帧率、帧模式选择、动态图像质量控制,音频预览、视频丢失报警等功能,能独
立调整各通道参数,性能稳定而且可靠。与MPEG-I产品相比,在保持同等图像质量的前提
下,能大大节省存储空间、并非常适合宽带网或窄带网的传输,是新一代数字监控产品的最
佳选择。
海康威视DS-4100、4000HC 系列板卡SDK 分为三部分,分别为系统 SDK 、网络 SDK 、
播放SDK ,本文档专门描述系统SDK ,其他SDK请参照我公司相关文档。系统SDK 是专
门为该系列板卡设计的本地录像软件接口程序,以动态连接库的形式提供给应用软件开发
者,并同时附有演示程序(HikVision H.264 System Demo)及其源码,能有效地缩短应用
软件的开发周期。
在使用过程中,特别提醒软件开发人员,DS-4100、4000HC 系列板卡可以在编码的同
时修改除码流类型(复合流、纯视频流、音频流)外的所有参数,包括分辨率、码流、帧结构。
譬如在压缩过程中可改变帧率(SetIBPMode)、量化系数(SetDefaultQuant )、分辨率、码流、
帧结构而无须停止、启动压缩。播放器会自动识别帧率、分辨率等参数,按当前压缩帧率、
分辨率播放且声音图像播放保持正常。
通过动态修改量化系数(I、B 、P)可控制压缩码率,当码率太高时,加大量化系数;
当码率太低时,减少量化系数。当然,在量化系数满足的情况下,不必再降低量化系数。
DS-4100、4000HC 系列压缩卡的运动检测独立于压缩,不进行压缩也可以进行运动检
测。可动态改变帧率非常有价值,在无运动时按低帧率录像,运动时按高帧率录像,记录在
同一个文件内,可大大节省硬盘空间。
DS-4004HC板卡支持4 路的DCIF/2CIF/CIF/QCIF 实时编码压缩,也支持2 路的 4CIF
实时编码压缩。若需要作为4CIF编码录像,应用程序可以从DS-4004HC的4 个编码通道
中任意选取两个通道设置为4CIF分辨率,然后对这两个通道进行录像,此时,此DS-4004HC
卡的另外两个通道的图像可以作为视频预览或者不予以显示.
DS-4008HC板卡支持8 路的2CIF/CIF/QCIF实时编码压缩,也支持4 路的4CIF实时编码
压缩。若需要作为 4CIF编码录像,应用程序可以从DS-4008HC 的8 个编码通道(编码通道为
0 ,1,2 ,3,4 ,5 ,6,7  )中的前面4 个通道(0,1,2,3) 任意选取两个通道设置为 4CIF分辨率,
再从后面4 个编码通道(4,5,6,7) 中任意选取两个通道设置为 4CIF分辨率,然后对这选中的四
个通道进行录像;对于DS-4004HC和DS-4008HC板卡,通过子通道编码,可以把每一个通道
全部设置为4CIF分辨率(SetSubEncoderPictureFormat ),这样每一个通道就都可以实现 4CIF
编码,然后通过函数StartSubVideoCapture 实现每个通道的 4CIF分辨率录像。在一般场景下,
每路图像都可以达到15 帧以上。
DS-4016HCS:16路视音频压缩卡。支持 16路CIF 音视频实时压缩,支持CIF/QCIF
分辨率,不支持4CIF、2CIF、DCIF分辨率,不支持双编码。
DS-4008HS 、DS-4016HS :1 芯8 路视音频压缩板卡,每个 DSP 支持8 路CIF 音视频实
时压缩,支持CIF/QCIF分辨率,不支持4CIF、2CIF、DCIF分辨率,不支持双编码。
DS-4108HCV 、DS-4116HCV :采用DM 648 DSP,DS-4108HCV 包含1 个DSP ,
DS-4116HCV 包含2 个DSP ,  每个DSP 支持8 路DCIF/2CIF/CIF/QCIF,或者 4 路4CIF分
版权所有(C)杭州海康威视数字技术股份有限公司  8
海康威视DS-4100、4000HC 系列板卡SDK编程指南
辨率音视频压缩,每张板卡支持1 路模拟视频矩阵输出和1 路模拟音频矩阵输出功能,41
系列板卡音频实时监听功能不需用4 针线连接板卡和声卡音频输入口。
SDK版本更新篇
5.0版本(2008-10-6):
更新:
z   支持全新推出的DS-4100HCV 卡(DS-4108HCV、DS-4116HCV)。
z   5.0  版本SDK 兼容DS-4100HCV 、DS-4000HC/HC+/HCS/HF/HS/MD/ 系列板卡,不
再兼容DS-4000H系列板卡。
z   新增音频矩阵输出功能,可将任意编码通道或者解码通道的音频数据输出到任意模
拟音频输出口上,本功能适用于HCV卡和MD卡。
z   HCV卡视频矩阵输出功能使用函数SetEncoderVideoExtOutput实现,与MD卡本
地矩阵输出功能相同,音频矩阵输出使用新增函数SetEncoderAudioOutput 或者
SetEncoderAudioOutputExt实现。
修正bug :
z   解决了移动侦测区域判断出错的问题
z   解决了HS卡全屏预览反复启停时错位的问题。
新增API 函数:
SetEncoderAudioOutput  
SetEncoderAudioExtOutput  
SetDecoderAudioExtOutput  
 
4.3版本(2008-06-01 ):
更新:
z   支持全新推出一芯八路DS-4000HS 卡(DS-4008HS 、DS-4016HS ),每块DSP 支
持8 路cif/qcif 编码,不支持子码流,支持YUV抓图、JPG 抓图、原始视频捕获、
本地矩阵输出
z   新增4000HC 系列DS-4016HC卡,16 路视音频压缩板卡,功能与原 DS-4004HC、
DS-4008HC板卡相同
z   编解码性能提升
z   完善了对视频信号检测的判断
z   编解码通道上限扩充至256 路
z   支持纯音频流编码
z   在HC、HC+ 、HF卡上增加了色度串扰的处理
z   MD卡解码延时降低
z   MD卡启动后默认音频输出改为关闭状态, 之前版本为默认输出前两路音频
z   本地矩阵输出功能增加支持帧率控制(SetEncoderVideoExtOutput)
z   增加MD卡解码视频捕获功能,HW_SetDecoderVideoCapture
z   增加MD卡解码图像显示的回调函数,HW_RegisterDrawFun
修正bug :
z   解决:退出应用程序时,界面已经关闭,但SDK可能还没有彻底退出,此时如果
版权所有(C)杭州海康威视数字技术股份有限公司  9
海康威视DS-4100、4000HC 系列板卡SDK编程指南
再启动应用程序,可能会导致死机。
z   解决:GetSoundLevel在HCS 卡的前12路上无法正确执行
z   解决抓图问题:抓 BMP时,可能导致图像错位;抓 JPG 时,可能会返回超时,并
且无法恢复。
z   解决:如果用户采用多线程来输入码流,MD卡可能会出现多路图像混叠情况。
z   解决:MD卡回放时文件尾部数据可能无法解码
z   解决:MD卡解码N 制QCIF花屏。
z   解决几个显卡预览相关问题。
新增API 函数:
RegisterDecoderVideoCaptureCallback
HW_SetDecoderVideoCapture
HW_RegisterDrawFun
 
4.2版本(2006-07-26) :
更新:
z   支持全新推出的DS-4008HF 卡
z   编解码改善对噪声图像的处理,使蠕动现象不明显
z   增加对码流的CRC校验功能
z   DS-4000MD卡增加文件索引导入、导出功能
z   DS-4000MD卡增加视频输出亮度调整功能
z   增强DS-4000MD卡在流模式下的功能,设置速度、暂停、定位等功能可以在流模
式下使用
z   增加DS-4000MD卡模拟输出视频捕获功能
z   新增隔行解码功能
z   解码后增加后处理
修正bug:
z   解决DS-4000MD卡无法解码某些小文件问题
z   解决DS-4000MD卡无法解码某些文件尾部一段数据的问题
z   解决部分DS-4004MD卡音频输出顺序混乱问题
z   解决DS-4000MD卡多路解码时,音频输出通道间可能会混乱的问题
z   解决4.1版本解码时音频可能有杂音的问题
新增API 函数:
SetChannelStreamCRC         SetSubChannelStreamCRC
解码API
 HW_ImportFileRef    HW_ExportFileRef
  SetDisplayVideoCapture       RegisterDisplayVideoCaptureCallback
 HW_SetDecoderPostProcess  SetDisplayVideoBrightness
 
4.1版本(2005-10-15) :
更新:
z   支持全新推出的DS-4000HC+卡
z   编码性能优化,全面提升图像质量,特别是4CIF的图像质量有很大提高
z   DS-4000MD卡增加文件索引功能,支持按照时间或帧号定位功能,并可以获取录
像文件的起止时间
版权所有(C)杭州海康威视数字技术股份有限公司  10
海康威视DS-4100、4000HC 系列板卡SDK编程指南
z   MD卡支持抓图
修正bug:
z   DS-4000MD卡无法解码某些子通道的录像文件
z   DS-4000MD矩阵输出时可能会出现图像错误
z   DS-4000MD卡回放小文件时,可能会误报文件结束
z   DS-4000HC原始图像流的帧率控制无效(Ver:4.0)
z   录像音频的音量偏小(Ver:3.0-4.0)
 
4.0版本(2005-07-25) :
更新:
z   支持新的板卡:DS4016HCS、DS4004MD  
DS4016HCS:16路视音频压缩卡。支持 16 路CIF 实时压缩,支持CIF/QCIF分辨率,
不支持4CIF、2CIF、DCIF分辨率,不支持双编码。新增加了 WatchDog
和报警输入、输出功能
DS4004MD : 8路解码、4 路输出矩阵解码卡。产品功能和 2 块DS4002MD 相同;
z   视频预览帧率可调(PAL:1-25f/s,NTSC:1-30f/s);
z   增加新的移动侦测接口SetupMotionDetectionEx,提供了更灵活的功能,并且简化
了用户的工作量;对于移动侦测的操作应用程序仅需调用3 个接口函数:
SetupMotionDetectionEx、StartMotionDetection 和StopMotionDetection;
在应用程序以新的接口函数实现移动侦测功能时,SDK 不再返回移动侦测帧,而
仅仅是通过函
数SetupMotionDetectionEx所调用的回调函数 MotionDetectionCallback的参数
bMotionDetected
告知应用程序视频是否处于移动状态;
z   增加新的OSD 接口SetOsdDisplayModeEx,最多支持 8 行OSD 字符。同时,修改
OSD 参数时无需重新启停;
z   对SDK 的发布文件做了简化,实现所有的功能只需ds40xxsdk.dll 一个文件;
z   SDK 内部增加了异常检测、恢复机制,增强系统稳定性,无需用户干预;
z   在DS4016HCS上实现了WatchDog功能, 接口函数为SetWatchDog,只要打开任意
一块DS4016HCS的WatchDog功能,就可以实现对上层软件和系统中所有压缩板
卡的运行状态监控;
z   在DS4016HCS上增加了报警输入、输出功能,当配合报警卡使用时,一块
DS4016HCS支持16 路报警输入和 4 路报警输出,同时增加RS485 串口,并提供
了简单、实用的串口操作API;
z   MD卡矩阵功能增强;
z   MD卡完善了9 画面分割视频输出;
z   增加新的接口函数GetJpegImage ,支持 JPEG 方式抓图,抓取的图像质量动态可调;
修正bug:
z   抓图中存在的图像质量差的问题。(增加了反隔行变换);
z   OSD 时钟不准确。OSD 时钟始终以主机时钟为准,同时SetupDateTime函数不再
有效,用户无须自行校时;
z   MD卡在频繁切换画面分割时可能产生执行失败的现象;
 
3.3版本(2005-04-08) :
版权所有(C)杭州海康威视数字技术股份有限公司  11
海康威视DS-4100、4000HC 系列板卡SDK编程指南
z   编码效率进一步提高;
z   优化不规则窗口预览丢帧的情况;
修正bug:
z   修正overlay预览的开发在vb、dephi下可能存在的bug ;
 
3.2版本
HC卡更新:
z   编码质量进一步提高,在相同量化系数下,新版本SDK对大部分场景的压缩比比
旧版本提高10-20%,即在提供同等图象质量情况下,新版本的码流比旧版本降低
10-20%;
z   移动侦测采用全新算法,增加自适应选项(只要将AdjustMotionDetectPrecision 函数
的将运动分析灵敏度等级参数iGrade 和0x80000000 做“或”操作, 即采用自适应分
析),在光线不足的情况下移动检测的准确率大大提高;
z   在部分显卡上实现overlay预览(函数SetPreviewOverlayMode),提高了预览的画质
和降低系统的CPU 使用率;
z   反隔行算法优化,提高了预览图象质量;
z   取原始数据流的效率提高,运行时CPU 的使用率下降;
z   码流控制算法优化;
z   海外板卡(DS-4000HCI)支持PCI_X 主板;
z   驱动程序进行了更新,跟旧版本SDK 不兼容(3.2 版本中的驱动程序和 SDK 不能与
旧版本中的驱动程序和SDK 交叉使用);
z   同一路视频编码信号支持2 路矩阵输出;
MD卡更新:
z   优化网络解码延时;
z   完善PCI 传输;
z   增加水平1/3 缩小,可实现9 画面分割视频输出,宽度需要按照 232 对齐;
修正bug:  
z   修正了HC卡OSD 时间错误的bug;
 
3.1版本
新增功能:
z   H 卡与HC卡混插时,H 卡也可以在录像时动态更改分辨率;
z   解码器性能优化,与3.0相比提高约50 %;
z   完善MD卡的解码功能,提高了图像显示和音频输出的质量。
z   在MD卡中完善了对原 4004D 卡中已有功能的支持,绝大部分 API 和原4004D 卡
兼容;
z   完善LOGO 配置,对SetLogoDisplayMode 和SetLogo 的使用,无需再考虑先后顺
序;
z   完善图像处理,预览和回放的图像质量有所提高;
z   HC卡子通道可以在录像时动态更改分辨率;
z   增加了设置反隔行变换参数的接口SetDeInterlace ,用户可以设置是否执行反隔行
变换,以及反隔行变换的强度,请参考相应的函数说明;
修正bug :
z   解决了DS-4008HC卡启动顺序混乱的问题;
版权所有(C)杭州海康威视数字技术股份有限公司  12
海康威视DS-4100、4000HC 系列板卡SDK编程指南
z   同时启动主通道和子通道,如果包含4CIF分辨率,对该路图像的反隔行变换可能
会被忽略;
z   原始图像流功能在长时间运行后会停止。
 
3.0  版本
新增功能:
z   增加DS-4002MD(矩阵解码卡)支持,基于 DS4002MD 可以实现视频矩阵和硬件
解码功能(请参考《DS4002MD 、数字视频矩阵方案》)。
z   优化系统调度、增强编码功能。子通道录像可以设置为复合流或视频流,录像的分
辨率可以任意设置,不再仅限于QCIF。可以组成更灵活的编码方案,例如:
4 路4CIF非实时录像;主通道 4CIF+子通道CIF录像等,请参考“双编码功能说明
”。
z   增加OSD 字符大小调节功能,用户可自定义 OSD 字符大小,也可以设置为根据编
码分辨率自动调整SetOsdDisplayMode。
z   增加调节视频输入信号检测灵敏度功能。避免因视频输入信号的偶然变化,使“无
视频信号”提示频繁出现,影响图像SetVideoDetectPrecision 。
z   增加获取系统信息(板卡、DSP 、编码通道、解码通道、矩阵输出通道……)接口,
用户可以获得更全面的板卡配置。
已解决的问题:
z   完善多任务处理。
z   在录像的同时修改帧结构等参数时会导致录像文件出现短时间花屏。
z   当分辨率设为CIF 或DCIF时,如果 OSD 设置为半透明,在 OSD 字符(特别是中
文字符)的右下部分会特别亮或特别暗(没有执行透明处理)。
z   在进行4 路2CIF或4 路DCIF录像时,如果视频信号频繁发生变化(PA L N T S C   ),
可能会导致某一路录像停止。
 
DS-4002MD(矩阵解码卡)可以实现视频矩阵和硬件解码功能。
1 、解码功能
¾  每块DS-4002MD可做4 路解码。
¾  支持的码流格式:海康威视 H、HC系列板卡;海康威视 M、ME、AT M、HC、
DVS 系列嵌入式设备。
¾  音、视频输出:
z   音频输出:2 路,可在4 个解码通道中任选2 路输出。
z   视频输出:2 路,每路视频输出最多可以划分为16 个窗口。
z   音频预览:每块DS-4002MD支持1 路音频预览输出。
¾  软件:从海康威视3.0版SDK 开始提供对DS-4002MD的支持。
z   支持H 卡、HC卡和MD卡在1 台PC内混插。
z   在一个SDK 内同时支持H 卡、HC卡和MD卡。
z   解码部分的API,绝大部分和原海康威视 DS-4004D解码卡的SDK完全兼容
(功能发生变动的API详见“附录”)。
¾  目前1 台PC最多支持16 块DS-4002MD卡,即最多支持 64 路解码,32路视
频输出。
¾  基本解码性能(值为每解码1 路视频大约要占用的 DSP 资源):
z   CIF:12%(512Kb );16%(2Mb )
版权所有(C)杭州海康威视数字技术股份有限公司  13
海康威视DS-4100、4000HC 系列板卡SDK编程指南
z   2CIF:30%(1Mb )
z   DCIF:28%(768Kb )
z   4CIF:50%(1.5Mb );60 %(3Mb )
※上述测试文件为定码率下的稳定图像。
※目前对解码器的进一步优化正在进行中,其性能在以后的版本中会不断的得到提
升。
2 、矩阵功能
¾  视频矩阵功能可以概括为:
z   视频输入端:由 HC卡实时采集的视频、MD卡解码后视频(本地文件或
网络实时流)。
z   视频输出端:MD的视频输出通道。视频输出支持画面分割,每路视频输
出最多可划分为16 窗口,视频矩阵以窗口为单位进行图像切换。
z   矩阵控制:对于1 台PC中的所有HC卡和MD卡,HC卡的每个编码通
道和MD 卡的每个解码通道,都可以把本通道的视频输出到任意一块MD 卡的任
意一路显示通道中的任意一个窗口进行显示。
¾  矩阵的基本参数:
z   每块DS-4002MD支持2 路矩阵输出,每路输出为4CIF分辨率。
z   HC卡的每个编码通道可以同时支持1 路显卡预览和 2 路矩阵输出。
z   MD卡的每个解码通道可以同时支持1 路显卡输出和 2 路矩阵输出。
z   每路视频输出都支持画中画功能,每个窗口的位置动态可调。
z   每路视频输出总的窗口面积之和不能超过4CIF+2*QCIF,即最大可以实
现一个4CIF的全屏输出+2 个QCIF的画中画输出。
新增API:
GetBoardCount
GetDspCount
  GetBoardDetail
GetDspDetail
  GetEncodeChannelCount
GetDecodeChannelCount
  SetSubStreamType
  GetSubStreamType
  SetDefaultVideoStandard
  SetVideoDetectPrecision
  SetOsdDisplayMode(扩展)
视频输出、矩阵控制相关API:
  GetDisplayChannelCount
  SetDisplayStandard
  SetDisplayRegion  
  ClearDisplayRegion
  SetDisplayRegionPosition
  FillDisplayRegion
  SetEncoderVideoExtOutput
  SetDecoderAudioOutput
  SetDecoderVideoOutput
版权所有(C)杭州海康威视数字技术股份有限公司  14
海康威视DS-4100、4000HC 系列板卡SDK编程指南
  SetDecoderVideoExtOutput
解码API:
  详见原解码卡的SDK 。需要注意的事项,请参考“DS4002MD 说明”
 
2.1  版本
z   修正了2.0版本中做 4CIF录像时, 录像文件中存在色块的bug。
z   修正2.0版本中无视频信号检测失败的 bug。
z   视频预览时,Overlay 颜色的底色可以由用户自己自由设置, 调用函数
SetOverlayColorKey 设置的Overlay颜色要与对应的预览窗口设置的颜色一样。
 
2.0版本
z   改进系统调度和通讯,提高数据传输效率,减少预览丢帧,预览更流畅。
z   优化图像处理算法,编码图像与预览图像质量有所提高。
z   改进编码器,编码效率大幅提高,同时改善录像质量。在现有 4004HC 卡上可以做
到两路4CIF实时编码,或者4 路2CIF(PAL:704*288 NTSC:704*240) 实时编码。
z   增加新的编码分辨率:Double CIF(ENC_DCIF_FORMAT) ,PA L :528*384 ,NTSC:
528*320。
DCIF和CIF 相比,在相同的码流下,图像质量和线数会有明显提高。
z   系统配置更加灵活,可以在编码的同时修改除码流类型(复合流、视频流)外的所有
参数,包括分辨率、码流、帧结构等。在编码过程中,也可以检测到视频信号制式
的改动,并自动切换对应的编码、预览图像的大小。
z   升级码流格式,可以支持任意改变录像分辨率而不用切换文件(需要配合新的解码库
使用)。
z   增加捕获原始图象流时可以设置帧率的功能。
z   修正了旧版本的一些BUG。
注意事项:
1 、 由于DCIF编码的计算量大,如果 4 路同时做DCIF编码,可能会有丢帧现象。在后
续版本中,会随着软件的不断优化而得到改善。
2 、 由于新的版本不再限制各个通道的分辨率,因此,用户所设置的功能可能会超过了
板卡所能达到的上限,此时会导致录像文件丢帧或者操作失败。例:
¾  4 个通道同时做 Double CIF 编码,或者做4 路2CIF编码同时还启动了4 个子通道
的双编码:此时,系统会根据图像的复杂性做出丢帧处理。
¾  4 个通道同时启动 4CIF编码:由于编码 4 路4CIF图像所需要的资源不够,导致启
动失败,同时返回错误(ERR_NOT_SUPPORT) 。
¾  4 个通道在做 CIF 编码的同时,动态的把分辨率改为 4CIF:同样由于资源不足,该
通道的编码会自动停止,同时返回错误(ERR_KERNEL)。
 
1.8版本
z   改进小画面预览算法,小画面预览图像更清晰
z   完善板卡视频信号输入判断,在板卡初始化及长时间运行后,给予视频信号相应的
检测和判断
z   完善初始化功能,减少初始化失败情况
z   改进H 卡OSD 显示,使H 卡OSD 显示位置在(0,0,703,575) 内任意可调, 与HC卡的
设置相统一
版权所有(C)杭州海康威视数字技术股份有限公司  15
海康威视DS-4100、4000HC 系列板卡SDK编程指南
 
1.7版本
z   新增原始图像流捕获函数RegisterImageStreamCallback和SetImageStream
z   新增视频输入位置设置函数SetInputVideoPosition
z   新增停止画图回调功能函数StopRegisterDrawFun
z   增加H 卡设置屏幕遮挡的功能
z   单画面预览窗口大于或等于704*576 时,此窗口预览自动切换为 Overlay预览模式
z   修正了一些BUG
 
1.6版本
z   改进了在CIF 格式下设置OSD 和LOGO 位置与H 卡对齐
z   修正了SetOsd 不能校时的 BUG
z   全面兼容即将推出的DS4008HC
 
1.5版本
z   提高LOGO 位图的清晰度
z   改进视频信号丢失检测机制
z   调整默认视频图像参数
z   多窗口时创建与预览窗口同等大小的offscreen  缓冲区,可对预览窗口矩形框进行
画线及图片显示等,操作更直接方便(参看DEMO 中DrawFun 函数)。
z   新增一个调节OSD 时间的函数,可用于网络校时
z   修正了一些BUG
 
1.0版本:
z   保持同等图像质量前提下,与 DS-400xM 系列板卡相比,压缩码流降低 30% 以上,
在办公室典型环境中    码率仅需 20kbps~120kbps。
z   提供精确码率控制方式,无论何种情况均能输出指定码率,增加CBR(定码率)
控制方式。
z   采用新型视频采集处理芯片,极大地降低了由摄像噪声导致的图像失真、背景游动
等现象,预览清晰度提高,可达450 线。
z   采用OggVorbis(相当于G.722) 的音频压缩算法,声音更流畅。
z   支持PCI 2.2接口,传输率更高,可稳定支持大路数(32路以上,最高可达 64 路)
编码与录像。
z   提供高清分辨率(4CIF(704*576))视频压缩编码功能。
z   新增一种直接取数据流方式,读写数据流的效率提高,推荐客户使用。
z   双码流功能更灵活,两路完全独立,可分别启止录像。
z   新增屏幕遮挡MASK 函数,最多支持32 个区域。
z   统一屏幕相对坐标(OSD、LOG、MASK、移动侦测等功能中参数),无论采用何
种编码分辨率,屏幕显示坐标均为704*576
z   修改视频预览方式:多窗口时在显卡上创建offscreen 表面再 BLT 到主窗口;单窗
口且全屏时自动采用OVERLAY 方式。经测试,Nvidia Tnt/Tnt2、Geforce Mx
200/400/420/440 Fx5200/5600 系列,  ATI Radeon 7000/7200/7500/8500 /9000/9200
/9500/9600 系列,MatroxG450/550 系列,INTEL845G/865G 系列支持新的预览方式。
注意显卡的驱动须支持硬件缩放功能, Nvidia Fx 系列显卡驱动推荐使用新版本显
版权所有(C)杭州海康威视数字技术股份有限公司  16
海康威视DS-4100、4000HC 系列板卡SDK编程指南
卡驱动(53.00版本以上)。
z   建议使用AT I 系列显卡以提高显示效率,屏显分辨率设置为1024*768 ,颜色设为
16位。
z   SDK 接口与DS-400xM/DS-400xH系列板卡 SDK 原接口一致,新加其他功能(只
适用于HC系列板卡),成型应用软件可迅速完成移植。
错误代码及说明
错误号  解释
0xc0000001 ERR_WAIT_TIMEOUT  SDK 操作超时;
0xc0000002 ERR_INVALID_HANDLE  非法句柄,在调用SDK函数使用了错
误的句柄;
0xc0000003 ERR_INVALID_ARGUMENT  参数错误,输入的参数可能超出有效范

0xc0000004 ERR_DDRAW_CREATE_FAILED  DDRAW 返回的错误,参见MSDN
0xc0000005 ERR_DDRAW_CAPS_FAULT    DDRAW 返回的错误,参见MSDN
0xc0000006 ERR_SET_COOPER ATIVELEVEL_FAILED  DDRAW 返回的错误,参见MSDN
0xc0000007 ERR_PRIMARY_SURFACE_CREATE_FAILED    DDRAW 返回的错误,参见MSDN
0xc0000008 ERR_GET_OVERLAY_ADDRESS_FAILED  DDRAW 返回的错误,参见MSDN
0xc0000009 ERR_OVERLAY_SURFACE_CREATE_FAILED    DDRAW 返回的错误,参见MSDN
0xc000000a ERR_OVERLAY_UPDATE_FAILED  DDRAW 返回的错误,参见MSDN
0xc000000b ERR_TMMAN_FAILURE  SDK 内部错误
0xc000000c ERR_CHANNELMAGIC_MISMATCH  通道数据毁坏
0xc000000e ERR_QUEUE_OVERFLOW  数据流缓存溢出
0xc000000f ERR__STREAM_THREAD_FAILURE  无法启动流处理线程
0xc0000010 ERR_THREAD_STOP_ERROR  流处理线程停止错误
0xc0000011 ERR_NOT_SUPPORT  该功能尚不支持
0xc0000012 ERR_OUTOF_MEMORY    系统内存不足
0xc0000013 ERR_DSP_BUSY  DSP 正忙
0xc0000014 ERR_DATA_ERROR(v2.4)  严重数据错误,必须重新停启压缩!
0xc0000016 ERR_KERNEL  系统核心错误
0xc0000017 ERR_OFFSCREEN_CREATE_FAILED  创建OFFSCREEN 缓冲区错误
0xc0000019 ERR_INVALID_DEVICE  无效设备。
0xc000001a ERR_INVALID_DRIVER  无效驱动
MD卡错误代码
0xc1000001 HWERR_ALLOCATE_MEMORY  内存分配错误
0xc1000002 HWERR_INVALID_HANDLE  无效句柄
0xc1000003 HWERR_DDRAW_CREATE_FAILED  创建DirectDraw 失败
0xc1000004 HWERR_DDRAW_CAPS_FAULT  DirectDraw 表面性能检测失败
0xc1000005 HWERR_S ET_COOPERATIVELEVEL_FAILED  DirectDraw 设置协作级别失败
版权所有(C)杭州海康威视数字技术股份有限公司  17
海康威视DS-4100、4000HC 系列板卡SDK编程指南
0xc1000006HWERR_PRIMARY_SURFACE_CREATE_FAILED   DirectDraw 创建主表面失败
0xc1000007HWERR_OVERLAY_CREATE_FAILED  DirectDraw 创建Overlay表面失败
0xc1000008HWERR_GET_OVERLAY_ADDRESS_FAILED  DirectDraw 获取Overlay表面地址失败
0xc1000009HWERR_OVERLAY_UPDATE_FAILED  DirectDraw 显示Overlay表面失败
0xc100000a HWERR_SURFACE_NULL   DirectDraw 表面为空
0xc100000b HWERR_FILEHEADER_UNKNOWN  文件头未知
0xc100000c HWERR_CR EATE_FILE_FAILED  打开文件失败
0xc100000d HWERR_FILE_SIZE_ZERO  文件长度为零
0xc100000d HWERR_FILE_SIZE_INVALID  文件大小无效
0xc100000e HWERR_CREATE_OBJ_FAILED  创建线程或内核对象失败
0xc100000f HWERR_CHANNELMAGIC_MISMATCH  通道数据损坏
0xc1000010 HWERR_PARA_OVER  参数错误
0xc1000011 HWERR_ORDER  函数调用顺序错误
0xc1000012 HWERR_COMMAND  命令传递失败
0xc1000013 HWERR_UNSUPPORTED  不支持该操作
0xc1000014 HWERR_DSPOPEN  DSP 打开失败
0xc1000015 HWERR_DSPLOAD  DSP 加载错误
0xc1000016 HWERR_ALLOCATE_DSPMEMORY  DSP 内存分配错误
0xc1000017 HWERR_DSPCHECHER  DSP 校验错误
0xc1000018 HWERR_IMGFILE_UNKNOWN  未知的IMG 文件
0xc1000019 HWERR_INVALID_FILE  无效文件
数据类型及数据结构定义
z   视频预览输出格式:
  vdfRGB16                            16 位RGB视频压缩格式
  vdfRGB24                            24 位RGB视频压缩格式
  vdfYUV422Planar                      YUV422视频压缩格式
     
z   帧类型定义
PktError         非法帧数据
PktSysHeader                          系统头
PktIFrames                           I 帧包
PktPFrames                           P 帧包
PktBBPFrames                        BBP帧包
PktAudioFrames                       音频帧包
PktMotionDetection                     动态监测包
PktSFrames       2.0版新增,为 I 帧捕获时传送的帧类型
PktSubIFrames       双编码时,子通道I 帧
PktSubPFrames       双编码时,子通道P 帧
PktSubBBPFrames       双编码时,子通道BBP 帧
版权所有(C)杭州海康威视数字技术股份有限公司  18
海康威视DS-4100、4000HC 系列板卡SDK编程指南
PktSubSysHeader       双编码时,子通道系统头
 
z   视频标准定义
      StandardNone                       无视频信号
      StandardNTSC                      NTSC 制式
      StandardPAL                        PAL 制式
 
数据结构定义
z   特殊功能能力定义
typedef struct tagChannelCapability{
  UCHAR bAudioPreview;             音频预览
  UCHAR bAlarmIO;                 报警信号    
  UCHAR bWatchDog;                看家狗
}CHANNEL_CAPABILITY, *PCHANNEL_CAPABILITY;
 
z   帧数据统计
typedef struct tagFramsStatistics{
  ULONG VideoFrames;               视频帧
  ULONG AudioFrames;               音频帧
  ULONG FramesLost;                丢失帧
  ULONG QueueOverflow;             缓存溢出
 ULONG CurBps      当前码流(kb/s )
}FRAMES_STATISTICS, *PFRAMES_STATISTICS;
 
z   版本信息
typedef struct tagVersion{
 ULONG DspVersion, DspBuildNum;   DSP版本及BUILD号
 ULONG DriverVersion, DriverBuildNum;  驱动版本及BUILD号
 ULONG SDKVersion, SDKBuildNum;   SDK版本及BUILD号
}VERSION_INFO, *PVERSION_INFO;
API 调用顺序
A.
设置默认的视频制式      SetDefaultVideoStandard()         
B .
初始化板卡          InitDSPs()  
                                               
C.
获取编码通道总个数          GetTotalChannels()
打开通道                      ChannelOpen()
版权所有(C)杭州海康威视数字技术股份有限公司  19
海康威视DS-4100、4000HC 系列板卡SDK编程指南
注册画图回调                       RegisterDrawFun()
注册获取压缩编码数据流直接读取回调  RegisterStreamDirectReadCallback()  
注册读取码流消息函数                 RegisterMessageNotifyHandle()
注册获取原始图像数据流的回调函数     RegisterImageStreamCallback()  
设置Overlay关键色      SetOverlayColorKey()  
D.
设置视频预览模式        SetPreviewOverlayMode()
启动视频图像预览          StartVideoPreview()
 
     E.
// 设置OSD
设置OSD 显示模式(此函数支持2 行OSD 显示)   SetOsdDisplayMode()
设置OSD 显示模式(此函数最多支持8 行OSD 显示)   SetOsdDisplayModeEx()
设置OSD 显示           SetOsd()  
// 设置Logo
将24 位bmp 文件转成yuv 格式的数据        LoadYUVFromBmpFile()
设置LOGO 显示模式         SetLogoDisplayMode()  
设置LOGO 图像位置及数据                    SetLogo()
// 设置遮挡
设置屏幕遮挡         SetupMask()
 
    F .
设置主通道的编码分辨率格式:  SetEncoderPictureFormat()  
设置主通道编码流类型:     SetStreamType()
设置编码图像质量:     SetDefaultQuant()  
设置编码帧结构、帧率:     SetIBPMode()
设置码流的最大比特率:     SetupBitrateControl()
设置码流控制模式:     SetBitrateControlMode()  
设置图像亮度、对比度、饱和度:  SetVideoPara()
 
 G.移动侦测方式1
设置移动侦测灵敏度:   AdjustMotionDetectPrecision()
设置移动侦测区域及个数:  SetupMotionDetection()
启动移动侦测:      StartMotionDetection()  
移动侦测分析:      MotionAnalyzer()
G.移动侦测方式2  
设置移动侦测:      SetupMotionDetectionEx()   
启动移动侦测:      StartMotionDetection()  
 
H.抓图及图像保存函数
获取原始图像:      GetOriginalImage()
图像保存为BMP文件:     SaveYUVToBmpFile()  
抓取JPEG 格式图像:     GetJpegImage()  
版权所有(C)杭州海康威视数字技术股份有限公司  20
海康威视DS-4100、4000HC 系列板卡SDK编程指南
 
I.音频幅度获取及现场声音监听
获取现场声音音量幅度:     GetSoundLevel()
设置现场声音监听:     SetAudioPreview()
 
J .获取视频、SDK 及板卡相关信息
获取视频信号输入情况:     GetVideoSignal()
获取SDK 版本号:     GetSDKVersion()
获取视频参数:      GetVideoPara()
获取板卡的型号和序列号:  GetBoardInfo()
获取帧统计信息:    GetFramesStatistics()
获取板卡的详细信息:   GetBoardDetail()
获取DSP 的详细信息:     GetDspDetail()
 
K.启动录像(编码压缩数据)
启动主通道数据截取:   StartVideoCapture()  
L .启动原始图像数据流的截取
启动获取原始图像数据流:  SetImageStream()  
 
M.子通道的参数设置以及录像
设置子通道编码流类型:     SetSubStreamType()
设置子通道的编码分辨率格式:  SetSubEncoderPictureFormat()
切换至子通道:             SetupSubChannel(, 1)
// 其它参数设置方式与主通道相同,可以设置与主通道不同的编码量化系数,帧率
等等
切换回主通道:             SetupSubChannel(, 0)
启动子通道数据截取:   StartSubVideoCapture()
 
N.退出
停止画图回调函数:     StopRegisterDrawFun()
停止获取原始图像数据流:  SetImageStream()
停止移动侦测:      StopMotionDetection()
停止主通道数据截取:   StopVideoCapture()  
停止子通道数据截取:   StopSubVideoCapture()
停止视频图像预览:     StopVideoPreview()
关闭通道:       ChannelClose()
卸载DSP :       DeInitDSPs()
 
  目前,SDK 函数之中除了SetStreamType和SetSubStreamType 不能在板卡编码录像过程
中动态设置以外,其它视频参数,譬如OSD 、Logo、分辨率、帧率、码流、图像量化系数
等参数都可以在编码录像的过程之中动态调整。
版权所有(C)杭州海康威视数字技术股份有限公司  21
海康威视DS-4100、4000HC 系列板卡SDK编程指南
函数说明篇
1. 板卡初始化及卸载
1.1 初始化DSP InitDSPs  
函   数: int __stdcall InitDSPs()
参   数:  无
返回值:  系统内可用的编码通道个数。
说   明:  初始化系统中每一块板卡,应在应用软件程序启动时完成。如果返回值为 0 则表
明初始化失败,可能没有找到相应的DSP 软件模块。
1.2 卸载DSP DeInitDSPs
函   数:   int __stdcall DeInitDSPs()
参   数:   无
返回值:   0
说   明:   关闭每一块板卡上的功能,应在应用软件程序退出时调用。
2. 板卡信息获取
2.1 获取系统中板卡的张数GetBoardCount  
函   数:   unsigned int __stdcall GetBoardCount()
参   数:   无
返回值:   系统中板卡的总张数。
说   明:   获取系统中所有板卡的张数,包含编码卡和解码卡。
2.2 获取系统中DSP 的个数GetDspCount  
函   数:   unsigned int __stdcall GetDspCount()
参   数:   无
返回值:   系统中DSP 的总个数
说   明:   获取系统中所有板卡的DSP 的个数。
版权所有(C)杭州海康威视数字技术股份有限公司  22
海康威视DS-4100、4000HC 系列板卡SDK编程指南
2.3 获取系统中编码通道的个数GetEncodeChannelCount
函   数:   unsigned int __stdcall GetEncodeChannelCount()
参   数:   无
返回值:   系统中编码通道的个数
说   明:   获取系统中所有编码卡的编码通道总个数,包含H 系列和HC系列编码卡。
2.4 获取系统中解码通道的个数GetDecodeChannelCount  
函   数:   unsigned int __stdcall GetDecodeChannelCount()
参   数:   无
返回值:   系统中解码通道的个数
说   明:   获取系统中MD卡的解码通道个数
2.5 获取系统中解码显示通道的个数GetDisplayChannelCount
函   数:   unsigned int __stdcall GetDisplayChannelCount()
参   数:   无
返回值:   系统中显示通道的个数
说   明:   获取系统中MD卡显示通道的个数,即模拟视频输出通道的个数
 
释   义:   解码通道、显示通道
MD 卡集成解码、矩阵、画面分割3 项功能。每块 DSP 包含4 个解码通道和 2 个显示
通道(见下图所示),解码通道解码的图像可以输出到任意一个DSP 的任意一个显示通道上,
实现矩阵功能,每个显示通道最多支持16画面分割,即在同一个显示通道上最多可以同时
显示前端16 路视频信号。
 
2.6 获取板卡详细信息GetBoardDetail  
函   数:   int __stdcall GetBoardDetail(UINT boardNum,DS_BOARD_DETAIL *pBoardDetail)
参   数:   UINT boardNum ;板卡索引
版权所有(C)杭州海康威视数字技术股份有限公司  23
海康威视DS-4100、4000HC 系列板卡SDK编程指南
DS_BOARD_DETAIL *pBoardDetail;板卡信息
返回值:   成功返回0 ;失败返回错误号
说   明:   获取某张板卡的详细信息
板卡信息结构体
typedef struct{
BOARD_TYPE_DS type;板卡型号
BYTE sn[16];序列号
UINT dspCount;此张板卡所包含的 DSP 个数
UINT firstDspIndex;此张板卡上第一个 DSP 在所有DSP 中的索引
UINT encodeChannelCount;此张板卡所包含的编码通道个数
UINT firstEncodeChannelIndex ;此张板卡上第一个编码通道在所有编码通道中的索引
UINT decodeChannelCount;此张板卡所包含的解码通道个数
UINT firstDecodeChannelIndex ;此张板卡上第一个解码通道在所有解码通道中的索引
UINT displayChannelCount;此张板卡所包含的显示通道个数
UINT firstDisplayChannelIndex ;此张板卡上第一个显示通道在所有显示通道中的索引
UINT reserved1;
UINT reserved2;
UINT reserved3;
UINT reserved4;
}DS_BOARD_DETAIL
2.7 获取DSP 详细信息GetDspDetail  
函   数:   int __stdcall GetDspDetail(UINT dspNum,DSP_DETAIL *pDspDetail)
参   数:   UINT dspNum;DSP 索引
DSP_DETAIL *pDspDetail;DSP 信息
返回值:   成功返回0 ;失败返回错误号
说   明:   获取某个DSP 的详细信息
DSP 信息结构体
typedef struct{
UINT encodeChannelCount;此DSP 所包含的编码通道个数
UINT firstEncodeChannelIndex ;此 DSP 上第一个编码通道在所有编码通道中的索引
UINT decodeChannelCount;此DSP 所包含的解码通道个数
UINT firstDecodeChannelIndex ;此 DSP 上第一个解码通道在所有解码通道中的索引
UINT displayChannelCount;此DSP 包含的显示通道个数
UINT firstDisplayChannelIndex ;此DSP 上第一个显示通道在所有显示通道中的索引
UINT reserved1;
UINT reserved2;
UINT reserved3;
UINT reserved4;
}DSP_DETAIL
版权所有(C)杭州海康威视数字技术股份有限公司  24
海康威视DS-4100、4000HC 系列板卡SDK编程指南
2.8 获取板卡型号及序列号信息GetBoardInfo
函   数:   int __stdcall GetBoardInfo(HANDLE hChannelHandle, ULONG *BoardType,   
UCHAR *SerialNo)
参   数:   HANDLE hChannelHandle;通道句柄
ULONG *BoardType;板卡型号
UCHAR *SerialNo ;板卡ID号,  内容为板卡序列号的 ASCII 的数值,次序为
SerialNo[0]  对应最高位,SerialNo[11]对应最低位。比如卡号为“40000
002345”的值对应为 4,0,0,0,0,1,0,0,2,3,4,5  的整形数组。
返回值:   成功为0 ;失败返回错误号
说   明:   获取板卡的型号及序列号信息,只支持编码通道的参数获取。
板卡型号结构体
typedef enum {
DS400XM=0;M 卡(注意:M 系列板卡的 SDK 有所不同)
DS400XH=1;H 卡
DS4004HC=2 ;4004HC
DS4008HC=3 ;4008HC
DS4016HC=4 ;4016HC
DS4001HF=5;4001HF
DS4004HF=6;4004HF
DS4002MD=7 ;4002MD
DS4004MD=8 ;4004MD
DS4016HCS=9;4016HCS
DS4002HT=10;4002HT
DS4004HT=11;4004HT
DS4008HT=12;4008HT
DS4004HC_PLUS=13;4004HC+
DS4008HC_PLUS=14;4008HC+
DS4016HC_PLUS=15;4016HC+
DS4008HF=16;4008HF
DS4008MD=17;4008MD
DS4008HS=18;4008HS
DS4016HS=19;4016HS
DS4108HCV=20 ;4108HCV
DS4116HCV=21 ;4116HCV
DS5016HC=22,
INVALID_BOARD_TYPE=0xffffffff,
}BOARD_TYPE_DS
2.9 获取板卡特殊功能信息GetCapability
函   数:   int __stdcall GetCapability (HANDLE hChannelHandle,   
CHANNEL_CAPABILITY *Capability)
参   数:   HANDLE  hChannelHandle ;通道句柄
版权所有(C)杭州海康威视数字技术股份有限公司  25
海康威视DS-4100、4000HC 系列板卡SDK编程指南
CHANNEL_CAPABILITY *Capability;特殊功能
返回值:   成功返回0 ;失败返回错误号
说   明:   获取板卡特殊功能信息
特殊功能结构体
typedef struct tagChannelCapability{
UCHAR bAudioPreview;音频预览
UCHAR bAlarmIO ;报警信号
UCHAR bWatchDog;看家狗
}CHANNEL_CAPABILITY, *PCHANNEL_CAPABILITY
2.10 获取板卡SDK信息GetSDKVersion  
函   数:   int __stdcall GetSDKVersion(PVERSION_INFO VersionInfo)
参   数:   PVERSION_INFO VersionInfo ;版本信息
返回值:   成功返回0 ;失败返回错误号。
说   明:   获取当前所使用的DSP 、Driver、SDK 版本号
版本信息结构体
typedef struct tagVersion{
ULONG DspVersion, DspBuildNum ;
DSP 版本号,DSP 的BUILD号,用于软件升级时标明该版本的最后修改时间
ULONG DriverVersion, DriverBuildNum ;
Driver 版本号,Driver 的BUILD号,用于软件升级时标明该版本的最后修改时间
ULONG SDKVersion, SDKBuildNum;
SDK 版本号,SDK 的BUILD号,用于软件升级时标明该版本的最后修改时间
}VERSION_INFO, *PVERSION_INFO
3. 编码卡API
3.1 通道打开及关闭
3.1.1打开通道ChannelOpen  
函   数:   HANDLE __stdcall ChannelOpen(int ChannelNum)
参   数:   int ChannelNum ;通道号(从0 开始)
返回值:   成功返回有效句柄(值可能为0 );失败返回 0xFFFFFFFF。
说   明:   打开通道,获取编码通道的操作句柄,与通道相关的操作需使用相对应的句柄。
3.1.2关闭通道ChannelClose  
函   数:   int __stdcall ChannelClose(HANDLE hChannelHandle)   
版权所有(C)杭州海康威视数字技术股份有限公司  26
海康威视DS-4100、4000HC 系列板卡SDK编程指南
参   数:   HANDLE  hChannelHandle ;通道句柄
返回值:   成功返回0 ;失败返回错误号
说   明:   关闭通道,释放相关资源
3.2 视频预览
3.2.1Overlay 预览模式
 
释   义:  overlay预览模式
Overlay通常被称为重叠页面或者是覆盖层,是一种需要特定的硬件支持的页面,通常
被用于显示实时视频于主页面之上,而不需要Blit 操作到主页面或用任何方法改变主页面的
内容。使用该方式进行预览可以提高预览的画质和降低CPU 利用率。
3.2.1.1 设置视频预览模式SetPreviewOverlayMode  
函   数:   int __stdcall SetPreviewOverlayMode(BOOL bTrue)
参   数:   BOOL bTrue;是否设置 overlay 预览方式,也适用于MD卡
返回值:   0 表示显卡支持板卡的overlay 预览方式;其他值表示显卡不支持
说   明:   SDK 自3.2 版本起在部分显卡中实现了 HC卡以overlay方式预览的功能(此功
能不支持与H 卡混插的状态下),可以提高预览的画质和降低CPU 利用率。当预览画面小
于704*576 时,需要调用该函数来启动 overlay模式,如不设置则自动切换到 offscreen 模式
进行预览显示,当预览画面大于704*576 时,SDK 自动切换到overlay模式
3.2.1.2 设置overlay关键色SetOverlayColorKey  
函   数:   int __stdcall SetOverlayColo rKey(COLORREF DestColorKey)
参   数:   COLORREF DestColorKey;overlay关键色参数(RGB(* ,* ,* ))
返回值:   成功返回0 ;失败返回错误号
说   明:   板卡在显示范围小于704*576 时,调用 SetPreviewOverlayMode可以开启overlay
预览模式,需调用SetOverlayColorKey设置overlay关键色;当显示范围大于704*576 时,
板卡自动切换到overlay预览模式,关键色默认设置为RGB(10,10,10 ),也可调用
SetOverlayColorKey 修改关键色。在这两种情况下,都需要将显示窗口的底色设置为和关键
色相一致。否则图像将难以显示。
注意:需要在StartVideoPreview 前调用该函数。
3.2.1.3 恢复当前丢失的表面RestoreOverlay
函   数:   int __stdcall RestoreOverlay()
参   数:   无
返回值:   成功返回0 ;失败返回错误号
版权所有(C)杭州海康威视数字技术股份有限公司  27
海康威视DS-4100、4000HC 系列板卡SDK编程指南
说   明:   恢复当前丢失的表面,例如:当系统按下CTRL+ALT+DEL 时系统的OVERLAY
表面会被强制关闭,调用该函数可以恢复OVERLAY 表面
3.2.2开启及停止视频预览
3.2.2.1 开启视频预览StartVideoPreview
函   数:  int __stdcall StartVideoPreview(HAND LE hChannelHandle,HWND WndHandle,   
RECT *rect,BOOLEAN bOverlay, int VideoFormat, int FrameRate)
参   数:  HANDLE hChannelHandle;通道句柄
HWND WndHandle;显示窗口句柄
RECT *rect ;显示窗口内的矩形区域
BOOLEAN bOverlay ;是否启用Overlay预览模式*
int VideoFormat ;视频预览格式(目前无效)
int FrameRate ;视频预览帧率(PA L :1-25 ,NTSC:1-30 )
返回值:   成功返回0 ;失败返回错误号
说   明:   启动视频预览,调用SetPreviewOverlayMode后,可进行 overlay模式预览,否
则,将默认采用 offscreen 模式预览。当画面大于 704*576 时,SDK 自动切换到overlay预览
模式。
视频预览格式
vdfRGB16;16位RGB视频压缩格式
vdfRGB24;24位RGB视频压缩格式
vdfYUV422Planar ;YUV422 视频压缩格式
3.2.2.2 停止视频预览StopVideoPreview
函   数:   int __stdcall StopVideoPreview(HANDLE hChannelHandle)   
参   数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说   明:   停止视频预览
3.2.3视频参数的设置及获取
3.2.3.1 设置视频参数SetVideoPara
函   数:   int __stdcall SetVideoPara(HANDLE hChannelH andle, int Brightness, int Contrast,
int Saturation, int Hue)   
参   数:   HANDLE hChannelHandle;通道句柄
int Brightness ;亮度值(0-255)
int Contrast ;对比度(0-127)
版权所有(C)杭州海康威视数字技术股份有限公司  28
海康威视DS-4100、4000HC 系列板卡SDK编程指南
int Saturation ;饱和度(0-127)
int Hue ;色调(0-255)
返回值:   成功返回0 ;失败返回错误号
说   明:   设置视频参数
3.2.3.2 获取视频参数GetVideoPara
函   数:   int __stdcall GetVideoPara(HANDLE hChannelHandle,   
VideoStandard_t *VideoStandard, int*Brightness, int *Contrast, int *Saturation, int *Hue)
参   数:   HANDLE hChannelHandle;通道句柄
VideoStandard_t *VideoStandard;视频制式
int *Brightness;亮度指针值(0-255)
int *Contrast;对比度指针值(0-127)
int *Saturation ;饱和度指针值(0-127)
int *Hue ;色调指针值(0-255)
返回值:   成功返回0 ;失败返回错误号
说   明:   获取视频参数
视频制式
StandardNone ;无视频信号
StandardNTSC;NTSC 制式
StandardPAL;PA L 制式
3.3 视频信号设置(制式、状况、输入位置等)
3.3.1设置系统默认的视频制式SetDefaultVideoStandard
函   数:   int __stdcall SetDefaultVideoStandard(VideoStandard_t VideoStandard)
参   数:   VideoStandard_t VideoStandard ;视频制式,默认为PA L  
返回值:   成功返回0 ;失败返回错误号
说   明:   设置系统默认的视频制式,系统中所有的视频输入通道如果无视频输入或者在系
统启动的时候,通道会按照所设置的系统默认视频制式进行处理。
注意:该函数只能在系统初始化(InitDSPs )之前运行,否则无效
3.3.2设置视频信号灵敏度SetVideoDetectPrecision
函   数:   int __stdcall SetVideoDetectPrecision( HANDLE hChannel,unsigned int value)
参   数:   HANDLE hChannel;通道句柄
unsigned int value;灵敏度。取值范围:0-100,默认为 20
返回值:   成功返回0 ;失败返回错误号
说   明:   设置视频信号检测的灵敏度。如果视频信号的强度比较弱,或者信号通断的切换
比较频繁,会出现“无视频信号”的提示字样,为了避免提示字样影响图像,可以更改视频
版权所有(C)杭州海康威视数字技术股份有限公司  29
海康威视DS-4100、4000HC 系列板卡SDK编程指南
信号检测的灵敏度。灵敏度取值越大,检测精度越低,出现“无视频信号”提示字样的频率
越低。当将value值设置为 0xffffffff 时,将不会再出现“无视频信号”的提示字样。
3.3.3获取视频信号输入情况GetVideoSignal
函   数:   int __stdcall GetVideoSignal(HANDLE    hChannelHandle)
参   数:   HANDLE  hChannelHandle ;通道句柄
返回值:   信号正常返回0 ;返回其他值说明信号异常或有错误
说   明:   获取视频信号的输入情况,用于视频丢失报警
3.3.4调整视频信号输入位置SetInputVideoPosition  
函   数:   int __stdcall SetInputVideoPosition(HANDLE hChannel,UINT x,UINT y)
参   数:   HANDLE hChannelHandle;通道句柄
UINT x;X 轴坐标,默认值为8
UINT y;Y 轴坐标,默认值为2
返回值:   成功返回0 ;失败返回错误号
说   明:   设置视频信号的输入位置。(x ,y)为系统处理图像的左上角在摄像机输入的原
始图像中的坐标,某些摄像机输入的图像在预览时可能在左边会有黑边,可以通过此函数进
行调节,x 必须设置为2 的整数倍。(x ,y)的取值和摄像机的型号有关,如果指定的值和
摄像机的输入参数不匹配,可能会导致图像静止、水平垂直方向滚动或者黑屏,请谨慎使用。
3.3.5设置反隔行变换及强度SetDeInterlace
函   数:   int __stdcall SetDeInterlace(HANDLE hCha nnelHandle,UINT mode,UINT level)
参   数:   HANDLE hChannelHandle;通道句柄
UINT mode ;0 表示该通道不进行反隔行变换, 此时level 参数无效;1 表示使用旧
的算法;2 表示使用默认算法(系统默认值)。
UINT level;当 mode=1 时有效,其它时无效。0-10,反隔行变换的强度逐渐
加强,0 最弱,对图像的损失最小,10 最强,对图像的损失最大。
返回值:   成功返回0 ;失败返回错误号
说   明:   设置是否采用反隔行算法,已经采用反隔行时的强度
 
释   义:   反隔行变换
如果该通道的图像需要进行4CIF 的预览或编码,此时的图像中会同时包含奇、偶两
场的数据,由于奇场图像和偶场图像不同步,导致图像中运动的部分发生错位、边缘模糊,
此时需要对图像进行反隔行变换来去掉这种现象。如果用户能够确定使用的是逐行扫描格式
的摄像机,或者主要应用在静止场景,此时可以关掉反隔行变换功能,或者降低强度,这样
可以提高系统运行效率,并降低反隔行变换对图像质量带来的损失。
版权所有(C)杭州海康威视数字技术股份有限公司  30
海康威视DS-4100、4000HC 系列板卡SDK编程指南
3.4 视频编码参数设置
 
释   义:   双编码功能(主、子通道)
  对一路视频图像进行两路视频编码,两路视频可以有不同的码流类型、不同分辨率、不
同码率等。3.0版本对双编码功能做了增强,子通道的所有参数都可以任意设置。
双编码中主通道和子通道唯一的区别在于:子通道占用的系统资源比主通道少,优先级
比主通道低。当系统忙时,会尽量保证主通道编码,并先从子通道开始丢帧。由于占用资源
少,因此可以利用子通道来实现多路高分辨率的非实时编码。例如:可以把DS-4000HC中
的每个子通道全部设置为4CIF分辨率(SetSubStreamType ),而不使用主通道编码,这样就
可以实现全部通道的4CIF编码。在一般场景下,每路图像都可以达到15 帧以上。
3.4.1主、子通道切换SetupSubChannel  
函   数:   int __stdcall SetupSubChannel(HANDLE hChannelHandle, int iSubChannel)
参   数:   HANDLE hChannelHandle;通道句柄
int iSubChannel ;子通道号(0 表示主通道,1 表示主通道)
返回值:   成功返回0 ;失败返回错误号
说   明:   配合双编码模式使用。当设置某个通道为双编码模式时,如主通道编码 CIF,子
通道编码QCIF,这时可对主/ 子通道分别设置某些参数。关键帧间隔、OSD 、LOGO 等参数
对主/ 子通道是一样的;在设置帧率、量化系数、变码流/ 定码流模式、码流大小等参数时应
调用此函数分别对主/ 子通道进行设置,缺省是对主通道进行设置
3.4.2获取双编码时数据流类型GetSubChannelStreamType  
函   数:   int __stdcall GetSubChannelStreamType(void    *DataBuf, int FrameType)
参   数:   void  *DataBuf ;数据缓存区
int FrameType ;帧类型
返回值:   0  其他数据
1  主通道数据流的文件头
2  子通道数据流的文件头
3  主通道数据流的视频帧类型
4  子通道数据流的视频帧类型
5  数据流的音频帧
说   明:   配合双编码模式使用,当设置双编码模式时,启动录像后,DSP 会向上送两种
数据流,调用此函数得到主通道和子通道的数据流类型,供应用程序使用。
版权所有(C)杭州海康威视数字技术股份有限公司  31
海康威视DS-4100、4000HC 系列板卡SDK编程指南
3.4.3编码流类型的设置及获取(不支持动态修改)
3.4.3.1 设置主通道编码流类型SetStreamType
函   数:   int __stdcall SetStreamType(HANDLE hChannelHandle, USHORT Type)
参   数:   HANDLE hChannelHandle;通道句柄
USHORT Type;流类型
返回值:   成功返回0 ;失败返回错误号
说   明:   设置主通道编码流类型。此函数需在启动编码前进行设置
流类型宏定义
#define STREAM_TYPE_VIDEO   1;视频流
#define STREAM_TYPE_AUDIO   2;音频流  
#define STREAM_TYPE_AVSYNC  3;音视频复合流
3.4.3.2 获取主通道编码流类型GetStreamType
函   数:   int __stdcall GetStreamType(HANDLE hChannelHandle, USHORT *StreamType)
参   数:   HANDLE hChannelHandle,;通道句柄
USHORT *StreamType;流类型
返回值:   成功返回0 ;失败返回错误号
说   明:   获取主通道编码流类型
3.4.3.3 设置子通道编码流类型SetSubStreamType
函   数:   int __stdcall SetSubStreamType(HANDLE hChannelHandle, USHORT Type)
参   数:   HANDLE hChannelHandle;通道句柄
USHORT Type;流类型
返回值:   成功返回0 ;失败返回错误号
说   明:   设置子通道编码流类型,此函数需在启动编码前进行设置
3.4.3.4 获取子通道编码流类型GetSubStreamType
函   数:   int __stdcall GetSubStreamType(HANDLE hChannelHandle, USHORT *StreamType)
参   数:   HANDLE hChannelHandle;通道句柄
USHORT *StreamType;流类型
返回值:   成功返回0 ;失败返回错误号
说   明:   获取子通道编码流类型
版权所有(C)杭州海康威视数字技术股份有限公司  32
海康威视DS-4100、4000HC 系列板卡SDK编程指南
3.4.4(支持动态修改)的编码参数设置
3.4.4.1 设置编码图像质量SetDefaultQuant
函   数:   int __stdcall SetDefaultQuant(HANDLE  hChannelHandle, int IQuantVal,   
int PQuantVal, int BQuantVal)
参   数:   HANDLE hChannelHandle;通道句柄
int IQuantVal ;I 帧量化系数,取值范围:12-30
int PQuantVal ;P 帧量化系数。取值范围:12-30( 目前无效)
int BQuantVal ;B 帧量化系数。取值范围:12-30(目前无效)
返回值:   成功返回0 ;失败返回错误号
说   明:   设置图像量化系数,用于调整图像质量。量化系数越小图像质量越高。系统默认
量化系数值为18,18,23 。
 
释  义:  量化系数
量化系数是强烈影响MPEG 标准中编码图像质量和码率的参数,当量化系数越低,图
像质量就会越高,码率也就越高,反之,图形质量就会越低,码率也就越低
3.4.4.2 设置编码帧结构、帧率SetIBPMode
函  数:   int __stdcall SetIBPMode(HANDLE hChannelHandle, int KeyFrameIntervals,
int BFrames, int PFrames, int FrameRate)  
参  数:   HANDLE hChannelHandle;通道句柄
int KeyFrameIntervals;关键帧间隔。取值范围1-400 ,系统默认为 100
int BFrames ;B 帧数量,取值为 0 或者2 ,系统默认为 2  
int PFrames ;P 帧数量。目前暂取值无效
int FrameRate ;帧率,帧率范围1-25 (PA L )、1-30 (NTSC)
返回值:   成功返回0 ;失败返回错误号
说  明:   设置编码帧结构和帧率。支持动态修改
 
释  义:  关键帧间隔
关键帧为编码码流中采用帧内压缩的图像帧,其特点是图像清晰度好,但数据量大,通
常作为帧间编码的原始参考帧。关键帧间隔是连续的帧间编码的帧个数,因H264(MPEG4)
编码是有损压缩,关键帧的个数会影响图像质量,因此关键帧的间隔需要合理设计。
3.4.4.3 设置编码分辨率
3.4.4.3.1 设置主通道分辨率SetEncoderPictureFormat   
函  数:   int __stdcall SetEncoderPictureFormat(HANDLE hChannelHandle,   
版权所有(C)杭州海康威视数字技术股份有限公司  33
海康威视DS-4100、4000HC 系列板卡SDK编程指南
PictureFormat_t PictureFormat)  
参  数:   HANDLE hChannelHandle;通道句柄   
PictureForamt_t PictureFormat;编码图像分辨率(4CIF、DCIF、2CIF、CIF、QCIF)
返回值:   成功返回0 ;失败返回错误号
说  明:   设置主通道编码分辨率。支持动态修改。
3.4.4.3.2 设置子通道编码分辨率SetSubEncoderPictureFormat  
函  数:   int __stdcall SetSubEncoderPictureFormat(HANDLE hChannelHandle,   
PictureFormat_t PictureFormat)  
参  数:   HANDLE hChannelHandle;子通道句柄
PictureFormat_t PictureFormat;子通道编码图像分辨率(4CIF、DCIF、2CIF、CIF、
QCIF)
返回值:   成功返回0 ;失败返回错误号
说  明:   设置双编码模式时子通道的编码分辨率,支持动态修改。
3.4.4.4 设置码率及码流控制模式
3.4.4.4.1 设置码流最大比特率SetupBitrateControl  
函  数:   int __stdcall SetupBitrateControl( HANDLE hChannelHandle, ULONG MaxBps)
参  数:   HANDLE hChannelHandle;通道句柄
ULONG Maxbps ;最大比特率。取值:10000 以上
返回值:   成功返回0 ;失败返回错误号
说  明:   设置编码的最大比特率。设置为0 时码流控制无效,设置为某一最大比特率时,
当编码码流超过该值时,DSP 会自动调整编码参数来保证不超过最大比特率,当编码码流
低于最大比特率时,DSP 不进行干涉。调整误差<10%
3.4.4.4.2 设置码流控制方式SetBitrateControlMode
函  数:   int __stdcall SetBitrateControlMode(HANDLE hChannelHandle,
BitrateControlType_t brc)
参  数:   HANDLE hChannelHandle;通道句柄
BitrateControlType_t brc;码流控制方式,分为变码率(brVBR )和恒定码率
(brCBR )两种方式
返回值:   成功返回0 ;失败返回错误号
说  明:   设置编码码流控制方式。配合SetupBitrateControl使用。当设置为变码率(brVBR )
时,最大比特率将作为编码码流上限,由DSP 在码流上限下自动控制码率,一般会自动回
落到最低的状态(由设定的图像质量参数和关键帧间隔决定),能最大程度地降低带宽和存
储空间,但存储容量一般难以估算;当设置为定码率(brCBR )时,以最大比特率作为编码
码率参数恒定输出码流,不会自动回落到低码流状态,存储容量可根据设定码率的大小进行
版权所有(C)杭州海康威视数字技术股份有限公司  34
海康威视DS-4100、4000HC 系列板卡SDK编程指南
估算。
3.4.5强制设定I 帧CaptureIFrame  
函  数:   int __stdcall CaptureIFrame(HANDLE hChannelHandle)
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   将当前编码帧强制设定为I 帧模式,可从码流中提取该帧单独用于网络传送。
3.4.6获取帧统计信息GetFramesStatistics
函  数:   int __stdcall GetFramesStatistics(HANDLE hChannelHandle,     
PFRAMES_STATISTICS framesStatistics)
参  数:   HANDLE hChannelHandle;通道句柄
PFRAMES_STATISTICS framesStatistics ;帧统计信息
返回值:   成功返回0 ;失败返回错误号
说  明:   获取帧统计信息
帧统计信息结构体
typedef struct tagFramsStatistics{
ULONG VideoFrames;视频帧
ULONG AudioFrames;音频帧
ULONG FramesLost;丢失帧
ULONG QueueOverflow;丢失的码流(字节)
ULONG CurBps ;当前的帧率(bps)
}FRAMES_STATISTICS, *PFRAMES_STATISTICS
3.5 数据捕获
3.5.1抓图(获取单帧图像数据)
3.5.1.1 抓取BMP格式图像
3.5.1.1.1 获取原始yuv422格式数据GetOriginalImage  
函  数:   int __stdcall GetOriginalImage(HANDLE hChannelHandle, UCHAR *ImageBuf,   
ULONG *Size)
参  数:   HANDLE hChannelHandle;通道句柄
UCHAR *ImageBuf;原始yuv422格式图像指针
版权所有(C)杭州海康威视数字技术股份有限公司  35
海康威视DS-4100、4000HC 系列板卡SDK编程指南
ULONG *Size ;原始 yuv422 格式图像尺寸,函数调用前是 ImageBuf 的大小,调
用后是实际图像所占用的字节数
返回值:   成功返回0 ,失败返回错误号
说  明:   获得原始yuv422 格式图像,DS4100、DS4000HC 原始图像是4CIF图像格式(包
括QCIF编码),DS-4000HS 原始图像为CIF 图像格式。
3.5.1.1.2 图像格式转换YUVtoBMP SaveYUVToBmpFile  
函  数:   int __stdcall SaveYUVToBmpFile(char *FileN ame, unsigned char *yuv, int Width,
int Height)  
参  数:   char *FileName;文件名
unsigned char *yuv ;yuv422 格式图像指针
int Width ;图像宽度
int Height;图像高度
返回值:   成功返回0  ,失败返回错误号
说  明:   用户程序可调用此函数来生成24 位的 bmp 文件,DS4100、DS4000HC 卡抓图
Width  为704,Height  为576PAL/480NTSC 。
3.5.1.2 抓取JPEG 格式图像GetJpegImage
函  数:   int __stdcall GetJpegImage(HANDLE hChannelHandle,UCHAR *ImageBuf,
ULONG *Size,UINT nQuality)
参  数:   HANDLE hChannelHandle;通道句柄
UCHAR *ImageBuf;JPEG 图像指针
ULONG *Size ;JPEG 图像尺寸,函数调用前是 ImageBuf 的大小,调用后是实际
图像所占用的字节数
UINT nQuality;JPEG 图像质量,取值范围1-100,取值100 时质量最好
返回值:   成功返回0 ,失败返回错误值
说  明:   抓取JPEG 格式图像
3.5.2原始图像数据流捕获(获取YUV420 格式数据流)
3.5.2.1 注册原始图像数据流回调函数RegisterImageStreamCallback
函  数:   int __stdcall RegisterImageStreamCallback
(IMAGE_STREAM_CALLBACK ImageS treamCallback,void *context)  
参  数:   IMAGE_STREAM_CALLBACK ;原始图像数据流回调函数
void *context;设备上下文
返回值:   成功返回0 ;失败返回错误号
说  明:   注册获取原始图像数据流函数,用户可以获取实时的YUV420 格式的预览数据
原始图像数据流回调函数
版权所有(C)杭州海康威视数字技术股份有限公司  36
海康威视DS-4100、4000HC 系列板卡SDK编程指南
typedef void (*IMAGE_STREAM_CALLBACK)(UINT channelNumber,void *context)   
UINT channelNumber;通道号
void *context;设备上下文)
3.5.2.2 开启及停止原始数据流捕获SetImageStream
函  数:   int __stdcall SetImageStream(HANDLE hChannel,BOOL bStart,UINT fps,
UINT width,UINT height,unsigned char *imageBuffer)
参  数:   HANDLE hChannelHandle;通道句柄
BOOL bStart;是否启动捕获
UINT fps ;帧率
UINT width ;图像宽度,必须是4CIF宽度的1/8,1/4,1/2 或原始大小 704
UINT heigh ;图象高度,必须是 4CIF高度的1/8,1/4,1/2 或原始大小
576PAL/480NTSC
unsigned char *imageBuffer;数据存储缓存
返回值:   成功返回0 ;失败返回错误号
说明:     开启或停止原始图像数据流捕获,此函数依赖主机的处理速度。DS-4000HS 只
能捕获不大于CIF 格式的数据流
3.5.3编码数据流捕获(获取编码后H.264 格式数据流)即录像
3.5.3.1 编码数据流捕获方式设置
注意:注册直接回调或者消息回调后,需要启动编码数据流捕获函数才能进行数据回调。三
种数据回调方式,只需选取其中一种使用即可。对于 HC系列板卡,推荐使用第一种读取方
式。
3.5.3.1.1 方式一、直接读取方式
3.5.3.1.1.1 注册编码图像数据流直接读取回调函数
RegisterStreamDirectReadCallback
函  数:   int __stdcall RegisterStreamDirectReadCallback
(STREAM_DIRECT_READ_CALLBACK StreamDirectReadCallback,void *Context)
参  数:   STREAM_DIRECT_READ_CALLBACK StreamDirectReadCallback;编码数据流
直接读取回调函数
void* Context ;设备上下文
返回值:   成功返回0 ;失败返回错误号
说  明:   新增的一种数据流读取方式,当启动数据捕获后,StreamDirectReadCallback 会
版权所有(C)杭州海康威视数字技术股份有限公司  37
海康威视DS-4100、4000HC 系列板卡SDK编程指南
提供数据流的地址、长度、帧类型等,供用户程序直接处理。
编码数据流直接读取回调函数
typedef int (*STREAM_DIRECT_READ_ CALLBACK)(ULONG channelNumber,
void *DataBuf,DWORD Length,int FrameType,void *context)   
ULONG channelNumber;通道号
void* DataBuf ;缓冲区地址
DWORD Length ;缓冲区长度
int FrameType ;缓冲区数据帧类型
void* context;设备上下文
3.5.3.1.2 方式二、消息读取方式
3.5.3.1.2.1 注册消息读取码流函数RegisterMessageNotifyHandle  
函  数:   int __stdcall RegisterMessageNotifyHandle(HWND hWnd, UINT MessageId)
参  数:   HWND hWnd ;通道句柄
UINT MessageId ;自定义消息
返回值:   成功返回0 ;失败返回错误号
说  明:   当数据准备好时,SDK 会向hWnd 窗口发送MessageId消息,目标窗口收到
Message后调用 ReadStreamData 读取一帧数据。
3.5.3.1.3 方式三、另一种直接读取方式
3.5.3.1.3.1 注册直接读取码流回调函数RegisterStreamReadCallback
函  数:   int __stdcall RegisterStreamReadCallback
(STREAM_READ_CALLBACK StreamReadCallback, void *Context)  
参  数:   STREAM_READ_CALLBACK StreamReadCallback ;直接读取码流回调函数
void *Context ;设备上下文
返回值:   成功返回0 ;失败返回错误号
说  明:   另一种数据流读取方式
直接读取码流回调函数
typedef int (*STREAM_READ_CALLBACK)(ULONG channelNumber, void *context)   
ULONG channelNumber;通道号
void *context;设备上下文
3.5.3.2 读取码流函数ReadStreamData
函  数:   int __stdcall ReadStreamData(HANDLE hChannelHandle, void *DataBuf,   
DWORD *Length, int *FrameType)
版权所有(C)杭州海康威视数字技术股份有限公司  38
海康威视DS-4100、4000HC 系列板卡SDK编程指南
参  数:   HANDLE hChannelHandle;通道句柄
void *DataBuf ;自定义的数据缓存区
DWORD * Length;输入:缓存区的大小;输出:一帧数据的大小
int *FrameType ;帧类型
返回值:   成功返回0 ;失败返回错误号
说  明:   读指定长度的数据流,适用于方式二及方式三。当调用StartVideoCapture  或  
StartMotionDetection 后,SDK 线程会向已注册的用户窗口消息处理函数发送指定的消息,
并提供消息来源的通道号。当用户程序收到该消息时,可调用本函数来读取数据,Length 在
作为输入时必须提供缓冲的大小,ReadStreamData 会判断缓冲是否足够,如果缓冲足够大,
则返回值为当前的读取的帧长度,否则返回错误。
在HC卡中,如果已经先调用了RegisterStreamDirectReadCallback() 函数,则不需调用
ReadStreamData 来读取数据,因为音视频数据会在 RegisterStreamDirectReadCallback所注册
的回调函数中直接返回。
3.5.3.3 开启及停止录像
3.5.3.3.1 启动主通道编码数据流捕获StartVideoCapture
函  数:   int __stdcall StartVideoCapture(HANDLE hChannelHandle)
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   启动主通道编码数据流捕获。用户程序可以使用直接读取方式,使用
StreamDirectReadCallback 回调函数直接对数据流进行处理;也可以通过消息读取方式,等
SDK 向用户程序发送在RegisterMessageNotifyHandle中注册的消息,用户程序使用
ReadStreamData 来读取数据流。
3.5.3.3.2 停止主通道编码数据流捕获StopVideoCapture  
函  数:   int __stdcall StopVideoCapture(HANDLE hChannelHandle)
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   停止主通道编码数据流捕获
3.5.3.3.3 启动子通道编码数据流捕获StartSubVideoCapture  
函  数:   int __stdcall StartSubVideoCapture(HANDLE hChannelHandle)
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   启动子通道编码数据流捕获
版权所有(C)杭州海康威视数字技术股份有限公司  39
海康威视DS-4100、4000HC 系列板卡SDK编程指南
3.5.3.3.4 停止子通道编码数据流捕获StopSubVideoCapture  
函  数:   int __stdcall StopSubVideoCapture(HANDLE hChannelHandle)
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   停止子通道编码数据流捕获
3.6 移动侦测
 
释  义:  移动侦测
DS4000HC 提供运动强度信息来处理运动检测,设置移动侦测区域时以32*32 像素块为
单位,按 4CIF(704*576)分辨率计算,每行有 22 个块(704/32 ),PA L 时18行(576/32 ),
NTSC 时15行(480/32 ),与编码格式无关。经过测试,这种方法比 H 卡提高了灵敏度和可
靠性,并简化了返回的数据,返回的值是18 个DWORD ,对应屏幕高度 576/32=18 行(PA L ),
每个DWORD 的0-21 位对应屏幕宽度 704/32=22,  其中1 为运动,0 为静止,也可以调用原有
MotionAnalyzer分析结果
4.0 版本的SDK 新增了接口函数SetupMotionDetectionEx,提供了更灵活的功能,并且
简化了用户的工作量。
3.6.1设置方式一
设置移动侦测相关参数并启动移动侦测后,运动检测信息会通过数据流传送,用户程序
发现PktMotionDetection帧类型时,可调用MotionAnalyzer来处理运动信息,结果由
MotionAnalyzer在iResult 中返回。也可以按照SDK 提供的数据格式来自己分析,运动信息格
式参见移动侦测释义。
3.6.1.1 设置移动侦测灵敏度AdjustMotionDetectPrecision
函  数:   int __stdcall AdjustMotionDetectPrecision(HANDLE hChannelHandle, int iGrade,
  int iFastMotionDetectFps, int iSlowMotionDetectFps)
参  数:   HANDLE hChannelHandle;通道句柄
int iGrade;运动分析灵敏度等级,取值范围 0-6,0 级最灵敏,6 级最迟钝,推
荐值为2 。将 iGrade 和“0x80000000 “做”或“操作,会对移动侦测启用自适应
分析。
int iFastMotionDetectFps;高速运动检测的帧间隔,取值范围 0-14
int iSlowMotionDetectFps ;低速运动检测的帧间隔,取值范围15 以上
iFastMotionDetectFps 、 iSlowMotionDetectFps 两个参数同时为 0 的时候不做移
动侦测  ,如果 iFastMotionDetectFps 取值为 0 则默认为 1 ,如果 iSlowMotionDetectFps  取值
小于iFastMotionDetectFps 则默认为15
返回值:   成功返回0 ;失败返回错误号
说  明:   调整运动分析的灵敏度,支持动态调整,此函数决定DSP 全局运动分析的灵敏
度。而MotionAnalyzer的iThreshold 则主要用于分析指定区域的运动统计结果。
版权所有(C)杭州海康威视数字技术股份有限公司  40
海康威视DS-4100、4000HC 系列板卡SDK编程指南
3.6.1.2 设置移动侦测区域范围及个数SetupMotionDetection  
函  数:   int __stdcall SetupMotionDetection(HANDLE hChannelHandle, RECT *RectList,
int iAreas)
参  数:   HANDLE hChannelHandle;通道句柄
RECT *rectList;矩形框数组
int numberOfAreas ;矩形框个数,最大值为100
返回值:   成功返回0 ;失败返回错误号
说  明:   设置运动检测区域;当收到运动信息的数据帧(PktMotionDetection)时, 调用
MotionAnalyzer;MotionAnalyzer 会根据在 SetupMotionDetection中的设置来分析每个需要
检测的区域,当某区域的阀值(MotionAnalyzer 的iThreshold) 到达时,会在返回的区域数组
(MotionAnalyzer的iResult )标明最后的判断;矩形框范围是(0 ,0 ,703,575)。
3.6.1.3 移动侦测分析MotionAnalyzer
函  数:    int __stdcall MotionAnalyzer(HANDLE hChannelHandle, char *MotionData,   
int iThreshold, int *iResult)
参  数:    HANDLE hChannelHandle;通道句柄
char *MotionData;运动矢量指针
int iThreshold ;判断运动程度的伐值
int *iResult ;按照伐值指定的强度分析后的结果数组。数组的大小在
SetupMotionDetection的numberOfAreas 指定,如果某数组单元的值大于零则表
明有该区域有该值表明的运动强度
返回值:   成功返回0 ;失败返回错误号
说  明:   动态监测分析,移动侦测由DSP 完成,DSP 送出的IPktMotionData 帧就是已经
分析好的运动信息,区域的运动分析由主机完成,数据源由码流中的PktMotionData帧提供,
结果在iResult 中说明,2.0 以上版本的运动分析基于 DSP 提供的运动强度,不再使用运动
矢量,其灵敏度及可靠性有大幅提高,用户软件可使用由码流提供的运动强度信息来自己分
析或调用该函数来进行区域分析
3.6.2设置方式二
3.6.2.1 设置移动侦测(扩展)SetupMotionDetectionEx  
函  数:    int __stdcall SetupMotionDetectionEx(HANDLE hChannelHandle,int iGrade,  
int iFastMotionDetectFps, int iSlowMotionDetectFps,UINT delay,RECT *RectList, int   
iAreas, MOTION_DETECTION_CALLBACK MotionDetectionCallback,int reserved)
参  数:   HANDLE hChannelHandle ;通道句柄
int iGrade ;运动分析灵敏度等级,取值范围 0-6,0 级最灵敏,6 级最迟钝,
推荐值2 。将iGrade 和“0x80000000“做”或“操作,会对移动侦测启用
自适应分析。
int iFastMotionDetectFps;高速运动检测的帧间隔,取值范围 0-14
版权所有(C)杭州海康威视数字技术股份有限公司  41
海康威视DS-4100、4000HC 系列板卡SDK编程指南
int iSlowMotionDetectFps ;低速运动检测的帧间隔,取值范围15 以上
iFastMotionDetectFps 、 iSlowMotionDetectFps 两个参数同时为 0 的时候不做移
动侦测  ,如果 iFastMotionDetectFps 取值为 0 则默认为 1 ,如果 iSlowMotionDetectFps  取值
小于iFastMotionDetectFps 则默认为15
UINT delay;前一次移动帧测产生后的延时时间
RECT *RectList;进行移动侦测的矩形框数组
int iAreas;矩形框个数(最大个数为 100 )
MOTION_DETECTION_CALLBACK  MotionDetectionCallback;移动侦测
结果回调函数
int reserved;保留参数
返回值:   成功返回0 ;失败返回错误号
说  明:   设置移动侦测,这种设置方式可替代设置方式一中 3 个函数的共同作用,在这种
情况下,DSP 将不再反馈移动侦测帧。
UINT delay :画面静止之后的延时时间,单位为秒,若在该延时时间内没有产生
移动侦测,则将回调函数MotionDetectionCallback之中的参数 bMotionDetected标志为False,
若在该延时时间之内,在当前所设置的区域内产生移动侦测,则bMotionDetected 被标志为
True ,并且在产生移动侦测之后的 delay时间内,DSP 不会对在此时间段之内的视频帧进行
移动侦测分析,因此DSP 和主机都省却了在此时间段对产生的视频运动进行频繁判断和分
析。直至超过了此 delay秒延时时间,DSP 才会对此时刻的视频进行判断,若产生了移动侦
测,则回调函数中的bMotionDetected 被再次标志为 True ,否则标志为 False。
移动侦测结果回调函数
typedef void (*MOTION_DETECTION_CA LLBACK)(ULONG channelNumber,
BOOL bMotionDetected,void *context)   
ULONG channelNumber ;通道号
BOOL bMotionDetected ;移动侦测发生标志,如果当前通道所设置的移动侦测
区域内产生了移动侦测,则被置为 True;如果当前通道所设置的移动侦测区域内自上
一次产生移动侦测后delay 秒内没有发生移动侦测,则被置为False。
Void *context;设备上下文
3.6.3启动及停止移动侦测
3.6.3.1 启动移动侦测StartMotionDetection
函  数:   int __stdcall StartMotionDetection(HANDLE hChannelHandle)
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   启动移动侦测。
注意:移动侦测和编码相互独立,用户程序可在不启动编码的情况下进行运动检测
3.6.3.2 停止移动侦测StopMotionDetection
函  数:   int __stdcall StopMotionDetection(HANDLE hChannelHandle)
版权所有(C)杭州海康威视数字技术股份有限公司  42
海康威视DS-4100、4000HC 系列板卡SDK编程指南
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   停止移动侦测
3.7 视频信息叠加
3.7.1信息叠入视频编码(OSD、LOGO、MASK)
注意:使用此部分函数时,在录像文件中,包含所叠加的信息
3.7.1.1 OSD
3.7.1.1.1 设置OSD显示模式SetOsdDisplayMode  
函  数:   int __stdcall SetOsdDisplayMode(HANDLE hChannelHandle, int Brightness,   
BOOL Translucent, int parameter, USHORT *Format1, USHORT *Format2)  
参  数:   HANDLE hChannelHandle;通道句柄
int Brightness ;OSD 显示亮度。0 最暗,255 最亮
BOOL Translucent; OSD 图像是否做半透明处理
int param ;Bit0 :是否自动进行颜色翻转 Bit16-23垂直放大倍数 Bit24-31水平
放大倍数
USHORT *Format1;  描述字符叠加的位置和次序的格式
USHORT *Format2;
USHORT    *Forma1, *Format2
描述字符叠加的位置和次序的格式串,具体定义如下:
USHORT X , USHORT Y, CHAR0 , CHAR1 , CHAR2 ,… CHARN,  NULL
  其中X,Y  是该字串在标准4CIF图象的起始位置,X 必须是16 的倍数,Y 可以在图
象高度内取值即(0-575)PA L 、(0-479)NTSC;CHARN 也是USHORT 型的参数,可以
是ASCII 码也可以是汉字,当想要显示当前时间时,可以指定为固定的时间定义值,其值
如下:
_OSD_YEAR4   四位的年显示,如2004
_OSD_YEAR2   两位的年显示,如02
_OSD_MONTH3   英文的月显示,如 Jan  
_OSD_MONTH2   两位阿拉伯数字的月显示,如07
_OSD_DAY     两位的阿拉伯数字的日显示,如31
_OSD_WEEK3   英文的星期显示,如Tue
_OSD_CWEEK1   中文的星期显示,如星期二
_OSD_HOUR24   24小时的时钟显示,如 18
_OSD_HOUR12   12小时的时钟显示,如 AM09 或PM09
_OSD_MINUTE   两位分钟的显示
版权所有(C)杭州海康威视数字技术股份有限公司  43
海康威视DS-4100、4000HC 系列板卡SDK编程指南
_OSD_SECOND   两位秒的显示
在格式字符串的最后必须以NULL(0 )结尾,否则会显示错误的内容。
字符串和时间显示可以在FORMAT1  也可以在FORMAT2 ,也可以混合在一起,但不得超
过一行4CIF  图象的宽度。
例如:
要显示位置在16,19 的字符串“办公室”的格式字符串如下:
  USHORT Format[] = {16, 19, ‘ 办’,’ 公’,’ 室’, ‘\0’};
要显示位置在8 , 3 的时间字符串可以如下:
  USHORT Format[]={8, 3, _OSD _YEAR4, ‘年’,_OSD_MONTH2,’ 月’,_OSD_DAY,
‘日’,_OSD_HOUR24,’:’, _ OSD _MINUTE, ‘:’, _OSD_SECOND, ‘\0’};
如果只想显示其中一行,则将起始的字符串定义如下:
  USHORT FormatNoDisplay[]={0, 0, ‘\0’};
返回值:   成功返回0 ;失败返回错误号
说  明:   OSD 字符中,ASCII 字符的标准分辨率为8 ×16,汉字的标准分辨率为 16×16。
由于在编码之前需要对原始图像进行缩小才能产生编码所需的分辨率,此时为了保证在
缩小后的编码图像上能够看清OSD 字符,就需要先把 OSD 字符放大以后再叠加在4CIF的
原始图像上。
如果不指定放大倍数(采用默认设置),则系统会根据该通道录像的分辨率自动设置,
这样在任何分辨率下都可以保证回放时能够看清OSD 内容,但是这会导致OSD 的大小和位
置在原始图像中不固定。
为了避免上面的现象,用户可以指定OSD 的大小。例如,如果应用程序想以CIF、DCIF、
2CIF、4CIF的分辨率录像,这时候可以将放大系数设为 2 、2 ,此时 OSD 的位置始终固定,
但在不同的编码分辨率下,OSD 字符的分辨率也不同,所以需要特别注意。如果此时使用
QCIF录像,则OSD字符会变得模糊不清(因为QCIF要对图像进行1/4 缩小,而对OSD
字符只进行了2 倍的放大)。具体配置详见下表:
水平放大倍数  垂直放大倍数  适合的录像分辨率  说明
1  1  4CIF  其它分辨率下会模糊
1  2  2CIF  小于2CIF时无法分辩
2  2  CIF、DCIF  QCIF时无法分辩
4  4  QCIF  在其它分辨率下字符会很大
任意系数为0  自动设置(默认值)  
其它无效值  按水平2 、垂直 2 处理  
注意:因为字符的位置会随着不同的录像分辨率而改变,在位置改变后,某些OSD字符的
位置可能会超出图像的范围,此时这些字符将无法显示,但系统并不会返回错误。  
3.7.1.1.2 设置OSD显示模式(扩展)SetOsdDisplayModeEx  
函  数:   int __stdcall SetOsdDisplayModeEx(HANDLE hChannelHandle,int color,
BOOL Translucent,int param,int nLineCount,USHORT **Format)
参  数:   HANDLE hChannelHandle;通道句柄
int Brightness ;OSD 显示亮度。0 最暗,255 最亮
BOOL Translucent;OSD 图像是否做半透明处理
int param ;Bit0 :是否自动进行颜色翻转 Bit16-23垂直放大倍数 Bit24-31水平
版权所有(C)杭州海康威视数字技术股份有限公司  44
海康威视DS-4100、4000HC 系列板卡SDK编程指南
放大倍数
int nLineCount;OSD 显示的行数,最多为8 行
USHORT **Format;多行字符显示
USHORT **Format;多行字符显示,描述字符叠加的位置和次序的格式串,  
其中每一行的第一元素X 和第二元素Y  是该字串在标准4CIF图象的起始位置,X 必须是
16的倍数,Y 可以在图象高度内取值即(0-575)PA L 、(0-479)NTSC;可以是ASCII 码
也可以是汉字,当想要显示当前时间时,可以指定为固定的时间定义值,其值如下:
_OSD_YEAR4   四位的年显示,如2004
_OSD_YEAR2   两位的年显示,如02
_OSD_MONTH3   英文的月显示,如 Jan  
_OSD_MONTH2   两位阿拉伯数字的月显示,如07
_OSD_DAY     两位的阿拉伯数字的日显示,如31
_OSD_WEEK3   英文的星期显示,如Tue
_OSD_CWEEK1   中文的星期显示,如星期二
_OSD_HOUR24   24小时的时钟显示,如 18
_OSD_HOUR12   12小时的时钟显示,如 AM09 或PM09
_OSD_MINUTE   两位分钟的显示
_OSD_SECOND   两位秒的显示
在格式字符串的每一行最后一个元素必须以NULL(0 )结尾,否则会显示错误的内容。
返回值:   成功返回0 ;失败返回错误号。
说  明:   此函数为SetOsdDisplayMode 的扩展,SetOsdDisplayModeEx 函数支持最多 8 行
OSD 字符串的显示。
3.7.1.1.3 设置OSD显示SetOsd
函  数:   int __stdcall SetOsd(HANDLE hChannelHandle, BOOL Enable)
参  数:   HANDLE hChannelHandle;通道句柄   
BOOL Enable ;OSD 是否显示
返回值:   成功返回0 ;失败返回错误号
说  明:   设置OSD 显示,将当前的系统时间年月日星期时分秒等信息叠加在视频之上,
并可作透明处理。
3.7.1.2 LOGO
3.7.1.2.1 数据格式转换(bmp 转yuv422)LoadYUVFromBmpFile
函  数:   int __stdcall LoadYUVFromBmpFile(char *FileName, unsigned char *yuv,   
int BufLen, int *Width, int *Height)
参  数:   char *FileName;文件名
unsigned char *yuv ;YUV422 图像指针
int BufLen ;YUV422 图像缓存大小
int *Width;返回的 YUV422 图像的宽度
版权所有(C)杭州海康威视数字技术股份有限公司  45
海康威视DS-4100、4000HC 系列板卡SDK编程指南
int *Height ;返回的 YUV422 图像的高度
返回值:   成功返回0 ;失败返回错误号
说  明:   将24 位bmp 格式图像转换为yuv422 格式图像。
注意:bmp 位图的长宽必须为16 的倍数,图像尺寸最大支持 128*128,4.3 版本SDK 起图
像尺寸扩大为256*128
3.7.1.2.2 设置LOGO显示模式SetLogoDisplayMode
函  数:   int __stdcall SetLogoDisplayMode(HANDLE hChannelHandle,   
COLORREF ColorKey, BOOL Translucent, int TwinkleInterval)  
参  数:   HANDLE hChannelHandle;通道句柄
COLORREF ColorKey;LOGO 图像中该颜色在显示时将会全透明
BOOL Translucent;LOGO 图像是否作半透明处理
int Twinkle ;闪烁的时间设置,由 16 进制数表示为0xXXYY ,其中XX为显示
的秒数,YY为停止的秒数,XXYY 均为0 时正常显示。
返回值:   成功返回0 ;失败返回错误号
说  明:   设置LOGO 显示模式
3.7.1.2.3 设置LOGO显示位置及数据SetLogo   
函  数:   int __stdcall SetLogo(HANDLE hChannelHandle, int x, int y, int w, int h,   
unsigned char *yuv)
参  数:   HANDLE hChannelHandle;通道句柄
int x ;LOGO 左上角x 坐标位置,取值范围 0-703,需按16 对齐
int y ;LOGO 左上角y 坐标位置,取值范围0-575,需按8 对齐
int w;LOGO 宽度,最大值为 256,需按 16 对齐,此宽度必须和 LOGO 图片的
宽度相一致
int h ;LOGO 高度,最大值为128,需按 8 对齐
unsigned char *yuv ;LOGO 图片指针(yuv422格式)
返回值:   成功返回0 ;失败返回错误号
说  明:   设置LOGO 图像位置及数据,用户程序可先调用LoadYUVFromBmpFile 将24
位bmp 文件中转化为YUV422 格式数据,, 透明处理由DSP 完成。
注意:HS卡的x ,w 需要按照 32 对齐,y,h 仍为8 对齐。
3.7.1.2.4 停止LOGO显示StopLogo
函  数:   int __stdcall StopLogo(HANDLE hChannelHandle)
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   停止LOGO 显示
版权所有(C)杭州海康威视数字技术股份有限公司  46
海康威视DS-4100、4000HC 系列板卡SDK编程指南
3.7.1.3 视频遮挡MASK
3.7.1.3.1 设置屏幕遮挡SetupMask  
函  数:   int __stdcall SetupMask(HANDLE hChannelHandle, RECT *RectList, int iAreas)
参  数:   HANDLE hChannelHandle;通道句柄
RECT *rectList;矩形框数组,宽度范围 0-704,按 16对齐;高度范围 0-576,按
8 对齐
int iAreas ;矩形框个数
返回值:   成功返回0 ;失败返回错误号
说  明:   设置屏幕遮挡,最多可以设置32 个
3.7.1.3.1 停止屏幕遮挡StopMask
函  数:   int __stdcall StopMask(HANDLE hChannelHandle)
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   停止屏幕遮挡
3.7.2仅在预览画面上叠加信息
注意:当采用overlay预览模式时,可在overlay表面上直接叠加字符或画图,当采用offscreen
预览模式时,需要调用画图回调函数进行信息叠加,所叠加信息仅在预览屏幕上显示,不进
入编码。
 
Offscreen预览模式下画图回调函数
3.7.2.1 注册画图回调函数RegisterDrawFun
函  数:   int __stdcall RegisterDrawFun(DWOR D nport, DRAWFUN(DrawFun),LONG nUser)
参  数:   DWORD nport;通道号索引
DRAWFUN(DrawFun);画图回调函数
LONG nUser;用户数据
返回值:   成功返回0 ;失败返回错误号
说  明:   获取当前offscreen 表面的device context,HC系列板卡采用创建offscreen 的方
式,所以在窗口客户区中的DC 中无法画图或者鞋子,必须使用DirectDraw 里的offscreen
表面的DC。
注意:如果采用overlay预览模式,则直接在overlay 表面画图即可,无需调用此函数
画图回调函数
#define DRAWFUN(x)      void    (CALLBACK* x)(long nPort,HDC hDc,LONG nUser)
LONG nPort;通道号
版权所有(C)杭州海康威视数字技术股份有限公司  47
海康威视DS-4100、4000HC 系列板卡SDK编程指南
HDC hDc;offscreen 表面设备上下文,相当于显示窗口中的 DC
LONG nUser;用户数据
3.7.2.2 停止画图回调StopRegisterDrawFun  
函  数:   int __stdcall StopRegisterDrawFun(DWORD nport)
参  数:   DWORD nport;通道索引
返回值:   成功返回0 ;失败返回错误号
说  明:   停止画图回调。在某些显卡上进行画图回调,会使得CPU 的利用率变高,所以
可以在适当的时候(画图回调结束)停止调用。
3.8 音频
3.8.1设置音频预览SetAudioPreview
函  数:   int __stdcall SetAudioPreview(HANDLE hChannelHandle, BOOL bEnable)
参  数:   HANDLE hChannelHandle;通道句柄
BOOL bEnable;使能
返回值:   成功返回0 ;失败返回错误号
说  明:   设置音频预览与否,同一时间,系统只支持一路音频预览。DS-4000 系列板卡需
要将4 针线和声卡音频输入口联接。DS-4100HCV 板卡无需用4 针线连接。
3.8.2获取音频输入音量幅度GetSoundLevel
函  数:   int __stdcall GetSoundLevel(HANDLE hChannelHandle)
参  数:   HANDLE hChannelHandle;通道句柄
返回值:   当前通道的音频输入幅度
说  明:   获取当前通道的现场声音幅度,
注意:当无声音输入时因背景噪声的原因返回值并不为0 。
3.9 其他
3.9.1复位DSP ResetDSP**
此函数目前无效
函  数:   int __stdcall ResetDSP(int DspNumber);
参  数:   int DspNumber;DSP 索引号
返回值:   成功返回0 ;失败返回错误号
说  明:   复位某个DSP ,注意请谨慎调用该函数,请确定DSP 故障无法软件恢复时再关
版权所有(C)杭州海康威视数字技术股份有限公司  48
海康威视DS-4100、4000HC 系列板卡SDK编程指南
闭相关的资源后复位DSP 。
3.9.2设置看门狗SetWatchDog  
函  数:   int __stdcall SetWatchDog(UINT boardNumber,BOOL bEnable)
参  数:   UINT boardNumber;板卡索引
BOOL bEnable;使能
返回值:   成功返回0 ;失败返回错误号
说  明:   设置看门狗。DS-4016HCS 提供4pin 复位接口,用户需要把主机机箱的Reset
接线连接到板卡上相邻的2pin 复位接口,板卡上的另外相邻的2pin 接口连接到主板的 Reset,
这样就可以实现对上层软件和系统中所有压缩板卡的运行状态监控。
3.9.3码流数字水印校验
3.9.3.1 设置主通道数字水印校验SetChannelStreamCRC
函  数:   int __stdcall SetChannelStreamCRC(HANDLE hChannel,BOOL bEnable)
参  数:   HANDLE hChannel;通道句柄
BOOL bEnable;使能
返回值:   成功返回0 ;失败返回错误号
说  明:   此函数不支持动态设置,设置后会在下一次启动录像后生效。
3.9.3.2 设置子通道数字水印校验SetSubChannelStreamCRC  
函  数:   int __stdcall SetSubChannelStreamCRC(HANDLE hChannel,BOOL bEnable)   
参  数:   HANDLE hChannel;通道句柄
BOOL bEnable;使能
返回值:   成功返回0 ;失败返回错误号
说  明:   此函数不支持动态设置,设置后会在下一次启动录像后生效。
版权所有(C)杭州海康威视数字技术股份有限公司  49
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4. 解码卡API
4.1 解码卡初始化及释放
4.1.1初始化及释放解码卡
4.1.1.1 初始化解码卡HW_InitDecDevice
函  数:   int __stdcall HW_InitDecDevice(long *pDeviceTotal)
参  数:   long *pDeviceTotal ;输出参数,输出初始化成功的解码通道个数
返回值:   成功返回0 ;失败返回错误号
说  明:   初始化解码卡,输出解码通道个数
4.1.1.2 释放解码卡HW_ReleaseDecDevice  
函  数:   int __stdcall HW_ReleaseDecDevice()
参  数:   无
返回值:   成功返回0 ;失败返回错误号
说  明:   释放解码卡,应在程序退出时调用
4.1.2初始化及释放DirectDraw
4.1.2.1 初始化DirectDraw HW_InitDirectDraw  
函  数:   int __stdcall HW_InitDirectDraw( HWND hParent,COLORREF colorKey)
参  数:   HWND hParent;窗口句柄,显示区域必须在此窗口内。显示区域的坐标使用此
窗口的客户区坐标
COLORREF colorKey;透明色,  
返回值:   成功返回0 ;失败返回错误号
说  明:   初始化DirectDraw。
注意:如果用户不需要将视频输出到PC屏幕上则无须调用此函数。
 
释  义:  透明色
透明色相当于一层透视膜,显示的画面只能穿过这种颜色,而其他的颜色将挡住显示的
画面。用户应该在显示窗口中涂上这种颜色,那样才能看到显示画面。一般应该使用一种不
常用的颜色作为透明色。这是一个双字节值 0x00rrggbb, 最高字节为 0 ,后三个字节分别表示
r,g,b 的值
版权所有(C)杭州海康威视数字技术股份有限公司  50
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.1.2.2 释放DirectDraw HW_ReleaseDirectDraw  
函  数:   int __stdcall HW_ReleaseDirectDraw()
参  数:   无
返回值:   成功返回0 ;失败返回错误号
说  明:   释放DirectDraw
4.1.3打开及关闭解码通道
4.1.3.1 打开解码通道HW_ChannelOpen
函  数:   int __stdcall HW_ChannelOpen(long nChannelNum,HANDLE* phChannel)
参  数:   long nChannelNum ;通道号,自0 开始
HANDLE* phChannel;输出参数,输出解码卡的操作句柄,与通道相关的操作
需使用相对应的通道操作句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   打开解码通道,获取通过操作句柄
4.1.3.2.关闭解码通道HW_ChannelClose
函  数:   int __stdcall HW_ChannelClose(HANDLE hChannel)
参  数:   HANDLE hChannel;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   关闭通道,释放相关资源
4.2 解码卡信息获取
4.2.1版本信息获取HW_GetVersion
函  数:   int __stdcall HW_GetVersion(PHW_VERSION pVersion)   
参  数:   PHW_VERSION pVersion ;版本信息
返回值:   成功返回0 ;失败返回错误号
说  明:   获取版本信息
版本信息结构体
typedef struct{
ULONG DspVersion, DspBuildNum ;DSP 程序的版本号和Build号
ULONG DriverVersion, DriverBuildNum ;驱动程序的版本号和Build号
ULONG SDKVersion, SDKBuildNum;SDK 的版本号和Build号
}HW_VERSION, *PHW_VERSION
版权所有(C)杭州海康威视数字技术股份有限公司  51
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.3 解码卡音视频信号输出设置
4.3.1音频输出设置
4.3.1.1 音频预览设置HW_SetAudioPreview
函  数:   int __stdcall HW_SetAudioPreview(HANDLE hChannel, BOOL bEnable)
参  数:   HANDLE hChannel;通道句柄
BOOL bEnable;使能
返回值:   成功返回0 ;失败返回错误号
说  明:   通过PC声卡对音频进行预览,接线方式和编码卡相同。同一时间只能打开一个
通道的音频预览,且会自动关闭原先已经打开的通道声音
注意:启动音频预览功能前必须要打开通道HW_ChannelOpen 及打开通道声音
HW_PlaySound,先前SDK 版本默认每个DSP 输出前2 路音频,无需调用
SetDecoderAudioOutput 即可输出此 2 路音频预览,4.3版本起调整为 MD卡启动后默认的音
频输出为关闭状态,必须先调用SetDecoderAudioOutput 设置模拟输出后才能调用
HW_SetAudioPreview预览相应的音频通道
4.3.1.2 音频模拟输出设置SetDecoderAudioOutput  
函  数:   int __stdcall SetDecoderAudioOutput(UINT nDecodeChannel,BOOL bOpen,
UINT nOutputChannel)
参  数:   UINT nDecodeChannel;解码通道索引
BOOL bOpen;使能
UINT nOutputChannel;音频模拟输出通道索引
返回值:   ERR_INVALID_DEVICE :nDecodeChannel 溢出、nOutputChannel 大于 1 ;
ERR_KERNEL:其他情况
说  明:   设置音频模拟输出。MD 卡每个DSP 包含4 个解码通道及2 路音频模拟输出。
将第nDecodeChannel 个解码通道解码的音频输出到第 nOutputChannel 路音频模拟输出。
nOutputChannel 值必须为0 或1 . 如果已有其他解码通道解码的音频在 nOutputChannel 路音频
模拟输出上输出,则系统会自动先将其停止。
版权所有(C)杭州海康威视数字技术股份有限公司  52
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.3.2视频输出设置
4.3.2.1 视频制式设置
4.3.2.1.1 设置视频显示通道的视频制式SetDisplayStandard
函  数:   int __stdcall SetDisplayStandard(UINT nDisplayChannel,
VideoStandard_t VideoStandard)
参  数:   UINT nDisplayChannel;显示通道索引
VideoStandard_t VideoStandard ;视频制式
返回值:   成功返回0 ;失败返回错误号
说  明:   设置视频显示通道的视频制式
4.3.2.2 视频预览设置
4.3.2.2.1 设置视频显示参数HW_SetDisplayPara  
函  数:   int __stdcall HW_SetDisplayPara(HAN DLE hChannel,DISPLAY_PARA *pPara)
参  数:   HANDLE hChannel;通道句柄
DISPLAY_PARA *pPara;视频显示参数
返回值:   成功返回0 ;失败返回错误号
说  明:   设置视频显示参数
视频显示参数结构体
typedef struct{
long bToScreen ;是否输出到 PC屏幕,1 是0 否
long bToVideoOut ;是否输出到监视器,1 是0 否(目前无效)
long nLeft;输出到屏幕上的范围,相对 hParent客户区坐标
long nTop;
long nWidth ;
long nHeight;
long nReserved;保留参数
}DISPLAY_PARA,*PDISPLAY_PARA
4.3.2.2.2 刷新overlay表面HW_RefreshSurface  
函  数:   int __stdcall HW_RefreshSurface()
参  数:   无
返回值:   成功返回0 ;失败返回错误号
说  明:   刷新显示区域,当窗口(hParent)的位置发生改变后,需要刷新 overlay 表面,
版权所有(C)杭州海康威视数字技术股份有限公司  53
海康威视DS-4100、4000HC 系列板卡SDK编程指南
适应新的区域。
4.3.2.2.3 重载overlay表面HW_RestoreSurface  
函  数:   int __stdcall HW_RestoreSurface()
参  数:   无
返回值:   成功返回0 ;失败返回错误号
说  明:   overlay 表面在使用过程中可能被其他的程序占用,这时需要调用这个接口,以
便重新的overlay 表面。使用MFC开发时最方便的做法是在 OnPaint中调用这个接口。
4.3.2.2.4 清除overlay表面中的数据HW_ClearSurface  
函  数:   int __stdcall HW_ClearSurface()
参  数:   无
返回值:   成功返回0 ;失败返回错误号
说  明:   清除 overlay表面中的数据,在窗口切换时,overlay表面会保留上一帧图像内容。
如果不想显示这个内容,可以调用此接口。
4.3.2.2.5 缩放overlay表面的显示区域HW_ZoomOverlay
函  数:   int __stdcall HW_ZoomOverlay(RECT* pS rcClientRect, RECT* pDecScreenRect)
参  数:   RECT* pSrcClientRect;源数据,窗口(hParent)客户区坐标
RECT* pDecScreenRect ;目标区域,屏幕坐标
返回值:   成功返回0 ;失败返回错误号
说  明:   放大或缩小显示overlay表面上的某块区域。这个接口也是实现全屏显示的方法
之一。目前有两种方法可实现全屏显示:一是使用显卡放大功能调用这个接口,将要放大的
某块区域pSrcClientRect(DISPLAY_PARA 中指定的范围,客户区坐标),放大到全屏  
pDecScreenRect (屏幕坐标),注意,pSrcClientRect作为源应该不小于原始图像大小(PA L  
制下CIF 格式图像是352*288),否则效果很差,在附带的demo程序中可以比较;二是使用
卡上的放大功能,在设置DISPLAY_PARA 中的现实范围时,会自动调用卡上的缩放功能,
注意:如果要使用这种方法,初始化 DirectDraw 时指定的 hParent  窗口客户区必须覆盖整个
屏幕,因为DISPLAY_PARA中指定的显示区域不能超出hParent  窗口的客户区。
4.3.2.2.6 预览去闪烁功能HW_SetDecoderPostProcess
函  数:   int __stdcall HW_SetDecoderPostProcess(HANDLE hChannel,UINT param)
参  数:   HANDLE hChannel;通道句柄
UINT param;bit0 设置为 1 则执行去闪烁功能,设置为 0 则不执行
返回值:   成功返回0 ;失败返回错误号
说  明:   静止图像区域有噪声情况下, 图像会经常闪烁(或称刷新),启动去闪烁功能后,
闪烁效果可消除或减轻
版权所有(C)杭州海康威视数字技术股份有限公司  54
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.3.2.3 视频模拟输出显示区域设置
4.3.2.3.1 设置显示区域的形式及参数(视频模拟输出的画面分割情
况)SetDisplayRegion  
函  数:   int __stdcall SetDisplayRegion(UINT nDisplayChannel,
UINT nRegionCount,REGION_PARAM *pParam,UINT nReserved)
参  数:   UINT nDisplayChannel;显示通道索引
UINT nRegionCount;画面分割区域个数,每个显示通道最多划分为 16 个显示区

REGION_PARAM *pParam;区域参数
UINT nReserved ;保留参数
返回值:   ERR_NOT_SUPPORT:DSP 资源不足,无法划分窗口
ERR_NOT_SUPPORT:每一个显示通道最大支持 1 个4cif +2 个qcif 窗口,如果
该卡的某个显示通道的总面积超过该限制,则返回此错误
ERR_INVALID_DEVICE :nDisplayChannel 溢出
ERR_INVALID_ARGUMENT :nRegionCount 溢出,参数对齐错误,区域超出范

ERR_KERNEL:其它情况
说  明:   将某个显示通道的模拟输出划分为多个区域,实现矩阵输出功能。
区域参数结构体
typedef struct{
UINT left ;区域左边界,16对齐
UINT top ;区域上边界,8 对齐
UINT width ;区域宽度,16对齐
UINT height;区域高度,8 对齐
COLORREF color;区域背景色
UINT param;区域扩展参数
}REGION_PARAM
4.3.2.3.2 改变某个显示区域的位置SetDisplayRegionPosition
函  数:   int __stdcall SetDisplayRegionPosition(UINT nDisplayChannel,UINT nRegion,
UINT nLeft,UINT nTop)
参  数:   UINT nDisplayChannel;显示通道索引
UINT nRegion;需要调整位置的区域
UINT nLeft,调整后的左边界
UINT nTop;调整后的上边界
返回值:   ERR_INVALID_DEVICE :nDisplayChannel 溢出,nRegion 超过该显示通道已划
分的区域个数。ERR_KERNEL:其它情况
说  明:   调整某个显示区域的位置
版权所有(C)杭州海康威视数字技术股份有限公司  55
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.3.2.3.3 用自定义的图像填充显示区域FillDisplayRegion  
函  数:   int __stdcall FillDisplayRegion(UINT nDisplayChannel,UINT nRegion,
unsigned char *pImage)  
参  数:   UINT nDisplayChannel;显示通道索引
UINT nRegion;需要填充的区域
unsigned char *pImage;YUV420 格式图像指针
返回值:   ERR_INVALID_DEVICE :nDisplayChannel 溢出,nRegion 超过该显示通道已划
分的区域个数。ERR_KERNEL:其它情况
说  明:   用自定义的yuv420 格式图像填充某个显示区域。pImage所指向图象的大小必须
和SetDisplayRegion中设置的图像大小相同,否则图像无法正常显示。
注意:使用此函数前应当停止该区域解码,如果该区域当前有图像正在显示,则该命令无效。
4.3.2.3.4 清空显示区域ClearDisplayRegion
函  数:   int __stdcall ClearDisplayRegion(UINT nDisplayChannel,UINT nRegionFlag)
参  数:   UINT nDisplayChannel;显示通道索引
UINT nRegionFlag ;Bit0 -Bit15,对应区域 1 -16 ,对应位置1,则将该区域清
空。
返回值:   ERR_INVALID_DEVICE :nDisplayChannel 溢出。ERR_KERNEL:其他情况
说  明:   清空显示区域,显示SetDisplayRegion中所设置的背景色
注意:使用此函数前应当停止该区域解码,如果该区域当前有图像正在显示,则该命令无效。
4.3.3.4 视频模拟输出设置
4.3.3.4.1 视频解码模拟输出(MD卡内部输出)
SetDecoderVideoOutput
函  数:   int __stdcall SetDecoderVideoOutput(UINT nDecodeChannel,UINT nPort,
BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved)
参  数:   UINT nDecodeChannel;解码通道索引
UINT nPort ;二次输出,取值为0 或1,每个解码通道最多可供模拟输出2 次
BOOL bOpen;使能,当 bOpen 为0 ,则 nDisplayChannel nDisplayRegion 无意义  
UINT nDisplayChannel;显示通道号,MD卡内部输出,显示通道只能取0 或1
UINT nDisplayRegion;显示区域
UINT nReserved ;保留参数
返回值:   ERR_INVALID_DEVICE :nDecodeChannel 溢出、nPort大于1 、nDisplayChannel
溢出,nDisplayRegion 超过该显示通道已划分的区域个数。ERR_KERNEL:其它情况
说  明:   设置解码通道的模拟输出。将视频图像从第nDecodeChannel 个解码通道的第 nPort
路,输出此解码通道所在的DSP 的第nDisplayChannel 个显示通道的第 nDisplayRegion 个显
示区域上。
版权所有(C)杭州海康威视数字技术股份有限公司  56
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.3.3.4.2 视频解码通道模拟输出扩展(MD卡外部输出)
SetDecoderVideoExtOutput  
函  数:   int __stdcall SetDecoderVideoExtOutput(UINT nDecodeChannel,UINT nPort,
BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nReserved)
参  数:   UINT nDecodeChannel;解码通道索引
UINT nPort ;二次输出,取值为0 或1,每个解码通道最多可供模拟输出2 次
BOOL bOpen:使能,当 bOpen 为0 ,则 nDisplayChannel nDisplayRegion 无意义  
UINT nDisplayChannel;显示通道索引,MD卡外部输出,以系统中解码DSP 的
所有显示通道顺序排列,取值为0 、1 、2 、3 、4……
UINT nDisplayRegion;显示区域
UINT nReserved ;保留参数
返回值:   ERR_INVALID_DEVICE :nDecodeChannel 溢出、nPort大于1 、nDisplayChannel
溢出,nDisplayRegion 超过该显示通道已划分的区域个数。ERR_KERNEL:其它情况
说  明:   设置解码通道的模拟输出。将视频图像从第nDecodeChannel 个解码通道的第 nPort
路,输出到系统中第nDisplayChannel 个显示通道的第nDisplayRegion 个显示区域上。
4.3.3.4.3 视频编码通道模拟输出SetEncoderVideoExtOutput
函  数:   int __stdcall SetEncoderVideoExtOutput(UINT nEncodeChannel,UINT nPort,
BOOL bOpen,UINT nDisplayChannel,UINT nDisplayRegion,UINT nFrameRate)  
参  数:   UINT nEncodeChannel;编码通道索引
UINT nPort ;二次输出,取值为0 或1,每个编码通道做多可供模拟输出2 次
BOOL bOpen;使能,当 bOpen 为0 ,则 nDisplayChannel nDisplayRegion 无意义  
UINT nDisplayChannel;显示通道索引,以系统中DSP 的所有显示通道顺序排列,
取值为0 、1、2 、3 、4 ……
UINT nDisplayRegion;显示区域
UINT nFrameRate;帧率
返回值:   ERR_INVALID_DEVICE :nDecodeChannel 溢出、nPort大于1 、nDisplayChannel
溢出,nDisplayRegion 超过该显示通道已划分的区域个数。ERR_KERNEL:其它情况
说  明:   将视频图像从第nEncodeChannel 个编码通道的第nPort 路,输出到系统中第
nDisplayChannel 个显示通道的第 nDisplayRegion 个显示区域上。
4.3.3.4.4 设置视频模拟输出亮度SetDisplayVideoBrightness  
函  数:   int __stdcall SetDisplayVideoBrightness(UINT chan,int Brightness)
参  数:   UINT chan;显示通道索引
int Brightness ;亮度值,取值范围0-255
返回值:   成功返回0 ;失败返回错误号
说  明:   设置MD卡、HCV卡模拟输出口的亮度值
版权所有(C)杭州海康威视数字技术股份有限公司  57
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.4 解码卡解码及播放
当对解码卡的视频、音频设置完成后,需启动相应的播放功能函数才能进行图像的显示或者
音频的播放
4.4.1解码卡数据解码方式设置(解码数据流、解码录像文件)
4.4.1.1 解码卡解码数据流
4.4.1.1.1 打开数据流HW_OpenStream
函  数:   int __stdcall HW_OpenStream(HANDLE hChannel,PBYTE pFileHeadBuf,
DWORD nSize)
参  数:   HANDLE hChannel;通道句柄
BYTE* pFileHead;文件头数据
DWORD nHeadSize;文件头长度
返回值:   成功返回0 ;失败返回错误号
说  明:   打开数据流,类似于打开录像文件。
4.4.1.1.2 关闭数据流HW_CloseStream
函  数:   int __stdcall HW_CloseStream(HANDLE hChannel)
参  数:   HANDLE hChannel;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   关闭数据流
4.4.1.1.3 输入数据流HW_InputData
函  数:   int __stdcall HW_InputData(HANDLE hChannel,PBYTE pBuf,DWORD nSize)
参  数:   HANDLE hChannel,;通道句柄
PBYTE pBuf, ;数据缓冲区
DWORD nSize;输入数据的大小,取值需按4字节对齐
返回值:   实际成功输入的数据大小,异常返回0 或错误号
说  明:   输入数据流,需要在打开数据流后进行数据输入。
4.4.1.1.4 流模式下重启解码器HW_ResetStream
函  数:   int __stdcall HW_ResetStream(HANDLE hChannel)
参  数:   HANDLE hChannel;通道句柄
版权所有(C)杭州海康威视数字技术股份有限公司  58
海康威视DS-4100、4000HC 系列板卡SDK编程指南
返回值:   成功返回0 ;失败返回错误号
说  明:   在流模式下重启解码器
4.4.1.2 解码卡解码数据流功能扩展(以视、音频分开的形式)
4.4.1.2.1 打开数据流HW_OpenStreamEx  
函  数:   int __stdcall HW_OpenStreamEx(HANDLE hChannel,P
BYTE pFileHeadBuf,DWORD nSize)
参  数:   HANDLE hChannel;通道句柄
PBYTE pFileHeadBuf;文件头数据
DWORD nSize;文件头长度
返回值:   成功返回0 ;失败返回错误号
说  明:   以视、音频分开的方式打开数据流。
4.2版本起,此函数功能与 HW_OpenStream相同。
4.4.1.2.2 关闭数据流HW_CloseStreamEx  
函  数:   int __stdcall HW_CloseStreamEx(HANDLE hChannel)
参  数:   HANDLE hChannel;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   关闭以视、音频分开的方式打开的数据流。
4.2版本起,此函数功能与 HW_CloseStream相同。
4.4.1.2.3 输入视频数据流HW_InputVideoData
函  数:   int __stdcall HW_InputVideoData(HANDLE hChannel,PBYTE pBuf,DWORD nSize)
参  数:   HANDLE hChannel;通道句柄
PBYTE pBuf, ;数据缓冲区
DWORD nSize;输入数据的大小,取值需按4字节对齐
返回值:   实际成功输入的数据大小,异常返回0 或错误号
说  明:   输入视频数据流,需要在打开数据流后进行数据输入。
4.2版本起,此函数功能与 HW_InputData 相同。
4.4.1.2.4 输入音频数据流HW_InputAudioData
函  数:   int __stdcall HW_InputAudioData(HANDLE hChannel,PBYTE pBuf,DWORD nSize)
参  数:   HANDLE hChannel;通道句柄
PBYTE pBuf;数据缓冲区
DWORD nSize;缓冲区大小
返回值:   实际成功输入的数据大小,异常返回0 或错误号
版权所有(C)杭州海康威视数字技术股份有限公司  59
海康威视DS-4100、4000HC 系列板卡SDK编程指南
说  明:   输入音频数据流,需要在打开数据流后进行数据输入
4.2版本起,此函数功能与 HW_InputData 相同。
4.4.1.3 解码卡解码录像文件
4.4.1.3.1 打开录像文件HW_OpenFile
函  数:   int __stdcall HW_OpenFile(HANDLE hChannel,LPTSTR sFileName)
参  数:   HANDLE hChannel;通道句柄
LPTSTR sFileName;文件名
返回值:   成功返回0 ;失败返回错误号
说  明:   打开录像文件
4.4.1.3.2 关闭录像文件HW_CloseFile
函  数:   int __stdcall HW_CloseFile(HANDLE hChannel)
参  数:   HANDLE hChannel;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   关闭录像文件
4.4.1.4 设置及获取流播放参数
4.4.1.4.1 设置流播放模式及参数HW_SetStreamOpenMode
函  数:   int __stdcall HW_SetStreamOpenMode(HANDLE hChannel,ULONG nMode)
参  数:   HANDLE hChannel;通道句柄
ULONG nMode;流调节参数,取值范围 0-5。0 表示不作任何调节,适用于文件
播放模式;1-5 调节实时流的流程性和延迟性,取值越大流畅性越好但延迟越大。
返回值:   成功返回0 ;失败返回错误号
说  明:   设置流播放模式下的流畅性和延时性,须在打开数据流前设置
4.4.1.4.2 获取流播放模式及参数HW_GetStreamOpenMode
函  数:   int __stdcall HW_GetStreamOpenMode(HANDLE hChannel,ULONG *pMode)
参  数:   HANDLE hChannel;通道句柄
ULONG *pMode;获取流调节参数 0-5
返回值:   成功返回0 ;失败返回错误号
说  明:   获取当前流的调节参数
版权所有(C)杭州海康威视数字技术股份有限公司  60
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.4.2视音频播放
4.4.2.1 视频播放
4.4.2.1.1 开始视频播放HW_Play
函  数:   int __stdcall HW_Play(HANDLE hChannel)
参  数:   HANDLE hChannel;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   开始播放
4.4.2.1.2 停止视频播放HW_Stop
函  数:   int __stdcall HW_Stop(HANDLE hChannel)
参  数:   HANDLE hChannel;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   停止播放
4.4.2.2 音频播放
4.4.2.2.1 打开声音HW_PlaySound  
函  数:   int __stdcall HW_PlaySound(HANDLE hChannel)
参  数:  HANDLE hChannel;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   打开该通道的声音,默认情况下声音是被关闭的
4.4.2.2.2 关闭声音HW_StopSound  
函  数:   int __stdcall HW_StopSound(HANDLE hChannel)
参  数:   HANDLE hChannel;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   停止该通道的声音
4.4.2.2.3 音量调节HW_SetVolume  
函  数:   int __stdcall HW_SetVolume(HANDLE hChannel,ULONG nVolume)
参  数:   HANDLE hChannel;通道句柄
版权所有(C)杭州海康威视数字技术股份有限公司  61
海康威视DS-4100、4000HC 系列板卡SDK编程指南
ULONG nVlome ;音量,取值范围0-0xffff
返回值:   成功返回0 ;失败返回错误号
说  明:   音量大小调节
4.4.2.3 暂停播放HW_Pause  
函  数:   int __stdcall HW_Pause(HANDLE hChannel,ULONG bPause)
参  数:   HANDLE hChannel;通道句柄
ULONG bPause;1 暂停播放,0 继续播放
返回值:   成功返回0 ;失败返回错误号
说  明:   暂停播放
4.4.3解码播放信息设置及获取
4.4.3.1 解码播放速度设置及获取
4.4.3.1.1 设置播放速度HW_SetSpeed
函  数:    int __stdcall HW_SetSpeed(HANDLE hChannel,long nSpeed)
参  数:   HANDLE hChannel;通道句柄
long nSpeed ;播放速度,取值范围-4~4
返回值:   成功返回0 ;失败返回错误号
说  明:   设置播放速度。-4 时停止播放,调用 HW_Pause(hChannel,0) 可单帧播放,每调
用一次播放一帧。-3 表示1/8 速,-2 表示1/4 速,-1 表示1/2 速,0 表示正常播放,1 表示 2
倍速,2 表示 4 倍速,3 表示8 倍速,4 表示最大倍速。
4.4.3.1.2 获取播放速度HW_GetSpeed
函  数:   int __stdcall HW_GetSpeed(HANDLE hChannel,long *pSpeed)
参  数:   HANDLE hChannel;通道句柄
long *pSpeed ;输出参数,播放速度
返回值:   成功返回0 ;失败返回错误号
说  明:   获取播放速度
版权所有(C)杭州海康威视数字技术股份有限公司  62
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.4.3.2 解码播放位置设置及获取
4.4.3.2.1 设置播放位置HW_SetPlayPos
函  数:   int __stdcall HW_SetPlayPos(HANDLE hChannel,ULONG nPos)
参  数:   HANDLE hChannel;通道句柄
ULONG nPos;播放位置的百分数,取值范围0-100
返回值:   成功返回0 ;失败返回错误号
说  明:   设置录像文件播放位置
4.4.3.2.2 获取播放位置HW_GetPlayPos
函  数:   int __stdcall HW_GetPlayPos(HANDLE hChannel,ULONG* pPos)
参  数:   HANDLE hChannel;通道句柄
ULONG* pPos;输出参数,播放位置的百分数
返回值:   成功返回0 ;失败返回错误号
说  明:   获取录像文件的播放位置
4.4.3.3 设置解码播放跳跃
4.4.3.3.1 设置播放跳跃时间间隔HW_SetJumpInterval
函  数:   int __stdcall HW_SetJumpInterval(HANDLE hChannel,ULONG nSecond)
参  数:   HANDLE hChannel;通道句柄
ULONG nSecond;跳跃时间间隔,单位:秒
返回值:   成功返回0 ;失败返回错误号
说  明:   设置跳跃时间的时间间隔
4.4.3.3.2 设置播放跳跃方向HW_Jump
函  数:   int __stdcall HW_Jump(HANDLE hChannel,ULONG nDirection)
参  数:   HANDLE hChannel;通道句柄
ULONG nDirection;录像文件播放跳跃方向,JUMP_FORWARD 向前跳跃;
JUMP_BACKWARD 向后跳跃;
返回值:   成功返回0 ;失败返回错误号
说  明:   设置录像文件播放的跳跃方向
版权所有(C)杭州海康威视数字技术股份有限公司  63
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.4.4解码时间及帧信息获取
4.4.4.1 时间信息获取
4.4.4.1.1 获取文件总时间HW_GetFileTime
函  数:   int __stdcall HW_GetFileTime(HANDLE hChannel, ULONG* pFileTime)
参  数:   HANDLE hChannel;通道句柄
ULONG* pFileTime;文件总时间,单位:毫秒
返回值:   成功返回0 ;失败返回错误号
说  明:   获取文件的总时间
4.4.4.1.2 获取当前播放帧的时间(相对时间)
HW_GetCurrentFrameTime
函  数:   int __stdcall HW_GetCurrentFrameTime(HANDLE hChannel,ULONG* pFrameTime)  
参  数:   HANDLE hChannel;通道句柄
ULONG* pFrameTime;当前播放帧的时间,单位:毫秒
返回值:   成功返回0 ;失败返回错误号
说  明:   获取当前播放帧的时间
4.4.4.1.3 获取文件的起止的绝对时间HW_GetFileAbsoluteTime
函  数:   int __stdcall HW_GetFileAbsoluteTime(HANDLE hChannel,
SYSTEMTIME *pStartTime,SYSTEMTIME *pEndTime)
参  数:   HANDLE hChannel;通道句柄
SYSTEMTIME *pStartTime ;文件开始绝对时间(毫秒参数无效,始终为0)
SYSTEMTIME *pEndTime;文件结束绝对时间(毫秒参数无效,始终为0)
返回值:   成功返回0 ;失败返回错误号
说  明:   获取文件的绝对起止时间
4.4.4.1.4 获取文件当前播放的绝对时间
HW_GetCurrentAbsoluteTime
函  数:   int __stdcall HW_GetCurrentAbsoluteTime(HANDLE hChannel,
SYSTEMTIME *pTime)
参  数:   HANDLE hChannel;通道句柄
SYSTEMTIME *pTime ;文件当前播放的绝对时间(毫秒参数无效,始终为0 )
版权所有(C)杭州海康威视数字技术股份有限公司  64
海康威视DS-4100、4000HC 系列板卡SDK编程指南
返回值:   成功返回0 ;失败返回错误号
说  明:   获取文件当前播放的绝对时间
4.4.4.1.5 按照绝对时间定位文件播放位置
HW_LocateByAbsoluteTime
函  数:   int __stdcall HW_LocateByAbsoluteTime(HANDLE hChannel,SYSTEMTIME time)
参  数:   HANDLE hChannel通道句柄
SYSTEMTIME time;定位时间(毫秒参数无效)
返回值:   成功返回0 ;失败返回错误号
说  明:   按照绝对时间定位文件播放位置。只在回放录像文件、打开索引后有效
4.4.4.2 帧信息获取
4.4.4.2.1 获取文件总帧数HW_GetFileTotalFrames  
函  数:   int __stdcall HW_GetFileTotalFrames( HANDLE hChannel,ULONG* pTotalFrames)
参  数:   HANDLE hChannel;通道句柄
ULONG* pTotalFrames ;总帧数
返回值:   成功返回0 ;失败返回错误号
说  明:   获取文件总帧数
4.4.4.2.2 获取已解码的视频帧数HW_GetPlayedFrames  
函  数:   int __stdcall HW_GetPlayedFrames(H ANDLE hChannel,ULONG *pDecVFrames)
参  数:   HANDLE hChannel;通道句柄
ULONG *pDecVFrames;已解码的帧数
返回值:   成功返回0 ;失败返回错误号
说  明:   获取已经解码的视频帧数
4.4.4.2.3 获取当前播放帧率HW_GetCurrentFrameRate
函  数:   int __stdcall HW_GetCurrentFrameRat e(HANDLE hChannel,ULONG* pFrameRate)
参  数:   HANDLE hChannel;通道句柄
ULONG* pFrameRate;帧率
返回值:   成功返回0 ;失败返回错误号
说  明:   获取当前播放的帧率
版权所有(C)杭州海康威视数字技术股份有限公司  65
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.4.4.2.4 获取当前播放帧序号HW_GetCurrentFrameNum
函  数:   int __stdcall HW_GetCurrentFrameNum(HANDLE hChannel,ULONG* pFrameNum)
参  数:   HANDLE hChannel;通道句柄
ULONG* pFrameNum;当前播放的帧序号
返回值:   成功返回0 ;失败返回错误号
说  明:   获取当前播放的帧序号
4.4.4.2.5 按照帧号定位文件播放位置HW_LocateByFrameNumber
函  数:   int __stdcall HW_LocateByFrameNumber(HANDLE hChannel,UINT frmNum)
参  数:   HANDLE hChannel;通道句柄
UINT frmNum;定位帧号
返回值:   成功返回0 ;失败返回错误号
说  明:   按照帧号定位文件播放那个位置。只在回放录像文件、打开索引后有效
4.5 数据捕获
4.5.1抓图
4.5.1.1 抓取MD卡解码后YV12格式图像HW_GetYV12Image  
函  数:   int __stdcall HW_GetYV12Image(HANDLE hChannel, PBYTE pBuffer,   
ULONG nSize)
参  数:   HANDLE hChannel;解码通道句柄
PBYTE pBuffer;保存图像的缓冲区
ULONG nSize ;缓冲区的尺寸,大小应大于或等于yv12 格式图像的尺寸
返回值:   成功返回0 ;失败返回错误号
说  明:   抓取MD卡当前解码的 yv12 格式图像。yv12格式图像的存储大小为:
(*pWidth)* (*pHeight )*3/2 ,YV12格式每个像素占用 3/2 个BYTE。
4.5.1.2 图像格式转换(YV12转为BMP)HW_ConvertToBmpFile
函  数:   int __stdcall HW_ConvertToBmpFile(BYTE * pBuf,ULONG nSize,
ULONG nWidth,ULONG nHeight,char *sFileName,ULONG nReserved)
参  数:   BYTE * pBuf;YV12格式图像缓冲区
ULONG nSize ;缓冲区大小
ULONG nWidth;图像宽度
ULONG nHeight ;图像高度
char *sFileName ;保存为BMP格式的文件名
版权所有(C)杭州海康威视数字技术股份有限公司  66
海康威视DS-4100、4000HC 系列板卡SDK编程指南
ULONG nReserved ;保留参数
返回值:   成功返回0 ;失败返回错误号
说  明:   将YV12格式的图像转化为 BMP格式
4.5.2录像  
4.5.2.1 启动码流捕获HW_StartCapFile  
函  数:   int __stdcall HW_StartCapFile( HANDLE hChannel,LPTSTR sFileName)
参  数:   HANDLE hChannel;通道号
LPTSTR sFileName;录像文件名
返回值:   成功返回0 ;失败返回错误号
说  明:   启动码流捕获,存成录像文件
4.5.2.2 停止码流捕获HW_StopCapFile
函  数:   int __stdcall HW_StopCapFile(HANDLE hChannel)
参  数:   HANDLE hChannel;通道句柄
返回值:   成功返回0 ;失败返回错误号
说  明:   停止码流捕获
4.5.2.3 获取码流中图像尺寸HW_GetPictureSize
函  数:   int __stdcall HW_GetPictureSize(HANDLE hChannel,ULONG* pWidth,   
ULONG* pHeight)
参  数:   HANDLE hChannel;通道句柄
ULONG* pWidth;输出参数,图像宽
ULONG* pHeight;输出参数,图像高
返回值:   成功返回0 ;失败返回错误号
说  明:   获取当前码流中的原始图像尺寸
版权所有(C)杭州海康威视数字技术股份有限公司  67
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.5.3解码后原始数据流捕获(YUV420 格式)
4.5.3.1 MD 卡解码通道原始图像数据回调
4.5.3.1.1 注册解码通道数据流捕获回调函数
RegisterDecoderVideoCaptureCallback  
函  数:   int__stdcall RegisterDecoderVideoCaptureCallback
(DECODER_VIDEO_CAPTURE_CALLBACK Decode rVideoCaptureCallback,void *context)  
参  数:   DECODER_VIDEO_CAPTURE_CALLBACK DecoderVideoCaptureCallback;解码
回调函数
void *context;设备上下文
返回值:   成功返回0 ;失败返回错误号
说  明:   注册解码通道原始数据流捕获回调函数
解码回调函数
typedef void (*DECODER_VIDEO_CAPTURE_CALLBACK)(UINT nChannelNumber,
void *DataBuf,UINT width,UINT height,UINT nFrameNum,UINT nFrameTime,
SYSTEMTIME *pFrameAbsoluteTime,void *context)
UINT nChannelNumber ;解码通道句柄
void *DataBuf ;缓冲区地址
UINT width ;图像宽度
UINT height;图像高度
UINT nFrameNum;捕获的当前帧的序号
UINT nFrameTime ;捕获的当前帧的相对时间,单位:毫秒
SYSTEMTIME *pFrameAbsoluteTime ;捕获的当前帧的绝对时间
void *context;设备上下文)
4.5.3.1.2 设置解码通道数据流捕获函数
HW_SetDecoderVideoCapture
函  数:   int __stdcall HW_SetDecoderVideoCa pture(HANDLE hChannel,BOOL bStart,
UINT param)
参  数:   HANDLE hChannel;解码通道句柄
BOOL bStart;使能
UINT param;保留参数,取值为0
返回值:   成功返回0 ;失败返回错误号
说  明:   捕获MD卡解码后解码通道输出的 yuv420 数据。
版权所有(C)杭州海康威视数字技术股份有限公司  68
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.5.3.2 MD 卡显示通道原始图像数据回调
4.5.3.2.1 注册显示通道数据流捕获回调函数
RegisterDisplayVideoCaptureCallback
函  数:   int __stdcall RegisterDisplayVideoCaptureCallback(IMAGE_STREAM_CALLBACK  
DisplayVideoCaptureCallback,void *context)
参  数:   IMAGE_STREAM_CALLBACK  DisplayVideoCaptureCallback ;显示回调函数   
void *context;设备上下文
返回值:   成功返回0 ;失败返回错误号
说  明:   注册显示通道数据流捕获回调。
显示回调函数
typedef void (*IMAGE_STREAM_CALLBACK)(UINT channelNumber,void *context)   
UINT nDisplayChannel;显示通道索引
void *context;设备上下文
4.5.3.2.2 设置显示通道数据流捕获函数SetDisplayVideoCapture  
函  数:   int __stdcall SetDisplayVideoCapture(UINT nDisplayChannel,BOOL bStart,
UINT fps,UINT width,UINT height,unsigned char *imageBuffer)
参  数:   UINT nDisplayChannel;显示通道索引
BOOL bStart;使能
UINT fps ;帧率
UINT width ;图像宽度(暂时只支持4CIF宽度704,不支持缩放)
UINT height;图像高度(暂时只支持 4CIF高度PAL576/NTSC480 ,不支持缩放)
unsigned char *imageBuffer;yuv420数据缓存
返回值:   成功返回0 ;失败返回错误号
说  明:   捕获MD卡解码后显示通道的 yuv420 数据流
4.6 其他
4.6.1文件结束标志HW_SetFileEndMsg  
函  数:   int __stdcall HW_SetFileEndMsg( HANDLE hChannel,HWND hWnd,UINT nMsg)
参  数:   HANDLE hChannel;通道句柄
HWND hWnd ;接收消息的窗口句柄
UINT nMsg ;自定义windows 消息
返回值:   成功返回0 ;失败返回错误号
说  明:   注册一个自定义的windows  消息,当文件结束时将被post 到指定窗口。
版权所有(C)杭州海康威视数字技术股份有限公司  69
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.6.2文件索引
4.6.2.1 设置文件索引HW_SetFileRef
函  数:   int __stdcall HW_SetFileRef(HANDLE hChannel,
BOOL bEnable,FILE_REF_DONE_CALLBACK FileRefDoneCallback)
参  数:   HANDLE hChannel;通道句柄
BOOL bEnable;使能
FILE_REF_DONE_CALLBACK FileRefDoneCallback ;创建索引完成后回调函数
返回值:   成功返回0 ;失败返回错误号
说  明:   设置文件索引
创建索引完成回调函数
typedef void (*FILE_REF_DONE_CALLBACK)(UINT nChannel,UINT nSize)   
UINT nChannel;通道号
UINT nSize ;索引大小(暂时无效,以后可以增加索引导出、导入功能)
4.6.2.2 文件索引导入HW_ImportFileRef   
函  数:   int __stdcall HW_ImportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize)
参  数:   HANDLE hChannel;通道句柄
char *pBuffer ;索引数据缓冲
UINT nSize ;缓冲区大小
返回值:   成功返回0 ;失败返回错误号
说  明:   文件索引导入。要使用此功能,必须先在HW_SetFileRef中关掉文件索引功能,
然后在HW_OpenFile 之后,再导入索引。
4.6.2.3 文件索引导出HW_ExportFileRef
函  数:  int __stdcall HW_ExportFileRef(HANDLE hChannel,char *pBuffer,UINT nSize)
参  数:   HANDLE hChannel;通道句柄
char *pBuffer ;索引导出数据缓冲
UINT nSize ;缓冲区大小,不能小于索引数据的长度,索引长度可以在生成索引
的回调函数中获得
返回值:   成功返回0 ;失败返回错误号
说  明:   索引文件导出。
版权所有(C)杭州海康威视数字技术股份有限公司  70
海康威视DS-4100、4000HC 系列板卡SDK编程指南
4.6.3解码画图回调(在offscreen 预览模式下有效)
4.6.3.1 注册解码画图回调函数HW_RegisterDrawFun  
函  数:  int __stdcall HW_RegisterDrawFun(DWORD nport, DRAWFUN(DrawFun),
LONG nUser)
参  数:   DWORD nport;通道号索引
DRAWFUN(DrawFun);画图回调函数
LONG nUser;用户数据
返回值:   成功返回0 ;失败返回错误号
说  明:   在offscreen 预览模式下可通过此函数在预览视频画面上叠加字符等信息。
画图回调函数
#define DRAWFUN(x)   void  (CALLBACK* x)(long nPort,HDC hDc,LONG nUser)
LONG nPort;通道号
HDC hDc;表面设置上下文,相当于显示窗口的DC
LONG nUser;用户数据
4.6.3.2 停止解码画图回调函数HW_StopRegisterDrawFun  
函  数:  int __stdcall HW_StopRegisterDrawFun(DWORD nport)
参  数:   DWORD nport;通道号索引
返回值:   成功返回0 ;失败返回错误号
说  明:   停止画图回调
5.0 版本SDK新增函数
DS-4108HCV、DS-4116HCV每张板卡支持1 路模拟视频矩阵输出功能和1 路模拟音频
矩阵输出功能,视频矩阵输出调用原函数SetEncoderVideoExtOutput实现,音频矩阵输出调
用函数SetEncoderAudioOutput 或者SetEncoderAudioExtOutput实现,音频矩阵功能对MD卡同
样有效。
编码通道音频矩阵输出(内部输出)SetEncoderAudioOutput  
函   数:  int __stdcall SetEncoderAudioOutput(UINT nEncodeChannel,BOOL bEnable,
UINT nOutputChannel);
参   数:  UINT nEncodeChannel;编码通道索引
BOOL bEnable;使能
UINT nOutputChannel;音频模拟输出通道索引,HCV卡每张板卡只有一个音频
输出口,所以取值只能为0 。
返回值:  成功返回0 ;失败返回错误号
版权所有(C)杭州海康威视数字技术股份有限公司  71
海康威视DS-4100、4000HC 系列板卡SDK编程指南
说  明:  HCV卡音频输出功能
编码通道音频矩阵输出(外部输出)SetEncoderAudioExtOutput
函  数:  int __stdcall SetEncoderAudioExtOutput(UINT nEncodeChannel,UINT nPort,
BOOL bOpen,UINT nOutChannel,UINT nReserved);
参  数:  UINT nEncodeChannel;编码通道索引
UINT nPort ;二次输出,取值为0 或1,每个编码通道最多可供模拟输出2 次
BOOL bOpen;使能
UINT nOutChannel ;音频模拟输出通道索引,外部输出,以系统中所有音频模拟
输出通道顺序排列,取值为0 、1 、2、3 、4 ……
UINT nReserved ;保留参数
返回值:  成功返回0 ;失败返回错误号
说  明:   HCV卡编码通道音频输出功能,将音频数据从第 nEncodeChannel 个编码通道的
第nPort路,输出到系统中第 nOutChannel  个音频输出口上。
解码通道音频矩阵输出(外部输出)SetDecoderAudioExtOutput
函  数:  int __stdcall SetDecoderAudioExtOutput(UINT nDecodeChannel,UINT nPort,
BOOL bOpen,UINT nOutChannel,UINT nReserved);
参  数:  UINT nDecodeChannel;解码通道索引
UINT nPort ;二次输出,取值为0 或1,每个解码通道最多可供模拟输出2 次
BOOL bOpen;使能
UINT nOutChannel ;音频模拟输出通道索引,外部输出,以系统中所有音频模拟
输出通道顺序排列,取值为0 、1 、2、3 、4 ……
UINT nReserved ;保留参数
返回值:  成功返回0 ;失败返回错误号
说  明:   MD卡音频矩阵输出功能,将音频数据从第nDecodeChannel 个解码通道的第
nPort路,输出到系统中第 nOutChannel  个音频输出口上。
函数索引(按英文字母排序)
AdjustMotionDetectPrecision ................... 42
CaptureIFrame .......................................... 35
ChannelClose ............................................ 27
ChannelOpen............................................. 26
ClearDisplayRegion .................................. 59
DeInitDSPs ............................................... 22
FillDisplayRegion ..................................... 58
GetBoardCount ......................................... 22
GetBoardDetail ......................................... 24
GetBoardInfo.............................................25
GetCapability.............................................26
GetDecodeChannelCount ..........................23
GetDisplayChannelCount..........................23
GetDspCount .............................................22
GetDspDetail .............................................24
GetEncodeChannelCount ..........................23
GetFramesStatistics ...................................36
GetJpegImage ............................................37
版权所有(C)杭州海康威视数字技术股份有限公司  72
海康威视DS-4100、4000HC 系列板卡SDK编程指南
GetOriginalImage ..................................... 36
GetSDKVersion......................................... 26
GetSoundLevel ......................................... 50
GetStreamType.......................................... 32
GetSubChannelStreamType ...................... 32
GetSubStreamType ................................... 33
GetVideoPara ............................................ 29
GetVideoSignal ......................................... 30
HW_ChannelClose ................................... 53
HW_ChannelOpen .................................... 53
HW_ClearSurface ..................................... 56
HW_CloseFile........................................... 63
HW_CloseStream...................................... 61
HW_CloseStreamEx ................................. 62
HW_ConvertToBmpFile ........................... 70
HW_ExportFileRef ................................... 74
HW_GetCurrentAbsoluteTime ................. 68
HW_GetCurrentFrameNum...................... 69
HW_GetCurrentFrameRate ...................... 69
HW_GetCurrentFrameTime...................... 67
HW_GetFileAbsoluteTime ....................... 67
HW_GetFileTime...................................... 67
HW_GetFileTotalFrames .......................... 68
HW_GetPictureSize .................................. 71
HW_GetPlayedFrames.............................. 69
HW_GetPlayPos ....................................... 66
HW_GetSpeed .......................................... 66
HW_GetStreamOpenMode ....................... 64
HW_GetVersion ........................................ 54
HW_GetYV12Image ................................ 70
HW_ImportFileRef ................................... 74
HW_InitDecDevice................................... 52
HW_InitDirectDraw.................................. 52
HW_InputAudioData ................................ 63
HW_InputData .......................................... 61
HW_InputVideoData ................................ 62
HW_Jump ................................................. 67
HW_LocateByAbsoluteTime.................... 68
HW_LocateByFrameNumber ................... 69
HW_OpenFile ........................................... 63
HW_OpenStream ...................................... 61
HW_OpenStreamEx.................................. 62
HW_Pause................................................. 65
HW_Play................................................... 64
HW_PlaySound .........................................64
HW_RefreshSurface..................................56
HW_RegisterDrawFun ..............................74
HW_ReleaseDecDevice ............................52
HW_ReleaseDirectDraw ...........................53
HW_RestoreSurface ..................................56
HW_SetAudioPreview ..............................54
HW_SetDecoderPostProcess.....................57
HW_SetDecoderVideoCapture..................72
HW_SetFileEndMsg..................................73
HW_SetFileRef .........................................73
HW_SetJumpInterva .................................66
HW_SetPlayPos ........................................66
HW_SetSpeed............................................65
HW_SetStreamOpenMode ........................63
HW_SetVolume .........................................65
HW_StartCapFile ......................................70
HW_Stop ...................................................64
HW_StopCapFile.......................................71
HW_StopRegisterDrawFun.......................75
HW_StopSound .........................................65
HW_ZoomOverlay ....................................57
InitDSPs.....................................................22
LoadYUVFromBmpFile............................47
MotionAnalyzer.........................................42
ReadStreamData ........................................40
RegisterDecoderVideoCaptureCallback ....71
RegisterDisplayVideoCaptureCallback .....72
RegisterDrawFun.......................................49
RegisterImageStreamCallback ..................37
RegisterMessageNotifyHandle ..................39
RegisterStreamDirectReadCallback ..........38
RegisterStreamReadCallback ....................39
ResetDSP**...............................................51
RestoreOverlay ..........................................28
SaveYUVToBmpFile.................................37
SetAudioPreview .......................................50
SetBitrateControlMode..............................35
SetChannelStreamCRC .............................51
SetDecoderAudioExtOutput ......................76
SetDecoderAudi oOutput ...........................55
SetDecoderVideoExtOutput ......................59
SetDecoderVideoOutput............................59
SetDefaultQuant ........................................33
版权所有(C)杭州海康威视数字技术股份有限公司  73
海康威视DS-4100、4000HC 系列板卡SDK编程指南
SetDefaultVideoStandard .......................... 29
SetDeInterlace........................................... 31
SetDisplayRegion ..................................... 57
SetDisplayRegionPosition ........................ 58
SetDisplayStandard ................................... 55
SetDisplayVideoBrightness ...................... 60
SetDisplayVideoCapture ........................... 73
SetEncoderAudioExtOutput...................... 75
SetEncoderAudioOutput ........................... 75
SetEncoderPictureFormat ......................... 34
SetEncoderVideoExtOutput ...................... 60
SetIBPMode .............................................. 34
SetImageStream ........................................ 38
SetInputVideoPosition .............................. 30
SetLogo ..................................................... 48
SetLogoDisplayMode ............................... 48
SetOsd ....................................................... 47
SetOsdDisplayMode ................................. 45
SetOsdDisplayModeEx ............................. 46
SetOverlayColorKey................................. 27
SetPreviewOverlayMode .......................... 27
SetStreamType .......................................... 32
SetSubChannelStreamCRC .......................51
SetSubEncoderPictureFormat....................34
SetSubStreamType.....................................33
SetupBitrateControl ...................................35
SetupMask .................................................49
SetupMotionDetection...............................42
SetupMotionDetectionEx ..........................43
SetupSubChannel ......................................31
SetVideoDetectPrecision ...........................30
SetVideoPara .............................................29
SetWatchDog .............................................51
StartMotionDetection ................................44
StartSubVideo Capture ...............................41
StartVideoCapture .....................................40
StartVideoPreview .....................................28
StopLogo ...................................................48
StopMask ...................................................49
StopMotionDetection.................................44
StopRegisterDrawFun ...............................50
StopSubVideoCapture ...............................41
StopVideoCapture......................................40
StopVideoPreview .....................................28
 
 
 
 
 
 
 
 
附录
可以用新版函数替代功能或者无效的API
GetTotalChannels:可用GetEncodeChannelCount替代
GetTotalDSPs:可用GetDspCount  替代
SetupDateTime:4.0版本起无效
HW_GetChannelNum :无效,请使用GetBoardDetail
HW_GetDeviceSerialNo:无效,请使用 GetBoardDetail
HW_SetVideoOutStandard :无效,请使用SetDisplayStandard 或SetDefaultVideoStandard
HW_SetDspDeadlockMsg:无效
HW_ResetDsp :无效
版权所有(C)杭州海康威视数字技术股份有限公司  74
海康威视DS-4100、4000HC 系列板卡SDK编程指南
HW_SetDisplayPara:DISPLAY_PARA结构中bToVideoOut 无效,MD卡模拟视频输出功能
已经整合到视频矩阵之中。
 
函数说明
z   获取总的编码通道个数:GetTotalChannels
函数:  int GetTotalChannels()
返回:   获取系统内可使用的通道个数,如果返回小于系统中安装的通道数,表明有一DSP
初始化失败
 
z   获取系统内正确安装的编码通道个数:GetTotalDSPs
函数:  int GetTotalDSPs()
返回:   获取系统内正确安装的编码通道个数,如果返回小于系统中安装的通道数,表明有
一DSP 初始化失败;
注意:   此函数返回系统中所有的编码通道个数,若要获取 DSP 个数请使用函数
GetDspCount  
注意:在原H 卡、D 卡SDK 中,因为当时DSP 和编、解码通道存在着一一对应的关系,
所以可以使用GetTotalDSPs 来取得系统中所有的编码和解码通道个数,但是在新的 HC卡、
MD系统中,DSP 个数不再和通道个数相等,使用 GetTotalDSPs 会带来歧异,因此在 3.0 版
本的SDK 中做了完善,分别增加了获取板卡个数GetBoardCount、DSP 个数GetDspCount、
编码通道个数GetEncodeChannelCount、解码通道个数 GetDecodeChannelCount、显示通道个  
数GetDisplayChannelCount的API,建议用户使用新提供的API,不再使用原来的
GetTotalDSPs,同时为了保持兼容性,GetTotalDSPs 仍然返回系统中所有的编码通道个数,
其功能和GetEncodeChannelCount相同,并不代表 DSP 个数,需要特别注意
 
z   设置OSD 时间(用于网络校时):SetupDateTime  
函数:    int SetupDateTime(HANDLE hChannelHandle, SYSTEMTIME *now)
参数:  HANDLE  hChannelHandle   通道句柄
 SYSTEMTIME *now   需要设置的时间指针值,如为 NULL,即本地校时  
返回:   正确为 0 ,其他为第 4 节定义的错误号;
说明:   设置 OSD 中的时间,可用于网络校时。设置了此函数后,SetOsd( )的默认本地校
时的功能被屏蔽。
注意:此接口函数自v4.0 版本SDK 开始,不再有效。
 
z   获得某个DSP 对应的通道号 HW_GetChannelNum
函数:    int__stdcall HW_Get ChannelNum(long nDspNum,lo ng *pChannelNum,ULONG   
nNumsToGet,ULONG * pNumsGotten)
输入参数:nDspNum    DSP 号。
nNumsToGet     要得到通道号的个数。即pChannelNum 分配的个数。
输出参数:pChannelNum     返回的通道号,一个DSP 可能对应不只一个通道。但目前
(1.0ver )是一一对应的,这里只是为以后扩展做一个保留。
 pNumsGotten   获得实际得到的通道号个数。可以先指定
pChannelNum=NULL, nNumsToGet=0,调用这个函数来获得实际的通道个数,然
后为pChannelNum 分配合适内存大小,再调用这个函数。
版权所有(C)杭州海康威视数字技术股份有限公司  75
海康威视DS-4100、4000HC 系列板卡SDK编程指南
返回值:   错误码
说   明:   此接口函数无效,请使用GetBoardDetail。
 
z   获取卡的序列号HW_GetDeviceSerialNo
函数:int__stdcall HW_GetDeviceSerialNo(HANDLE hChannel,ULONG *pDeviceSerialNo);
输入参数: hChannel          通道句柄;
输出参数:*pDeviceSerialNo       卡的序列号。
返回值:   错误码
说   明:   此接口函数无效,请使用GetBoardDetail。
 
z   设置VideoOut 输出制式HW_SetVideoOutStandard
函数:        int __stdcall HW_SetVideoOutStandard(HANDLE hChannel,ULONG nStandard);
输入参数:hChannel       通道句柄
          nStandard      HW_PAL 为PA L 制;HW_NTSC  为NTSC 制;
返回值:   错误码
说  明:  此接口函数无效,请使用SetDisplayStandard 或SetDefaultVideoStandard。  
 
z   设置DSP 死掉后向主机发送的消息HW_SetDspDeadlockMsg
函数:        int __stdcall HW_SetDspDeadlockMsg(HWND hWnd,UINT nMsg);
输入参数:hWnd      接收消息窗口的句柄。
nMsg     dsp 死掉后向主机发送的消息。wParam返回DSP 号。
返回值:   错误码
说  明:  此接口函数无效。  
 
z   重置DSP HW_ResetDsp   
函数: int __stdcall HW_ResetDsp(long nDspNum)   
输入参数:nDspNum      要重置的DSP 号。
返回值:   错误码
说明:     重置DSP 。当用户收到 DSP 死掉后发送的消息后可以调用这个接口来重置DSP 。
用户应该保存当前的工作状态,当重置DSP 后恢复当前工作状态,即所有的操作需要重新
来一边(如打开文件,播放等)。用户可以通过HW_GetChannelNum 来获得当前DSP 对应
的通道号。
说  明:  此接口函数无效。  
版权所有(C)杭州海康威视数字技术股份有限公司  76

你可能感兴趣的:(海康威视DS-4100、4000HC 系列板卡SDK编程指南)