⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpapi13.txt

📁 AVE1000S系列卡SDK&Driver
💻 TXT
📖 第 1 页 / 共 5 页
字号:

//6.
  SAPI int DLLCALL sapiGetCardType(UINT CardID);
  输入:卡号.(0,1,2...)
  返回:卡的类型.
  功能: 得到某卡的类型.可为常数SS1,SS1A,SS2,SS2A,SD,SDA
//7.      
  SAPI int DLLCALL sapiGetCardSerial(UINT CardID);
  输入:卡号.(0,1,2...)
  返回:卡的序列号.
  功能: 得到卡的唯一序列号.
  SAPI int DLLCALL sapiGetCardPCIIndex(UINT CardID);
  输入:卡号.(0,1,2...)
  返回:卡的PCI识别序号.
  功能:得到卡的PCI识别序号,该号越小,在PCI扫描中越先发现,在同一台机器上
       插卡的位置不变时,该号也不变.一般情况下,该号等于CardID.但有时不同.
//8. 
  //DataType=0 (ENCODER1),2(ENCODER2),3(AUDIOIN)
  SAPI long DLLCALL sapiGetCaptureDataLostCounter(UINT CardID,int DataType);
  输入:CardID卡号;DataType数据类型,可取值为0(ENCODER1),2(ENCODER2),3(AUDIOIN)
  返回:数据块丢失计数.0无丢失,0xffffffff不支持查询,其他数值越高,丢失越高
  功能:用该函数,查询压缩编码器1,压缩编码器2(SD卡)和音频输入流数据丢失情况.
       在有丢失时,应该加大缓冲区长度,或提高机器速度. 
       
2.视频输入通道设置函数  
//1. 
  SAPI BOOL DLLCALL sapiSetVideoCompressSource(UINT CardID,UINT VInputChannel);
  输入:CardID卡号;VInputChannel视频压缩输入通道号,可取值COMPOSITE1,COMPOSITE2,COMPOSITE3
       COMPOSITE4,既四个复合道号.
  返回:TREU成功.
  功能:设置视频压缩输入通道.
  
//2. 
  SAPI BOOL DLLCALL sapiSetVideoPreviewSource(UINT CardID, UINT VInputChannel);
  输入:CardID卡号;VInputChannel视频预览输入通道号,可取值COMPOSITE1,COMPOSITE2,COMPOSITE3
       COMPOSITE4,既四个复合道号.
  返回:TREU成功.
  功能:设置视频预览输入通道.
  
//3. //value 0-255 
  SAPI BOOL DLLCALL sapiSetVideoPreviewSourceParams(UINT CardID,UINT VInputChannel,UNIT ParamID,UINT value); 
  输入:CardID卡号;VInputChannel视频预览输入通道号,可取值COMPOSITE1,COMPOSITE2,COMPOSITE3
       COMPOSITE4,既四个复合道号;ParamID为设置参数类型,为亮度BrightnessID,对比度ContrastID,
       色饱和度SaturationID,色调HueID;value为参数值,它们的取值范围均为0-255.
  返回:TREU成功.
  功能:设置视频预览输入通道的亮,色,对比度参数.如用系统缺省设置可不调用该函数.
       
//4. //value 0-255 
  SAPI BOOL DLLCALL sapiSetVideoCompressSourceParams(UINT CardID,UINT EncoderID,UNIT ParamID,UINT value); 
  输入:CardID卡号;VInputChannel视频压缩输入通道号,可取值COMPOSITE1,COMPOSITE2,COMPOSITE3
       COMPOSITE4,即四个复合道号;ParamID为设置参数类型,为亮度BrightnessID,对比度ContrastID,
       色饱和度SaturationID,色调HueID;value参数值,它们的取值范围均为0-255.
  返回:TREU成功.
  功能:设置视频压缩输入通道的亮,色,对比度参数.如用系统缺省设置可不调用该函数.
  注意:对SS2,SS2A卡,视频压缩,视频预览输入通道不同可以用sapiSetVideoPreviewSourceParams
       和sapiSetVideoCompressSourceParams分别设置,对其他卡两者相同.不须分别设置.

