查找IFileSourceFilter上的Pin
创建了IFileSourceFilter,可IFileSourceFilter好像不是从IBaseFilter继承来的,没有EnumPins,那应该怎么查找IFileSourceFilter上的pin啊?
IGraphBuilder *pigb = NULL; IMediaControl *pimc = NULL; IMediaEventEx *pimex = NULL; IVideoWindow *pivw = NULL; IMediaSeeking *pims = NULL; HRESULT AddSourceByFilterCLSID(IGraphBuilder *pGraph,const GUID& clsid, LPCWSTR wszName,LPCWSTR wszFileName) { if (!pGraph) return E_POINTER; IBaseFilter *pF = 0; HRESULT hr = S_OK; hr = CoCreateInstance(clsid, 0, CLSCTX_INPROC_SERVER, IID_IBaseFilter, reinterpret_cast<void**>(&pF)); if (SUCCEEDED(hr)) { hr = pGraph->AddFilter(pF, wszName); if (SUCCEEDED(hr)) { IFileSourceFilter *pSF = NULL; hr = pF->QueryInterface(IID_IFileSourceFilter, (void**)&pSF); if (SUCCEEDED(hr)) { pSF->Load(wszFileName, NULL); pSF->Release(); } } if (SUCCEEDED(hr)) { IEnumPins *pEnum; IPin *pPin; hr = pF->EnumPins(&pEnum); if (SUCCEEDED(hr)) { while(pEnum->Next(1, &pPin, 0) == S_OK) { PIN_DIRECTION pinDirThis; pPin->QueryDirection(&pinDirThis); if (PINDIR_OUTPUT == pinDirThis) { hr = pGraph->Render(pPin); if (FAILED(hr)) { break; } } pPin->Release(); } pEnum->Release(); } } pF->Release(); } return hr; } HRESULT RenderAVI(LPCTSTR szFilePath,IGraphBuilder * gb) { LPCTSTR szExt = _tcsrchr(szFilePath,'.');//过滤avi文件 if(!szExt) { return E_FAIL; } ++szExt; if(_tcsicmp(szExt,_T("avi"))!=0) return E_INVALIDARG; USES_CONVERSION; const GUID CLSID_AviSource={0xCEA8DEFF,0x0AF7,0x4DB9,{0x9A,0x38,0xFB,0x3C,0x3A,0xEF,0xC0,0xDE}}; CComPtr<IBaseFilter> spAviSource; HRESULT hr = AddSourceByFilterCLSID(gb,CLSID_AviSource,L"SOURCE FILTER",T2W(szFilePath)); if(spAviSource==NULL) return hr; /* CComQIPtr<IFileSourceFilter> FileSource(spAviSource); hr = FileSource->Load(T2W(szFilePath),NULL); if(FAILED(hr)) return hr; CComPtr<IEnumPins> ep; hr = spAviSource->EnumPins(&ep); if(FAILED(hr)) return hr; CComPtr<IPin> pin; DWORD dwCount; int i = 0; for(;;) { dwCount = 0; hr = ep->Next(1,&pin,&dwCount); if(hr!=NOERROR) { if(i) hr = NOERROR; break; } hr = gb->Render(pin); if(hr==NOERROR) ++i; pin = NULL; } return hr;*/ return NOERROR; } void CTestFilterDlg::OnButton4() { // TODO: Add your control notification handler code here CoInitialize(NULL); HRESULT hr = CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)&pigb); pigb->QueryInterface(IID_IMediaControl, (void **)&pimc); pigb->QueryInterface(IID_IMediaEventEx, (void **)&pimex); pigb->QueryInterface(IID_IMediaSeeking, (void **)&pims); pigb->QueryInterface(IID_IVideoWindow, (void **)&pivw); // hr = pigb->RenderFile(L"d:\\temp\\bmw.MPG", NULL);// hr = RenderAVI("F:\\FFOutput\\ff640480.avi",pigb); if (hr) { MessageBox("ERR RENDERAVI!"); } HWND m_hwndScreen = m_Screen2.GetSafeHwnd(); RECT rc; hr = pivw->put_Owner((OAHWND)m_hwndScreen); hr = pivw->put_WindowStyle(WS_CHILD | WS_CLIPCHILDREN); m_Screen2.GetClientRect(&rc); hr = pivw->SetWindowPosition(0, 0, (rc.right), (rc.bottom)); hr = pivw->put_Visible(OATRUE);//*/ hr = pimc->Run(); }
查找IFileSourceFilter上的Pin的更多相关文章
- Unity3D开发之查找面板上某个脚本(包括Missing)
原地址:http://blog.csdn.net/lihandsome/article/details/24265411 有时候我们需要知道某个脚本在场景上面哪里用到,或者那个脚本被删除了但又没有把相 ...
- Unity3D开发之查找面板上某个脚本(包含Missing)
有时候我们须要知道某个脚本在场景上面哪里用到,或者那个脚本被删除了但又没有把相关游戏场景的关联东西删掉,那样我们就要一个脚本来查找一下了: PS:以下两个脚本都要放到assets/Editor以下哦. ...
- 用 TWebBrowser 查找网页上的按钮,编辑框,
Form1.wb1.Navigate(Aurl); <table> <tr> <td style="text-align:right;">< ...
- 如何查找Mac上的USB存储设备使用痕迹
最近刚好有个案子的证物主机是MBP, OS X版本为El Capitan,案况与营业秘密外泄有关,当中要找有关USB存储设备的使用痕迹. 要提醒大家的是,不同版本的OS X,各种迹证的存放文件名称及路 ...
- sql server 查找字段上的约束
1. 当字段没有默认值或者约束的时候可以使用: alter table [table_name] drop column [column_name] 来删除. 当有默认值的时候应该先删除默认值,然后再 ...
- tomcat服务器用Servlet类查找磁盘文件上的Json信息,如果匹配则在浏览器上显示出该条内容的全部信息
package com.swift; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOE ...
- 如何查找Windows上安装的DB2的端口号Port
1.db2com打开控制台 2.db2 get dbm cfg 可以通过db2 get dbm cfg,查询数据库管理器配置参数,就可以查到端口号或端口名. 示例: $ db2 get dbm cfg ...
- [原创]C#应用WindowsApi实现查找\枚举(FindWindow、EnumChildWindows)窗体控件,并发送消息。
首先介绍基本WindowsApi: public static extern IntPtr FindWindow(string lpClassName, string lpWindowName); 函 ...
- 5、利用控件TVCLZip和TIdFTP压缩文件并上传到FTP的线程单元pas 改进版
用到临界区 保护写日志的函数: 递归函数 删除目录下的所有文件: 循环创建或判断FTP的目录: 可改进的地方:循环压缩深层次目录的所以文件: 实现断点续传,或断点下载: {************** ...
随机推荐
- 洛谷 [P1119] 灾后重建
我们发现每次询问都是对于任意两点的,所以这是一道多源最短路径的题,多源最短路径,我们首先想到floyd,因为询问的时间是不降的,所以对于每次询问,我们将还没有进行松弛操作的的点k操作. #includ ...
- BZOJ 3309: DZY Loves Math [莫比乌斯反演 线性筛]
题意:\(f(n)\)为n的质因子分解中的最大幂指数,求\(\sum_{i=1}^n \sum_{j=1}^m f(gcd(i,j))\) 套路推♂倒 \[ \sum_{D=1}^n \sum_{d| ...
- BZOJ 2342: [Shoi2011]双倍回文 [Manacher + set]
题意: 求最长子串使得它有四个相同的回文串SSSS相连组成 枚举中间x 找右边的中间y满足 y-r[y]<=x y<=x+r[x]/2 用个set维护 注意中间只能是# #include ...
- VS2012如何调试JS
下面的操作步骤描述了怎样利用vs.net中的调试器来调试javascript: 1,首先,要让你的ie允许调试脚本,具体步骤如下: 打开ie->工具菜单->inter选项->高 ...
- Windows Server 2016-Powershell迁移FSMO角色
上一章节我们讲到了通过Ntdsutil命令行进行FSMO角色迁移,本章开始之前我们先讨论一下有关FSMO角色放置建议: 建议将架构主机角色(Schema Master)和域命名主机角色(Domain ...
- HTML 5.2 新特性介绍
本文译自 What's New in HTML 5.2? 作者 Ire Aderinokun,是一位前端开发者和 UI 设计师. 就在不到一个月之前,HTML 5.2 成为了 W3C 的官方推荐规范( ...
- CentOS 7 使用iptables防火墙
# 停止firewalld服务 systemctl stop firewalld systemctl mask firewalld # 安装iptables-services yum install ...
- ss-redir 的 iptables 配置(透明代理)
透明代理指对客户端透明,客户端不需要进行任何设置就使用了网管设置的代理规则 创建 /etc/ss-redir.json 本地监听 7777 运行ss-redir -v -c /etc/ss-redir ...
- Project support for both iOS 6 and iOS 7
原文:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TransitionGuide/S ...
- fiddler 抓取 nodejs
nodejs 代理指向 fiddler var options = { ........ }; options.path = 'http://' + options.host + ...