Machine Interface Utility:VER1.0
This commit is contained in:
@@ -0,0 +1,284 @@
|
||||
// sdk3000_7130.h : main header file for the SDK3000_7130 DLL
|
||||
//
|
||||
|
||||
#if !defined(AFX_SDK3000_7130_H__37FDA63D_0A84_4797_9E52_320E37C41382__INCLUDED_)
|
||||
#define AFX_SDK3000_7130_H__37FDA63D_0A84_4797_9E52_320E37C41382__INCLUDED_
|
||||
|
||||
|
||||
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
|
||||
|
||||
//图像格式
|
||||
typedef enum
|
||||
{
|
||||
IMAGE_BMP = 1, //BMP文件格式
|
||||
IMAGE_JPG = 2 //JPG文件格式
|
||||
}enImageType;
|
||||
|
||||
//输入视频源端口
|
||||
typedef enum
|
||||
{
|
||||
VIDEO_IN_1 = 0, //AV视频源1
|
||||
VIDEO_IN_2 = 1, //AV视频源2
|
||||
VIDEO_IN_3 = 2, //AV视频源3
|
||||
VIDEO_IN_4 = 3, //AV视频源4
|
||||
SVIDEO_IN = 4 //SVIDEO视频源
|
||||
}VIDEOSOURCE;
|
||||
|
||||
//视频处理属性
|
||||
typedef enum tagVideoProcAmpProperty
|
||||
{
|
||||
VideoProcAmp_Brightness = 0,
|
||||
VideoProcAmp_Contrast = VideoProcAmp_Brightness + 1,
|
||||
VideoProcAmp_Hue = VideoProcAmp_Contrast + 1,
|
||||
VideoProcAmp_Saturation = VideoProcAmp_Hue + 1,
|
||||
VideoProcAmp_Sharpness = VideoProcAmp_Saturation + 1,
|
||||
VideoProcAmp_Gamma = VideoProcAmp_Sharpness + 1,
|
||||
VideoProcAmp_ColorEnable = VideoProcAmp_Gamma + 1,
|
||||
VideoProcAmp_WhiteBalance = VideoProcAmp_ColorEnable + 1,
|
||||
VideoProcAmp_BacklightCompensation = VideoProcAmp_WhiteBalance + 1,
|
||||
VideoProcAmp_Gain = VideoProcAmp_BacklightCompensation + 1
|
||||
}VideoProcAmpProperty;
|
||||
|
||||
//视频属性
|
||||
typedef enum
|
||||
{
|
||||
VideoProperty_Brightness = VideoProcAmp_Brightness, //亮度
|
||||
VideoProperty_Contrast = VideoProcAmp_Contrast, //对比度
|
||||
VideoProperty_Hue = VideoProcAmp_Hue, //色度
|
||||
VideoProperty_Saturation = VideoProcAmp_Saturation, //饱和度
|
||||
VideoProperty_Gamma = VideoProcAmp_Gamma, //Gamma校验
|
||||
VideoProperty_ColorEnable = VideoProcAmp_ColorEnable,
|
||||
VideoProperty_WhiteBalance = VideoProcAmp_WhiteBalance, //白平衡
|
||||
VideoProperty_BacklightCompensation = VideoProcAmp_BacklightCompensation,
|
||||
VideoProperty_Sharpness = VideoProcAmp_Sharpness,
|
||||
VideoProperty_Gain = VideoProcAmp_Gain,
|
||||
} VideoProperty;
|
||||
|
||||
//SDK3000属性页
|
||||
typedef enum
|
||||
{
|
||||
PropertyDlg_VideoCaptureFilter = 0,//SDK3000视频设备属性页
|
||||
PropertyDlg_VideoCapturePin, //SDK3000视频设备输出引脚属性页
|
||||
PropertyDlg_VideoCrossbar, //Video Crossbar属性页
|
||||
PropertyDlg_DeinterlaceFilter, //Deinterlace设备属性页
|
||||
PropertyDlg_DeinterlaceCapturePin, //Deinterlace设备捕获引脚属性页
|
||||
PropertyDlg_DeinterlacePreviewPin //Deinterlace设备预览引脚属性页
|
||||
} PropertyDialog;
|
||||
|
||||
//视频运行状态
|
||||
typedef enum{
|
||||
STATE_STOP = 0,
|
||||
STATE_RUN,
|
||||
STATE_PAUSE
|
||||
}GRAPH_STATE;
|
||||
|
||||
//视频格式
|
||||
//VideoSubType_YUY2格式支持SDK3000所有功能。
|
||||
//视频制式除VideoSubType_YUY2外,只能支持视频原始回调方式。
|
||||
typedef enum
|
||||
{
|
||||
VideoSubType_None = -1,
|
||||
VideoSubType_RGB555 = 0,
|
||||
VideoSubType_RGB24,
|
||||
VideoSubType_YUY2,
|
||||
VideoSubType_RGB8,
|
||||
VideoSubType_RGB32
|
||||
} VideoSubType;
|
||||
|
||||
//视频制式
|
||||
typedef enum
|
||||
{
|
||||
VideoStandard_None = 0x00000000,
|
||||
VideoStandard_NTSC_M = 0x00000001,
|
||||
VideoStandard_NTSC_M_J = 0x00000002,
|
||||
VideoStandard_NTSC_433 = 0x00000004,
|
||||
VideoStandard_PAL_B = 0x00000010,
|
||||
VideoStandard_PAL_D = 0x00000020,
|
||||
VideoStandard_PAL_H = 0x00000080,
|
||||
VideoStandard_PAL_I = 0x00000100,
|
||||
VideoStandard_PAL_M = 0x00000200,
|
||||
VideoStandard_PAL_N = 0x00000400,
|
||||
VideoStandard_PAL_60 = 0x00000800,
|
||||
VideoStandard_SECAM_B = 0x00001000,
|
||||
VideoStandard_SECAM_D = 0x00002000,
|
||||
VideoStandard_SECAM_G = 0x00004000,
|
||||
VideoStandard_SECAM_H = 0x00008000,
|
||||
VideoStandard_SECAM_K = 0x00010000,
|
||||
VideoStandard_SECAM_K1 = 0x00020000,
|
||||
VideoStandard_SECAM_L = 0x00040000,
|
||||
VideoStandard_SECAM_L1 = 0x00080000,
|
||||
} VideoStandard;
|
||||
|
||||
//场类型
|
||||
typedef enum
|
||||
{
|
||||
Even_Field = 0, //偶场
|
||||
Odd_Field, //奇场
|
||||
Odd_Even_Field, //奇场、偶场
|
||||
Interlaced_Field//复合场
|
||||
}VideoFieldType;
|
||||
|
||||
//视频叠加参数
|
||||
typedef struct
|
||||
{
|
||||
LONG cfHeight; //字符高度
|
||||
LONG cfWidth; //字符宽度
|
||||
LONG cfWeight; //字符粗细
|
||||
LONG cfSpacing; //字符间距
|
||||
BOOL cfItalic; //斜体
|
||||
BOOL cfUnderline; //下划线
|
||||
BOOL cfStrikeOut; //删除线
|
||||
COLORREF cfBkColor; //背景色
|
||||
COLORREF cfTextColor; //前景色
|
||||
TCHAR cfFaceName[32]; //字体名
|
||||
}OSDPARAM;
|
||||
|
||||
//视频属性范围
|
||||
typedef struct
|
||||
{
|
||||
long nValue; //当前值
|
||||
long nMin; //最小值
|
||||
long nMax; //最大值
|
||||
long nStepDelta; //最小步进值
|
||||
long nDefault; //默认值
|
||||
long nCapsFlags; //风格
|
||||
} VIDEOPROPERTYRANGE;
|
||||
|
||||
//视频流信息
|
||||
typedef struct
|
||||
{
|
||||
VideoSubType subtype; //视频格式
|
||||
RECT rcSource; //视频源范围
|
||||
RECT rcTarget; //目标视频范围
|
||||
DWORD dwBitRate; //比特率
|
||||
DWORD dwBitErrorRate; //比特错误率
|
||||
LONGLONG AvgTimePerFrame;//帧率
|
||||
BITMAPINFOHEADER bmiHeader; //宽、高、颜色位率等
|
||||
} VIDEOSTREAMINFO;
|
||||
|
||||
//视频源输入频率
|
||||
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 void (CALLBACK *PrcCbMotionDetect)( long lnCardID, BOOL bMove, LPVOID lpContext );
|
||||
//捕获原始流回调
|
||||
typedef void (CALLBACK *PrcCapSourceStream)( long lnCardID, long pBuf, long lnWidth, long lnHeight, long lnBiCount );
|
||||
//IO报警回调
|
||||
typedef void (CALLBACK *PrcIoAlertCallBack)( long lnCardID );
|
||||
typedef void (CALLBACK *PrcPicMessage)( long lnCardID, long pBuf, long lnWidth, long lnHeight);
|
||||
//初始化SDK
|
||||
HRESULT WINAPI VCAInitSdk();
|
||||
//释放SDK资源
|
||||
void WINAPI VCAUnInitSdk();
|
||||
//得到SDK3000设备总数
|
||||
HRESULT WINAPI VCAGetDevNum(int *pDevNum);
|
||||
//连接设备
|
||||
HRESULT WINAPI VCAConnectDevice(int nCards, BOOL bOverlay, HWND hParentWnd, SIZE& szVidSize, VIDEOSOURCE enVideoSource, int nFrameRate = 25, VideoSubType enVideoSubType = VideoSubType_YUY2);
|
||||
//断开设备
|
||||
HRESULT WINAPI VCADisConnectDevice(int nCards);
|
||||
//设置捕获文件名
|
||||
HRESULT WINAPI VCASetCaptureFile(int nCards, LPCTSTR szFileName);
|
||||
//开始捕获
|
||||
HRESULT WINAPI VCAStartCapture(int nCards);
|
||||
//停止捕获
|
||||
HRESULT WINAPI VCAStopCapture(int nCards);
|
||||
//是否正在捕获
|
||||
HRESULT WINAPI VCAIsCapturing(int nCards, BOOL* bIsCapturing);
|
||||
//设置视频在显示窗口中的区域
|
||||
HRESULT WINAPI VCASetWindowPos(int nCards, RECT rc);
|
||||
//设置动态检测
|
||||
HRESULT WINAPI VCAEnableMotionDetect(int nCards, BOOL bEnaDetect, BYTE *pAreaMap, LONG nSizeOfMap, LONG nPersistTime, LPVOID lpContext, PrcCbMotionDetect OnObjectMove);
|
||||
//抓图
|
||||
HRESULT WINAPI VCACapturePicture(int nCards, LPCTSTR szFileName, enImageType enImgType, RECT* rcImg, long nQuality, long nCapCount, BOOL bCapFast );
|
||||
//切换视频源
|
||||
HRESULT WINAPI VCASwitchVideoSource(int nCards, VIDEOSOURCE enVideoSource, BOOL bFast = TRUE );
|
||||
//设置视频属性
|
||||
HRESULT WINAPI VCASetVideoPropertyValue(int nCards, VideoProperty eVideoProperty, long value);
|
||||
//得到视频属性
|
||||
HRESULT WINAPI VCAGetVideoPropertyValue(int nCards, VideoProperty eVideoProperty, VIDEOPROPERTYRANGE* pVPR);
|
||||
//IO输出
|
||||
HRESULT WINAPI VCAIOAlertOut(int nCards, BOOL bHighLevel);
|
||||
//初始化IO输入
|
||||
HRESULT WINAPI VCAInitIOAlertIn(int nCards, PrcIoAlertCallBack ppCall);
|
||||
//开始等待IO输入
|
||||
HRESULT WINAPI VCAStartIOAlertIn(int nCards, BOOL bHigh);
|
||||
//停止等待IO输入
|
||||
HRESULT WINAPI VCAStopIOAlertIn(int nCards);
|
||||
//设置文本叠加
|
||||
HRESULT WINAPI VCASetTextOSD(int nCards, BOOL bEnableOSD, TCHAR* pText, POINT ptTopLeft, BOOL bTransparent, OSDPARAM* pOSD, HWND nWndMain);
|
||||
//设置时间叠加
|
||||
HRESULT WINAPI VCASetDateTimeOSD(int nCards, BOOL bEnableOSD, POINT ptTopLeft, BOOL bTransparent, OSDPARAM* pOSD, HWND nWndMain);
|
||||
//显示属性页对话框
|
||||
HRESULT WINAPI VCADisplayPropertyDialogs(int nCards, PropertyDialog id, HWND hParentWnd, LPCTSTR szCaption);
|
||||
//运行视频流
|
||||
HRESULT WINAPI VCARun(int nCards);
|
||||
//暂停视频流
|
||||
HRESULT WINAPI VCAPause(int nCards);
|
||||
//停止视频流
|
||||
HRESULT WINAPI VCAStop(int nCards);
|
||||
//得到视频流状况
|
||||
HRESULT WINAPI VCAGetStreamStatus(int nCards, GRAPH_STATE* pStatus);
|
||||
//设置视频帧率
|
||||
HRESULT WINAPI VCASetFrameRate(int nCards, int nFrameRate);
|
||||
//得到视频信息
|
||||
HRESULT WINAPI VCAGetVideoInfo(int nCards, VIDEOSTREAMINFO * pVSI);
|
||||
//设置视频信息
|
||||
HRESULT WINAPI VCASetVideoInfo(int nCards, VIDEOSTREAMINFO * pVSI);
|
||||
//设置视频大小为全屏
|
||||
HRESULT WINAPI VCASetFullScreen(int nCards, BOOL bFullSrc);
|
||||
//是否视频为全屏模式
|
||||
HRESULT WINAPI VCAIsFullSrcMode(int nCards, BOOL* pFullSrc);
|
||||
//得到视频制式
|
||||
HRESULT WINAPI VCAGetVideoStandard(int nCards, VideoStandard* pVideoStandard, long* pAvailable);
|
||||
//设置视频制式
|
||||
HRESULT WINAPI VCASetVideoStandard(int nCards, VideoStandard vs);
|
||||
//枚举视频压缩格式
|
||||
HRESULT WINAPI VCAEnumVideoCompressor(int nCards, char* arrCompDevName,int * pCompDevCount);
|
||||
//得到视频当前压缩格式
|
||||
HRESULT WINAPI VCAGetCurrentVideoCompressor(int nCards, LPSTR pCompDevName);
|
||||
//枚举视频当前压缩格式
|
||||
HRESULT WINAPI VCASetCurrentVideoCompressor(int nCards, LPCTSTR pCompDevName);
|
||||
//设置视频原始回调格式
|
||||
HRESULT WINAPI VCAEnableCapSourceStream(int nCards, BOOL bCapStream, VideoFieldType enVideoFieldType, PrcCapSourceStream pCapStream);
|
||||
//
|
||||
HRESULT WINAPI VCAEnablePicMessage(int nCards, BOOL bPicMessage, PrcPicMessage pPicMessage);
|
||||
//读E2C
|
||||
HRESULT WINAPI VCAReadE2C(int nCards, int iSubAddr, BYTE* pucData);
|
||||
//写E2C
|
||||
HRESULT WINAPI VCAWriteE2C(int nCards, int iSubAddr, BYTE ucData);
|
||||
//得到视频源输入频率( 0HZ / 50HZ / 60HZ )对应( 无信号 / PAL制 / NTSC制 ), 参考枚举变量eFieldFrequency
|
||||
HRESULT WINAPI VCAGetVideoFieldFrq(int nCards, eFieldFrequency* pFieldFrequency);
|
||||
//枚举音频设备
|
||||
HRESULT WINAPI VCAEnumAudioCaptureDev(int nCards, char* arrAudDevName,int * pAudDevCount);
|
||||
//通过音频设备名设置音频采集,一个音频设备(声卡)仅供一路卡, strAudDevName 为"",表示取消音频采集
|
||||
HRESULT WINAPI VCASetCurrentAudioCompressorName(int nCards, LPCTSTR strAudDevName);
|
||||
//通过音频设备序号设置音频采集,一个音频设备(声卡)仅供一路卡, nCurrentAudDevice 为-1,表示取消音频采集
|
||||
HRESULT WINAPI VCASetCurrentAudioCompressorNum(int nCards, int nCurrentAudDevice);
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#endif // !defined(AFX_SDK3000_7130_H__37FDA63D_0A84_4797_9E52_320E37C41382__INCLUDED_)
|
||||
Binary file not shown.
@@ -0,0 +1,328 @@
|
||||
// sdk3000_7130.h : main header file for the SDK3000_7130 DLL
|
||||
//
|
||||
|
||||
#if !defined(AFX_SDK3000_7130_H__37FDA63D_0A84_4797_9E52_320E37C41382__INCLUDED_)
|
||||
#define AFX_SDK3000_7130_H__37FDA63D_0A84_4797_9E52_320E37C41382__INCLUDED_
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#ifdef SDK3000_7130_EXPORTS
|
||||
#define SDK_API extern "C" __declspec(dllexport)
|
||||
#else
|
||||
#define SDK_API extern "C" __declspec(dllimport)
|
||||
#endif
|
||||
|
||||
static const ULONG BrightnessDefault = 0x87;
|
||||
static const ULONG ContrastDefault = 0x44;
|
||||
static const ULONG SaturationDefault = 0x00;
|
||||
static const ULONG HueDefault = 0x40;
|
||||
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
|
||||
|
||||
//图像格式
|
||||
typedef enum
|
||||
{
|
||||
IMAGE_BMP = 1, //BMP文件格式
|
||||
IMAGE_JPG = 2 //JPG文件格式
|
||||
}enImageType;
|
||||
|
||||
//输入视频源端口
|
||||
typedef enum
|
||||
{
|
||||
VIDEO_IN_1 = 0, //AV视频源1
|
||||
VIDEO_IN_2 = 1, //AV视频源2
|
||||
VIDEO_IN_3 = 2, //AV视频源3
|
||||
VIDEO_IN_4 = 3, //AV视频源4
|
||||
SVIDEO_IN = 4 //SVIDEO视频源
|
||||
}VIDEOSOURCE;
|
||||
|
||||
//视频处理属性
|
||||
typedef enum tagVideoProcAmpProperty
|
||||
{
|
||||
VideoProcAmp_Brightness = 0,
|
||||
VideoProcAmp_Contrast = VideoProcAmp_Brightness + 1,
|
||||
VideoProcAmp_Hue = VideoProcAmp_Contrast + 1,
|
||||
VideoProcAmp_Saturation = VideoProcAmp_Hue + 1,
|
||||
VideoProcAmp_Sharpness = VideoProcAmp_Saturation + 1,
|
||||
VideoProcAmp_Gamma = VideoProcAmp_Sharpness + 1,
|
||||
VideoProcAmp_ColorEnable = VideoProcAmp_Gamma + 1,
|
||||
VideoProcAmp_WhiteBalance = VideoProcAmp_ColorEnable + 1,
|
||||
VideoProcAmp_BacklightCompensation = VideoProcAmp_WhiteBalance + 1,
|
||||
VideoProcAmp_Gain = VideoProcAmp_BacklightCompensation + 1
|
||||
}VideoProcAmpProperty;
|
||||
|
||||
//视频属性
|
||||
typedef enum
|
||||
{
|
||||
VideoProperty_Brightness = VideoProcAmp_Brightness, //亮度
|
||||
VideoProperty_Contrast = VideoProcAmp_Contrast, //对比度
|
||||
VideoProperty_Hue = VideoProcAmp_Hue, //色度
|
||||
VideoProperty_Saturation = VideoProcAmp_Saturation, //饱和度
|
||||
VideoProperty_Gamma = VideoProcAmp_Gamma, //Gamma校验
|
||||
VideoProperty_ColorEnable = VideoProcAmp_ColorEnable,
|
||||
VideoProperty_WhiteBalance = VideoProcAmp_WhiteBalance, //白平衡
|
||||
VideoProperty_BacklightCompensation = VideoProcAmp_BacklightCompensation,
|
||||
VideoProperty_Sharpness = VideoProcAmp_Sharpness,
|
||||
VideoProperty_Gain = VideoProcAmp_Gain,
|
||||
} VideoProperty;
|
||||
|
||||
//SDK3000属性页
|
||||
typedef enum
|
||||
{
|
||||
PropertyDlg_VideoCaptureFilter = 0,//SDK3000视频设备属性页
|
||||
PropertyDlg_VideoCapturePin, //SDK3000视频设备输出引脚属性页
|
||||
PropertyDlg_VideoCrossbar, //Video Crossbar属性页
|
||||
PropertyDlg_DeinterlaceFilter, //Deinterlace设备属性页
|
||||
PropertyDlg_DeinterlaceCapturePin, //Deinterlace设备捕获引脚属性页
|
||||
PropertyDlg_DeinterlacePreviewPin //Deinterlace设备预览引脚属性页
|
||||
} PropertyDialog;
|
||||
|
||||
//视频运行状态
|
||||
typedef enum{
|
||||
STATE_STOP = 0,
|
||||
STATE_RUN,
|
||||
STATE_PAUSE
|
||||
}GRAPH_STATE;
|
||||
|
||||
//视频格式
|
||||
//VideoSubType_YUY2格式支持SDK3000所有功能。
|
||||
//视频制式除VideoSubType_YUY2外,只能支持视频原始回调方式。
|
||||
typedef enum
|
||||
{
|
||||
VideoSubType_None = -1,
|
||||
VideoSubType_RGB555 = 0,
|
||||
VideoSubType_RGB24,
|
||||
VideoSubType_YUY2,
|
||||
VideoSubType_RGB8,
|
||||
VideoSubType_RGB32
|
||||
} VideoSubType;
|
||||
|
||||
//视频制式
|
||||
typedef enum
|
||||
{
|
||||
VideoStandard_None = 0x00000000,
|
||||
VideoStandard_NTSC_M = 0x00000001,
|
||||
VideoStandard_NTSC_M_J = 0x00000002,
|
||||
VideoStandard_NTSC_433 = 0x00000004,
|
||||
VideoStandard_PAL_B = 0x00000010,
|
||||
VideoStandard_PAL_D = 0x00000020,
|
||||
VideoStandard_PAL_H = 0x00000080,
|
||||
VideoStandard_PAL_I = 0x00000100,
|
||||
VideoStandard_PAL_M = 0x00000200,
|
||||
VideoStandard_PAL_N = 0x00000400,
|
||||
VideoStandard_PAL_60 = 0x00000800,
|
||||
VideoStandard_SECAM_B = 0x00001000,
|
||||
VideoStandard_SECAM_D = 0x00002000,
|
||||
VideoStandard_SECAM_G = 0x00004000,
|
||||
VideoStandard_SECAM_H = 0x00008000,
|
||||
VideoStandard_SECAM_K = 0x00010000,
|
||||
VideoStandard_SECAM_K1 = 0x00020000,
|
||||
VideoStandard_SECAM_L = 0x00040000,
|
||||
VideoStandard_SECAM_L1 = 0x00080000,
|
||||
} VideoStandard;
|
||||
|
||||
//场类型
|
||||
typedef enum
|
||||
{
|
||||
Even_Field = 0, //偶场
|
||||
Odd_Field, //奇场
|
||||
Odd_Even_Field, //奇场、偶场
|
||||
Interlaced_Field//复合场
|
||||
}VideoFieldType;
|
||||
|
||||
|
||||
#define MAX_FACENAME 32
|
||||
//视频叠加参数
|
||||
typedef struct
|
||||
{
|
||||
LONG cfHeight; //字符高度
|
||||
LONG cfWidth; //字符宽度
|
||||
LONG cfWeight; //字符粗细
|
||||
LONG cfSpacing; //字符间距
|
||||
BOOL cfItalic; //斜体
|
||||
BOOL cfUnderline; //下划线
|
||||
BOOL cfStrikeOut; //删除线
|
||||
COLORREF cfBkColor; //背景色
|
||||
COLORREF cfTextColor; //前景色
|
||||
TCHAR cfFaceName[MAX_FACENAME]; //字体名
|
||||
}OSDPARAM;
|
||||
|
||||
//视频属性范围
|
||||
typedef struct
|
||||
{
|
||||
long nValue; //当前值
|
||||
long nMin; //最小值
|
||||
long nMax; //最大值
|
||||
long nStepDelta; //最小步进值
|
||||
long nDefault; //默认值
|
||||
long nCapsFlags; //风格
|
||||
} VIDEOPROPERTYRANGE;
|
||||
|
||||
//视频流信息
|
||||
typedef struct
|
||||
{
|
||||
VideoSubType subtype; //视频格式
|
||||
RECT rcSource; //视频源范围
|
||||
RECT rcTarget; //目标视频范围
|
||||
DWORD dwBitRate; //比特率
|
||||
DWORD dwBitErrorRate; //比特错误率
|
||||
LONGLONG AvgTimePerFrame;//帧率
|
||||
BITMAPINFOHEADER bmiHeader; //宽、高、颜色位率等
|
||||
} VIDEOSTREAMINFO;
|
||||
|
||||
//视频源输入频率
|
||||
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
|
||||
{
|
||||
E_MPEG_MPEG1 = 0, // generic ISO/IEC 11172-1/2
|
||||
E_MPEG_VCD, // MPEG-1 VideoCD
|
||||
E_MPEG_MPEG2, // generic ISO/IEC 13818-1/2
|
||||
E_MPEG_SVCD, // MPEG-2 SuperVCD
|
||||
E_MPEG_DVD // MPEG-2 DVD-Video
|
||||
}eVideoMpegType;
|
||||
|
||||
enum TVRecordFormat
|
||||
{
|
||||
TVRF_AVI = 0,
|
||||
TVRF_MPEG1 = 1,
|
||||
TVRF_MPEG2 = 2,
|
||||
TVRF_MPEG4 = 3,
|
||||
TVRF_VCD = 4,
|
||||
TVRF_SVCD = 5,
|
||||
TVRF_DVD = 6,
|
||||
TVRF_HIDVD = 7,
|
||||
TVRF_CUSTOM
|
||||
};
|
||||
|
||||
|
||||
//动态检测回调
|
||||
typedef void (CALLBACK *PrcCbMotionDetect)( long lnCardID, BOOL bMove, LPVOID lpContext );
|
||||
//捕获原始流回调
|
||||
typedef void (CALLBACK *PrcCapSourceStream)( long lnCardID, long pBuf, long lnWidth, long lnHeight, long lnBiCount );
|
||||
//IO报警回调
|
||||
typedef void (CALLBACK *PrcIoAlertCallBack)( long lnCardID );
|
||||
typedef void (CALLBACK *PrcPicMessage)( long lnCardID, long pBuf, long lnWidth, long lnHeight);
|
||||
//初始化SDK
|
||||
SDK_API HRESULT __stdcall VCAInitSdk();
|
||||
//释放SDK资源
|
||||
SDK_API void __stdcall VCAUnInitSdk();
|
||||
//得到SDK3000设备总数
|
||||
SDK_API HRESULT __stdcall VCAGetDevNum(int *pDevNum);
|
||||
//连接设备
|
||||
SDK_API HRESULT __stdcall VCAConnectDevice(int nCards, BOOL bOverlay, HWND hParentWnd, SIZE& szVidSize, VIDEOSOURCE enVideoSource, int nFrameRate = 25, VideoSubType enVideoSubType = VideoSubType_YUY2);
|
||||
//断开设备
|
||||
SDK_API HRESULT __stdcall VCADisConnectDevice(int nCards);
|
||||
//设置捕获文件名
|
||||
SDK_API HRESULT __stdcall VCASetCaptureFile(int nCards, char* szFileName);
|
||||
//开始捕获
|
||||
SDK_API HRESULT __stdcall VCAStartCapture(int nCards);
|
||||
//停止捕获
|
||||
SDK_API HRESULT __stdcall VCAStopCapture(int nCards);
|
||||
//是否正在捕获
|
||||
SDK_API HRESULT __stdcall VCAIsCapturing(int nCards, BOOL* bIsCapturing);
|
||||
//设置视频在显示窗口中的区域
|
||||
SDK_API HRESULT __stdcall VCASetWindowPos(int nCards, RECT rc);
|
||||
//设置动态检测
|
||||
SDK_API HRESULT __stdcall VCAEnableMotionDetect(int nCards, BOOL bEnaDetect, BYTE *pAreaMap, LONG nSizeOfMap, LONG nPersistTime, LPVOID lpContext, PrcCbMotionDetect OnObjectMove);
|
||||
//抓图
|
||||
SDK_API HRESULT __stdcall VCACapturePicture(int nCards, char* szFileName, enImageType enImgType, RECT* rcImg, long nQuality, long nCapCount, BOOL bCapFast );
|
||||
//切换视频源
|
||||
SDK_API HRESULT __stdcall VCASwitchVideoSource(int nCards, VIDEOSOURCE enVideoSource, BOOL bFast = TRUE );
|
||||
//设置视频属性
|
||||
SDK_API HRESULT __stdcall VCASetVideoPropertyValue(int nCards, VideoProperty eVideoProperty, long value);
|
||||
//得到视频属性
|
||||
SDK_API HRESULT __stdcall VCAGetVideoPropertyValue(int nCards, VideoProperty eVideoProperty, VIDEOPROPERTYRANGE* pVPR);
|
||||
//IO输出
|
||||
SDK_API HRESULT __stdcall VCAIOAlertOut(int nCards, BOOL bHighLevel);
|
||||
//初始化IO输入
|
||||
SDK_API HRESULT __stdcall VCAInitIOAlertIn(int nCards, PrcIoAlertCallBack ppCall);
|
||||
//开始等待IO输入
|
||||
SDK_API HRESULT __stdcall VCAStartIOAlertIn(int nCards, BOOL bHigh);
|
||||
//停止等待IO输入
|
||||
SDK_API HRESULT __stdcall VCAStopIOAlertIn(int nCards);
|
||||
//设置文本叠加
|
||||
SDK_API HRESULT __stdcall VCASetTextOSD(int nCards, BOOL bEnableOSD, TCHAR* pText, POINT ptTopLeft, BOOL bTransparent, OSDPARAM* pOSD, HWND nWndMain);
|
||||
//设置时间叠加
|
||||
SDK_API HRESULT __stdcall VCASetDateTimeOSD(int nCards, BOOL bEnableOSD, POINT ptTopLeft, BOOL bTransparent, OSDPARAM* pOSD, HWND nWndMain);
|
||||
//显示属性页对话框
|
||||
SDK_API HRESULT __stdcall VCADisplayPropertyDialogs(int nCards, PropertyDialog id, HWND hParentWnd, char* szCaption);
|
||||
//运行视频流
|
||||
SDK_API HRESULT __stdcall VCARun(int nCards);
|
||||
//暂停视频流
|
||||
SDK_API HRESULT __stdcall VCAPause(int nCards);
|
||||
//停止视频流
|
||||
SDK_API HRESULT __stdcall VCAStop(int nCards);
|
||||
//得到视频流状况
|
||||
SDK_API HRESULT __stdcall VCAGetStreamStatus(int nCards, GRAPH_STATE* pStatus);
|
||||
//设置视频帧率
|
||||
SDK_API HRESULT __stdcall VCASetFrameRate(int nCards, int nFrameRate);
|
||||
//得到视频信息
|
||||
SDK_API HRESULT __stdcall VCAGetVideoInfo(int nCards, VIDEOSTREAMINFO * pVSI);
|
||||
//设置视频信息
|
||||
SDK_API HRESULT __stdcall VCASetVideoInfo(int nCards, VIDEOSTREAMINFO * pVSI);
|
||||
//设置视频大小为全屏
|
||||
SDK_API HRESULT __stdcall VCASetFullScreen(int nCards, BOOL bFullSrc);
|
||||
//是否视频为全屏模式
|
||||
SDK_API HRESULT __stdcall VCAIsFullSrcMode(int nCards, BOOL* pFullSrc);
|
||||
//得到视频制式
|
||||
SDK_API HRESULT __stdcall VCAGetVideoStandard(int nCards, VideoStandard* pVideoStandard, long* pAvailable);
|
||||
//设置视频制式
|
||||
SDK_API HRESULT __stdcall VCASetVideoStandard(int nCards, VideoStandard vs);
|
||||
//枚举视频压缩格式
|
||||
SDK_API HRESULT __stdcall VCAEnumVideoCompressor(int nCards, char* arrCompDevName,int * pCompDevCount);
|
||||
//得到视频当前压缩格式
|
||||
SDK_API HRESULT __stdcall VCAGetCurrentVideoCompressor(int nCards, char* pCompDevName);
|
||||
//枚举视频当前压缩格式
|
||||
SDK_API HRESULT __stdcall VCASetCurrentVideoCompressor(int nCards, char* pCompDevName);
|
||||
//设置视频原始回调格式
|
||||
SDK_API HRESULT __stdcall VCAEnableCapSourceStream(int nCards, BOOL bCapStream, VideoFieldType enVideoFieldType, PrcCapSourceStream pCapStream);
|
||||
//
|
||||
SDK_API HRESULT __stdcall VCAEnablePicMessage(int nCards, BOOL bPicMessage, PrcPicMessage pPicMessage);
|
||||
//读E2C
|
||||
SDK_API HRESULT __stdcall VCAReadE2C(int nCards, int iSubAddr, BYTE* pucData);
|
||||
//写E2C
|
||||
SDK_API HRESULT __stdcall VCAWriteE2C(int nCards, int iSubAddr, BYTE ucData);
|
||||
//得到视频源输入频率( 0HZ / 50HZ / 60HZ )对应( 无信号 / PAL制 / NTSC制 ), 参考枚举变量eFieldFrequency
|
||||
SDK_API HRESULT __stdcall VCAGetVideoFieldFrq(int nCards, eFieldFrequency* pFieldFrequency);
|
||||
//枚举音频设备
|
||||
SDK_API HRESULT __stdcall VCAEnumAudioCaptureDev(int nCards, char* arrAudDevName,int * pAudDevCount);
|
||||
//通过音频设备名设置音频采集,一个音频设备(声卡)仅供一路卡, strAudDevName 为"",表示取消音频采集
|
||||
SDK_API HRESULT __stdcall VCASetCurrentAudioCompressorName(int nCards, char* strAudDevName);
|
||||
//通过音频设备序号设置音频采集,一个音频设备(声卡)仅供一路卡, nCurrentAudDevice 为-1,表示取消音频采集
|
||||
SDK_API HRESULT __stdcall VCASetCurrentAudioCompressorNum(int nCards, int nCurrentAudDevice);
|
||||
//
|
||||
SDK_API HRESULT __stdcall VCASetRecordMode(int nCards, TVRecordFormat tvRF);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// 拷贝图像数据到剪贴板
|
||||
SDK_API HRESULT __stdcall VCACopyToClipBoard(int nCards);
|
||||
// 检测是否按Overlay方式显示
|
||||
SDK_API HRESULT __stdcall VCAIsOverlay(int nCards, BOOL* bIsOverlay);
|
||||
|
||||
|
||||
SDK_API HRESULT __stdcall VCASetVideoMpegType(int nCards, eVideoMpegType eType);
|
||||
|
||||
#endif
|
||||
Binary file not shown.
@@ -0,0 +1,517 @@
|
||||
|
||||
#ifndef __DXMEDIACAP_2011__
|
||||
#define __DXMEDIACAP_2011__
|
||||
|
||||
#include "datastru.h"
|
||||
|
||||
/*
|
||||
描述:
|
||||
初始化 SDK ,必须在调用其他函数之前调用
|
||||
参数:
|
||||
无
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXInitialize();
|
||||
void __stdcall DXUninitialize();
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取初始化成功的设备总数
|
||||
参数:
|
||||
无
|
||||
返回值:
|
||||
匹配的设备总数
|
||||
// */
|
||||
unsigned __stdcall DXGetDeviceCount();
|
||||
|
||||
/*
|
||||
描述:
|
||||
枚举音视频编码过滤器
|
||||
参数:
|
||||
devTags - [out] 用于返回获得的过滤器的 TAG 的数组
|
||||
num - [in/out] 指定 devTags 数组的元素个数,返回时则是实际上获得的过滤器的 TAG 的个数
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXEnumVideoCodecs(PDEVICE_TAG devTags, unsigned& num);
|
||||
unsigned __stdcall DXEnumAudioCodecs(PDEVICE_TAG devTags, unsigned& num);
|
||||
|
||||
/*
|
||||
描述:
|
||||
枚举视频捕捉设备过滤器
|
||||
参数:
|
||||
devTags - [out] 用于返回获得的过滤器的 TAG 的数组
|
||||
num - [in/out] 指定 devTags 数组的元素个数,返回时则是实际上获得的过滤器的 TAG 的个数
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXEnumVideoDevices(PDEVICE_TAG devTags, unsigned& num);
|
||||
|
||||
/*
|
||||
描述:
|
||||
枚举音频捕捉和渲染设备过滤器
|
||||
参数:
|
||||
devTags - [out] 用于返回获得的过滤器的 TAG 的数组
|
||||
num - [in/out] 指定 devTags 数组的元素个数,返回时则是实际上获得的过滤器的 TAG 的个数
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXEnumAudioDevices(PDEVICE_TAG devTags, unsigned& num);
|
||||
unsigned __stdcall DXEnumSoundDevices(PDEVICE_TAG devTags, unsigned& num);
|
||||
|
||||
/*
|
||||
描述:
|
||||
占用采集设备
|
||||
参数:
|
||||
idx - [in] 设备在枚举过程中的序号
|
||||
err - [out] 返回错误代码
|
||||
返回值:
|
||||
成功则返回设备句柄,否则返回 NULL。可通过 err 获得错误代码
|
||||
// */
|
||||
device_handle __stdcall DXOpenDevice(unsigned idx, unsigned* err = NULL);
|
||||
void __stdcall DXCloseDevice(device_handle device);
|
||||
|
||||
/*
|
||||
描述:
|
||||
将属性页显示在制定窗体的指定区域
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
attrID - [in] 属性类别
|
||||
hOwner - [in] 父窗体的句柄。NULL - 隐藏属性页
|
||||
rect - [in] 在父窗体上显示的区域。NULL - 表示父窗体的整个客户区
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXShowDeviceAttr(device_handle device, unsigned attrID, HWND hOwner, RECT* rect);
|
||||
|
||||
// unsigned __stdcall DXShowDeviceAttr(device_handle device, HWND XBar, HWND Capture, HWND stream, HWND codec);
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取视频属性
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
standard - [out] 视频制式
|
||||
colorspace - [out] 色彩空间
|
||||
width - [out] 视频宽度(单位:像素)
|
||||
height - [out] 视频高度(单位:像素)
|
||||
framerate - [out] 视频帧率(单位:帧/秒)
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXGetVideoPara(device_handle device, unsigned& standard, unsigned& colorspace,
|
||||
unsigned& width, unsigned& height, float& framerate);
|
||||
|
||||
/*
|
||||
描述:
|
||||
设置视频属性
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
standard - [in] 视频制式
|
||||
colorspace - [in] 色彩空间
|
||||
width - [in] 视频宽度(单位:像素)
|
||||
height - [in] 视频高度(单位:像素)
|
||||
framerate - [in] 视频帧率(单位:帧/秒)
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetVideoPara(device_handle device, unsigned standard, unsigned colorspace,
|
||||
unsigned width, unsigned height, float framerate);
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取显示属性的取值范围、默认值、步长、标志
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
paraType - [in] 参数类型
|
||||
0 - 亮度,1 - 对比度,2 - 饱和度,3 - 色度,4 - 锐度
|
||||
pMin - [in] 最小值
|
||||
pMax - [in] 最大值
|
||||
pSteppingDelta - [in] 步长
|
||||
pDefault - [in] 默认值
|
||||
pCapsFlags - [in] 自动/手动标志
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXGetDisplayParaRange(device_handle device, unsigned paraType,
|
||||
long* pMin, long* pMax, long* pSteppingDelta, long* pDefault, long* pCapsFlags);
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取显示属性
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
paraType - [in] 参数类型
|
||||
0 - 亮度,1 - 对比度,2 - 饱和度,3 - 色度,4 - 锐度
|
||||
value - [out] 参数值
|
||||
flag - [out] 自动/手动标志
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXGetDisplayPara(device_handle device, unsigned paraType, long& value, long& flags);
|
||||
|
||||
/*
|
||||
描述:
|
||||
设置显示属性
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
paraType - [in] 参数类型
|
||||
0 - 亮度,1 - 对比度,2 - 饱和度,3 - 色度,4 - 锐度
|
||||
value - [in] 参数值
|
||||
flag - [in] 自动/手动标志
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetDisplayPara(device_handle device, unsigned paraType, long value, long flags);
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取视频编码器属性
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
mode - [out] 编码模式
|
||||
bitrate - [out] 码率(单位:kbps)
|
||||
keyinterval - [out] 关键帧间隔
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXGetVideoCodecPara(device_handle device, unsigned& mode, unsigned& bitrate, unsigned& keyinterval);
|
||||
|
||||
/*
|
||||
描述:
|
||||
设置视频编码器属性
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
mode - [in] 编码模式
|
||||
bitrate - [in] 码率(单位:kbps)
|
||||
keyinterval - [in] 关键帧间隔
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetVideoCodecPara(device_handle device, unsigned mode, unsigned bitrate, unsigned keyinterval);
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取设备当前选择的端子和包含的输入端子
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
curSource - [out] 当前选择的输入端子的序号。NULL - 忽略
|
||||
sources - [out] 包含的输入端子的类型数组(比如:S-VIDEO、DV...)。NULL - 忽略
|
||||
num - [in/out] 端子数量。NULL - 忽略,此时尽可获取当前选择的输入端子
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXGetVideoSources(device_handle device, unsigned* curSource, unsigned* sources = NULL, unsigned char* num = NULL);
|
||||
|
||||
/*
|
||||
描述:
|
||||
设置设备的输入端子
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
source - [in] 当前选择的输入端子的序号
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetVideoSource(device_handle device, unsigned source);
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取设备的信号状态
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
signal - [out] 信号状态。0 - 信号丢失;1 - 信号正常
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXGetSignalPresent(device_handle device, unsigned& signal);
|
||||
|
||||
/*
|
||||
描述:
|
||||
控制设备运行状态
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXDeviceRun(device_handle device);
|
||||
unsigned __stdcall DXDevicePause(device_handle device);
|
||||
unsigned __stdcall DXDeviceStop(device_handle device);
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取设备运行状态
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
state - [out] 设备运行状态
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXGetDeviceState(device_handle device, unsigned& state);
|
||||
|
||||
/*
|
||||
描述:
|
||||
将视频显示在指定窗体的矩形区域内
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
hWnd - [in] 显示视频的窗体句柄。NULL - 停止显示视频
|
||||
rect - [in] 视频显示的矩形区域。NULL - 占用整个窗体
|
||||
vmrtype - [in] 该保留参数。(准备做指定显示过滤器只用)
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXStartPreview(device_handle device, HWND hWnd, PRECT rect, unsigned vmrtype);
|
||||
|
||||
/*
|
||||
描述:
|
||||
停止预览
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXStopPreview(device_handle device);
|
||||
|
||||
/*
|
||||
描述:
|
||||
冻结视频显示部分
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
bFreeze - [in] TRUE - 冻结显示,FALSE - 解冻显示
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXFreezePreview(device_handle device, BOOL bFreeze);
|
||||
|
||||
/*
|
||||
描述:
|
||||
检查设备是否包含音频
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
bHasAudio - [out] TRUE - 包含音频,FALSE - 没有音频
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXHasAudio(device_handle device, BOOL& bHasAudio);
|
||||
|
||||
/*
|
||||
描述:
|
||||
为设备分配音频采集设备。
|
||||
注意:!!! 只能在 state_stopped 状态下调用
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
bSound - [in] TRUE - 开始声音输出,FALSE - 终止声音输出
|
||||
audioDevice - [in] 音频采集设备。NULL - 使用设备自带的音频
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetAudioDevice(device_handle device, PDEVICE_TAG audioDevice = NULL);
|
||||
|
||||
/*
|
||||
描述:
|
||||
开始或者终止声音输出。
|
||||
注意:!!! 只有开始了声音输出,静音操作、音量调节、录像时包含音频等操作才能成功
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
bSound - [in] TRUE - 开始声音输出,FALSE - 终止声音输出
|
||||
soundDevice - [in] 声音输出设备。NULL - 使用默认设备
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetSoundOut(device_handle device, BOOL bSound/*, PDEVICE_TAG soundDevice = NULL*/);
|
||||
|
||||
/*
|
||||
描述:
|
||||
静音操作
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
bMute - [in] TRUE - 静音,FALSE - 非静音
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码,一般失败原因是因为没有开始声音输出
|
||||
// */
|
||||
unsigned __stdcall DXEnableMute(device_handle device, BOOL bMute);
|
||||
|
||||
/*
|
||||
描述:
|
||||
设置音量和平衡
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
volume - [in] 音量大小,取值范围(0, 100]
|
||||
balance - [in] 左右平衡,取值范围[-10, 10],负数表示左声道强,正数表述右声道强,0 - 左右平衡
|
||||
注意:!!! NULL - 表示不设置平衡
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码,一般失败原因是因为没有开始声音输出
|
||||
// */
|
||||
unsigned __stdcall DXSetAudioVolume(device_handle device, unsigned char volume, unsigned char* const balance = NULL);
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取音量和平衡
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
volume - [out] 音量大小,取值范围(0, 100]
|
||||
注意:!!! NULL - 表示不获取音量
|
||||
balance - [out] 左右平衡,取值范围[-10, 10],负数表示左声道强,正数表述右声道强,0 - 左右平衡
|
||||
注意:!!! NULL - 表示不获取平衡
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码,一般失败原因是因为没有开始声音输出
|
||||
// */
|
||||
unsigned __stdcall DXGetAudioVolume(device_handle device, unsigned char* volume, unsigned char* balance = NULL);
|
||||
|
||||
/*
|
||||
描述:
|
||||
更换视频编码器
|
||||
注意:!!! 当正在进行录像时,则操作失败
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
videoEncoder - [in] 视频编码器的 TAG,NULL - 表示不用编码,即录像时采用原始数据
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetVideoCodec(device_handle device, PDEVICE_TAG videoEncoder);
|
||||
|
||||
/*
|
||||
描述:
|
||||
更换音频编码器
|
||||
注意:!!! 当正在进行录像时,则操作失败
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
audioEncoder - [in] 音频编码器的 TAG,NULL - 表示不用编码,即录像时采用原始数据
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetAudioCodec(device_handle device, PDEVICE_TAG audioEncoder);
|
||||
|
||||
/*
|
||||
描述:
|
||||
开始录像
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
szFileName - [in] 指定录像文件全路径。NULL - 停止录像
|
||||
saveAudio - [in] 是否将音频也录制到文件中
|
||||
timeSize - [in] 限定录像文件的时间长度(单位:秒),NULL - 不限制
|
||||
dataSize - [in] 限定录像文件的数据长度(单位:字节),NULL - 不限制
|
||||
saveNotify - [in] 录像事件通知接口指针
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXStartCapture(device_handle device, TCHAR* szFileName, BOOL saveAudio,
|
||||
unsigned* timeSize = NULL, unsigned* dataSize = NULL,
|
||||
ISaveNotify* saveNotify = NULL);
|
||||
|
||||
/*
|
||||
描述:
|
||||
停止录像
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXStopCapture(device_handle device);
|
||||
|
||||
/*
|
||||
描述:
|
||||
冻结录像部分(包括视频和音频)
|
||||
注意:!!! 适用于需要多段时间录像的情况
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
bFreeze - [in] TRUE - 冻结录像,FALSE - 解冻录像
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXFreezeCaputre(device_handle device, BOOL bFreeze);
|
||||
|
||||
/*
|
||||
描述:
|
||||
插入视频效果(针对原始视频数据)
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
ispTask - [in] 新插入的视频效果的接口指针
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXAttachIspTask(device_handle device, IispTask* ispTask);
|
||||
unsigned __stdcall DXDetachIspTask(device_handle device, IispTask* ispTask);
|
||||
|
||||
/*
|
||||
描述:
|
||||
编码视频数据回调的函数原型
|
||||
参数:
|
||||
fourcc - [in] 获取的编码数据的编码器的FOURCC
|
||||
buffer - [in] 缓冲区指针
|
||||
bufferSize - [out] 获取的编码数据的缓冲区大小(单位:字节)
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
typedef unsigned (__stdcall *fnEncVideoCallback)(unsigned fourcc, unsigned char* buffer, unsigned bufferSize, void* context);
|
||||
|
||||
/*
|
||||
描述:
|
||||
设置编码视频数据回调的函数
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
fn - [in] 回调函数指针,NULL - 停止回调
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetEncVideoCallback(device_handle device, fnEncVideoCallback fn, void* context);
|
||||
|
||||
/*
|
||||
描述:
|
||||
开始编码视频数据回调的函数
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
fn - [in] 回调函数指针,NULL - 停止回调
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXStartEncVideoCallback(device_handle device, fnEncVideoCallback fn, void* context);
|
||||
|
||||
/*
|
||||
描述:
|
||||
停止编码视频数据回调的函数
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXStopEncVideoCallback(device_handle device);
|
||||
|
||||
/*
|
||||
描述:
|
||||
使能去隔行功能
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
deinterlace - [in] 去隔行的算法类型
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXEnableDeinterlace(device_handle device, unsigned deinterlace);
|
||||
|
||||
/*
|
||||
描述:
|
||||
使能去噪功能
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
denoise - [in] 去噪的算法类型
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXEnableDenoise(device_handle device, unsigned denoise);
|
||||
|
||||
/*
|
||||
描述:
|
||||
使能伪彩功能
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
szPColorTemplateFile - [in] 伪彩的模板文件。NULL - 停止使用伪彩
|
||||
pcolorDepth - [in] 伪彩的色深。此参数保留。
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXEnablePColor(device_handle device, TCHAR* szPColorTemplateFile, unsigned pcolorDepth);
|
||||
|
||||
#endif // __DXMEDIACAP_2011__
|
||||
Binary file not shown.
@@ -0,0 +1,307 @@
|
||||
|
||||
#ifndef __DATA_ACQ_2011__
|
||||
#define __DATA_ACQ_2011__
|
||||
|
||||
#include <mmreg.h>
|
||||
|
||||
#include "DXMediaCap.h"
|
||||
|
||||
/*
|
||||
描述:
|
||||
获取指定区域的原始视频帧数据到缓冲区
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
buffer - [in] 指向缓冲区。NULL - 后续参数返回相应的数据,比如,所需缓冲区的大小、颜色空间、视频尺寸
|
||||
bufferLen - [in] 指向的缓冲区的大小(单位:字节)
|
||||
gotBufferLen - [out] 实际获取的数据的大小(单位:字节)
|
||||
colorSpace - [out] 获取的原始数据的色彩空间类型
|
||||
width - [out] 获取的原始数据的像素宽度
|
||||
height - [out] 获取的原始数据的像素高度
|
||||
bytesWidth - [out] 获取的原始数据的字节宽度
|
||||
rect - [in] 指定获取数据的区域
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXGetFrameBuffer(device_handle device, unsigned char* buffer, unsigned bufferLen, unsigned* gotBufferLen = NULL,
|
||||
unsigned* colorSpace = NULL, unsigned* width = NULL, unsigned* height = NULL, unsigned* bytesWidth = NULL,
|
||||
PRECT rect = NULL);
|
||||
|
||||
/*
|
||||
描述:
|
||||
保存原始视频帧数据到 BMP文件
|
||||
参数:
|
||||
szFileName - [in] BMP文件路径
|
||||
buffer - [in] 指向缓冲区
|
||||
bufferLen - [in] 指向的缓冲区的大小(单位:字节)
|
||||
colorSpace - [in] 获取的原始数据的色彩空间类型
|
||||
width - [in] 获取的原始数据的像素宽度
|
||||
height - [in] 获取的原始数据的像素高度
|
||||
bytesWidth - [in] 获取的原始数据的字节宽度
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSaveBMPFile(TCHAR* szFileName, unsigned char* buffer, unsigned bufferLen,
|
||||
unsigned colorSpace, unsigned width, unsigned height, unsigned bytesWidth);
|
||||
|
||||
/*
|
||||
描述:
|
||||
保存原始视频帧数据到 JPG文件
|
||||
参数:
|
||||
szFileName - [in] JPG文件路径
|
||||
buffer - [in] 指向缓冲区
|
||||
bufferLen - [in] 指向的缓冲区的大小(单位:字节)
|
||||
colorSpace - [in] 获取的原始数据的色彩空间类型
|
||||
width - [in] 获取的原始数据的像素宽度
|
||||
height - [in] 获取的原始数据的像素高度
|
||||
bytesWidth - [in] 获取的原始数据的字节宽度
|
||||
quality - [in] JPG文件的画面质量
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSaveJPGFile(TCHAR* szFileName, unsigned char* buffer, unsigned bufferLen,
|
||||
unsigned colorSpace, unsigned width, unsigned height, unsigned bytesWidth, unsigned quality);
|
||||
|
||||
/*
|
||||
描述:
|
||||
直接抓取原始视频帧数据到 BMP文件
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
szFileName - [in] BMP文件路径
|
||||
rect - [in] 指定获取数据的区域
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSnapToBMPFile(device_handle device, TCHAR* szFileName, PRECT rect = NULL);
|
||||
|
||||
/*
|
||||
描述:
|
||||
直接抓取原始视频帧数据到 BMP文件
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
szFileName - [in] BMP文件路径
|
||||
buffer - [in] 指向缓冲区
|
||||
bufferLen - [in] 指向的缓冲区的大小(单位:字节)
|
||||
colorSpace - [in] 获取的原始数据的色彩空间类型
|
||||
width - [in] 获取的原始数据的像素宽度
|
||||
height - [in] 获取的原始数据的像素高度
|
||||
bytesWidth - [in] 获取的原始数据的字节宽度
|
||||
rect - [in] 指定获取数据的区域
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSnapToJPGFile(device_handle device, TCHAR* szFileName, unsigned quality, PRECT rect = NULL);
|
||||
|
||||
/*
|
||||
描述:
|
||||
原始视频数据回调的函数原型
|
||||
参数:
|
||||
buffer - [in] 缓冲区指针
|
||||
colorSpace - [in] 获取的原始数据的色彩空间类型
|
||||
width - [in] 获取的原始数据的像素宽度
|
||||
height - [in] 获取的原始数据的像素高度
|
||||
bytesWidth - [in] 获取的原始数据的字节宽度
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
typedef unsigned (__stdcall *fnRawVideoCallback)(unsigned char* buffer, unsigned colorSpace,
|
||||
unsigned width, unsigned height, unsigned bytesWidth, void* context);
|
||||
|
||||
/*
|
||||
描述:
|
||||
设置原始视频数据回调的函数
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
fn - [in] 回调函数指针,NULL - 停止回调
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetRawVideoCallback(device_handle device, fnRawVideoCallback fn, void* context);
|
||||
|
||||
/*
|
||||
描述:
|
||||
开始原始视频数据回调的函数
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
fn - [in] 回调函数指针,NULL - 停止回调
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXStartRawVideoCallback(device_handle device, fnRawVideoCallback fn, void* context);
|
||||
|
||||
/*
|
||||
描述:
|
||||
停止原始视频数据回调的函数
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXStopRawVideoCallback(device_handle device);
|
||||
|
||||
/*
|
||||
描述:
|
||||
原始音频数据回调的函数原型
|
||||
参数:
|
||||
buffer - [in] 缓冲区指针
|
||||
bufferLen - [in] 指向的缓冲区的大小(单位:字节)
|
||||
wfx - [in] 音频数据格式
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
typedef unsigned (__stdcall *fnRawAudioCallback)(unsigned char* buffer, unsigned bufferLen, WAVEFORMATEX* wfx, void* context);
|
||||
|
||||
/*
|
||||
描述:
|
||||
设置原始音频数据回调的函数
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
fn - [in] 回调函数指针,NULL - 停止回调
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetRawAudioCallback(device_handle device, fnRawAudioCallback fn, void* context);
|
||||
|
||||
|
||||
/*
|
||||
描述:
|
||||
原始视频数据叠加回调的函数原型
|
||||
参数:
|
||||
hdc - [in] 视频叠加的HDC
|
||||
width - [in] 能够叠加的宽度(单位:像素)
|
||||
height - [in] 能够叠加的高度(单位:像素)
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
typedef unsigned (__stdcall *fnOSDCallback)(HDC hdc, unsigned width, unsigned height, void* context);
|
||||
|
||||
/*
|
||||
描述:
|
||||
设置视频数据叠加回调的函数
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
fn - [in] 回调函数指针,NULL - 停止回调
|
||||
context - [in] 回调函数的上下文
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetOSDCallback(device_handle device, fnOSDCallback fn, void* context);
|
||||
|
||||
enum {osd_text, osd_time, osd_image};
|
||||
#define MAX_OSD_TEXT_LEN 16
|
||||
/*
|
||||
描述:
|
||||
设置原始视频帧数据的OSD
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
osdType - [in] OSD的类型
|
||||
x - [in] 指定OSD的左上角横坐标
|
||||
x - [in] 指定OSD的左上角竖坐标
|
||||
osdData - [in] OSD的数据,NULL - 取消OSD
|
||||
osdType = osd_text,最大MAX_OSD_TEXT_LEN个字符
|
||||
osdType = osd_time,指定时间格式
|
||||
osdType = osd_image,指定图片路径
|
||||
pointSize - [in] 字体大小
|
||||
faceName - [in] 字体名称
|
||||
color - [in] 针对 osd_text, osd_time 两种类型的OSD的前景色,默认值:白色(RGB(255, 255, 255))
|
||||
bgcolor - [in] OSD的背景色,默认值:黑色(RGB(0, 0, 0))
|
||||
opaque - [in] OSD的背景色是否不透明,默认值:是。当选择透明时,则以 bgcolor 进行透明处理
|
||||
alpha - [in] alpha运算值。取值[0 ~ 255],0 - OSD透明,255 - OSD不透明,中间值 - OSD与视频数据进行alpha运算
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXSetOSD(device_handle device, unsigned osdType, int x, int y, char* osdData, int pointSize = 120, LPCTSTR faceName = TEXT("Arial"),
|
||||
COLORREF color = RGB(255, 255, 255), COLORREF bgcolor = RGB(0, 0, 0), BOOL opaque = TRUE,
|
||||
unsigned char alpha = 255);
|
||||
|
||||
/*
|
||||
描述:
|
||||
启用/禁用原始视频帧数据的OSD
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
osdType - [in] OSD的类型
|
||||
enable - [in] TRUE - 启用OSD,FALSE - 禁用OSD
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXEnableOSD(device_handle device, unsigned osdType, BOOL enable);
|
||||
|
||||
/*
|
||||
描述:
|
||||
由图片缓冲创建预览对象
|
||||
参数:
|
||||
imgbuffer - [in] 图片缓冲区
|
||||
buffersize - [in] 图片缓冲区的大小(单位:字节)
|
||||
colorspace - [in] 图片缓冲的数据的色彩空间
|
||||
width - [in] 图片的宽度(单位:像素)
|
||||
height - [in] 图片的高度(单位:像素)
|
||||
err - [out] 返回错误代码
|
||||
返回值:
|
||||
成功则返回图像句柄,否则返回 NULL。可通过 err 获得错误代码
|
||||
// */
|
||||
image_handle __stdcall DXCreateBufferImg(unsigned char* imgbuffer, unsigned buffersize,
|
||||
unsigned colorspace, unsigned width, unsigned height,
|
||||
unsigned* err);
|
||||
|
||||
/*
|
||||
描述:
|
||||
由图片文件创建预览对象
|
||||
参数:
|
||||
szImgFile - [in] 图片文件全路径
|
||||
err - [out] 返回错误代码
|
||||
返回值:
|
||||
成功则返回图像句柄,否则返回 NULL。可通过 err 获得错误代码
|
||||
// */
|
||||
image_handle __stdcall DXCreateFileImg(TCHAR* szImgFile, unsigned* err);
|
||||
|
||||
/*
|
||||
描述:
|
||||
由更新预览对象到指定的窗体的相应区域
|
||||
参数:
|
||||
img - [in] 预览对象
|
||||
hPrevWnd - [in] 预览的窗体
|
||||
rect - [in] 预览的区域
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXUpdateImg(image_handle img, HWND hPrevWnd, RECT* rect);
|
||||
|
||||
/*
|
||||
描述:
|
||||
删除预览对象
|
||||
参数:
|
||||
img - [in] 预览对象
|
||||
返回值:
|
||||
无
|
||||
// */
|
||||
void __stdcall DXDestroyImg(image_handle img);
|
||||
|
||||
/*
|
||||
描述:
|
||||
翻转视频
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
flip - [in] TRUE - 启用翻转,FALSE - 禁用翻转
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXFlipVideo(device_handle device, BOOL flip);
|
||||
|
||||
/*
|
||||
描述:
|
||||
镜像视频
|
||||
参数:
|
||||
device - [in] 设备句柄
|
||||
mirror - [in] TRUE - 启用镜像,FALSE - 禁用镜像
|
||||
返回值:
|
||||
0 - 成功;失败则返回错误代码
|
||||
// */
|
||||
unsigned __stdcall DXMirrorVideo(device_handle device, BOOL mirror);
|
||||
|
||||
|
||||
#endif // __DATA_ACQ_2011__
|
||||
Binary file not shown.
@@ -0,0 +1,155 @@
|
||||
/********************************************************************
|
||||
created: 2011/08/05
|
||||
created: 5:8:2011 9:31
|
||||
filename: .\libDXCap\datastru.h
|
||||
file path: .\libDXCap
|
||||
purpose:
|
||||
*********************************************************************/
|
||||
|
||||
#ifndef __LIBDXCAP_DATASTRU__20110805__
|
||||
#define __LIBDXCAP_DATASTRU__20110805__
|
||||
typedef void* device_handle;
|
||||
typedef void* image_handle;
|
||||
|
||||
//static const long BrightnessDefault = 5000;
|
||||
//static const long ContrastDefault = 5000;
|
||||
//static const long SaturationDefault = 5000;
|
||||
//static const long HueDefault = 5000;
|
||||
//static const long SharpnessDefault = 4;
|
||||
|
||||
#define MIN_BRIGHTNESS 0
|
||||
#define MAX_BRIGHTNESS 10000
|
||||
|
||||
#define MIN_CONTRAST 0
|
||||
#define MAX_CONTRAST 10000
|
||||
|
||||
#define MIN_SATURATION 0
|
||||
#define MAX_SATURATION 10000
|
||||
|
||||
#define MIN_HUE 0
|
||||
#define MAX_HUE 10000
|
||||
|
||||
#define MIN_SHARPNESS 0
|
||||
#define MAX_SHARPNESS 7
|
||||
|
||||
|
||||
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
|
||||
//{
|
||||
// VideoStandard_None = 0x00000000,
|
||||
// VideoStandard_NTSC_M = 0x00000001,
|
||||
// VideoStandard_NTSC_M_J = 0x00000002,
|
||||
// VideoStandard_NTSC_433 = 0x00000004,
|
||||
// VideoStandard_PAL_B = 0x00000010,
|
||||
// VideoStandard_PAL_D = 0x00000020,
|
||||
// VideoStandard_PAL_H = 0x00000080,
|
||||
// VideoStandard_PAL_I = 0x00000100,
|
||||
// VideoStandard_PAL_M = 0x00000200,
|
||||
// VideoStandard_PAL_N = 0x00000400,
|
||||
// VideoStandard_PAL_60 = 0x00000800,
|
||||
// VideoStandard_SECAM_B = 0x00001000,
|
||||
// VideoStandard_SECAM_D = 0x00002000,
|
||||
// VideoStandard_SECAM_G = 0x00004000,
|
||||
// VideoStandard_SECAM_H = 0x00008000,
|
||||
// VideoStandard_SECAM_K = 0x00010000,
|
||||
// VideoStandard_SECAM_K1 = 0x00020000,
|
||||
// VideoStandard_SECAM_L = 0x00040000,
|
||||
// VideoStandard_SECAM_L1 = 0x00080000,
|
||||
//} VideoStandard;
|
||||
//ERROR MEAASGE
|
||||
enum RETERRNO
|
||||
{
|
||||
RET_NOERROR = 0, /* no error */
|
||||
RET_EXCEPTION, /* sdk exception error */
|
||||
RET_ERR_INIT, /* do not initialize or initialize failed */
|
||||
RET_INVALID_DEV, /* do not find valid media device */
|
||||
RET_INVALID_CHANNEL, /* invalid channel */
|
||||
RET_BAD_POINTER, /* invalid or Null pointer param */
|
||||
RET_NO_MATCH, /* do not match the compatiple object */
|
||||
RET_DX_FAILED, /* fail from direct show */
|
||||
RET_INVALID_HANDLE, /* find null handle */
|
||||
RET_INVALID_PARAM, /* invalid function param */
|
||||
RET_GDI_ERROR, /* GDI error */
|
||||
RET_IO_ERROR, /* common io read or write error */
|
||||
RET_FAILED, /* common error */
|
||||
RET_VIDFMT_ERROR, /* Video format selected do not support */
|
||||
};
|
||||
// 运行状态
|
||||
enum {state_stopped, state_paused, state_running};
|
||||
|
||||
// 去隔行模式
|
||||
enum {di_none, di_weave, di_blend, di_bob};
|
||||
|
||||
// 降噪模式
|
||||
enum {dn_none, dn_b};
|
||||
|
||||
// 视频颜色空间
|
||||
enum {cs_rgb24, cs_rgb32, cs_yuy2};
|
||||
|
||||
// 设备属性页
|
||||
enum {attr_video, attr_audio, attr_encode};
|
||||
|
||||
// 设备信息
|
||||
#define MAX_DEVICE_NAME 128
|
||||
typedef struct _device_tag
|
||||
{
|
||||
unsigned idx; // 过滤器在枚举过程中的序号
|
||||
TCHAR deviceName[MAX_DEVICE_NAME]; // 过滤器的名称
|
||||
} DEVICE_TAG, *PDEVICE_TAG;
|
||||
|
||||
// 录像通知
|
||||
EXTERN_C const IID IID_ISaveNotify;
|
||||
/*
|
||||
// {BAE74021-AFEC-4336-8497-658ED4432F65}
|
||||
DEFINE_GUID(IID_ISaveNotify,
|
||||
0xbae74021, 0xafec, 0x4336, 0x84, 0x97, 0x65, 0x8e, 0xd4, 0x43, 0x2f, 0x65);
|
||||
// */
|
||||
class ISaveNotify : public IUnknown// 录像的事件通知
|
||||
{
|
||||
public:
|
||||
virtual HRESULT foo() = 0;
|
||||
};
|
||||
|
||||
// isp接口
|
||||
//EXTERN_C const IID IID_IispTask;
|
||||
/*
|
||||
/// {BC7DE54C-F483-4768-9CBA-3228D81600CD}
|
||||
DEFINE_GUID(IID_IispTask,
|
||||
0xbc7de54c, 0xf483, 0x4768, 0x9c, 0xba, 0x32, 0x28, 0xd8, 0x16, 0x0, 0xcd);
|
||||
// */
|
||||
|
||||
//class IispTask : public IUnknown // 视频处理接口
|
||||
//{
|
||||
//public:
|
||||
// virtual HRESULT QueryAccept(/*AM_MEDIA_TYPE**/void* mt) = 0;
|
||||
|
||||
// virtual HRESULT BeginIsp() = 0;
|
||||
// virtual HRESULT IspTask(/*IMediaSample**/void* pMS) = 0;
|
||||
// virtual HRESULT EndIsp() = 0;
|
||||
//};
|
||||
EXTERN_C const IID IID_IispTask;
|
||||
class IispTask : public IUnknown
|
||||
{
|
||||
public:
|
||||
virtual /* [local][id] */ HRESULT STDMETHODCALLTYPE QueryAccept(
|
||||
void *mt) = 0;
|
||||
|
||||
virtual /* [id] */ HRESULT STDMETHODCALLTYPE BeginIsp( void) = 0;
|
||||
|
||||
virtual /* [local][id] */ HRESULT STDMETHODCALLTYPE IspTask(
|
||||
void *pMS) = 0;
|
||||
|
||||
virtual /* [id] */ HRESULT STDMETHODCALLTYPE EndIsp( void) = 0;
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
#endif // __LIBDXCAP_DATASTRU__20110805__
|
||||
Reference in New Issue
Block a user