win7 graphedit调试(程序中filter是怎么连接的)

转自:http://blog.csdn.net/nvidiacuda/article/details/7833786

 

在我们编程构建filter链路之前,我们怎么来证明构思中的filter链路是切实可行的呢?最常用的方法是,首先在graphedit中验证,然后再以graphedit中的filter链路为模型在程序中实现。

    在程序中构建完filter链路后,有时候并不会马上能够正常运行。要是能够“直观地”看到在程序中filter是怎么连接的,问题就要好办 一点了。实际上,GraphEdit也提供了这样一种能够显示其它应用程序创建的FilterGraph的功能。

    要实用GraphEdit的这个功能,在程序中创建了加入:

 

 For GraphEdit Dubug purpose /
void CDXGraph::AddToObjectTable(void)
{
	IMoniker * pMoniker = 0;
    IRunningObjectTable * objectTable = 0;
    if (SUCCEEDED(GetRunningObjectTable(0, &objectTable))) 
	{
		WCHAR wsz[256];
		wsprintfW(wsz, L"FilterGraph %08p pid %08x", (DWORD_PTR)mGraph, GetCurrentProcessId());
		HRESULT hr = CreateItemMoniker(L"!", wsz, &pMoniker);
		if (SUCCEEDED(hr)) 
		{
			hr = objectTable->Register(0, mGraph, pMoniker, &mObjectTableEntry);
			pMoniker->Release();
		}
		objectTable->Release();
	}
}

void CDXGraph::RemoveFromObjectTable(void)
{
	IRunningObjectTable * objectTable = 0;
    if (SUCCEEDED(GetRunningObjectTable(0, &objectTable))) 
	{
        objectTable->Revoke(mObjectTableEntry);
        objectTable->Release();
		mObjectTableEntry = 0;
    }
}

在DirectShow开发指南中提示:GraphEdit的这个功能仅在Windows2000或Windows XP上支持。那么在win7 系统下能用GraphEdit的辅助调试功能?

本人开发环境是:win7(64bit)+vs2010

开始发现并不能用GraphEdit的辅助调试功能,原因:

windows7将一部分功能从quartz.dll转移到了proppage.dll,所以需要以管理员身份在命令行窗口手动注册一下regsvr32 proppage.dll

win7 下配置Directshow 见http://blog.csdn.net/luckyboy101/article/details/7801173

proppage.dll 目录为C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin

以管理员身份注册:regsvr32 C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin

注册成功后,运行vs2010项目,然后打开GraphEdit->File->connet to remote graph...就可以显示filter的情况了


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值