DirectShow中的工具GraphEdit使用小结

2023-11-17

一. 安装完Windows SDK 7.0或7.1后,在C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin下有32位的graphedt.exe,及x64目录下有64位版本的graphedt.exe,当使用任何一个版本不正常的行为时,换成另一个版本试试;


二. 在Win7下,GraphEdit的【Connect To Remote Graph】不好用时,解决的办法是注册:regsvr32 "C:\Program Files\Microsoft SDKs\Windows\v7.0\Bin\proppage.dll"(注意该dll也有x86和x64版本区分),可解决问题;


三. 调试DirectShow程序的时候,利GraphEdit查看自已程序中的Graph:

1.下面的这个函数是将我们的IGraphBuilder接口添加到GraphEdit中去.


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(ROTFLAGS_REGISTRATIONKEEPSALIVE, pUnkGraph,
             pMoniker, pdwRegister);
         pMoniker->Release();
     }
     pROT->Release();
    return hr;
}
2.下面的这个函数是从GraphEdit中移除我们的IGraphBuilder.


void RemoveFromRot(DWORD pdwRegister)
{
     IRunningObjectTable *pROT;
    if (SUCCEEDED(GetRunningObjectTable(0, &pROT))) {
         pROT->Revoke(pdwRegister);
         pROT->Release();
     }
}
3.以上两个函数在程序的使用方法.


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();
4.打开GraphEdit程序后,点击File菜单->Connect to Remote Graph或Ctrl+G出现一个选窗口点击确定就可以看到你程序中的Graph了!


