GraphEdit 是一个用于建立和测试Filter graph 的可视化工具。在DirectX SDK.中附带一个可执行程序版本(在SDK目录中的Bin/DXUtils/graphedt.exe)。你可以快速测试你建立的Filter graph是否达到预期的效果,你也可以查看由另一个程序建立的Filter graph。GraphEdit有标准的Windows用户界面,如图:
// pUnkGraph:Filter Graph Manager对象指针
// pdwRegister:成功注册后返回的一个ID
HRESULT AddToRot(IUnknown *pUnkGraph, DWORD *pdwRegister)
{
    IMoniker * pMoniker;
    IRunningObjectTable *pROT;
    if (FAILED(GetRunningObjectTable(0, &pROT))) {
        return E_FAIL;
    }
    WCHAR wsz[256];
    wsprintfW(wsz, L"FilterGraph %08x pid %08x", (DWORD_PTR)pUnkGraph, GetCurrentProcessId());
    HRESULT hr = CreateItemMoniker(L"!", wsz, &pMoniker);
    if (SUCCEEDED(hr)) {
        hr = pROT->Register(0, pUnkGraph, pMoniker, pdwRegister);
        pMoniker->Release();
    }
    pROT->Release();
    return hr;
}
在销毁Filter Graph Manager对象之前,还必须调用RemoveFromRot进行反注册
// pdwRegister为成功调用AddToRot函数后返回的ID
void RemoveFromRot(DWORD pdwRegister)
{
    IRunningObjectTable *pROT;
    if (SUCCEEDED(GetRunningObjectTable(0, &pROT))) {
        pROT->Revoke(pdwRegister);
        pROT->Release();
    }
}
应用程序中的整个操作过程如下:

IGraphBuilder *pGraph;
DWORD dwRegister;
   
// Create the filter graph manager.
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                        IID_IGraphBuilder, (void **)&pGraph);
#ifdef _DEBUG
hr = AddToRot(pGraph, &dwRegister);
#endif

// Rest of the application (not shown).

#ifdef _DEBUG
RemoveFromRot(dwRegister);
#endif
pGraph->Release();

IGraphBuilder *pGraph;
DWORD dwRegister;
   
// Create the filter graph manager.
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                        IID_IGraphBuilder, (void **)&pGraph);
#ifdef _DEBUG
hr = AddToRot(pGraph, &dwRegister);
#endif

// Rest of the application (not shown).

#ifdef _DEBUG
RemoveFromRot(dwRegister);
#endif
pGraph->Release();

在用GraphEdit显示应用程序中构建的Filter Graph之前,把应用程序和GraphEdit同时执行,然后执行GraphEdit菜单命令File | Connect to Remote Graph…,随后将弹出如图1.5的对话框,选中一个Filter Graph的注册条目后按下“OK”按钮即可
注意:转贴请注明出处,谢谢合作。

IGraphBuilder *pGraph;
DWORD dwRegister;
   
// Create the filter graph manager.
CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER,
                        IID_IGraphBuilder, (void **)&pGraph);
#ifdef _DEBUG
hr = AddToRot(pGraph, &dwRegister);
#endif

// Rest of the application (not shown).

#ifdef _DEBUG
RemoveFromRot(dwRegister);
#endif
pGraph->Release();

GraphEdit 应用相关推荐

  1. 【转】FFmpeg获取DirectShow设备数据(摄像头,录屏)

    这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1.       列设备 ffmpeg -list_devic ...

  2. API Monitor(API监控工具)

    概观 API Monitor是一个免费软件,可以让你监视和控制应用程序和服务,取得了API调用. 它是一个强大的工具,看到的应用程序和服务是如何工作的,或跟踪,你在自己的应用程序的问题. 产品特点 6 ...

  3. DirectShow基础编程 最简单的源Filter的编写步骤 (转)

    转自: http://blog.csdn.net/bwmwm/article/details/5463852 1.创建一个空的Dll工程,添加5个空文件分别名为:MyOutputPin.h.MySou ...

  4. DirectShow开发快速入门之慨述

    DirectShow是微软公司提供的一套在Windows平台上进行流媒体处理的开发包,与DirectX开发包一起发布.那么,DirectShow能够做些什么呢?且看,DirectShow为多媒体流的捕 ...

  5. FFmpeg获取DirectShow设备数据(摄像头,录屏)

    这两天研究了FFmpeg获取DirectShow设备数据的方法,在此简单记录一下以作备忘.本文所述的方法主要是对应Windows平台的. 1.       列设备 [plain] view plain ...

  6. 最简单的基于FFmpeg的AVDevice例子(读取摄像头)

    ===================================================== 最简单的基于FFmpeg的AVDevice例子文章列表: 最简单的基于FFmpeg的AVDe ...

  7. 基于DirectShow的局域网内音视频流的多机共享

    1.  引言 在局域网内传输音.视频等多媒体数据主要有两种方案:下载和流式传送.下载的主要缺点是,必须等全部内容传输完毕,然后才能在本地机器打开:而采用流式传输方案,多媒体数据流可以连续.实时地向用户 ...

  8. DirectShow系统初级指南

    流媒体的处理,以其复杂性和技术性,一向广受工业界的关注.特别伴随着因特网的普及,流媒体在网络上的广泛应用,怎样使流媒体的处理变得简单而富有成效逐渐成为了焦点问题.选择一种合适的应用方案,事半功倍.此时 ...

  9. (转) mp4编码全介绍 (一)

    1) 什么是MP4?听闻它是一种"容器格式",那是什么?容器格式允许你将不同种类的多媒体数据流(多为视频流和音频流)合并在一个单一的文件内. 多媒体容器格式,就是我们熟知的AVI( ...

最新文章

  1. 对于任天堂你了解多少?
  2. python中对集合的操作
  3. 微信v3app支付php,php微信支付之APP支付方法_php技巧
  4. No relevant classes found. No output generated、metaObject连接错误
  5. 前后端分离的项目部署到tomcat_如何在开发时部署和运行前后端分离的JavaWeb项目...
  6. Pytorch中的 torch.as_tensor() 和 torch.from_numpy() 的区别
  7. source insight 配置
  8. WCF 基础 契约 和 绑定
  9. SAP 打印自动导出PDF本地文件(自己做的例子)
  10. cpu占用过高解决方案实践
  11. 网络攻防学习心得一(20159320)学习小结
  12. mac上的PCB设计软件现状
  13. 计算机容差技术CAT最新应用,cat是计算机辅助什么?
  14. 1.Linux目录管理
  15. 大厂可能真不像你想象的那样系列之阿里
  16. php:::值传递战援引传递
  17. 5.3.4 消费组稳定后,原有消费者重新加入消费组
  18. 全球及中国炼油工业市场供需规模及竞争格局咨询报告2021版
  19. 【AI视野·今日CV 计算机视觉论文速览 第185期】Tue, 15 Sep 2020
  20. c/c++ libuv_Tcp服务器搭建

热门文章

  1. ros串口通讯(读取串口数据)
  2. 图像处理2:图像边缘检测(python+opencv)
  3. Linux Ubuntu 虚拟机不能连网、Linux Ubuntu 虚拟机怎么连网
  4. sql查询之联合查询
  5. 国内快速下载 CentOS 镜像源
  6. 基于Qemu虚拟vexpress-a9开发板,实现完整系统启动(uboot+kernel+rootfs)
  7. 华为海思 verilog 笔试准备
  8. 校验日期+时间部分的常用方法
  9. 计算机组成原理实验总结,计算机组成原理实验报告总结归纳.docx
  10. CheckListBox的实现方式分析