hur.cn - 华软网

 热门搜索

如何将这段代码改成适合WDM采集卡可用的驱动

  作者:未知    来源:网络    更新时间:2011/8/1
我现在用VFW实现了视频的采集,压缩,保存,可是一旦用在1394采集卡上,就采集不到,网上都说是1394是WDM采集驱动,想请教各位大大,我的这个程序如何改成那样的驱动。VFW设置驱动代码如下
C++">
/////////////////////////////////////////////////////////////////////////////////////////////////
//以下是新添加程序

char szDeviceName[80];
char szDeviceVersion[80];
int wIndex;


m_Captured = FALSE;//捕捉器的初始化,表示是否开始捕捉
m_hWndVideo = capCreateCaptureWindow(NULL,WS_POPUP,0,0,768,576,m_hWnd,0);//创建视频捕捉窗口,并得到句柄m_hWndVideo

//连接驱动程序
for(wIndex = 0; wIndex<10;wIndex++)
{
if(capGetDriverDescription(wIndex,szDeviceName,sizeof(szDeviceName),szDeviceVersion,sizeof(szDeviceVersion)))
{
if (capDriverConnect(m_hWndVideo,wIndex))//连接成功后,进行一系列的窗口参数的设置和视频参数的设置

{

::SetParent(m_hWndVideo,*this);     //将m_hWndVideo窗口改为父窗口句柄
::SetWindowLong(m_hWndVideo,GWL_STYLE,WS_CHILD);

CRect wndRC;//下面的m_Panel应该在头文件中进行声明 格式为CStatic m_Panel
m_Panel.GetClientRect(wndRC);//应用这句函数之前,应该在DODataExchange(...)中的CDialog::DoDataExchange(pDX);之后添加DDX_Control(pDX, IDC_PANEL, m_Panel);才能成功使用
m_Panel.MapWindowPoints(this,wndRC);
wndRC.DeflateRect(0,0,0,0);

// ::SetWindowPos(m_hWndVideo,NULL,wndRC.left,wndRC.top,wndRC.Width(),wndRC.Height(),SWP_NOZORDER);
::SetWindowPos(m_hWndVideo,NULL,0,0,768,576,SWP_NOZORDER);
::ShowWindow(m_hWndVideo,SW_SHOW);

CAPDRIVERCAPS caps;
BOOL ret = capDriverGetCaps(m_hWndVideo,sizeof(caps),&caps);//对驱动器性能做初始化

// if(caps.fHasDlgVideoFormat)   //打开视频格式设置界面
// ret = capDlgVideoFormat(m_hWndVideo);
if (caps.fHasOverlay)
capOverlay(m_hWndVideo,TRUE);//对捕捉到得视频使用Overlay预览方式

CAPTUREPARMS params;//驱动器捕捉参数
capCaptureGetSetup(m_hWndVideo,&params,sizeof(params));//对一系列参数进行设置


params.fYield           = TRUE;
params.fAbortLeftMouse  = FALSE;
params.fAbortRightMouse = FALSE;
params.fLimitEnabled    = FALSE;
params.vKeyAbort        = FALSE;
params.fCaptureAudio    = FALSE;

capCaptureSetSetup(m_hWndVideo,&params,sizeof(params));
capSetCallbackOnVideoStream(m_hWndVideo,EncodeCallback);//调用回调函数,回调函数的作用是进行视频压缩

capPreviewRate(m_hWndVideo,100);//设置捕获的视频显示时的帧率
capPreviewScale(m_hWndVideo,TRUE);   //设置视频大小
capPreview(m_hWndVideo,TRUE);//使用Preview预览方式
// capSetCallbackOnVideoStream(m_hWndVideo,EncodeCallback);
}
}
}

---华软 网友回答---
顶一下,帮忙啦
---华软网友回复---
都没有人来啊,已经自己解决,来人接分
---华软网友回复---
接分,来了
---华软网友回复---
能否告诉我如何解决的啊?QQ2767366      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。