HRESULT hr; VMR9ProcAmpControlRange controlRange;
memset(&controlRange, 0, sizeof(VMR9ProcAmpControlRange)); controlRange.dwSize = sizeof(VMR9ProcAmpControlRange);
controlRange.dwProperty = ProcAmpControl9_Brightness; hr = m_pVMRMixerControl->GetProcAmpControlRange(0, &controlRange);
执行到这时hr=80004005,而MSDN提供的返回值参考只有
E_INVALIDARG: Invalid argument. Possible causes of this error include:
The stream number is invalid
The value of dwSize or dwProperty in the VMR9ProcAmpControl structure is invalid. E_POINTER NULL: pointer argument.
S_OK: Success.
VFW_E_NOT_CONNECTED: The pin is not connected.
VFW_E_VMR_NO_PROCAMP_HW: The graphics hardware does not support ProcAmp controls.
这些值没有一个是80004005(16进制),而且VMR9ProcAmpControlRange 的其他方法(GetAlpha)一些参数类似(第一个参数相同)
的函数执行并没有什么问题啊,以前也有人问过这样的问题,中文的有英文的也有,可问题没有解决的到底什么原因?拜托用过
GetProcAmpControlRange给看看。
memset(&controlRange, 0, sizeof(VMR9ProcAmpControlRange)); controlRange.dwSize = sizeof(VMR9ProcAmpControlRange);
controlRange.dwProperty = ProcAmpControl9_Brightness; hr = m_pVMRMixerControl->GetProcAmpControlRange(0, &controlRange);
执行到这时hr=80004005,而MSDN提供的返回值参考只有
E_INVALIDARG: Invalid argument. Possible causes of this error include:
The stream number is invalid
The value of dwSize or dwProperty in the VMR9ProcAmpControl structure is invalid. E_POINTER NULL: pointer argument.
S_OK: Success.
VFW_E_NOT_CONNECTED: The pin is not connected.
VFW_E_VMR_NO_PROCAMP_HW: The graphics hardware does not support ProcAmp controls.
这些值没有一个是80004005(16进制),而且VMR9ProcAmpControlRange 的其他方法(GetAlpha)一些参数类似(第一个参数相同)
的函数执行并没有什么问题啊,以前也有人问过这样的问题,中文的有英文的也有,可问题没有解决的到底什么原因?拜托用过
GetProcAmpControlRange给看看。
解决方案 »
- 关于CListCtrl控件列标题显示图标的问题
- 开源的XZip/UnZip 是不是不支持解压 Gzip格式的压缩包
- MFC焦点问题
- error C2601: 'OnMouseWheel' : local function definitions are illegal
- 请问怎样安全的结束一个Socket侦听线程
- listen
- 请教:用LoadImage()载入的光标资源,当光标尺寸大于32*32时,显示不正常?
- 一个弱问题。
- VC++对数据表之间的关系如何操作?2
- CFile::Open()和CDocument::GetFile()有何不同?请赐教.
- 为什么声明虚函数时一定要加上const
- (急)ADO Recordset的更新问题
你的调用方法等有问题
你确定满足这个条件?
hr = pGB_area0->AddFilter( m_pVMR, L"VMR9");
这个成功了是不是就满足条件了?详细看下面的代码
IGraphBuilder *pGB_area0;
IBaseFilter *m_pVMR;
void cVideo::InitInterfaceVmr9(BSTR mFileToPlay)
{
// create and add VMR9
long hr = CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC//成功
,IID_IGraphBuilder,(LPVOID *)&pGB_area0); hr = CoCreateInstance( CLSID_VideoMixingRenderer9, NULL,CLSCTX_INPROC_SERVER,//成功
IID_IBaseFilter, (void**)&(m_pVMR) ); hr = pGB_area0->AddFilter( m_pVMR, L"VMR9");//成功
if( FAILED(hr))
{
MessageBox(NULL, TEXT("Failed to add VMR9 to the graph"), TEXT("Error"), MB_OK);
}
long hrpGB_area1 = pGB_area0->RenderFile(mFileToPlay, NULL);//成功
if(FAILED(hrpGB_area1)){ exit(0);
}
Cvideo_Vmr9 CV;
BOOL Vmr9Init = CV.QueryInterfaceConfig9(m_pVMR);}IVMRMixerControl9 *Config9;
IBaseFilter *m_pVMR;
BOOL Cvideo_Vmr9::QueryInterfaceConfig9(IBaseFilter* m_pVMR1){
m_pVMR = m_pVMR1;
LONG hr =m_pVMR->QueryInterface( IID_IVMRMixerControl9, (void**)&Config9);//成功
if(FAILED(hr))
{
return FALSE;
} VMR9ProcAmpControlRange controlRange;
memset(&controlRange, 0, sizeof(VMR9ProcAmpControlRange)); controlRange.dwSize = sizeof(VMR9ProcAmpControlRange);
controlRange.dwProperty = ProcAmpControl9_Brightness; hr = Config9->GetProcAmpControlRange(0, &controlRange);//失败...80004005(16进制)
if (hr ==S_OK)
{
AfxMessageBox("ok"); }
else
AfxMessageBox("else");
float fAlpha=0;
hr = Config9->GetAlpha(0, &fAlpha);//成功 DWORD dwZOrder = 0;
hr = Config9->GetZOrder(0, &dwZOrder);//成功
return TRUE;
}
VMR9ProcAmpControl controlRange;
memset(&controlRange, 0, sizeof(VMR9ProcAmpControl)); controlRange.dwSize = sizeof(VMR9ProcAmpControl);
controlRange.dwFlags = ProcAmpControl9_Brightness; hr = Config9->GetProcAmpControl(0, &controlRange);
奇怪的是这个方法返回的错误是 VFW_E_VMR_NO_PROCAMP_HW:The graphics hardware does not support ProcAmp controls.
竟然和GetProcAmpControlRange方法返回的错误类型不同,我的显卡是radeno X300,足够支持的了,疑惑中