四、其实不推荐使用微软的GraphEdit,还不如安装K-Lite Codec后,使用里面自带的GraphStudioNext.exe。网址:http://www.codecguide.com/



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DirectShow中的工具GraphEdit使用小结 的相关文章

  • vs+opencv环境配置出现程序无法启动及提示无法打开opencv_world400d.lib问题的解决方法

    vs opencv 1配置完成但是频频出错 1问题描述 无法启动程序 系统找不到指定的文件 我的原图忘记保存 故找了一张类似问题的图片做代替描述问题 在出现上述问题之后 点击确定后 程序报错 错误如下图 2解决方法 我已按照网上教程配置环境
  • 隐藏dlg窗口方法

    单独找到任务栏设置父窗口 并不能达到隐藏窗口的效果 还是有一个对话框在任务栏中出现 0 窗口属性设置步骤2 调整对话框属性ToolWindow为true步骤3 调整对话框属性Border为None 1 设置任务栏位父窗口 CWnd task
  • 使用窗函数设计FIR滤波器

    首先 先明白几个概念 通带 阻带 过渡带 通带纹波和阻带纹波分别是什么 看下图 范围称为通带 对于允许误差而言 这个范围 称为通带纹波 同样的 对于范围则是阻带 这个范围 称为阻带纹波 中间的黑色部分是过度带 角频率称为通带边缘频率 角频率
  • C++ 包管理器

    C 包管理器 Vcpkg Vcpkg 可帮助您在 Windows Linux 和 MacOS 上管理 C 和 C 库 相关资料 Vcpkg 管理 C 和 C 库 vcpkg github conan Conan是分布式跨平台开源的C C 软
  • 如何读懂别人写的vc++代码

    每个人的编程习惯各异规范程度 命名规则 使用习惯也不尽相同 有人爱用Timer 有的人用线程 有的人用PostMessage有的人用SetEvent或回调或直接调用 所以别人的程序也是良莠不齐 所以要求你对编程基础 程序构架 业务规则都要有
  • GDI和GDI+的应用场合思考

    GDI是微软公司的著名的二维图形引擎 GDI 则是微软公司为了提高显示效果而推出的一种新型图形引擎 下面我就我的一些使用经验阐述二者适用的应用场合 GDI基本能满足一般的绘图要求 我觉得GDI最令人诟病的是它画出来的线显示的锯齿实在比较厉害
  • 在Windows上使用clang编译器

    在Stackoverflow等网站上 经常出现各种编译器的对比的结果 其中clang是很常见的 那么 怎样在Windows上使用clang呢 没那么直观 直接去llvm官网上下载clang的发行包 解压 到bin下面 看到应该是我们想要的工
  • c#使用钩子拦截鼠标键盘事件

    窗体本身带的键盘鼠标事件函数只能响应窗体自己的事件 窗体之外的事件是不会响应的 比如当窗体最小化的时候也响应就要用全局钩子拦截消息来处理了 大概过程就是在窗体初始化时加载钩子 等待事件消息 事件触发后调用响应函数处理 using Syste
  • VC++判断CheckBox控件是否被勾选

    图示为CheckBox控件 控件重映射为m timed send 控件默认状态为未勾选 0 状态 所以勾选时取反即可 代码如下 void CHCCOMDlg OnTimedSend TODO Add your control notific
  • 第七讲:构造函数与析构函数

    第七讲 构造函数与析构函数 本讲基本要求 掌握 构造和析构函数概念 初始化 作用 理解 构造构函的重载 带参数的构造函数两种表达格式 重点 难点 构造和析构函数概念 初始化 作用 通过前两章的学习 我们已经对类和对象有了初步的了解 在本章中
  • VC++、MFC中最好的开源项目

    介绍一下用VC MFC写的最好的开源项目 Sourceforge net中有许多高质量的VC 开源项目 我列举了一些可以作为VC 程序员的参考 一 优秀的开源项目 7 Zip http sourceforge net projects se
  • 微软正式提供Visual Studio 2013正式版下载(附直接链接汇总)

    转自 http www iruanmi com visual studio 2013 微软已经向MSDN订阅用户提供了Visual Studio 2013正式版镜像下载 不过非MSDN用户可以在微软的Visual Studio 2013官方
  • curl,libssh2,openssl,zlib的编译

    前年 客户要求ATM客户端程序添加sftp功能 领导发给我4个静态库 分别是libcurl lib libeay32 lib ssleay32 lib libssh2 lib 使用这4个库成功实现了sftp功能 当时从网络上查到该四个静态库
  • Qt 槽函数被执行两次的问题

    在使用vs2015编写QT程序时 偶然发现点击一次button槽函数响应了两次 我起初认为是鼠标问题 特意换了鼠标试试结果还是一样的 所以我就研究了一下 按钮的名字是btn account add 以前我用Qt Creator 给按钮添加槽
  • 一些主流IDE(VC6、VS2010、Code::Blocks、Eclipse)使用过程中常见问题集锦

    关于主流IDE使用的一些常见问题 本文由CSDN 蚍蜉撼青松 主页 http blog csdn net howeverpf 整理原创 转载请注明出处 一 在Win7下使用VC6 0应该注意的几个问题 我们知道 Win7和VC6 0本身是不
  • win7安装了vc++6.0打开已保存文件项目就会崩溃

    我用win7安装了vc 6 0的英文完整版 绿色中文版 发现当运行程序时 要打开已保存文件项目就会崩溃 系统对话筐就说 Microsoft R Developer Studio已停止工作 选择调试或者关闭 office 2010 与vc 6
  • 如何编译火狐浏览器的源代码

    以下摘录于 http zhidao baidu com question 33214960 html 源代码编译安装Firefox linux下 http forums mozine cn index php showtopic 601 W
  • VC++ FTP文件上传(断点续传)

    include
  • Vc/MFC中自定义消息及其PostMessage触发使用

    http blog csdn net ztz0223 article details 2058402 http blog csdn net a8082649 article details 7733527 http bbs csdn net
  • Hook DirectInput->CreateDevice->GetDeviceData解决方案

    已解决 来人散分了 Hook DirectInput gt CreateDevice gt GetDeviceData 在一款使用DirectInput的3D游戏里面 通过Hook DirectInput8Create函数 CreateDe

