九视电子USB视频采集卡SDK函数说明
USB采集卡体积小巧,流行外观设计,外型小巧美观,功能强劲,携带方便,能够即插即用,支持热插拔,带有先进的USB2.0高速接口,不需要外接电源,性能稳定,兼容性好,可捕捉高品质动态及静态画面,支持内置 USB 2.0 接口的笔记本电脑。并带有一键抓拍功能。
九视T301 USB视频采集卡是一款专业级的视频采集设备,带有VC二次开发包SDK,并带有完整DEMO源程序,其带有视频抓拍、视频录像、翻转、定时录像等功能。这款专业级USB视频采集卡采用高速USB2.0接口设计,支持四路视频输入,可以通过视频S端子或者Video端子来接入视频。广泛应用于安防、医疗、生产、运输、商业、金融等领域,产品功能完善,性能稳定,采集质量佳。并免费提供二次开发包,以满足不同用户的使用需求。
USB采集卡体积小巧,流行外观设计,外型小巧美观,功能强劲,携带方便,能够即插即用,支持热插拔,带有先进的USB2.0高速接口,不需要外接电源,性能稳定,兼容性好,可捕捉高品质动态及静态画面,支持内置 USB 2.0 接口的笔记本电脑。并带有一键抓拍功能。
下面我们详细介绍下T301 USB视频采集卡SDK函数说明
HYUtil.DLL 使用说明 (for VC++ 6.0)
操作系统:Windows 2000/WinXp
一、编译环境
1、 将 HYUtil.lib Shlwapi.lib(系统文件) 文件加入工程设置的“Link – General – Object/library module”中。
2、 在工程中包含HYUtil.h头文件。
3、 将HYUtil.dll、RenderDraw.ax、YuvComplex.dll、yuvConvert.ax、yuvDeinterlace.ax、MediaCodec.dll 文件拷
入到系统路径或搜索目录中。发布时,请注册yuvConvert.ax、yuvDeinterlace.ax、RenderDraw.ax到用户环境。
4、 编写代码。
二、函数说明:
1 数据常量介绍
#define ERR_SUCCESS 0 说明:函数成功调用。
#define ERR_FAILED 1 说明:函数调用过程中出现未知错误。
#define ERR_NOTAVAILABLE 2 说明:函数调用无效,多发生于执行环境错误的场合。
#define ERR_NODEVICE 101 说明:没有发现有效的USB采集设备。
#define ERR_DIRECTX_SETUP 102 说明:在设备操作过程中,出现了DirectX运行错误,通常由DirectX版本太低引起。
#define ERR_DEV_NOTOPEN 104 说明:设备处于关闭状态,不能对其进行操作。
#define ERR_NOTSUPPORT 105 说明:功能调用目前不被支持。
#define ERR_GRAPH_CONNECT 107 说明:Filter连接过程出现错误。
#define ERR_DEVICE_RUN 108 说明:Graph 不能按要求运行。
#define ERR_NOT_MEMIMG 109 说明:不是本系统支持的内存印像
#define ERR_SNAPSHOT_END 200 说明:快照操作已终止的情况下调用HYGetSnapShot返回的错误
#define ERR_WAIT_TIMEOUT 201 说明:操作等待超时。
#define ERR_BUFFER_TOOSMALL 202 说明:用户分配的缓冲区太小,不足以完成当前操作。
#define ERR_DEVICE_STATE 203 说明:当前设备状态不允许对其进行指定操作。
#define ERR_INSUFFICIENT_RESOURCES 204 说明:系统资源不足,多发生于内存资源不足。
#define ERR_INVALID_PARAM 205 说明:无效的函数调用参数。
2.3 SDK 导出函数说明:
UINT WINAPI HYInitialize()
说明:初始化SDK,建立系统运行所需要的环境。
参数:无
返回:ERR_SUCCESS:成功。
其他:失败。失败原因由返回值给出。
void WINAPI HYUninitialize()
说明:反初始化SDK,释放系统资源。
参数:无
返回:无
int WINAPI HYGetDevCnt()
说明:获取本系统安装的USB采集设备数量。
参数:无
返回:采集设备数量,如小于等于0,则表示没有检测到采集设备。
4 UINT WINAPI HYOpenDev(UINT unIndex)
说明:打开USB采集设备,对设备进行各种操作之前都必需先打开设备。
参数:UINT unIndex:基于0的设备索引,范围0 -(MaxDevCount-1)
返回:ERR_SUCCESS:成功。
其他:操作失败。
可能原因:1、无效的设备索引。
2、DirectX操作失败。
其他原因请参照返回代码。
UINT WINAPI HYCloseDev(UINT unIndex)
说明:关闭采集设备,释放系统资源。
参数:UINT unIndex:基于0的设备索引,范围0 -(MaxDevCount-1)
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
6 UINT WINAPI HYPortSpeed(UINT unIndex,BOOL &bHighSpeedPort)
说明:获取USB端口速度。
参数:UINT unIndex: 基于0的设备索引,范围0 -(MaxDevCount-1)
BOOL &bHighSpeedPort: 输出参数,返回用户USB设备所对应端口的操作速度。
TRUE :端口满足USB 2.0接口规范,为高速端口
FALSE:端口满足USB 1.1接口规范,为低速端口
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
7 UINT WINAPI HYSetOwnerWnd(UINT unIndex,HWND hWnd)
说明:设置视频输出窗口。
参数:UINT unIndex:基于0的设备索引。
HWND hWnd:视频输出窗口,亦即用户看到视频图像的窗口。
返回:ERR_SUCCESS:操作成功。
其他:操作失败,错误原因由返回代码给出。
8 UINT WINAPI HYStartDevice(UINT unIndex)
说明:运行设备,开始进行数据采集(用于各项采集参数设置完成后)。
参数:UINT unIndex:基于0的设备索引。
返回:ERR_SUCCESS:操作成功。
其他:操作失败,错误原因由返回代码给出。
9 UINT WINAPI HYStopDevice(UINT unIndex)
说明:停止设备,数据采集过程结束。
参数:UINT unIndex:基于0的设备索引。
返回:ERR_SUCCESS:操作成功。
其他:操作失败,错误原因由返回代码给出。
10 UINT WINAPI HYGetVideoPropRange(UINT unIndex,VIDEOPROP enProp,int &nMax,int &nMin,int &nDefault)
说明:获取亮度/色度/对比度等属性指标的参数范围。
参数:UINT unIndex:基于0的设备索引。
VIDEOPROP enProp:待查询参数范围的视频属性。(VIDEOPROP的说明如前述)
int & nMax:输出参数,对应于enProp属性所能选取的最大值。
int & nMin:输出参数,对应于enProp属性所能选取的最小值。
int & nDefault:输出参数,对应于enProp属性的系统默认值。
返回:ERR_SUCCESS:操作成功。
其他:操作失败,错误原因由返回代码给出。
11 UINT WINAPI HYGetVideoProp(UINT unIndex,VIDEOPROP enProp,int &nValue)
说明:获取视频显示属性的当前设置值,包括亮度/色度/饱和度/对比度/清晰度等。
参数:UINT unIndex:基于0的设备索引。
VIDEOPROP enProp :需获取的视频属性。
int &nValue :输出参数,用于返回当前视频显示属性值
定义:
1、视频属性
typedef enum {
VIDEO_BRIGHTNESS = 1, //视频亮度, 默认值 128
VIDEO_CONTRAST, //视频对比度, 默认值 68
VIDEO_HUE, //视频色度, 默认值 0
VIDEO_SATURATION, //视频饱和度, 默认值 64
VIDEO_SHARPNESS //视频锐度, 默认值 0
}VIDEOPROP;
返回:ERR_SUCCESS:操作成功,当前视频显示属性值由nValue变量返回。
其他:操作失败。
可能原因:1、无效的设备索引
2、设备没有成功执行Open操作
其他失败原因请参照返回代码。
12 UINT WINAPI HYSetVideoProp(UINT unIndex,VIDEOPROP enProp,int nValue)
说明:设置视频显示属性值,包括亮度/色度/饱和度/对比度/清晰度等。
参数:UINT unIndex:基于0的设备索引。
VIDEOPROP enProp :需设定的视频属性,参见前述对VIDEOPROP的说明
LONG nValue :设定的视频属性值,范围请参见HYGetVideoPropRange的返回值
返回:ERR_SUCCESS:成功。
其他:操作失败。
可能原因:1、无效的设备索引
2、设备没有成功执行Open操作
3、视频属性值超过设置范围。
其他失败原因请参照返回代码。
13 UINT WINAPI HYGetVideoSize(UINT unIndex,UINT &unSizeX,UINT &unSizeY)
说明:获取当前视频采集尺寸。
参数:UINT unIndex:基于0的设备索引。
UINT &unSizeX:输出参数,用于返回当前视频采集尺寸的宽度。
UINT &unSizeY:输出参数,用于返回当前视频采集尺寸的高度。
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
14 UINT WINAPI HYSetVideoSize(UINT unIndex,UINT unSizeX,UINT unSizeY)
说明:设置视频采集尺寸。该操作应该在设备停止状态下进行。
参数:UINT unIndex:基于0的设备索引。
UINT unSizeX:视频采集尺寸的宽度。
UINT unSizeY:视频采集尺寸的高度。
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
15 UINT WINAPI HYGetVideoFmt(UINT unIndex,VIDEOFMT &enFmt)
说明:获取当前视频采集格式。
参数:UINT unIndex:基于0的设备索引。
VIDEOFMT &enFmt:输出参数,返回当前视频采集格式,可能的格式包括YUY2和Y41P。
定义:
1、视频格式
typedef enum {
FMT_YUY2 = 1, //YUY2包模式
FMT_Y41P, //Y41P包模式
FMT_RGB,
FMT_UNKNOWN
}VIDEOFMT;
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
16 UINT WINAPI HYSetVideoFmt(UINT unIndex,VIDEOFMT enFmt)
说明:设置视频采集格式。该操作应该在设备停止状态下进行。
参数:UINT unIndex:基于0的设备索引。
VIDEOFMT enFmt:视频采集格式。目前支持选项包括FMT_YUY2和FMT_Y41P。
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
17 UINT WINAPI HYGetVideoStd(UINT unIndex,VIDEOSTD &enStd)
说明:获取视频信号输入标准。
参数:UINT unIndex:基于0的设备索引。
VIDEOSTD &enStd: 输出参数,用于返回当前视频信号输入标准。
定义:
1、视频标准
typedef enum {
STD_PAL = 1, //PAL 制式, 帧率最大25 fps
STD_NTSC, //NTSC制式, 帧率最大30 fps
STD_SECAM, //SECAM制式,帧率最大25 fps
STD_UNKNOW
}VIDEOSTD;
返回:ERR_SUCCESS:操作成功,当前视频标准由enStd变量返回。
其他:操作失败。失败原因由返回代码给出。
18 UINT WINAPI HYSetVideoStd(UINT unIndex,VIDEOSTD enStd)
说明:设置视频信号输入标准。
参数:UINT unIndex:基于0的设备索引。
VIDEOSTD enStd: 新的视频信号输入标准,请参见前述对VIDEOSTD的说明
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
19 UINT WINAPI HYGetScanMode(UINT unIndex,SCANMODE &enScanMode)
说明:获取视频信号的当前采集模式,包括帧和场两种方式。
参数:UINT unIndex:基于0的设备索引。
SCANMODE &enScanMode:输出参数,用于返回当前的采集模式,系统通常工作在帧采集模式下。
定义:
1、采集模式:
typedef enum {
SCAN_FIELD = 1, //单场采集模式,不用做反交错处理
SCAN_FRAME //帧采集模式,奇偶场信号均被采集,需进行进行反交错处理以消除拉丝现象。
}SCANMODE;
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
20 UINT WINAPI HYSetScanMode(UINT unIndex,SCANMODE enScanMode)
说明:设置视频信号的当前采集模式,包括帧和场两种方式。
参数:UINT unIndex:基于0的设备索引。
SCANMODE enScanMode:新的视频采集模式,可能的选项包括帧模式和场模式。
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
21 UINT WINAPI HYGetVideoSrc(UINT unIndex,VIDEOSRC &enSrc)
说明:获取当前视频源设置。
参数:UINT unIndex:基于0的设备索引。
VIDEOSRC & enSrc:输出参数,用于返回当前视频源设置。视频源请参见前述VIDEOSRC说明。
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
22 UINT WINAPI HYSetVideoSrc(UINT unIndex,VIDEOSRC enSrc,BOOL bSafeSwitch)
说明:设置当前视频源。(建议在设备处于停止状态时调用)
参数:UINT unIndex:基于0的设备索引。
VIDEOSRC enSrc:待设置的视频源。
BOOL bSafeSwitch:安全设置开关。
TRUE:如果设备当前处于运行状态,函数将返回ERR_DEVICE_STATE错误值。
FALSE:不对设备状态进行检测,直接完成设置视频源操作。
定义:
1、视频源:
typedef enum {
SRC_AV1 = 1, //AV1,系统默认视频源
SRC_AV2, //AV2
SRC_AV3, //AV3
SRC_AV4, //AV4
SRC_SV1 //SV1
}VIDEOSRC;
返回:ERR_SUCCESS:成功。
其他:操作失败。失败原因由返回代码给出。
23 UINT WINAPI HYVideoPresent(UINT unIndex,BOOL &bVideoPresent)
说明:获取视频信号状态,以确定当前是否有视频信号存在。
参数:UINT unIndex:基于0的设备索引。
BOOL &bVideoPresent:输出参数,用于返回当前视频信号状态。为TRUE表示有信号,FALSE表示
无信号
返回:ERR_SUCCESS:操作成功,视频信号状态由变量bVideoPresent返回。
其他:操作失败。失败原因由返回代码给出。
24 UINT WINAPI HYGetProcMethod(UINT unIndex,PROCMETHOD &enMethod)
说明:获取设备当前采用的视频处理方法。(视频反交错处理方法)
参数:UINT unIndex:基于0的设备索引。
PROCMETHOD &enMethod:输出参数,用于返回当前视频处理方法。
定义:
1、视频处理方法
typedef enum {
METHOD_SAMPLE = 1, //简单处理方法
METHOD_NORMAL, //基本处理方法
METHOD_COMPLEX, //高级处理方法
METHOD_PASS, //视频数据直通
METHOD_UNKNOWN
}PROCMETHOD;
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
25 UINT WINAPI HYSetProcMethod(UINT unIndex,PROCMETHOD enMethod)
说明:设置设备视频处理方法。(视频反交错处理方法)
参数:UINT unIndex:基于0的设备索引。
PROCMETHOD enMethod:待设置的新的视频处理方法。请参见HYGetProcMethod函数说明。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
26 UINT WINAPI HYGetFieldSeq(UINT unIndex,BOOL &bTopFieldFirst)
说明:获取设备当前采用的场处理顺序。(用于视频反交错处理)
参数:UINT unIndex:基于0的设备索引。
BOOL &bTopFieldFirst:输出参数,用于返回当前采用的场处理顺序。
TRUE:顶场优先
FALSE:底场优先
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
27 UINT WINAPI HYSetFieldSeq(UINT unIndex,BOOL bTopFieldFirst)
说明:设置设备当前采用的场处理顺序。(用于视频反交错处理)
参数:UINT unIndex:基于0的设备索引。
BOOL bTopFieldFirst:新的场处理顺序。TRUE:顶场优先,FALSE:底场优先
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
28 UINT WINAPI HYReadEprom (UINT unIndex,PBYTE pBuffer,UINT nStartPos,UINT nLen)
说明:读出Eeprom中特定位置的内容信息。
参数:UINT unIndex:基于0的设备索引。
PBYTE pBuffer:用户申请的缓冲区地址,用于保存读出的Eeprom内容。
UINT nStartPos:待读出内容的Eeprom子地址,取值范围0-127。
UINT nLen:请求读出的信息长度,以字节为单位。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
29 UINT WINAPI HYWriteEprom(UINT unIndex,PBYTE pBuffer,UINT nStartPos,UINT nLen)
说明:读出Eeprom中特定位置的内容信息。
参数:UINT unIndex:基于0的设备索引。
PBYTE pBuffer:保存有待写入Eeprom信息的用户缓冲区地址。
UINT nStartPos:待写入Eeprom的子地址偏移,取值范围0-127。
(建议用户不要随意修改前16字节内容)
UINT nLen:待写入的信息长度,以字节为单位。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
30 UINT WINAPI HYSetPlayEffect (UINT unIndex,VIDEOEFFECT enEft)
说明:设置视频播放效果。
参数:UINT unIndex:基于0的设备索引。
VIDEOEFFECT enEft:待设置的视频播放效果。
定义:
1、视频播放效果
typedef enum
{
EFT_NORMAL = 1, //普通显示效果
EFT_GOOD //增强显示效果(更流畅、清晰,但会占用更多的CPU资源)
}VIDEOEFFECT;
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
31 UINT WINAPI HYGetSnapRect(UINT unIndex,long &nLeft,long &nTop,long &nRight,long &nBottom)
说明:获取当前快照矩形设置。(定义:视频区域左上角坐标为(0,0),从左往右为x正向,由上到下为y正向)
参数:UINT unIndex:基于0的设备索引。
long & nLeft:输出参数,用于返回快照矩形相对于坐标原点的左边位置
long & nTop:输出参数,用于返回快照矩形相对于坐标原点的上边位置
long & nRight:输出参数,用于返回快照矩形相对于坐标原点的右边位置
long &nBottom:输出参数,用于返回快照矩形相对于坐标原点的下边位置
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
32 UINT WINAPI HYSetSnapRect(UINT unIndex,long nLeft, long nTop, long nRight, long nBottom)
说明:设置快照矩形。(定义:视频区域左上角坐标为(0,0),从左往右为x正向,由上到下为y正向)
参数:UINT unIndex:基于0的设备索引。
long nLeft:左,详细定义参见函数说明HYGetSnapRect
long nTop:上,详细定义参见函数说明HYGetSnapRect
long nRight:右,详细定义参见函数说明HYGetSnapRect
long nBottom:下,详细定义参见函数说明HYGetSnapRect
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
33 UINT WINAPI HYMirrorHorizon (UINT unIndex,BOOL bMirrorHorizon)
说明:设置图片快照水平镜象。
参数:UINT unIndex:基于0的设备索引。
BOOL bMirrorHorizon:快照图片水平镜象设置。
TRUE:对快照图片进行水平翻转
FALSE:不对快照图片进行水平镜象(系统默认)
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
34 UINT WINAPI HYMirrorVertical(UINT unIndex,BOOL bMirrorVertical)
说明:设置图片快照垂直镜象。
参数:UINT unIndex:基于0的设备索引。
BOOL bMirrorHorizon:快照图片垂直镜象设置。
TRUE:对快照图片进行垂直翻转
FALSE:不对快照图片进行垂直镜象(系统默认)
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
35 UINT WINAPI HYPreAllocBuf(UINT unIndex,long nPreAllocFrames)
说明:设置预分配帧缓冲数量。
参数:UINT unIndex:基于0的设备索引。
long nPreAllocFrames:预分配帧缓冲数量,取值范围3-100(默认值3)
系统需要进行帧缓冲的预分配以进行连续抓拍,建议谨慎调整
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
36 UINT WINAPI HYGetAllocBuf(UINT unIndex,long *nAllocFrames)
说明:获取实际分配的帧缓冲数量。
参数:UINT unIndex:基于0的设备索引。
long * nAllocFrames:输出参数,用于返回实际分配的帧缓冲数量。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
37 UINT WINAPI HYRegNotifyWnd(UINT unIndex,HWND hWnd,BOOL bOnlyKeyDown)
说明:注册用于接收系统消息的通知窗口。
参数:UINT unIndex:基于0的设备索引。
BOOL bOnlyKeyDown:是否仅仅接收设备按键消息。
TRUE:仅接收设备按键消息WM_SNAP_KEYDOWN。
FALSE:接收所有系统通知消息,包括WM_SNAP_KEYDOWN和WM_VIDEODATA
(可能消耗更多的系统资源,如无必要请不要选择该种方式)
HWND hWnd:用于接收系统消息的通知窗口句柄。系统消息主要包括:
WM_VIDEODATA: 当系统处于快照或回调状态,且采集到完整帧时发出该消息。
WM_SNAP_KEYDOWN:当设备上的按键被按下时,系统发出该消息。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
38 UINT WINAPI HYStartSnap(UINT unIndex,long nPictures,long nInterval)
说明:开始图片快照。如果当前系统处于回调状态,函数调用将返回错误ERR_DEVICE_STATE。用户有两
种方式获取图片快照,两种方式都需要先调用该函数以开始图片快照过程。
其一:逐次调用HYGetMemSnap,以获取快照图片数据,直到获得需要的快照图片数量。编程形式
如下:
HYStartSnap(...)
while(nPictures--)
{
HYGetMemSnap(...);
if(bNeedPaint)
PaintMemImg(...);
if(bNeedSave)
SnapVideoImage(...);
}
其二:通过响应系统消息WM_VIDEODATA来处理快照数据。前提是需要先注册消息通知窗口。
ON_MESSAGE(WM_VIDEODATA,OnSnapCommit)
LRESULT afx_msg OnSnapCommit(WPARAM wParam,LPARAM lParam);
LRESULT OnSnapCommit(WPARAM wParam,LPARAM lParam)
{
UINT unState = (UINT)wParam;
if(unState == OPER_SNAPSHOT) //系统当前处于图片快照状态
{
HYGetMemSnap(...);
if(bNeedPaint)
PaintMemImg(...);
if(bNeedSave)
SnapVideoImage(...);
}
else //系统当前处于视频数据回调状态
{
}
}
参数:UINT unIndex:基于0的设备索引。
long nPictures:快照图片张数。
long nInterval:快照时间间隔,单位:帧。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
39 UINT WINAPI HYCancelSanp(UINT unIndex)
说明:终止当前快照操作过程。
参数:UINT unIndex:基于0的设备索引。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
40 UINT WINAPI HYGetImgBufsize (UINT unIndex,long *pnSize,VIDEOFMT enFmt)
说明:获取快照图片所需内存尺寸。
参数:UINT unIndex:基于0的设备索引。
VIDEOFMT enFmt:请求快照图片格式,目前支持FMT_YUY2和FMT_RGB两种。
long *pnSize:输出参数,用于返回快照图片所需内存尺寸,用户可按照这个尺寸进行
内存空间的分配。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
41 UINT WINAPI HYGetMemSnap(UINT unIndex,BYTE *pImgBuf,long nSize,VIDEOFMT enFmt,DWORD dwTimeout)
说明:获取快照数据。在超时设置dwTimeout时间范围内,该函数将处于阻塞状态。
参数:UINT unIndex:基于0的设备索引。
BYTE * pImgBuf:用于接收快照图片的用户缓冲区地址。
long nSize:用户缓冲区尺寸,可通过HYGetImgBufsize函数获得。
VIDEOFMT enFmt:请求快照图片格式,目前支持FMT_YUY2和FMT_RGB两种。
DWORD dwTimeout:快照超时,单位毫秒。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
42 UINT WINAPI HYPaintMemImg(BYTE *pImgBuf,long nSize,HWND hPaintWnd)
说明:显示快照图片到指定绘画窗口,系统将接管该窗口的WM_PAINT消息,用户不用处理窗口重绘等消息。
该函数必须结合HYEndPaint函数使用以结束绘画过程。
参数:BYTE * pImgBuf:内存快照数据缓冲地址。通常由函数HYGetMemSnap获取快照数据。
long nSize:缓冲区尺寸。
HWND hPaintWnd:绘画窗口。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
43 UINT WINAPI HYPaintDiskImg(LPCTSTR szFileName,HWND hPaintWnd)
说明:显示存盘图片文件到绘画窗口,系统处理方法同HYPaintMemImg,该函数必须结合HYEndPaint函数使
用以结束绘画过程。
参数:LPCTSTR szFileName:磁盘文件名,包括全路径。
HWND hPaintWnd:绘画窗口。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
44 UINT WINAPI HYEndPaint(HWND hPaintWnd)
说明:结束图片显示过程。
参数:HWND hPaintWnd:绘画窗口。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
45 UINT WINAPI HYSaveImgAsJpg(BYTE *pImgBuf,long nSize,LPCTSTR szJpgFileName,long nQuality)
说明:将内存快照存为Jpg文件。
参数:BYTE * pImgBuf:内存快照数据缓冲地址。通常由函数HYGetMemSnap获取快照数据。
long nSize:缓冲区尺寸。
LPCTSTR szJpgFileName:Jpg文件名。包含全路径。
long nQuality:Jpg文件压缩质量,范围从1-100,100为最好。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
46 UINT WINAPI HYSaveImgAsBmp(BYTE *pImgBuf,long nSize,LPCTSTR szBmpFileName)
说明:将内存快照存为Bmp文件。
参数:BYTE * pImgBuf:内存快照数据缓冲地址。通常由函数HYGetMemSnap获取快照数据。
long nSize:缓冲区尺寸。
LPCTSTR szBmpFileName:Bmp文件名。包含全路径。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
47 UINT WINAPI HYStartCallback (UINT unIndex)
说明:开始视频数据回调过程。当系统采集到视频数据时,会通过向用户注册窗口发送WM_VIDEODATA
消息的方式来通知用户。
参数:UINT unIndex:基于0的设备索引。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
48 UINT WINAPI HYStopCallback (UINT unIndex)
说明:停止视频数据回调过程。
参数:UINT unIndex:基于0的设备索引。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
49 UINT WINAPI HYGetVideoData(UINT unIndex,BYTE **ppStreamBuf,long *pnSize,
long *pnWidth,long *pnHeight,DWORD dwTimeout)
说明:获取回调视频数据。该功能调用将导致视频缓冲区引用计数加一,所以必须结合
HYFreeVideoBuf使用以释放该缓冲区。
参数:UINT unIndex:基于0的设备索引。
BYTE **ppStreamBuf:输出参数,返回的缓冲区地址存放在(*ppStreamBuf)中。
long * pnSize:输出参数,用于返回缓冲区尺寸。
long * pnWidth:输出参数,用于返回视频宽度。
long * pnHeight:输出参数,用于返回视频高度。
DWORD dwTimeout:超时设置。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
50 UINT WINAPI HYFreeVideoBuf(UINT unIndex,BYTE *pStream)
说明:释放由HYGetVideoData功能调用获取的视频缓冲区。
参数:UINT unIndex:基于0的设备索引。
BYTE * pStream:由功能调用HYGetVideoData获取的视频缓冲区指针。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
51 UINT WINAPI HYGetScreenBmp(HWND hWnd,BYTE **ppImgBuf,long *pnSize)
说明:获取快照显示窗口的屏幕位图。
参数:HWND hWnd:快照显示窗口句柄。
BYTE **ppImgBuf:输出参数,用于返回快照显示内容所对应的内存缓冲区。
long *pnSize:输出参数,内存缓冲区尺寸。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
52 UINT WINAPI HYFullScreen(UINT nIndex,BOOL bFullScreen)
说明:将显示窗口放大到全屏。在多设备环境下不推荐使用。
参数:UINT unIndex:基于0的设备索引。
BOOL bFullScreen: TRUE:全屏显示模式
FALSE:窗口显示模式
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
OSD 使用函数介绍:
53 HANDLE WINAPI HYOpenComplexFile(UINT unIndex,LPCTSTR szFileName)
说明:打开OSD复合文件。
参数:UINT unIndex: 基于0的设备索引。
LPCTSTR szFileName:OSD复合文件名称。
返回:操作成功,返回OSD复合文件句柄。操作失败,返回NULL。
54 UINT WINAPI HYCloseComplexFile(UINT unIndex,HANDLE hHandle)
说明:关闭OSD复合文件,释放相关资源。
参数:UINT unIndex:基于0的设备索引
HANDLE hHandle:已经打开的OSD复合文件句柄。
返回:ERR_SUCCESS:操作成功。
其他:操作失败,错误原因由返回代码给出。
55 UINT WINAPI HYSetComplexEffect(UINT unIndex,HANDLE hHandle,BOOL bTransparence);
说明:设置叠加方式,包括透明叠加和非透明叠加,该操作允许实时调用。
参数:UINT unIndex: 基于0的设备索引。
HANDLE hHandle: 复合文件内存句柄。
BOOL bTransparence:TRUE:透明叠加,FALSE:非透明叠加。
返回:ERR_SUCCESS:操作成功。
其他:操作失败,错误原因由返回代码给出。
56 UINT WINAPI HYSetComplexPos(UINT unIndex,HANDLE hHandle,long nStartX,long nStartY)
说明:设置OSD叠加位置。
参数:UINT unIndex:基于0的设备索引。
HANDLE hHandle:OSD复合文件内存句柄。
long nStartX:基于原点(0,0)的复合位置X
long nStartY:基于原点(0,0)的复合位置Y
返回:ERR_SUCCESS:操作成功。
其他:操作失败,错误原因由返回代码给出。
57 UINT WINAPI HYComplexEnable(UINT unIndex,HANDLE hHandle,BOOL bEnable)
说明:开始/停止OSD叠加。
参数:UINT unIndex:基于0的设备索引。
HANDLE hHandle:OSD复合文件内存句柄。
BOOL bEnable:TRUE:开始复合,FALSE:停止复合。
返回:ERR_SUCCESS:操作成功。
其他:操作失败,错误原因由返回代码给出。
58 UINT WINAPI HYGetComplexSize (UINT unIndex,HANDLE hHandle,long *pnSizeX,long *pnSizeY)
说明:获取复合映像尺寸,以点为单位。
参数:UINT unIndex:基于0的设备索引。
HANDLE hHandle:OSD复合文件内存句柄。
long *pnSizeX:输出参数,用于返回复合映像的宽度。
long *pnSizeY:输出参数,用于返回复合映像的高度。
返回:ERR_SUCCESS:操作成功。
其他:操作失败,错误原因由返回代码给出。
OSD制作函数介绍:
59 BOOL WINAPI HYStartupOsdMake()
说明:初始化OSD制作环境。该函数为进行OSD文件制作时需调用的第一个函数。
参数:无
返回:TRUE:成功;FALSE:失败。
60 void WINAPI HYShutdownOsdMake()
说明:释放OSD制作所需资源,这是OSD制作需调用的最后一个函数。
参数:无。
返回:无。
61 long WINAPI HYGetFontFamilyCount()
说明:获取系统支持的OSD字体数量。
参数:无
返回:系统支持的字体数量。
62 BOOL WINAPI HYGetFontFamilyName(long nIndex,char szName[256])
说明:获取系统字体名称。
参数:long nIndex: 基于0的索引,范围0 -(字体数量-1)
char szName[256]:用于返回字体名称的缓冲区。
返回:TRUE:成功。FALSE:失败。
63 BOOL WINAPI HYCreateImgComplexFile(LPCTSTR szFileName,LPCTSTR szImgName,
COLORREF clrBack,HWND hPaintWnd)
说明:创建图片复合文件。
参数:LPCTSTR szFileName:输出文件名称。
LPCTSTR szImgName:待复合的图片文件名称。包含全路径。
COLORREF clrBack:背景色,用于透明叠加时进行色彩过滤。
HWND hPaintWnd:绘图窗口句柄,该函数要求用户给出一个绘图窗口以实时
浏览复合文件效果。
返回:TRUE:创建成功,FALSE:创建失败。
64 BOOL WINAPI HYCreateTxtComplexFile(LPCTSTR szFileName,
CPX_FORMAT enComplexFmt,
LPCTSTR szText,
LPCTSTR szFontFamily,
long nFontHeight,
COLORREF clrText,
int nSpacings,
HWND hPaintWnd)
说明:创建文本复合文件,这里的文本类型包括时间/日期/普通文本三种。
参数:LPCTSTR szFileName: 输出文件名称。
CPX_FORMAT enComplexFmt:复合文件类型,包括时间/日期/文本型。
LPCTSTR szText: 复合文本
LPCTSTR szFontFamily:文本字体名称。
Long nFontHeight: 文本字体高度。
CPX_COLOR clrText: 叠加文本前景色。
CPX_COLOR clrBack: 叠加文本背景色。
int nSpacings: 文本间隔。
HWND hPaintWnd: 绘图窗口句柄,该函数要求用户给出一个绘图窗口
以实时浏览复合文件效果。
定义:
1、复合类型:
typedef enum{
FORMAT_DATE = 1, //OSD日期叠加
FORMAT_TIME, //OSD时间叠加
FORMAT_STRING, //OSD字符叠加
FORMAT_PICTURE, //图片叠加
FORMAT_UNKNOWN
}CPX_FORMAT;
返回:TRUE:成功,FALSE:失败。
65 CPX_FORMAT WINAPI HYGetComplexFileFormat(LPCTSTR szFileName)
说明:获取复合文件类型。
参数:LPCTSTR szFileName:复合文件名称。
返回:复合文件类型。
66 CPX_FORMAT WINAPI HYGetComplexFileFormatA(HANDLE hHandle)
说明:获取复合文件类型的另一版本。
参数:HANDLE hHandle:已经打开的复合文件句柄。
返回:复合文件类型。
67 BOOL WINAPI HYPreviewFile(HANDLE hHandle,HWND hPaintWnd)
说明:预览复合文件效果。
参数:HANDLE hHandle:已经打开的复合文件句柄。
HWND hPaintWnd:绘图窗口,用于输出复合文件效果。
返回:TRUE:成功。FALSE:失败。
68 BOOL WINAPI HYPreviewFileA(LPCTSTR szFileName, HWND hPaintWnd)
说明:预览复合文件效果的另一版本。
参数:LPCTSTR szFileName:复合文件名称
HWND hPaintWnd:绘图窗口,用于输出复合文件效果。
返回:TRUE:成功。FALSE:失败。
69 UINT WINAPI HYGetBusType(UINT unIndex,BUSTYPE &enBusType)
说明:获取采集设备所使用的USB带宽分配类型。
参数:UINT unIndex:基于0的设备索引。
BUSTYPE &enBusType:输出参数,用于返回设备所使用的USB带宽分配类型。
定义:
1、总线传输类型
typedef enum
{
BUS_SHARED = 1, //共享总线传输
BUS_EXCLUSIVE //独占式总线传输(系统默认),兼容性较好,但CPU占用稍高于共享传输
}BUSTYPE;
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
70 UINT WINAPI HYSetBusType(UINT unIndex,BUSTYPE enBusType)
说明:设置采集设备所使用的USB带宽分配类型。
参数:UINT unIndex:基于0的设备索引。
BUSTYPE enBusType:USB带宽分配类型。参见HYGetBusType说明。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
71 UINT WINAPI HYSignalInterlaced(UINT unIndex,BOOL &bSignalInterlaced)
说明:判断视频输入信号是隔行或逐行信号。
参数:UINT unIndex:基于0的设备索引。
BOOL &bSignalInterlaced:输出参数。TRUE:隔行信号,FALSE:逐行信号
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
72 UINT WINAPI HYDrawClipRect(UINT unIndex,long nLeft,long nTop,
long nRight,long nBottom,COLORREF clrLine)
说明:在视频显示窗口画矩形。主要用于设置抓拍区域。
参数:UINT unIndex:基于0的设备索引。
long nLeft,nTop:左上窗口客户坐标。
long nRight,nBottom:右下窗口客户坐标。
COLORREF clrLine:画笔颜色。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
73 UINT WINAPI HYGetSelectedRect(UINT unIndex,long &nLeft,long &nTop,
long &nRight,long &nBottom)
说明:获取设置的实际选择矩形,单位为点。
参数:UINT unIndex:基于0的设备索引。
long nLeft,nTop:矩形区域的左上坐标。
long nRight,nBottom:矩形区域的右下坐标。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
74 UINT WINAPI HYClearClipDraw(UINT unIndex)
说明:清除函数HYDrawClipRect绘制的剪裁矩形。
参数:UINT unIndex:基于0的设备索引。
返回:ERR_SUCCESS:操作成功。
其他:操作失败。失败原因由返回代码给出。
相关链接: