有人用过天敏的VC4000的视频捕捉卡吗,它的DLL在VB中就如何申明?
函数名称为:
sa7130capture.dll,
这是它的头文件
#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;
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 );
//设置视频预览尺寸