Files
EF3-Interface/PcDmis/Base/Interfac/Msi/Hsi/Videocard/SV4000E/DXMediaCap.h
T

757 lines
19 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#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 - 占用整个窗体
vvmrtype - [in] 视频显示模式,0为OVERLAY显示,1为离屏显示
返回值:
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 -- SimpleBob
// 1 -- TomsMoComp
// 2 -- YADIF
// 其他值表示自动取消隔行功能
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXEnableDeinterlace(device_handle device, unsigned deinterlace);
/*
描述:
使能去噪功能
参数:
device - [in] 设备句柄
denoise - [in] 降噪标准 (5 - 100),其他值表示自动取消去噪功能
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXEnableDenoise(device_handle device, unsigned denoise = 35);
/*
描述:
锐化处理功能
参数:
device - [in] 设备句柄
deSharpness - [in] 锐化标准(0 - 255),其它值表示自动取消锐化功能
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXEnableSharpen(device_handle device, unsigned deSharpness = 128);
/*
描述:
使能伪彩功能
参数:
device - [in] 设备句柄
szPColorTemplateFile - [in] 伪彩的模板文件。NULL - 停止使用伪彩
pcolorDepth - [in] 伪彩的色深。此参数保留。
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXEnablePColor(device_handle device, TCHAR* szPColorTemplateFile, unsigned pcolorDepth);
unsigned __stdcall DXConvertYUVtoRGB(device_handle device, void* pYUVBuf,
void* pRGBBuf,
long lImgWidth,
long lImgHeight,
BOOL bInverted,
BOOL bInvertColor);
/*
描述:
音频原始数据回调的函数原型
参数:
buffer - [in] 缓冲区指针
bufferSize - [out] 获取的编码数据的缓冲区大小(单位:字节)
context - [in] 回调函数的上下文
返回值:
0 - 成功;失败则返回错误代码
// */
typedef unsigned (__stdcall *fnAudDataCallback)(unsigned char* buffer, unsigned bufferSize, void* context);
/*
描述:
设置音频原始数据回调的函数
参数:
device - [in] 设备句柄
fn - [in] 回调函数指针,NULL - 停止回调
context - [in] 回调函数的上下文
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXSetAudDataCallback(device_handle device, fnAudDataCallback fn, void* context);
/*
描述:
开始音频原始数据回调的函数
参数:
device - [in] 设备句柄
fn - [in] 回调函数指针,NULL - 停止回调
context - [in] 回调函数的上下文
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXStartAudDataCallback(device_handle device, fnAudDataCallback fn, void* context);
/*
描述:
停止音频原始数据回调的函数
参数:
device - [in] 设备句柄
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXStopAudDataCallback(device_handle device);
/*
描述:
设置时间OSD参数的函数
参数:
device - [in] 设备句柄
x,y - [in]时间OSD的位置坐标
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXSetTimeOSD
(
/*in*/ device_handle device,
/*in*/ int x,
/*in*/ int y,
/*in*/ int pointSize,
/*in*/ LPCTSTR faceName = TEXT("Arial"),
/*in*/ COLORREF color = RGB(0,0,255),
/*in*/ COLORREF bgcolor = RGB(0, 0, 0),
/*in*/ BOOL transparent = TRUE
);
/*
描述:
设置文本OSD参数的函数
参数:
device - [in] 设备句柄
x,y - [in]时间OSD的位置坐标
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXSetTextOSD
(
/*in*/ device_handle device,
/*in*/ int x,
/*in*/ int y,
/*in*/ int TextNO,
/*in*/ LPCTSTR osdText,
/*in*/ int pointSize,
/*in*/ LPCTSTR faceName = TEXT("Arial"),
/*in*/ COLORREF color = RGB(0,0,255),
/*in*/ COLORREF bgcolor = RGB(0, 0, 0),
/*in*/ BOOL transparent = TRUE
);
/*
描述:
设置图片OSD参数的函数
参数:
device - [in] 设备句柄
x,y - [in]时间OSD的位置坐标
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXSetPictureOSD
(
/*in*/ device_handle device,
/*in*/ int x,
/*in*/ int y,
/*in*/ int PicNO,
/*in*/ LPCTSTR picFileName,
/*in*/ BOOL transparent = TRUE,
/*in*/ unsigned char alpha = 255
);
/*
描述:
设置图片OSD参数的函数
参数:
device - [in] 设备句柄
osdType - [in]叠加类型
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXEnOSDDisp
(
/*in*/ device_handle device,
/*in*/ unsigned osdType, //0表示时间叠加,1表示文本叠加,2表示图片叠加
/*in*/ int number, /* 叠加编号,当number = -1时为全部 */
/*in*/ BOOL enable
);
/*
描述:
从加密芯片用户区读取数据的函数
参数:
device - [in] 设备句柄
chPassWord - [in]密码
chData------[out]读取数据空间
chLen-------[out]读取数据长度,不超过0x20
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXReadDeviceSerial(device_handle device,unsigned char * chPassWord,
unsigned char * chData, unsigned char& chLen);
//从加密芯片用户区读出数据
/*
描述:
向加密芯片用户区写入数据的函数
参数:
device - [in] 设备句柄
chPassWord - [in]密码
chData------[in]写入数据空间
chLen-------[in]写入数据长度,不超过0x20
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXWriteDeviceSerial(device_handle device,unsigned char * chPassWord,
unsigned char * chData, unsigned char chLen);
/*
描述:
原始视频数据回调的函数原型
参数:
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);
/*
描述:
暂停原始视频数据回调的函数
参数:
device - [in] 设备句柄
bPause---[in] true:暂停原始流回调;false:重新开始原始流回调
返回值:
0 - 成功;失败则返回错误代码
// */
unsigned __stdcall DXPauseRawVideoCallback(device_handle device, bool bPause);
#endif // __DXMEDIACAP_2011__