3.视频压缩功能
Video compress function 
有关视频压缩结构定义:
3-1.压缩回调函数指针VOIDENCODERCALLBACK
typedef void (* VOIDENCODERCALLBACK)(UINT CardID,UINT EncoderID,BYTE * buf,int length,void * pUsrParam);
当用户希望获取压缩数据流时,可以自定义一个回调函数,并定义自已的参数pUsrParam,将其添入
压缩参数stEncoderParams结构,则启动压缩后,每当有压缩数据到SSAPI系统内核后,系统会调用
回调函数,并传入卡号CardID,编码器号EncoderID,压缩数据缓存指针buf,数据长度length,用户
自定义参数.用户应尽快处理结束并返回.注意回调函数是在独立的压缩线程中,注意线程同步问题.
比如定义回调函数: 
void MyCompressCallBackFun(UINT CardID,UINT EncoderID,BYTE * buf,int length,void * pUsrParam)
{
}

3-2.视频编码器参数结构ENCODERPARM 用于描述S1000系列卡编码器参数
typedef struct {
UINT BufLength;//=16384,32768,65536最小BufLength=16384
UINT BufNums;//=6,7,8,...
UNIT Mode;//Mode=1 mpg mode;Mode=2 jpeg mode
UNIT BitRateMode;//0:const bit rate,use for mpeg mode ;1: var bit rate use for Mpeg
                 /and MJPEG mode
UNIT StreamFrameSize;//0: SIF size normal;1: QSIF size small
UNIT BitRate;//200000-3000000 use only for mpeg const bit rate mode
UNIT M   ; //for I Frame mpeg,M=N=1; NORMAL mpeg M=3,N=15 
UNIT N   ; //for mjpeg M not use,N control the Frame rate,N=1:25 F/s;N=xx: 25/xx F/s
UNIT Quality;//0-30 use for mpeg var bit rate mode or mjpeg mode
             //the small number, the large of the recoder file. 
UNIT SequenceDistance;//=4 mpeg video Sequence Distance.
UNIT GOPDistance;//=4 mpeg video GOPDistance Distance
} ENCODERPARM;
在Tvcard.ini配置文件中,ENCODER,ENCODER2节中,定义了SS1卡,SS2卡编码器(ENCODER)及SD卡(ENCODER,ENCODER2)的缺省配置编码参数.
该结构与Tvcard.ini配置参数是一一对应的.它用于控制每块卡编码器的工作.

BufLength为缓冲区块长度,必须为4096的倍数,BufNums为缓冲区块数,缓冲区总长度=BufLength*BufNums
卡越多,数据率越高缓冲区应越大.增加缓冲区块长度,比增加缓冲区块数,有效的多.
 sapiGetCaptureDataLostCounter函数就可以检察缓冲区是否够用.
 Mode:编码Mode, 1 为Mpeg Mode. 2 为Mjpeg Mode.
 BitRateMode:位速率Mode, 0:恒定位速率,仅用于Mpeg方式。1:可变位速率,用于Mpeg VBR变码率及MJPEG方式。
 对监控应用,MPEG可变位速率(var bit rate)可有效的压缩数据.70-300MB/小时
 StreamFrameSize:画面尺寸0: SIF size(PAL=352*288);1:QSIF(176*144)
                 对远程传输,带宽受限时QSIF可大大减少数据量。 
 BitRate:位速率,仅用于Mpeg恒定位速率方式200000-3000000,多数MPEG-1卡仅能在此方式工作。
 Quality:恒定质量1-30,越小,质量越高,一般取5-7即可。用于Mpeg VBR变码率及MJPEG方式
 M,N     控制MPEG关建帧(I)与预测帧(B,P)的组合。一般M=3,N=15;对MPEG 纯I帧M=1,N=1;帧序列IIII...
          M=2,N=2,4,6,8,10,...60;   帧序列BIBPBPBP...
          M=3,N=3,6,9,12,15,...,60; 帧序列BBIBBPBBP...
          M=4,N=4,8,12,16,...,60;   帧序列BBBIBBBPBBBP...
          M,N取值越高,压缩越高。I帧压缩小,P压缩较高,B压缩最高。
	  适当调整M,N达到压缩高,且画质较好。
          对MJPEG方式M不用,N控制帧速率。JPEG帧速率=25/N (PAL),N=1-60.
