当前位置:  开发笔记 > 编程语言 > 正文

如何对DirectShow图形进行逆向工程?

如何解决《如何对DirectShow图形进行逆向工程?》经验,为你挑选了2个好方法。

我有一个DirectShow图表来从网络流中呈现MPEG2/4电影.当我通过手动连接引脚组装图形时,它不会渲染.但是当我在GraphBuilder上调用Render时,渲染效果很好.

显然有一些设置步骤,我没有在GraphBuilder执行的图形中的某个过滤器上执行.

有没有办法在组装图形时看到GraphBuilder的调试输出?

有没有办法转储工作图,看看它是如何组合在一起的?

解开生活在DirectShow盒子里的神秘的任何其他想法?

谢谢!-Z



1> Timbo..:

您可以使用DirectShow SDK中的工具GraphEdit观看您创建的图形.在GraphEdit中,选择文件 - >连接到远程图...

要在列表中查找图形,必须在运行对象表中注册它:

void AddToRot( IUnknown *pUnkGraph, DWORD *pdwRegister ) 
{
    IMoniker* pMoniker;
    IRunningObjectTable* pROT;
    GetRunningObjectTable( 0, &pROT );

    WCHAR wsz[256];     
    swprintf_s( wsz, L"FilterGraph %08p pid %08x", (DWORD_PTR)pUnkGraph, GetCurrentProcessId() );
    CreateItemMoniker( L"!", wsz, &pMoniker );

    pROT->Register( 0, pUnkGraph, pMoniker, pdwRegister );

    // Clean up any COM stuff here ...
}

在销毁图形之后,应该通过调用IRunningObjectTable :: Revoke将其从ROT中删除



2> Cristian Ada..:

Roman Ryltsov创建了一个DirectShow Filter Graph Spy工具(http://alax.info/blog/777),它是FilterGraph接口上的一个包装器,它记录了对FilterGraph方法的所有调用.

此外,它会将所有创建的图形添加到运行对象表(ROT)中,然后可以使用GraphEdit或GraphStudio等工具进行可视化.当您需要查看Windows Media Player图形的外观时非常有用.

推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有