中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright2002) 基于SDK的视频压缩卡操作 一、实验目的: 学习在Windows下利用厂商提供的开发包进行视频捕捉卡开发的基本方法。 二、实验原理 由于使用厂商提供的开发包进行程序开发,下面介绍开发包中提供的函数。 与AV800初始化相关的函数 BOOL TS InitDevlce(HWND hWnd) 功能:初始化AV8O0API软件组件并建立视频窗。建立后AV800处于Preview方式。 参数:HWND hWnd视频窗的窗口句柄 返回值:TRUE成功,FALSE失败 vold TS_UnInitDevice( 功能:清除AV8O0API软件组件。 参数:无 返回值:无 int TS_GetState() 功能:获得AV800当前状态。 参数:无 返回值:DEVICE_STATE_PREVIEW,.处于Preview状态。 DEVICE STATE_CAPTURE,处于采集MPEG状态。 DEVICE_STATE_PLAYBACK,处于播放MPEG文件状态。 与视频显示相关的函数 vold TS_SetVldeoWIndowPos (int x,Int y.Int cx,Int cy) 功能:设置视频窗的位置及大小。 参数:intx视频窗的左上角屏幕坐标, inty视频窗的右上角屏幕坐标, int cx视频窗的宽度, int cy视频窗的高度 返回值:无 vold TS.TVTuning( 功能:TV Tuner自动调谐。(仅适用于AV8OO/TV) 参数:无 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cdu.cn cxh@ustc.cdu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 2002) 基于 SDK 的视频压缩卡操作 一、实验目的: 学习在 Windows 下利用厂商提供的开发包进行视频捕捉卡开发的基本方法。 二、实验原理 由于使用厂商提供的开发包进行程序开发,下面介绍开发包中提供的函数。 与 AV800 初始化相关的函数 BOOL TS_InitDevice (HWND hWnd) 功能:初始化AV800 API 软件组件并建立视频窗。建立后AV800 处于Preview 方式。 参数:HWND hWnd 视频窗的窗口句柄 返回值:TRUE 成功,FALSE 失败 void TS_UnInitDevice() 功能:清除AV800 API 软件组件。 参数: 无 返回值:无 int TS_GetState () 功能:获得AV800 当前状态。 参数: 无 返回值:DEVICE_STATE_PREVIEW,处于Preview 状态。 DEVICE_STATE_CAPTURE,处于采集MPEG 状态。 DEVICE_STATE_PLAYBACK,处于播放MPEG 文件状态。 与视频显示相关的函数 void TS_SetVideoWindowPos (int x, int y, int cx, int cy) 功能:设置视频窗的位置及大小。 参数: int x 视频窗的左上角屏幕坐标, int y 视频窗的右上角屏幕坐标, int cx 视频窗的宽度, int cy 视频窗的高度 返回值:无 void TS_TVTuning() 功能:TV Tuner 自动调谐。(仅适用于AV800/TV) 参数: 无 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright2002) 返回值:无 int TS_GetTVChannel( 功能:获得当前选择的电视频道号。(仅适用于AV800/TV) 参数:无 返回值:0-100 vold TS SetTVChannel(int Channel) 功能:设置电视频道号。(仅适用于AV80O/TV) 参数:int Channel:0-l00 返回值:无 Int TS GetVldeoSource0 功能:获得当前选择的输入视频源 参数:无 返回值:SOURCE_TVTUNER输入源为TV Tuner。(仅对AV8OO/TV有效) SOURCE_COMPOSITE输入源为复合视频。 SOURCE_SVIDEO输入源为S-Video vold TS_SetVideoSource(Int VldeoSource) 功能:设置视频输入源 参数:int VideoSource的取值分别为: SOURCE_TVTUNER输入源为TV Tuner。(仅对AV8OO/TV有效) SOURCE_COMPOSITE输入源为复合视频。 SOURCE_SVIDE0输入源为S-Video 返回值:无 int TS GetVideoSystem() 功能:获得当前输入视频制式 参数:无 返回值:1:PAL 2:NTSC vold TS SetVldeoSystem(Int VideoSystem) 功能:设置视频输入输出制式 参数:int VideoSystem的取值分别为: 1:PAL 2:NTSC 返回值:无 注:对于翰入视频制式,AVB00由硬件百动检测,即使设歪了不同制式,在采集时仍然会 按照实际输入信号的制式偏MPEG。AV8O0的视频翰出制式可以由此函数设玉。 BOOL TS_GetDlsplayuseoverlay() 功能:获得当前视频显示是否使用了DirectX Overlay。 参数:TRUE使用Overlay FALSE未使用Overlay 返回值:无 vold TS SetDlsplayUseOverlay(BOOL bOverlay) 功能:设置视频显示是否使用DirectX Overlay。 参数:BOOL bOverlay:TRUE使用Overlay,FASLE不使用Overlay 返回值:无 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cdu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 2002) 返回值:无 int TS_GetTVChannel() 功能:获得当前选择的电视频道号。(仅适用于AV800/TV) 参数: 无 返回值:0 – 100 void TS_SetTVChannel(int Channel) 功能:设置电视频道号。(仅适用于AV800/TV) 参数: int Channel: 0 -100 返回值:无 int TS_GetVideoSource() 功能:获得当前选择的输入视频源 参数: 无 返回值:SOURCE_TVTUNER 输入源为TV Tuner。(仅对AV800/TV 有效) SOURCE_COMPOSITE 输入源为复合视频。 SOURCE_SVIDEO 输入源为S-Video void TS_SetVideoSource(int VideoSource) 功能:设置视频输入源 参数: int VideoSource 的取值分别为: SOURCE_TVTUNER 输入源为TV Tuner。(仅对AV800/TV 有效) SOURCE_COMPOSITE 输入源为复合视频。 SOURCE_SVIDEO 输入源为S-Video 返回值:无 int TS_GetVideoSystem () 功能:获得当前输入视频制式 参数: 无 返回值:1:PAL 2:NTSC void TS_SetVideoSystem(int VideoSystem) 功能:设置视频输入输出制式 参数: int VideoSystem 的取值分别为: 1: PAL 2: NTSC 返回值:无 注:对于输入视频制式,AV800 由硬件自动检测,即使设置了不同制式,在采集时仍然会 按照实际输入信号的制式编码MPEG。AV800 的视频输出制式可以由此函数设置。 BOOL TS_GetDisplayUseOverlay() 功能:获得当前视频显示是否使用了DirectX Overlay。 参数: TRUE 使用Overlay FALSE 未使用Overlay 返回值:无 void TS_SetDisplayUseOverlay(BOOL bOverlay) 功能:设置视频显示是否使用DirectX Overlay。 参数: BOOL bOverlay: TRUE 使用Overlay, FASLE 不使用Overlay 返回值:无 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright2002) int TS GetBrightness() 功能:获得当前设置的亮度值。 参数:无 返▣值:BRIGHTNESS_MIN至BRIGHTNESS_MAX vold TS SetBrlghtness(Int nBrlghtness) 功能:设置亮度值 参数:int nBrightness:BRIGHTNESS_,MIN至BRIGHTNESS_MAX 返回值:无 Int TS_GetContrast( 功能:获得当前设置的对比度值。 参数:无 返▣值:CONTRAST_MIN至CONTRAST_MAX vold TS SetContrast(Int nContrast) 功能:设置对比度值 参数:int nContrast:CONTRAST_.MIN至CONTRAST_MAX 返回值:无 Int TS GetHue( 功能:获得当前设置的色度值 参数:无 返回值:HUE MIN至HUE_MAX vold TS_SetHue(int nHue) 功能:设置色度值 参数:int nHue:HUE_MIN至HUE_MAX 返回值:无 int TS_GetSaturation( 功能:获得当前设置的色饱和度值 参数:无 返回值:SATURATION MIN至SATURATION MAX vold TS_SetSaturation(int nSaturation) 功能:设置色饱和度值 参数:int nSaturation:SATURATION MIN至SATURATION MAX 返回值:无 Int TS_Getsharpness( 功能:获得当前设置的色锐度值 参数:无 返▣值:SHARPNESS_MTN至SHARPNESS_.MAX vold TS SetSharpness(Int nSharpness) 功能:设置色锐度值 参数:int nSharpness:SHARPNESS_MIN至SHARPNESS_MAX 返回值:无 与MPEG编码相关的函数 AV8O0的MPEG编码参数包括: 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cdu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 2002) int TS_GetBrightness() 功能:获得当前设置的亮度值。 参数: 无 返回值:BRIGHTNESS_MIN 至BRIGHTNESS_MAX void TS_SetBrightness(int nBrightness) 功能:设置亮度值 参数: int nBrightness: BRIGHTNESS_MIN 至BRIGHTNESS_MAX 返回值:无 int TS_GetContrast() 功能:获得当前设置的对比度值。 参数: 无 返回值:CONTRAST_MIN 至CONTRAST_MAX void TS_SetContrast(int nContrast) 功能:设置对比度值 参数: int nContrast:CONTRAST_MIN 至CONTRAST_MAX 返回值:无 int TS_GetHue() 功能:获得当前设置的色度值 参数: 无 返回值:HUE_MIN 至HUE_MAX void TS_SetHue(int nHue) 功能:设置色度值 参数: int nHue: HUE_MIN 至HUE_MAX 返回值:无 int TS_GetSaturation() 功能:获得当前设置的色饱和度值 参数: 无 返回值:SATURATION_MIN 至SATURATION_MAX void TS_SetSaturation(int nSaturation) 功能:设置色饱和度值 参数: int nSaturation: SATURATION_MIN 至SATURATION_MAX 返回值:无 int TS_GetSharpness() 功能:获得当前设置的色锐度值 参数: 无 返回值:SHARPNESS_MIN 至SHARPNESS_MAX void TS_SetSharpness(int nSharpness) 功能:设置色锐度值 参数: int nSharpness: SHARPNESS_MIN 至SHARPNESS_MAX 返回值:无 与 MPEG 编码相关的函数 AV800 的MPEG 编码参数包括: 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright2002) Video Bitrate:视频位速率,可以通过TS SetVideoBltRate和 TS.GetVideoBltRate改变或查询。有效值为512000-15000000。 GOP Size:MPEG GOP(Group Of Picture)的I帧间隔,通过TS.SetGOPSIze 和TS.GetGOPSIz8改变或查询。有效值为1-15并且必须是P 帧间隔的整倍数,一般取值为12或15。 P Frame Distance:MPEG GOP中的P帧间隔,通过TS SetPDistance和 TS.SetPDlstance改变或查询。有效值为1-3。 Rate Control:这是关于MPEG的编码方式,可供选择的是CBR(Constant Bitrate) 和VBR(Wariable BitRate),通过Ts.SetRateCtrl和 Ts.GetRatectrl改变或查询。有效值为0:CBR,I:VBR。 TopFieldFirst:用于在解码时通知解码器首先解码哪一场图像,有效值为:TRUE 表示先解码A Field,FALSE表示先解码B Field.。可以通过 TS_SetTopFleldFIrst和Ts.GetTopFleldFIrst改变或查询, 般情况下应设置为TRUE。 HHRfilter:HHR(Half Horizontal Resolution)用于指出当水平分辨率为352 或480时对输入图像分辨率进行变换,可以通过T5 SetHHR和 TS.GetHHR改变或查询。一般说,当采集DD时禁止HR,当采集 VCD,SVCD时应允许HHR。有效值为TRUE:允许,FALSE:禁止。 0 ffsetField1:第一场第一条扫描线的位移量。有效值为/0-31,目前固定设 置为2。尽管这里提供了TS_SetoffsetFleld1和 TS_SetoffsetFleld1但用户最好不要改变它,否则将影响到视频 播放时的图像稳定性。 0 ffsetField2:第二场第一条扫描线的位移量。有效值为/0-31,目前固定设 置为2。尽管这里提供了TS SetoffsetFleld2和 Ts.SetoffsetF1eld2但用户最好不要改变它,否则将影响到视频 播放时的图像稳定性。 Resolution:MPEG编码分辨率。通过TS_SetResolution和TS.SetResolution 改变或查询,有效值为: 0:CIF(SIF)352x288或352x240,用于VCD/PEG-1编码 1:1/2D1352x576或352x480,用于CVD/MPEG-2编码 2:2/3D1480x576或480x480,用于SVCD/MPEG-2编码 3:Fu11D1704x576或704x480,用于DVD/MPEG-2编码 Prefilterno:预处理滤波器编号。通过TS.SetPreFllterNo和 TS.GetPreFllterNo改变或查询,有效值为0-7。 Int TS GetTotalEncodeMode( 功能:获得预定义编码参数组个数。为了方便用户操作目前AV8O0DI1预置了5组MPEG编 码 参数。分别为:VCD,SVCD,DVD,MPEG-1,MPEG-2。在下一个版本将增加用户自定义 参数组功能。 参数:无 返回值:预定义编码参数组个数 int TS GetEncodeMode() 功能:获得当前的参数组索引。 参数:无 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cdu.cn cxh@ustc.cdu.cm
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 2002) Video Bitrate: 视频位速率,可以通过TS_SetVideoBitRate 和 TS_GetVideoBitRate 改变或查询。有效值为512000 – 15000000。 GOP Size: MPEG GOP (Group Of Picture)的I 帧间隔,通过TS_SetGOPSize 和TS_GetGOPSize 改变或查询。有效值为1 – 15 并且必须是P 帧间隔的整倍数,一般取值为12 或15。 P Frame Distance: MPEG GOP 中的P 帧间隔,通过TS_SetPDistance 和 TS_SetPDistance 改变或查询。有效值为1 – 3。 Rate Control: 这是关于MPEG 的编码方式,可供选择的是CBR(Constant Bitrate) 和VBR(Variable BitRate),通过TS_SetRateCtrl 和 TS_GetRateCtrl 改变或查询。有效值为0: CBR, 1: VBR。 TopFieldFirst: 用于在解码时通知解码器首先解码哪一场图像,有效值为:TRUE 表示先解码A Field,FALSE 表示先解码B Field。可以通过 TS_SetTopFieldFirst 和TS_GetTopFieldFirst 改变或查询,一 般情况下应设置为TRUE。 HHRfilter: HHR(Half Horizontal Resolution) 用于指出当水平分辨率为352 或480 时对输入图像分辨率进行变换,可以通过TS_SetHHR 和 TS_GetHHR 改变或查询。一般说,当采集DVD 时禁止HHR,当采集 VCD,SVCD 时应允许HHR。有效值为TRUE:允许, FALSE:禁止。 OffsetField1: 第一场第一条扫描线的位移量。有效值为/0 – 31,目前固定设 置为2。尽管这里提供了TS_SetOffsetField1 和 TS_SetOffsetField1 但用户最好不要改变它,否则将影响到视频 播放时的图像稳定性。 OffsetField2: 第二场第一条扫描线的位移量。有效值为/0 – 31,目前固定设 置为2。尽管这里提供了TS_SetOffsetField2 和 TS_SetOffsetField2 但用户最好不要改变它,否则将影响到视频 播放时的图像稳定性。 Resolution: MPEG 编码分辨率。通过TS_SetResolution 和TS_SetResolution 改变或查询,有效值为: 0: CIF(SIF) 352 x 288 或352 x 240,用于VCD/MPEG-1 编码 1: 1/2 D1 352 x 576 或352 x 480,用于CVD/MPEG-2 编码 2:2/3 D1 480 x 576 或480 x 480,用于SVCD/MPEG-2 编码 3: Full D1 704 x 576 或704 x 480,用于DVD/MPEG-2 编码 Prefilterno: 预处理滤波器编号。通过TS_ SetPreFilterNo 和 TS_GetPreFilterNo 改变或查询,有效值为0 – 7。 int TS_GetTotalEncodeMode() 功能:获得预定义编码参数组个数。为了方便用户操作目前AV800 Dll 预置了5 组MPEG 编 码 参数。分别为:VCD, SVCD, DVD, MPEG-1, MPEG-2。在下一个版本将增加用户自定义 参数组功能。 参数: 无 返回值:预定义编码参数组个数 int TS_GetEncodeMode() 功能:获得当前的参数组索引。 参数: 无 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系多媒体通信实验室(Copyright2002) 返回值:当前参数组索引 vold TS SetEncodeMode(Int nIndex) 功能:改变参数组。 参数:int nIndex:参数组索引,应大于0并小于TS.GetTotalEncodeMode的返回值。 返回值:无 vold TS GetEncodeModeName(int nIndex,CString EncModeName) 功能:获得某参数组名称。 参数:int nIndex:参数组索引. CString&EncModeName:通过此参数返回指定参数组名称。 返回值:无 vold TS_SetEncodeModeName(Int nIndex,CString EncModeName) 功能: 参数:int nIndex:参数组索引。 CString&EncModeName:参数组名称。 返回值:无 vold TS_ReadEncodeParameters(Int nIndex) 功能:获得指定参数组的参数值。在调用此函数后可以通过TS_GetVldeoBltRate等函数获 得每一个参数的当前值。在调用TS_InltDevlce时TS_InltDevlce会以最近一次调用 TS.SetEncodeMode设置的参数组索引调用TS_ReadEncodeParameters,所以在调用 TS_In比Device后可以直接通过TS_GetVIdeoBltRate等函数获得每一个参数的当前值。 参数:int nIndex:参数组索引。 返回值:无 vold TS UpdateEncodeParameter() 功能:在调用TS GetVIdeoBltRate等函数改变了PEG编码参数后,TS SetEncodeMode通 知 AV800D11更新参数值。 参数:无 返回值:无 int TS_GetGOPSIze( 功能:参考前面关于AV800的MPEG编码参数说明。 参数: 返回值: vold TS SetGOPSIze(Int nGOPSIze) 功能:参考前面关于AV800的MPEG编码参数说明。 参数: 返回值: BOOL TS GetHHRO 功能:参考前面关于AV8O0的MPEG编码参数说明。 参数: 返回值: vold TS SetHHR(BOOL bHHR) 功能:参考前面关于AV8O0的MPEG编码参数说明。 参数: 返回值 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系network@ustc.cdu.cn cxh@ustc.edu.cn
中国科学技术大学电子工程与信息科学系 多媒体通信实验室(Copyright 2002) 返回值:当前参数组索引 void TS_SetEncodeMode(int nIndex) 功能:改变参数组。 参数: int nIndex: 参数组索引,应大于0 并小于TS_GetTotalEncodeMode 的返回值。 返回值:无 void TS_GetEncodeModeName(int nIndex, CString & EncModeName) 功能:获得某参数组名称。 参数: int nIndex: 参数组索引. CString & EncModeName:通过此参数返回指定参数组名称。 返回值:无 void TS_SetEncodeModeName(int nIndex, CString EncModeName) 功能: 参数: int nIndex: 参数组索引。 CString & EncModeName:参数组名称。 返回值:无 void TS_ReadEncodeParameters(int nIndex) 功能:获得指定参数组的参数值。在调用此函数后可以通过TS_GetVideoBitRate 等函数获 得每一个参数的当前值。在调用TS_InitDevice 时TS_InitDevice 会以最近一次调用 TS_SetEncodeMode 设置的参数组索引调用TS_ReadEncodeParameters,所以在调用 TS_InitDevice 后可以直接通过TS_GetVideoBitRate 等函数获得每一个参数的当前值。 参数: int nIndex: 参数组索引。 返回值:无 void TS_UpdateEncodeParameter() 功能:在调用TS_GetVideoBitRate 等函数改变了MPEG 编码参数后,TS_SetEncodeMode 通 知 AV800 Dll 更新参数值。 参数: 无 返回值:无 int TS_GetGOPSize() 功能:参考前面关于AV800 的MPEG 编码参数说明。 参数: 返回值: void TS_SetGOPSize(int nGOPSize) 功能:参考前面关于AV800 的MPEG 编码参数说明。 参数: 返回值: BOOL TS_GetHHR() 功能:参考前面关于AV800 的MPEG 编码参数说明。 参数: 返回值: void TS_SetHHR(BOOL bHHR) 功能:参考前面关于AV800 的MPEG 编码参数说明。 参数: 返回值: 如果您在阅读过程中发现疏漏和错误,请您尽快和编者取得联系 network@ustc.edu.cn cxh@ustc.edu.cn