函数名称为:
sa7130capture.dll,
这是它的头文件
#ifndef VC404_CAPTURE_SAA7134
#define VC404_CAPTURE_SAA7134#ifdef SAA7134CAPTURE_EXPORTS
#define SAA7134CAPTURE_API __declspec(dllexport)
#else
#define SAA7134CAPTURE_API __declspec(dllimport)
#endifstatic const ULONG BrightnessDefault = 0x80;
static const ULONG ContrastDefault   = 0x44;
static const ULONG SaturationDefault = 0x40;
static const ULONG HueDefault        = 0x00;
static const ULONG SharpnessDefault  = 0x00;#define MIN_VAMP_BRIGHTNESS_UNITS    0
#define MAX_VAMP_BRIGHTNESS_UNITS  255#define MIN_VAMP_CONTRAST_UNITS   -128 
#define MAX_VAMP_CONTRAST_UNITS    127 #define MIN_VAMP_HUE_UNITS        -128
#define MAX_VAMP_HUE_UNITS         127#define MIN_VAMP_SATURATION_UNITS -128 
#define MAX_VAMP_SATURATION_UNITS  127#define MIN_VAMP_SHARPNESS_UNITS    -8
#define MAX_VAMP_SHARPNESS_UNITS     7///////////////////////////////////////////////////////////
//注意:VC枚举类型为32位,4字节;这里的枚举类型为4字节。
//      C++ builder枚举类型为8位,1字节,要重定义,例如:
//typedef int COLORCONTROL;
//COLORCONTROL BRIGHTNESS  = 0;
//COLORCONTROL CONTRAST    = 1;
//COLORCONTROL SATURATION  = 2;
//COLORCONTROL HUE    = 3;
//COLORCONTROL SHARPNESS   = 4;//描述:在VC中enum、ULONG、LONG、BOOL、DWORD 都为32位,4字节,
//这里使用的是VC定义标准。
/////////////////////////////////////////////////////////////typedef enum {             //@enum Decoder control types
    BRIGHTNESS = 0,                 //@emem control for brightness
    CONTRAST   = 1,                   //@emem control for contrast
    SATURATION = 2,                 //@emem control for saturation
    HUE    = 3,                        //@emem control for hue
    SHARPNESS  = 4                  //@emem control for sharpness
}COLORCONTROL;typedef enum {             //@enum Decoder control types
       SINGLE_PASS_MODE = 0,
   PASS1_MODE = 1//,
}COMPRESSMODE;typedef enum{               
    COLOR_DECODER = 0, //解码器(包括视频预览和视频捕获)
    COLOR_PREVIEW = 1, //视频预览          
    COLOR_CAPTURE = 2  //视频捕获   
}COLORDEVICETYPE;
typedef enum{
    VID_CAPTURE_EVENT   = 0,
AUD_CAPTURE_EVENT1  = 1,
AUD_CAPTURE_EVENT2  = 2,
IO_ALERT_EVENT = 3,
MOTION_DETECT = 4,
VID_PREVIEW_EVENT = 5
}EVENTTYPE;
typedef enum
{
RGB32 = 0x0,
RGB24 = 0x1,
RGB16 = 0x2,
RGB15 = 0x3,
YUY2 = 0x4,
BTYUV = 0x5,
Y8 = 0x6,
RGB8 = 0x7,
PL422 = 0x8,
PL411 = 0x9,
YUV12 = 0xA,
YUV9 = 0xB,
RAW = 0xE
}COLORFORMAT;typedef enum
{
CAP_NULL_STREAM = 0, //捕获无效
CAP_ORIGIN_STREAM = 1, /*原始流回调*/
CAP_MPEG4_STREAM = 2, /*Mpeg4流*/
CAP_MPEG4_XVID_STREAM = 3
}CAPMODEL;
typedef enum
{
MPEG4_AVIFILE_ONLY = 0, //存为MPEG文件
MPEG4_CALLBACK_ONLY = 1, //MPEG数据回调
MPEG4_AVIFILE_CALLBACK = 2 //存为MPEG文件并回调
}MP4MODEL;typedef enum  
{          //@enum Field frequency
    FIELD_FREQ_50HZ = 0,        //@emem source is 50 Hz (PAL)
    FIELD_FREQ_60HZ = 1,        //@emem source is 60 Hz (NTSC)
    FIELD_FREQ_0HZ  = 2         //@emem source is 0 Hz   (NO SIGNL)
}eFieldFrequency;typedef enum {         //电平等级
    HIGH_VOLTAGE = 0, //高电平
    LOW_VOLTAGE = 1 //低电平
}eVOLTAGELEVEL;typedef struct
{ LONG cfHeight; //字符高度
LONG cfWidth; //字符宽度
LONG cfWeight; //字符粗细
LONG cfSpacing; //字符间距
BOOL cfItalic; //斜体
BOOL cfUnderline; //下划线
BOOL cfStrikeOut; //删除线
COLORREF cfBkColor; //背景色 
COLORREF cfTextColor; //前景色
TCHAR cfFaceName[32]; //字体名
}OSDPARAM;//error define area#define ERR_SUCCESS 0 //no error,success
#define ERR_NODEVICEFOUND 1 //no device found in system
#define ERR_UNSUPPORTFUNC 2 //unsupport func tempro?
#define ERR_ALLOCRESOURCE 3 //alloc resource error
#define ERR_INITDIRECTDRAW 4 //Init Directdraw error
#define ERR_INITDIRECTSOUND 5 //Init Directdraw error
#define ERR_NOT_10MOONSDEV 6 //it is not device of 10Moons //动态检测回调
typedef void (CALLBACK *PrcCbMotionDetect)( DWORD dwCard, BOOL bMove, LPVOID lpContext );
//视频捕获原始数据回调
typedef void (CALLBACK *PrcVidCapCallBack)( DWORD dwCard, BYTE *pbuff, DWORD dwSize );
//视频MPEG压缩数据回调
typedef void (CALLBACK *PrcVidMpegCallBack)( DWORD dwCard, BYTE *pbuff, DWORD dwSize, BOOL isKeyFrm );
//视频捕获存盘出错回调
typedef void (CALLBACK *PrcVidSaveErrCallBack)( DWORD dwCard );
//视频捕获字幕叠加出错回调
typedef void (CALLBACK *PrcVidOSDErrCallBack)( DWORD dwCard, DWORD dwOSDNum );
//音频捕获原始数据回调
//音频包原始大小16 Bit PCM格式,8080 BYTE,2声道,32000Hz
typedef void (CALLBACK *PrcAudCapCallBack)( DWORD dwCard, BYTE *pbuff,DWORD dwSize );
//音频MPEG压缩数据回调
typedef void (CALLBACK *PrcAudMpegCallBack)( DWORD dwCard, BYTE *pbuff,DWORD dwSize );
//音频捕获存盘出错回调
typedef void (CALLBACK *PrcAudSaveErrCallBack)( DWORD dwCard );
//IO报警回调
typedef void (CALLBACK *PrcIoAlertCallBack)( DWORD dwCard );
//视频Mpeg处理回调 ,pPorcess 返回为TRUE 表示当前帧压缩;返回为FALSE 表示丢掉当前帧
typedef void (CALLBACK *PrcVidMpegPorCallBack)( DWORD dwCard, BOOL* pPorcess );
//音频Mpeg处理回调,pPorcess 返回为TRUE 表示当音频包压缩;返回为FALSE 表示丢掉当前音频包。
typedef void (CALLBACK *PrcAudMpegPorCallBack)( DWORD dwCard, BOOL* pPorcess );
//注册视频捕获原始数据回调
BOOL  WINAPI VCARegVidCapCallBack( DWORD dwCard, PrcVidCapCallBack ppCall );
//注册视频MPEG压缩数据回调
BOOL  WINAPI VCARegVidMpegCallBack( DWORD dwCard, PrcVidMpegCallBack ppCall );
//注册视频捕获存盘出错回调
BOOL  WINAPI VCARegVidSaveErrCallBack( DWORD dwCard, PrcVidSaveErrCallBack ppCall );
//注册视频捕获字幕叠加出错回调
BOOL WINAPI VCARegVidOSDErrCallBack( DWORD dwCard, PrcVidOSDErrCallBack ppCall );
//设置错误序号
void  WINAPI VCASetLastError( DWORD dwError );
//得到错误序号
DWORD WINAPI VCAGetLastError();
//初始化SDK
BOOL  WINAPI VCAInitSdk( HWND hWndMain );
//释放SDK资源
void  WINAPI VCAUnInitSdk();
//得到设备总数
LONG  WINAPI VCAGetDevNum();
//打开设备,hPreviewWnd为视频预览窗口的句柄,该窗口背景色用户必需设置为RGB(255,0,255)
BOOL  WINAPI VCAOpenDevice( DWORD dwCard,HWND hPreviewWnd );
//关闭设备
BOOL  WINAPI VCACloseDevice( DWORD dwCard );
//开始视频预览
BOOL  WINAPI VCAStartVideoPreview( DWORD dwCard );
//停止视频预览
BOOL  WINAPI VCAStopVideoPreview( DWORD dwCard );
//设置视频预览尺寸

