如何设置视频采集的制式

如何设置视频采集的制式,我对这段代码有问题;解决马上结贴[问题点数:80分,结帖人:xiaoleixyz]

  • xiaoleixyz
  • (小熊上路)
  • 等 级:
  • 结帖率:
楼主发表于:2004-03-18 09:59:57
我想修改视频采集的制式在网上查到这段代码但有几个问题还请大家多多指教: 
1、是不是要用到DirectShow,请问DirectShow的函数库和头文件是什么,该如何导入 
2、在以下这段代码中的pBuilder如何声明的是不是: 
ICaptureGraphBuilder*   pBuilder; 
3、还有就是pSrc,MEDIATYPE_Interleaved,MEDIATYPE_Video,IID_IAMAnalogVideoDecoder这几个是什么? 
我对dirctshow和COM都不熟,还请大家解释的详细一些;先多谢了 

代码: 
typedef   enum 
        { 
                AnalogVideo_None               =   0x00000000 
                AnalogVideo_NTSC_M           =   0x00000001,   
                AnalogVideo_NTSC_M_J       =   0x00000002,     
                AnalogVideo_NTSC_433       =   0x00000004, 
                AnalogVideo_PAL_B             =   0x00000010, 
                AnalogVideo_PAL_D             =   0x00000020, 
                AnalogVideo_PAL_H             =   0x00000080, 
                AnalogVideo_PAL_I             =   0x00000100, 
                AnalogVideo_PAL_M             =   0x00000200, 
                AnalogVideo_PAL_N             =   0x00000400, 
                AnalogVideo_PAL_60           =   0x00000800, 
                AnalogVideo_SECAM_B         =   0x00001000, 
                AnalogVideo_SECAM_D         =   0x00002000, 
                AnalogVideo_SECAM_G         =   0x00004000, 
                AnalogVideo_SECAM_H         =   0x00008000, 
                AnalogVideo_SECAM_K         =   0x00010000, 
                AnalogVideo_SECAM_K1       =   0x00020000, 
                AnalogVideo_SECAM_L         =   0x00040000, 
                AnalogVideo_SECAM_L1       =   0x00080000, 
                AnalogVideo_PAL_N_COMBO   =   0x00100000 
        }   AnalogVideoStandard; 

IAMAnalogVideoDecoder   *pDecoder 

hr   = 
pBuilder-> FindInterface(&PIN_CATEGORY_ANALOGVIDEOIN,&MEDIATYPE_Interleaved, 
pSrc,IID_IAMAnalogVideoDecoder,   (void   **)&pDecoder); 
if(hr   !=   S_OK) 
  hr   =   pBuilder-> FindInterface(&PIN_CATEGORY_ANALOGVIDEOIN,&MEDIATYPE_Video, 
pSrc,IID_IAMAnalogVideoDecoder,   (void   **)&pDecoder); 
if(hr   ==   S_OK) 

  pDecoder-> put_TVFormat(AnalogVideo_PAL_N   ); 
 
 
#1楼 得分:0回复于:2004-03-18 10:01:49
还有就是:是不是有一个系统自带的对话框也可以设置制式,请问那个对话框该如何才能调用?
 
#2楼 得分:0回复于:2004-03-18 11:07:28
mark
 
#3楼 得分:30回复于:2004-03-18 12:27:29
HRESULT   CDShowUtil::SetTVFormat( 
ICaptureGraphBuilder2   *pBuilder, 
IBaseFilter   *pCapture, 
long   lAnalogVideoStandard) 

if(pBuilder   ==   NULL   ||   pCapture   ==   NULL)   return   E_POINTER; 

HRESULT   hr; 

//设置制式为PAL_B 
IAMAnalogVideoDecoder*   pVideoDecoder; 
hr   =   pBuilder-> FindInterface(&PIN_CATEGORY_ANALOGVIDEOIN   ,   NULL, 
pCapture,   IID_IAMAnalogVideoDecoder,   (void   **)&pVideoDecoder); 
if(hr   ==   S_OK) 

hr   =   pVideoDecoder-> put_TVFormat(lAnalogVideoStandard); 
pVideoDecoder-> Release(); 

else 

/* 
//对话框设置制式 
//   the   video   capture   filter   itself 
ISpecifyPropertyPages   *pSpec; 
CAUUID   cauuid; 

hr   =   pCapture-> QueryInterface(IID_ISpecifyPropertyPages,   (void   **)&pSpec); 
if(hr   ==   S_OK) 

hr   =   pSpec-> GetPages(&cauuid); 
if(hr   ==   S_OK   &&   cauuid.cElems   >   0) 

hr   =   OleCreatePropertyFrame(NULL,   30,   30,   NULL,   1, 
(IUnknown   **)&pCapture,   cauuid.cElems, 
(GUID   *)cauuid.pElems,   0,   0,   NULL); 

CoTaskMemFree(cauuid.pElems); 

pSpec-> Release(); 
}*/ 



return   hr; 
}
 
#4楼 得分:10回复于:2004-03-18 14:54:38
SetTVFormat这个函数怎么调用呢, 
我的pBuilder和pCapture   一直都是空的; 
我的代码是: 
pBuilder=0; 
hr   =   CoCreateInstance((REFCLSID)CLSID_CaptureGraphBuilder2, 
    NULL,   CLSCTX_INPROC,   (REFIID)IID_ICaptureGraphBuilder2, 
    (void   **)&pBuilder); 

能不能把您的代码发一分给我: 
xiaoxiongxyz@sohu.com 
 
#5楼 得分:10回复于:2004-03-18 15:13:25
头文件   <DSHOW.h> 
函数库   strmiids.lib
 
#6楼 得分:30回复于:2004-03-25 13:21:31
首先要搞清楚你的采集卡是什么驱动类型的,是WDM还是VFW,如果是WDM的话,可以用调用上面提到的函数,来进行设置;如果是VFW的话,只能把调用VFW对话框来调整 
IAMVfwCaptureDialogs   *   VFWDlg; 
hr   =   m_pSourceFilter-> QueryInterface(IID_IAMVfwCaptureDialogs,(void**&m_pVFWDlg);   
hr   =   m_pVFWDlg-> ShowDialog(VfwCaptureDialog_Source,   NULL); 
hr   =   m_pVFWDlg-> ShowDialog(VfwCaptureDialog_Format,   NULL); 
hr   =   m_pVFWDlg-> ShowDialog(VfwCaptureDialog_Display,   NULL); 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值