因为是用WM Encoder写的,所以不能用VFW的VideoSourceDlg那个东东。

解决方案 »

  1.   

    是什么卡,很多卡的开发包都允许你设置这些的。如果不用VFW的那个DLG,你至少应该知道如何与卡的驱动程序通信了。SendDriverMessage或IAMVfwCaptureDialogs::SendDriverMessage
      

  2.   

    能给个SendDriverMessage或IAMVfwCaptureDialogs::SendDriverMessage的小例子吗?视频采集卡的很多东东应该是通用的吧。
    我的卡是 Bose BS-621
      

  3.   

    我用的是Ospery卡,
    HDRVR     hDrvr;
    CONTROLS  oCtls;
    SRCCTL  oSrcCtl;
    BOOL    bOk;
    O100_OPEN oOpen;
    oOpen.dwSizeof = sizeof(oOpen);
    oOpen.dwSig    = MMAC_INPUT_SIG;
    oOpen.dwFlags  = CTL_CHANNEL | CTL_LOCK;
    oOpen.dwDevice =m_nID;
    hDrvr = OpenDriver(theApp.DriverName, NULL, (LPARAM)&oOpen);
    if (hDrvr == NULL){SaveMsg("OpenDriver error!");return FALSE;}
    CString szItem; szItem.Format("VideoFormat%d",m_nID+1);
    oSrcCtl.dwCmd     = VIDEOFMT;
    oSrcCtl.dwData    = 0;
    oSrcCtl.dwVFmt    =theApp.GetProfileInt("OspreyParam",szItem,1)==1 ? SRC_NTSC :SRC_PAL;
    oSrcCtl.pCtlsGet  = NULL;
    oSrcCtl.pCtlsSet  = NULL;
    bOk = static_cast<BOOL>(SendDriverMessage(hDrvr,MMAC_o100_SRC_CONTROL,(LONG)&oSrcCtl,sizeof(SRCCTL)));szItem.Format("VideoPort%d",m_nID+1);
    oSrcCtl.dwCmd     = theApp.GetProfileInt("OspreyParam",szItem,1)==1 ? COMPOSITE :SVIDEO;
    oSrcCtl.dwData    = 1;
    oSrcCtl.dwVFmt    = 0;
    oSrcCtl.pCtlsGet  = &oCtls;
    oSrcCtl.pCtlsSet  = NULL; bOk = static_cast<BOOL>(SendDriverMessage(hDrvr,MMAC_o100_SRC_CONTROL,(LONG)&oSrcCtl,sizeof(SRCCTL)));oCtls.cBrightness = (char)(RecParam.GetBrightness() - 128);
    oCtls.cHue = (char)(RecParam.GetHue() - 128);
    oCtls.wContrast =(WORD) RecParam.GetContrast();
    oCtls.wSatU       = (WORD)RecParam.GetSaturation();
    oCtls.wSatV       = (WORD)RecParam.GetSaturation() * 0xB4 / 0xFE;// Set the current video input to the new control setting: oSrcCtl.dwCmd     = VIDEOCTLS;
    oSrcCtl.dwVFmt    = 0;
    oSrcCtl.pCtlsGet  = NULL;
    oSrcCtl.pCtlsSet  = &oCtls;
    bOk = static_cast<BOOL>(SendDriverMessage(hDrvr,MMAC_o100_SRC_CONTROL,(LONG)&oSrcCtl,sizeof(SRCCTL)));
    CloseDriver(hDrvr, 0, CTL_SAVE);对于你的卡SendDriverMessage应该传什么参数,我不知道。
      

  4.   

    像Windows Media Encoder那个,它在选中视频采集卡后,点配置,会弹出属性页是一个选择视频源的,再点上面的属性按钮才会弹出属性,那个是怎么做的呢?