SequenceDistance:相邻MPEG视频流序列头间隔(间隔多少图象组)0-15,一般取4;序列头000001B3
GOPDistance: 相邻MPEG图象组头间隔多少I帧: 1-15. 一般取4
              这两个间隔加大会减少数据量.组头000001B8
3-3. 编码器参数                
typedef struct {
BOOL UseTVCardini;                    //是否使用TVCARD.INI的设置作为编码器参数设置。TRUE使用,FALSE不使用.
int  VideoStandard;                   //1:PAL;0 NTSC
ENCODERPARM * pEncoderParams;         //编码器参数结构地址,如UseTVCardini为TRUE,则可置0,否则不可为0。
char * pfilename;                     //需SSAPI记录文件时的文件名,否则置0.
void * pUserCallBackParam;            //用户自用参数指针,当用消息通知方式获取压缩数据接口时置0
VOIDENCODERCALLBACK pEncodercallback; //回调函数指针,当用消息通知方式获取压缩数据接口时置0
} stEncoderParams;
该结构控制整个S1000卡压缩流的工作。
UseTVCardini:
pEncoderParams:这两个参数配合使用。当UseTVCardini置为TRUE时,表示使用Tvcard.ini中的
                ENCODER或ENCODER2节的参数,pEncoderParams不用,可置0。
                当UseTVCardini置为FALSE时表示不用Tvcard.ini中的参数,用户必须填充一个
                ENCODERPARM结构,并将其地址置入pEncoderParams中。
VideoStandard:压缩视频标准1为PAL,0为NTSC。我国为PAL(1).
pfilename:存储压缩文件名字串。用户置入文件名时,则启动压缩后,SSAPI DLL会自动产生该文件
          。如为0,则DLL不产生记录文件及写盘操作。此时用户可使用编码回调函数完全自己处理
           压缩数据。也可以记录文件的同时使用编码回调函数。
pEncodercallback:当用户不须要处理压缩数据时,可置0。当用户需要处理压缩数据时,可定义一个
                  压缩回调函数,处理压缩数据。见3-1说明。
3-4:函数
//1
  SAPI 	int sapiStartOneCompressRec(UINT CardID,UINT EncoderID,stEncoderParams * pParams);
  输入: CardID卡号,EncoderID视频编码器号,为0(ENCODER1)或1(ENCODER2)(SD卡)
        pParams 为结构指向stEncoderParams(见3-3)的指针。
  返回: 成功返回启动的编码器ID(0或1),失败返回〈0,查SSAPI.cpp;
  功能: 启动一路编码器压缩流。
  注意: 对同一块卡,只能调用该函数一次。必须Call sapiStopCompressRec后,才可再次调用它。

//2. 
  SAPI 	int sapiStartTwoCompressRec(UINT CardID,stEncoderParams * pEnc1Params,stEncoderParams * pEnc2Params);
  输入: CardID卡号,pEnc1Params 为编码器1参数结构指向stEncoderParams(见3-3)的指针。
        pEnc2Params 为编码器2参数结构指向stEncoderParams(见3-3)的指针。
  返回: 成功返回0,失败返回〈0,查SSAPI.cpp;
  功能: 启动两路编码器压缩流。仅用于SD卡。
//3. 
  SAPI 	BOOL sapiStopCompressRec(UINT CardID);
  输入: CardID卡号
  返回: 成功TRUE.
  功能: 停止压缩码流,关闭压缩文件。
//4. 
  SAPI  BYTE * sapiSearchB4TYPE(B4TYPE * pB4type, BYTE * Buffer,int BufferLength);
  输入: pB4type待查找的4字节码结构指针,Buffer:缓存首地址,BufferLength 缓存中数据长度。
  返回: 成功返回指向4字节码头的指针(包括4字节码).失败返回0。
  功能: 在压缩码流缓存中,搜索指定4字节码,如序列头000001b3,等。
        一般用于MPEG流。用户必须自行处理两个缓冲的接缝问题(第一个Buff的最后3字节
        和下一个Buff的首3字节)。