随机推荐

  • 如何使用DLL函数动态加载-静态加载

    公司里的项目里用到加密解密 使用的是客户指定的DLL库来加密解密 开始 我按照以前的方法来使用DLL库 这里也介绍下吧 虽然网上很多 一般动态加载DLL的步骤如下 HINSTANCE DLL库实例名 LoadLibrary T DLL库名
  • 高德api 实现根据中文地址地图打点弹窗

  • diffusion models笔记

    ELBO of VDM Understanding 1 中讲 variational diffusion models VDM 的 evidence lower bound ELBO 推导时 53 式有一个容易引起误会的记号
  • Promethus(普罗米修斯)安装与配置(亲测可用)

    1 普罗米修斯概述 Prometheus 是由go语言 golang 开发 是一套开源的监控 报警 时间序列数 据库的组合 适合监控docker容器 Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包 自201
  • 字符串匹配算法0-基本概念

    字符串匹配的算法在很多领域都有重要的应用 这就不多说了 我们考虑一下算法的基本的描述 给定大小为 字母表 上的长度为n的文本t和长度为m的模式p 找出t中所有的p的出现的地方 一个长度为m的串p表示为一个数组p 0 m 1 这里m 0 当然
  • [前端系列第5弹]JQuery简明教程:轻松掌握Web页面的动态效果

    在这篇文章中 我将介绍jQuery的基本概念 语法 选择器 方法 事件和插件 以及如何使用它们来实现Web页面的动态效果 还将给一些简单而实用的例子 让你可以跟着我一步一步地编写自己的jQuery代码 一 什么是JQuery JQuery是
  • 【异步系列五】关于async/await与promise执行顺序详细解析及原理详解

    前段时间总结了几篇关于异步原理 Promise原理 Promise面试题 async await 原理的文章 链接如下 感兴趣的可以去看下 相信会有所收获 一篇文章理清JavaScript中的异步操作原理 Promise原理及执行顺序详解
  • 博客4:YOLOv5车牌识别实战教程:模型优化与部署

    摘要 本篇博客将详细介绍如何对YOLOv5车牌识别模型进行优化和部署 我们将讨论模型优化策略 如模型蒸馏 模型剪枝和量化等 此外 我们还将介绍如何将优化后的模型部署到不同平台 如Web 移动端和嵌入式设备等 车牌识别视频 正文 4 1 模型
  • 4.5 静态库链接

    4 5 静态库链接 一种语言的开发环境往往会附带语言库 language library 这些库通常是对操作系统API的包装 例如C语言标准库的函数strlen 并没有调用任何操作系统的API 但是很大一部分库函数都要调用操作系统API 例
  • 三目运算符优先级

    今天发表一个遇到的js的三元运算符优先级问题 如图 在解答这一题的时候 首先我们先理解什么是三元运算符 如名字一样是有三个操作数 语法 条件判断 结果1 结果2 如果条件成立 则返回结果1 否则返回结果2 在这里 三元运算符优先级是最低的
  • C语言实现TCP连接

    开发环境 TCP服务端 TCP UDP测试工具 开发环境 Linux 编程语言 C语言 TCP UDP测试工具工具的使用请自行百度 我们用这款软件模拟TCP服务端 效果展示 代码编写 include
  • bootstrap中container类和container-fluid类的区别

    近几天才开始系统的学习bootstrap 但马上就遇到了一个 拦路虎 container和container fluid到底什么区别 查了很多资料 看到很多人和我有同样的疑问 但是下面的回答一般都是一个是响应式一个宽度是百分百 说的好像是那
  • 【华为OD机试】斗地主之顺子(C++ Python Java)2023 B卷

    时间限制 C C 1秒 其他语言 2秒 空间限制 C C 262144K 其他语言524288K 64bit IO Format lld 语言限定 C clang11 C clang 11 Pascal fpc 3 0 2 Java jav
  • firefox 阻止此页面创建其他对话框的解决方法

    用Firefox操作弹出界面时总是遇到 firefox 阻止此页面创建其他对话框 点击确定后 控制台就会报错误 解决方法 1 在firefox里输入about config 2 在列表框里右键 gt 新建 gt 整数 3 输入选项名dom
  • Redis底层数据结构

    Redis简单介绍一下 Redis是一个开源的 使用C语言编写的 支持网络交互的 可基于内存也可持久化的Key Value数据库 有哪些数据结构 说起Redis数据结构 肯定先想到Redis的5 种基本数据结构 String 字符串 Lis
  • 日期类之运算符重载

    date h pragma once include
  • linux tcpdump抓包命令详解,tcpdump(抓包分析命令详解)

    TCPDump可以完全拦截网络上传输的数据包以提供分析 它支持对网络层 协议 主机 网络或端口的过滤 并提供逻辑语句 例如和 或不帮助您删除无用的信息 tcpdump抓包分析命令详解 tcpdump是一个用于截取网络分组 并输出分组内容的东
  • 如何成为一个牛逼的脚本小子日记之0x001-JAVA 代码审计 Top half (2023829-...

    如何成为一个牛逼的脚本小子日记之 0x001 JAVA 代码审计 Top half 2023 8 29 2023 9 1 此记录是在拥有一定的java基础下进行的 java基础类 反射 继承 filter servlet calssLoad
  • Springboot实现热部署

    所谓的热部署 比如项目的热部署 就是在应用程序在不停止的情况下 实现新的部署 而Springboot在我们每次修改完代码之后 可能只是修改下打印的信息 就得重新启动App类 这样太浪费时间 有没有一种修改完代码让程序自动重启的方法呢 答案是
  • DirectShow中的工具GraphEdit使用小结

    一 安装完Windows SDK 7 0或7 1后 在C Program Files Microsoft SDKs Windows v7 0 Bin下有32位的graphedt exe 及x64目录下有64位版本的graphedt exe