解决方案 »

  1.   

    BOOL  WINAPI VCASetVidPreviewSize( DWORD dwCard, DWORD dwWidth, DWORD dwHeight );
    //得到视频预览尺寸
    BOOL  WINAPI VCAGetVidPreviewSize( DWORD dwCard, DWORD &dwWidth, DWORD &dwHeight );
    //更新视频预览,比如改变了显示窗口时,调用。
    BOOL  WINAPI VCAUpdateVideoPreview( DWORD dwCard, HWND hPreviewWnd );
    //保存快照数据到相应的缓冲区
    BOOL  WINAPI VCASaveBitsToBuf( DWORD dwCard, PVOID pDestBuf, DWORD& dwWidth, DWORD& dwHeight );
    //保存快照为JPEG文件
    BOOL  WINAPI VCASaveAsJpegFile( DWORD dwCard, LPCTSTR lpFileName,DWORD dwQuality = 100 );
    //保存快照为BMP文件
    BOOL  WINAPI VCASaveAsBmpFile( DWORD dwCard, LPCTSTR lpFileName );
    //开始视频捕获
    BOOL  WINAPI VCAStartVideoCapture( DWORD dwCard,
       CAPMODEL     enCapMode,
       MP4MODEL enMp4Mode,
       LPCTSTR lpFileName );
    //停止视频捕获
    BOOL  WINAPI VCAStopVideoCapture( DWORD dwCard );
    //设置视频捕获尺寸
    BOOL  WINAPI VCASetVidCapSize( DWORD dwCard, DWORD dwWidth, DWORD dwHeight );
    //得到视频捕获尺寸
    BOOL  WINAPI VCAGetVidCapSize( DWORD dwCard, DWORD &dwWidth, DWORD &dwHeight );/*设置视频捕获帧率,bFrameRateReduction参数表示是否允许显示帧率随捕获帧率的而减小。 当bFrameRateReduction为FALSE时以下有效。
    PAL显示帧率显示帧率始终为25,NTSC显示帧率始终为30 当bFrameRateReduction为TRUE时以下有效,这样有助缓解多路视频捕获时PCI总线的负荷量。
    PAL捕获帧率 PAL显示帧率 NTSC捕获帧率 NTSC显示帧率
    1 1 1 1
    2 2  + 1/2 2 2
    3 3  + 1/8 3 3
    4 4  + 1/6 4 4  + 2/7
    5 5 5 5
    6 6  + 1/4 6 6
    7 8  + 1/3 7 7  + 1/2
    8 8  + 1/3 8 10
    9 12 + 1/2 9 10
    10 12 + 1/2 10 10
    11 12 + 1/2 11 15
    12 12 + 1/2 12 15
    13 25 13 15
    14 25 14 15
    15 25 15 15
    16 25 16 30
    17 25 17 30
    18 25 18 30
    19 25 19 30
    20 25 20 30
    21 25 21 30
    22 25 22 30
    23 25 23 30
    24 25 24 30
    25 25 25 30
    26 30
    27 30
    28 30
    29 30
    30 30
    */
    BOOL  WINAPI VCASetVidCapFrameRate( DWORD dwCard, DWORD dwFrameRate, BOOL bFrameRateReduction = FALSE );
    //设置MPEG压缩的位率,范围:56bps ~ 10Mbps; 单位Kbps
    BOOL  WINAPI VCASetBitRate( DWORD dwCard, DWORD dwBitRate);
    //设置MPEG压缩的关键帧间隔,必须大于等于帧率
    BOOL  WINAPI VCASetKeyFrmInterval( DWORD dwCard, DWORD dwKeyFrmInterval);
    //设置MPEG压缩的质量 dwQuantizer: 1 ~ 31 (1为最小量度,压缩质量最好); dwMotionPrecision: 0 ~ 6 (0最小运动精度)
    BOOL  WINAPI VCASetXVIDQuality( DWORD dwCard, DWORD dwQuantizer, DWORD dwMotionPrecision);
    //设置MPEG压缩模式
    BOOL  WINAPI VCASetXVIDCompressMode( DWORD dwCard, COMPRESSMODE enCompessMode );
    //设置动态检测,视频捕获停止时调用有效
    BOOL  WINAPI VCAEnableMotionDetect( DWORD   dwCard,    
        BOOL   bEnaDetect,   //是否允许动态检测
        BYTE   *pAreaMap,          //运动检测地图
        LONG   nSizeOfMap,   //pAreaMap尺寸,以BYTE为单位
        LONG   nPersistTime,       //物体持续nPersistTime秒不动则认为停止 1-30s
        LPVOID   lpContext,   //监测上下文
        PrcCbMotionDetect OnObjectMove );     //运动/停止回调函数//设置视频色彩
    BOOL  WINAPI VCASetVidDeviceColor( DWORD dwCard, COLORCONTROL enCtlType, DWORD dwValue );
    //得到视频源输入频率( 0HZ / 50HZ / 60HZ )对应( 无信号 / PAL制 / NTSC制 ), 参考枚举变量eFieldFrequency
    BOOL  WINAPI VCAGetVidFieldFrq( DWORD dwCard, eFieldFrequency &eVidSourceFieldRate );
    //暂停捕获,暂停视频捕获和音频捕获,可用于快速改变音视频捕获类型和文件切换,设置视频捕获字幕叠加
    BOOL  WINAPI VCAPauseCapture( DWORD dwCard );
    //设置视频捕获文本叠加,视频捕获停止时或捕获暂停时调用有效
    BOOL  WINAPI VCASetVidCapTextOSD( DWORD dwCard, BOOL bEnableOSD, TCHAR* tcText, POINT ptTopLeft, BOOL bTransparent, OSDPARAM* pOSDParm );
    //设置视频捕获时间、日期叠加,在VCASetVidCapDateTimeOSDPARAM()函数设置后调用有效
    BOOL  WINAPI VCASetVidCapDateTimeOSD( DWORD dwCard, BOOL bEnableOSD, POINT ptTopLeft, BOOL bTransparent);
    //设置视频捕获字幕叠加,视频捕获停止时或捕获暂停时调用有效
    BOOL  WINAPI VCASetVidCapDateTimeOSDParam( OSDPARAM* pOSDParm );
    //允许视频Mpeg处理回调
    BOOL  WINAPI VCAEnableVidMpegProcess( DWORD dwCard, BOOL bEnPorcess, PrcVidMpegPorCallBack ppCall );
    #endif
      

  2.   

    它的网站BBS也关了,怎么这倒霉呀,急
      

  3.   

    //#ifndef VC404_CAPTURE_SAA7134
    #define VC404_CAPTURE_SAA7134#ifdef SAA7134CAPTURE_EXPORTS
    #define SAA7134CAPTURE_API __declspec(dllexport)
    #else
    #define SAA7134CAPTURE_API __declspec(dllimport)
    #endif这些可以略过//static const ULONG BrightnessDefault = 0x80;
    这样的凑合着声明为long:
    Const BrightnessDefault As Long = &H80//#define MIN_VAMP_BRIGHTNESS_UNITS 0
    这样的和上面一样声明:
    Const MIN_VAMP_BRIGHTNESS_UNITS As Long = 0//typedef enum { //@enum Decoder control types
    BRIGHTNESS = 0, //@emem control for brightness
    CONTRAST = 1, //@emem control for contrast
    SATURATION = 2, //@emem control for saturation
    HUE = 3, //@emem control for hue
    SHARPNESS = 4 //@emem control for sharpness
    }COLORCONTROL;
    这样的这样声明:
    Enum COLORCONTROL
        BRIGHTNESS = 0&
        CONTRAST = 1&
        SATURATION = 2&
        HUE = 3&
        SHARPNESS = 4&
    End Enum//typedef struct
    {LONG cfHeight; //字符高度
    LONG cfWidth; //字符宽度
    LONG cfWeight; //字符粗细
    LONG cfSpacing; //字符间距
    BOOL cfItalic; //斜体
    BOOL cfUnderline; //下划线
    BOOL cfStrikeOut; //删除线
    COLORREF cfBkColor; //背景色
    COLORREF cfTextColor; //前景色
    TCHAR cfFaceName[32]; //字体名
    }OSDPARAM;
    这样的这样声明
    Type OSDPARAM
        cfHeight As Long ' ; //字符高度
        cfWidth As Long '; //字符宽度
        cfWeight As Long '; //字符粗细
        cfSpacing As Long '; //字符间距
        cfItalic As Boolean '; //斜体
        cfUnderline As Boolean '; //下划线
        cfStrikeOut As Long '; //删除线
        cfBkColor As Long ' ; //背景色
        cfTextColor As Long ' ; //前景色
        cfFaceName(32 - 1) As Byte '; //字体名
    End Type
      

  4.   

    我记得天敏的有VB用的OCX的.直接用OCX就行了呀
      

  5.   

    至于函数的声明,也比较简单:比如说这个:
    ///动态检测回调
    typedef void (CALLBACK *PrcCbMotionDetect)( DWORD dwCard, BOOL bMove, LPVOID lpContext );应该声明为:
    Declare Sub PrcCbMotionDetect Lib "sa7130capture.dll" (ByVal dwCard As Long, ByVal bMove As Boolean, ByVal lpContext)但是,声明为:
    Declare Function PrcCbMotionDetect Lib "sa7130capture.dll" (ByVal dwCard As Long, ByVal bMove As Boolean, ByVal lpContext) As Long
    问题也不会太大上面我都是用byval传递参数的,在你实际调用中你应该根据文档中具体参数的说明,进行选择,如果参数是用来输入的([in]),那么用byval没什么问题,如果参数是用来输出的,你最好用byref,但是用byval 也不是不可以(需要修改声明)比如说这个:
    ////得到视频捕获尺寸
    BOOL WINAPI VCAGetVidCapSize( DWORD dwCard, DWORD &dwWidth, DWORD &dwHeight );
    一般这么声明:
    Declare Function VCAGetVidCapSize Lib "sa7130capture.dll" (ByVal dwCard As Long, dwWidth As Long, dwHeight As Long) As Boolean
    调用的时候应该这样:
    dim w as long
    dim h as long
    dim ret as boolean
    ret=VCAGetVidCapSize(dwCard,w,h)
    调用后你会得到w、h的值
    而你这样声明应该也可以:
    Declare Function VCAGetVidCapSize Lib "sa7130capture.dll" (ByVal dwCard As Long, byval dwWidth As Long, byval dwHeight As Long) As Boolean
    不过调用的时候,就要传递变量的地址了,像这样:
    dim w as long
    dim h as long
    dim ret as boolean
    ret=VCAGetVidCapSize(dwCard,varptr(w),varptr(h))
    所以说关键不在于你怎么声明,而在于你怎么调用,而怎么调用,则取决于sdk中的说明,没有sdk的话,你就先试着写一下声明,然后调用,不成功的话,就尝试修改一下参数的声明