📄 simpapi13.txt
字号:
S系列卡 Simple API V1.3 up10 (S系列卡简化API接口函数)
S系列卡 Simple API 简称SSAPI,它封装了S系列卡 SDK的常用功能,及函数。大大简化,并加快了
用户对S系列卡卡的开发.对S系列卡新用户建议使用SSAPI及VC或Dephi开发。
S卡还有一个API称为SForX api,该API与AVE2000卡API兼容,适用于熟习2000API的用户。
见SFORXAPI.txt说明。SForXAPI底层使用SSAPI,而显示库使用AVE2000的显示库。
SForXAPI不提供源代码!
由于软件维护及效率的原因,建议S卡用户使用SSAPI直接开发.或混用两种API(与显示有关的除外)。
混用时所有SForX API不支持的功能直接调用SSAPI。由于SForX API也封装了压缩函数,故压缩函数
也不要混用,可直接使用SSAPI的压缩函数。
SSAPI支持更好,提供源代码,更新也快的多!SSAPI支持所有S系列卡全部功能,SForX API仅提供
部分功能,及支持部分S卡的功能。
S系列卡目前有AVE1000系列(包括SS1/SS1A,SS2/SS2A,SD/SDA,SD PRO,SQ卡)MPEG-1视频压缩卡(可
选PCM音频捕获,监听)。
及AVE3000(SSAV1)MPEG-1同步音视频压缩卡(一卡四路)。
它由SSAPI.H,SSAIP.LIB,SSAPI.DLL,TVCard.ini及一些支持DLL组成.其中SSAPI.DLL需要SurvIO.dll(SurvIONT.dll Win2000
及NT4),SurvApi.dll,Display.dll核心DLL及其他一些DLL如sdrps1.dll,sdrps2.dll,ssrps.dll等支持.
对S系列卡老客户可以用SSAPI,也可以用原有的基本S卡SDK方式开发。
对Dephi用户为SSAPI.PAS头文件。
SSAPI提供原代码.
基本开发包组成:
SIMPAPI13.TXT 本文档;
UpdateX.txt 更新说明。
TT3V6测试,演示程序,源代码,ssapi.h。
TT3V6/release 全部WIN2000/NT4运行库及tt3v6.exe,ssapi.dll为调试版,其输出信息较多。
如在win9x下运行需要用SSAPI_LIB/win98下的DLL替换。
SSAPI_LIB ave1000/3000运行需要的公共库dll
SSAPI_LIB/win2000_nt win2000/nt4下需要的库,发布版。
SSAPI_LIB/w98 win9x下须需要的库,发布版。
SSAPI_LIB/Dephi/SSAPI.pas Debphi Header file.
如用户需要Dephi简单Demo请告之。
对V13Update2以上版本:
要产生交多的跟踪记录(记录在ave3.rec中),请将SSAPI工程重新编译,在“工程/设置/C,C++对话框,予处理器定义框中
加入_USRDBG,后重新编译。反之,可取消_USRDBG重新编译。
SSAPI下是SSAPI原代码及S卡SDK 全部库。(用户也可在测试程序TT3V6.EXE目录下找到所有运行时需要的库)
SSAPI\HWLib是S系列卡硬件库。
SSAPI\Display是S系列卡显示库。
SSAPI\DETECT是S系列卡预览流报警检测库(老报警检测库)(V10升级,接口有少量变化)。
SSAPI\DETECT2是老的压缩流报警检测库。
原有的S系列卡SDK开发方式,将新库替换老库,包括.H文件,重编译即可。
SSAPI分为WIN98和WIN2000(NT4)两种版本,编译方法不同。区别是
SSAPI.DLL,SurvAPI.DLL,SurvIO.DLL(SurvIONT.dll)三个DLL不同。
SSAPI.dll,SurvAPI.DLL,SurvIO.DLL(SurvIONT.dll)WIN98,WIN2000分别在SSAPI\HWLib\NT和SSAPI\HWLib\W98下
SSAPI编译方法:
WIN2000(NT4):将SSAPI\HWLib\NT下的NTAPPEnv.h复制到SSAPI\HWLib,将SSAPI VC++工程中Link库改为指向
SSAPI\HWLib\NT\SurvIONT.lib;SSAPI\HWLib\NT\SurvAPI.lib ReBuild工程.
WIN98:将SSAPI\HWLib\W98下的NTAPPEnv.h复制到SSAPI\HWLib,将SSAPI VC++工程中Link库改为指向
SSAPI\HWLib\W98\SurvIO.lib;SSAPI\HWLib\W98\SurvAPI.lib ReBuild工程.
TT3V6.exe使用说明:
TT3V6是使用SSAPI的一个基本测试演示示例程序,供用户参考。它类似V10 SDK的tt3测试程序,但更简单,
功能更强(包括,声音,报警),且支持多卡,但只演示了单卡。
使用TT3V6可作为S卡测试程序,同时驱动多卡工作如有16路S卡,可直接运行TT3V6.EXE 16次(如分为
16个目录则应将将其中的Display.dll删除,并在Windows/system(win98),windows/system32(win2000)
下复制一个Display.dll。然后分别启动每个tt3v6.exe,通过修改每路的TVCARD.INI可改变各路的参数。)
即可测试这16路S卡。
TT3V6缺省库为WIN2000/NT4,如在win9x下运行应将DLL替换为SSAPI_LIB/w98下的dll。
TT3V6菜单功能如下:
1. One_Card_Display_Rec:演示基本予览,(回调)压缩,硬件OSD功能
Audio:演示PCM音频功能。
OpenDirectWDDWin:用主显示平面打开阻览监视。
OpenIndirectWDDWin:用带系统缓存的主显示平面打开予览监视。(不推荐)
RestoreCapture:回复暂停的显示。仅用于主显示平面予览方式。
NTSC:置NTSC视频输入,应先管闭显示,再设置,再打开显示。
PAL:置PAL视频输入,应先管闭显示,再设置,再打开显示。
OpenOverlay:用覆盖平面打开予览监视。要求显卡支持Overlay(覆盖).(推荐显示方式)
OpenBufOverlay:用带系统缓存的覆盖平面打开予览监视。要求显卡支持Overlay(覆盖).(不推荐)
OpenBufOverlaySub:打开SD卡次通道予览监视(仅用于SD卡)。
ExchangeA_B:交换主次予览通道(仅用于SD卡)。
AdjustSubWin:调整次予览通道画面偏移(仅用于SD卡)。
StartRec1:启动AVE1000卡压缩,记录,生成T1.MPE文件,压缩参数使用TVCARD.INI。
StartOneRecAV:启动AVE3000卡压缩,记录,生成T1.MPG文件,压缩参数使用TVCARD.INI。
StartRec2:启动SD卡第二路压缩,生成T2.mpe.(仅用于SD卡),压缩参数使用TVCARD.INI。
StartAll:同时启动SD卡两路压缩。(仅用于SD卡),压缩参数使用TVCARD.INI。
StopRec:停止压缩。(通用)
Save BMP file:老位图捕获接口演示,捕获显示位图。从显存捕获,生成main.bmp
OverlayZoom:Overlay部分放大演示,用于OpenOverlay成功后。
OverlayZoomFull:Overlay满屏放大演示,用于OpenOverlay成功后。
CaptureDispBMP:从显存捕获显示位图,生成Disp.bmp(显示窗口必须开启)。
CaptureMemBMP:直接捕获显示位图,生成NoDisp.bmp( 可在无显示窗口时捕获)。
若显示窗口是开启的,则捕获后,显示不再更新。
CaptureSiggleBMP 演示直接捕获显示位图,生成3个BMP文件Mem1.bmp),若显示窗口是开启的,则捕获后,显示
恢复更新。
EnableOSD:启动OSD演示(要求硬件支持OSD),演示期菜单不响应。
DisableOSD:关闭OSD演示(要求硬件支持OSD)
CallBackStartRecDemo:演示将MPEG流分段记录使用sapiFindCompressHead,生成1.mpg,2.mpg文件,文件长度由
TVCARD.INI中[HWObj]节的RepeatRecLength决定,如RepeatRecLength=10000000
则文件长度约10MB。
它同时演示了压缩回调函数的使用,及压缩参数的设置。
2. MVDetect_MsgRec: 演示报警及(消息)压缩功能
EnableDetect:启动新报警接口,开始动目标检测。(必须在启动压缩后才有效)
DisableDetect:停止动目标检测。
以下5项演示使用新的消息接口的压缩功能
RegisterWin :注册接受压缩数据的窗口,无动目标检测。
RegisterWin2:注册接受压缩数据的窗口,带动目标检测。
UnRegisterWin:取消注册窗口。
SavCompressData:启动压缩存盘。文件为t1.mpe(AVE1000卡)或t1.mpg(AVE3000卡)。
StopSavCompressData停止压缩存盘。
EnableDecreaseFrames 使能抽帧功能。必须在启动压缩之前使用才有效。
抽帧参数设置在TVCARD.INI的[HWOBJ]节中ONFRAME,OFFFRAME,ONFRAME=1;OFFFRAME=1,2,3,4,5,6,7
抽帧后帧速率=25*(ONFRAME/(ONFRAME+OFFFRAME)) (pal)
DisableFrames 禁止抽帧(恢复正常)功能,必须在启动压缩之前使用才有效。
GetAlarmIn 检测IO报警输入(如为灰表示该卡目前不支持IO报警) 为0或1(AVE1000);0,1,2(AVE3000)
SetAlarmOut IO报警输出(如为灰表示该卡目前不支持IO报警),每点击一次改变一次输出电平(H或L电平)。
除AVE3000SQ Pro1外,IO报警需IO报警板。
StartPreRec 启动预录功能,产生空文件PreRecDemo.mpg。预录长度可由MainFrm.h的BUF_QUE_LEN调整。
ActualRecording 向PreRecDemo.mpg文件实际记录,包含3-5S预录内容。
PreRecording 转为预录。可重复ActualRecording,PreRecording 切换。
EndPreRec 停止预录,关闭文件PreRecDemo.mpg。
3. Audio:演示PCM音频捕获(capture),监听(play),回放(playback)功能。
DetectTt3v6是使用SSAPI的一个老报警示例程序,供用户参考预览流报警及旧的压缩流报警部分演示(只演示了单卡)。
SSAPI V13版改动请参考V13Update.txt
调试技巧:
1.在NT4或WIN2000下调试S系列卡程序时,如直接终止程序运行,或程序异常退出,再次运行程序
时可能找不到卡。此时,不需重起计算机,只需到注册库找到Surv项,将其中Using清为0,
Surv0,Surv1,...也清为0,其它不要动,即可找到全部卡。可用sapiDbgInitRegistry完成该任务。
2.在启动压缩后尽量不要直接强行终止程序,应关闭压缩后再退出,或继续Run直到弹出显示
"Compress except exit,...".再终止程序.否则可能重起系统.
基本工作流程:
初始化:
初始化设备->初始化显示
sapiDeviceInit->sapiDisplayCreate
显示:
设置浏览视频输入->创建主显示区域->创建子显示区域->启动浏览视频流->停止浏览视频流.
->删除子显示区->删除主显示区域.
sapiSetVideoPreviewSource->sapiSetVideoPreviewParams->sapiCreateMainDispRgn->
sapiCreateSubDispRgnInMainRgn->sapiStartPreview->sapiStopPreview->
sapiDestorySubDispRgn->sapiDestorySubDispRgn
视频压缩:
设置压缩视频输入->设置压缩参数,启动记录压缩视频记录->停止压缩视频记录
sapiSetVideoCompressSource->sapiSetVideoCompressSourceParams->
sapiStartOneCompressRec(sapiStartTwoCompressRec)->sapiStopCompressRec
音频:
预览流报警:
设置报警参数(填充USRDETECTINFO结构);
如果需要对警情进行处理,请注册回调函数(sapiRegisterDetectFun);--可选
启动开始报警函数,传递参数(sapiStartDetect);
解除报警,调用sapiStopDetect函数;
压缩流报警(旧接口):
初始化(每卡只需初始化一次)--sapiInitMotionDetect2
启动:
注册回调函数(必须注册)--sapiRegisterDetect2Fun;
设置报警参数(填充USRDETECTINFO结构)--sapiSetParams;
启动压缩流检测记录--sapiStartDetect2WithCompressRec;
停止:
停止压缩流报警检测记录--sapiStopDetect2WithCompressRec;
反注册回调函数--sapiUnRegisterDetect2Fun。
析构(程序退出时,如果曾经初始化且没有析构,则必须析构)--sapiDeleteMotionDetect2
退出:
设备退出->显示退出
sapiDeviceExit->sapiDisplayDestory
在显示退出之前请先关闭预览流报警线程,可调用sapiIfNoDetect函数判断是否还有预览流报警线程工作。
保证压缩流报警记录关闭(可用sapiIfDetect2Going判断卡是否启动了压缩流报警记录没有关闭)。
常用参数:
CardID:工作卡号,为0,1,2,3...也可用CARD0,CARD1,CARD2,...标识某个卡,实质是工作卡数组下标.
EncoderID:卡上视频编码器号,为0(ENCODER1)或1(ENCODER2)(SD,SDA卡才有).
VInputChannel:视频输入通道号为1,2,3,4也可用COMPOSITE1,COMPOSITE2,COMPOSITE3
COMPOSITE4
VChannelID:视频主通道号MAIN_VCH=0 ;视频次通道号SUB_VCH=1。见4-1,c
1.基本函数:
//1.
SAPI int DLLCALL sapiDeviceInit(int CardNum);
输入: 要初始化的S卡数,当CardNum<=0时,表示初始化所有的S卡
返回:已经初始化好的S卡数,既开始工作的S卡数.
功能: S系列卡及SSAPI,必须经过该函数初始化后,才可工作。
//2.
//CardID=0,1,...,MAX_CARDS,-1 mean all
SAPI int DLLCALL sapiDeviceExit(int CardID);
输入: CardNum >0为卡号,当CardNum<=0时,表示所有的卡。
返回: 剩余工作卡数。
功能: 停止某个或全部卡的工作,并释放它们。
//3.
SAPI int DLLCALL sapiDisplayCreate();
返回:0表示成功,负数为失败。
-1:显示模块已经初始化.(显示模块只初始化一次)
-2,-3:显示模块内存分配错误.
-4:覆盖方式及主平面方式创建均失败.
1:表示显卡仅支持主平面方式,不支持覆盖方式(OVERLAY).
功能: 显示模块初始化.
//4.
SAPI int DLLCALL sapiDisplayDestory();
返回:0
功能:关闭,释放显示模块.
//5.
SAPI int DLLCALL sapiGetTotalCards();
返回:卡数
功能:返回系统中全部S卡的数量.
注意:该函数必须在sapiDeviceInit之后调用才有效。
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -