DirectShow中Filter的属性

柯本 2002-08-28 02:42:54

请看以下程序:

IGraphBuilder* m_IGraphBuilder;

HRESULT hr;
CAUUID cauuid;
IBaseFilter *pcb;
ISpecifyPropertyPages *pSpec;


hr = CoCreateInstance (CLSID_FilterGraph, NULL, CLSCTX_INPROC,
IID_IGraphBuilder, (void **) &m_IGraphBuilder);
if (FAILED(hr))
ShowMessage(TEXT("建m_IGraphBuilder失败"));

if(!AddFilter2(CLSID_VideoRenderer, "Video Renderer")) //我自编的
{
ShowMessage("Add Video Renderer Error!");
return false;
}


m_IGraphBuilder->FindFilterByName(L"Video Renderer",&pcb);

hr = pcb->QueryInterface(IID_ISpecifyPropertyPages, (void **)&pSpec);
if (hr == S_OK) {
hr = pSpec->GetPages(&cauuid);
hr = OleCreatePropertyFrame(NULL, 30, 30, NULL, 1, (IUnknown **)&pcb, cauuid.cElems,
(GUID *)cauuid.pElems, 0, 0, NULL);
CoTaskMemFree(cauuid.pElems);
pSpec->Release();
}
pcb->Release();
...

它每次都要用一DIALOG, 能否不用OleCreatePropertyFrame直接改Filter的属性
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
柯本 2002-09-03
  • 打赏
  • 举报
回复
我已解决,非常感谢你提供的思路。
另有一问题
http://www.csdn.net/expert/topic/976/976928.xml?temp=.1477472
请你看一下!
tony_1029 2002-09-02
  • 打赏
  • 举报
回复
你要用filter来得到接口控制他的属性,因为它是作在filter上的。例如你可以得到他的IKsPropertySet接口,调用他的set和get来控制.
tony_1029 2002-08-30
  • 打赏
  • 举报
回复
这个CLSID_VideoRenderer是你自己写的,在你做这个property page的时候不是要有一些接口函数来给filter设置一些参数和从filter来接收数据,这些就函数就可以完成你的设置工作
tony_1029 2002-08-30
  • 打赏
  • 举报
回复
一般的property page都会提供一些接口由来和filter进行通讯,你要先了解这个
property page都提供了那些接口,然后拿到这些接口的实例就可以将你的参数送到filter中了。
柯本 2002-08-30
  • 打赏
  • 举报
回复
up
柯本 2002-08-30
  • 打赏
  • 举报
回复
CLSID_VideoRenderer 不是我自已写的,是directshow 的一个Filter
它有三个属性页,不知怎样直接修改其属性?
另外
IPropertyPage *pb;

hr = pcb->QueryInterface(IID_IPropertyPage, (void **)&pb);
不能得到它的IPropertyPage WHY???

8,303

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