//5
  SAPI  BYTE * sapiSearchB2TYPE(B2TYPE * pB2type, BYTE * Buffer,int BufferLength);
  同4,类似。
  功能:在压缩码流缓存中,搜索指定2字节码,如JPEG头FF D8。
        一般用于MJPEG流。

4.视频预览显示功能
Video preview function 
4-1.
a.主区域:一个Windows窗口的客户区.每个主区域与一个Windows窗口关联,含有一个
窗口句柄。每个主区域用一个MRgnID整数识别,MRgnID实质是主区域数组下标为0,1,2,3...。
主区域顶点是屏幕坐标。
b.子区域:在一个主区域内可创建若干个矩形区称它们为子区域.
每个子区域用SRgnID整数标识.SRgnID实质是子区域数组下标。0,1,2,3...。子区域矩形的左顶点坐标是相对于
主区域左顶点的坐标,即客户坐标.子区域最大可与主区域相同.
当主区域(窗口)缩放及移动时,区域内所有子区域自动缩放及移动.
c.SD和SS2卡均可以完成双路同屏实时显示(每路50场),且双路画面均为高分辨率全帧(两场)
SD,SS2 卡由主,次两路显示通道构成完成.与SS1单路卡相比增加了次显示通道
对主通道的控制与SS1卡相同。次显示通道则有一些局限:
与主通道相比次通道不能认意缩放,帧尺寸水平分4级(1,1/2,1/4,1/8)(PAL:704,704/2,704/4
704/8),垂直分为4级(1,1/2,1/4,1/8) (PAL:576,576/2,576/4,576/8)
次显示通道必须由支持YUY2的Overlay模式的显卡支持.
但因主次显示通道可任意交换,可以克服次显示通道局限。见应用程序TT3。

d. 每个主区域有个区域属性DispMode,决定该区域中所有子区域的工作方式.
目前有4种方式.在SSAPI.H定义.
PRIMARYBUF   主平面缓冲写方式: 
(适于显示预览主通道,占用CPU,显卡兼容好)
PRIMARYNOBUF 主平面直接写方式:
(适于显示预览主通道,不占CPU,显卡兼容较好)
OVERLAYBUF  覆盖平面缓冲写方式:
(适于显示预览主,次通道,占用CPU,显卡兼容较差)
OVERLAYNOBUF 覆盖平面直接写方式
(适于显示预览主,次通道,不占CPU,覆盖写对显卡兼容较差)


推荐使用Interl或ATI显卡及某些TNT显卡.
对TNT显卡,丽台的S320II(TNT2)显卡+S320II Driver测试正确。
其它TNT显卡多数不可用,但使用丽台的S320II Driver驱动很可能成功。
请到丽台网站下载(www.leadtek.com.cn或www.leadtek.com)

4-2 函数
//1.
  SAPI  int   DLLCALL sapiCreateMainDispRgn(HWND hwnd,UINT DispMode);
  输入: hwnd:主区域所在窗口句柄;DispMode:显示区域属性。取值OVERLAYNOBUF,OVERLAYBUF,
              PRIMARYNOBUF,PRIMARYBUF
  返回: 成功返回主区域MRgnID标识.失败返回<0.
  功能: 以指定属性DispMode,创建一个主区域。
  
//2.
  SAPI  int   DLLCALL sapiCreateSubDispRgnInMainRgn(int MRgnID,RECT * prect);
  输入: MRgnID:主区域标识;prect:子矩形区域指针,客户坐标。取值OVERLAYNOBUF,OVERLAYBUF,
              PRIMARYNOBUF,PRIMARYBUF
  返回: 成功返回子区域SRgnID标识.失败返回<0.
  功能: 在主区域中创建一个子区域。
//3.
  SAPI  BOOL  DLLCALL sapiDestoryMainDispRgn(int MRgnID);
  输入: MRgnID:主区域标识

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -