社区
多媒体/流媒体开发
帖子详情
Filter Graph和Filter的问题
大道如海
2003-04-04 02:07:31
如何手工在Filter Graph中添加特定的Filter(如Avi Splitter Filter),并且如何进行连接。
希望有部分源码!
...全文
109
13
打赏
收藏
Filter Graph和Filter的问题
如何手工在Filter Graph中添加特定的Filter(如Avi Splitter Filter),并且如何进行连接。 希望有部分源码!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhuchangquan_0
2003-04-07
打赏
举报
回复
我现在也在写这东东密切关注!
wkpeng
2003-04-07
打赏
举报
回复
study
大道如海
2003-04-07
打赏
举报
回复
^
大道如海
2003-04-06
打赏
举报
回复
千斤顶!
大道如海
2003-04-05
打赏
举报
回复
望再赐教!
大道如海
2003-04-05
打赏
举报
回复
...................
hr = CoCreateInstance(CLSID_AviSplitter,
NULL,
CLSCTX_INPROC,
IID_IBaseFilter,
(void**)&m_pAviFilter);
// construct source filter
// Media type
if (m_bInit)
{
CMediaType mt;
mt.majortype = MEDIATYPE_Stream;
mt.subtype = MEDIASUBTYPE_Avi;
m_pSourceStream = new CMemStream(m_pDataList);
m_pSourceReader = new CMemReader(m_pSourceStream, &mt, &hr);
m_pSourceReader->AddRef();
// Add our filter
hr = m_pGB->AddFilter(m_pSourceReader, NULL);
if (FAILED(hr))
{
m_bInit = false;
}
hr = m_pGB->AddFilter(m_pAviFilter, NULL);
if (FAILED(hr))
{
m_bInit = false;
}
IPin *pOut = GetPin(m_pSourceReader, PINDIR_OUTPUT);
IPin *pIn = GetPin(m_pAviFilter, PINDIR_INPUT);
HRESULT hr = m_pGB->ConnectDirect(pOut, pIn, NULL);
//执行到上一句就不执行下去了,似乎进入了死循环
pOut->Release();
pIn->Release();
if (FAILED(hr))
{
m_bInit = false;
AfxMessageBox("Connect Error!");
}
}
gxqcdit
2003-04-04
打赏
举报
回复
step 1:
通过EnumFilter and enum pin找到在filter graph中需要添加filter的位置,然后断开连接的pin
ster 2:
pGraph->AddFilter(pYourFilter, L"Your Filter's Name", NULL);
step 3:
EnumPin找到YourFilter的输入输出pin
step 4:
连接相关pin
OK!
Fnoopy
2003-04-04
打赏
举报
回复
函数ConnectFilters中调用pGraph->Connect会进入一种死循环状态,连应有的界面都无法显示!
为何?
估计是你的两个pin类型不匹配
NoneSoVile
2003-04-04
打赏
举报
回复
用connect可以把
RenderStream(..)也能充当connect的作用,看看它的参数和用法
大道如海
2003-04-04
打赏
举报
回复
又能运行通过的实例吗?
howepear@citiz.net
万分感谢!
大道如海
2003-04-04
打赏
举报
回复
函数ConnectFilters中调用pGraph->Connect会进入一种死循环状态,连应有的界面都无法显示!
为何?
jian
2003-04-04
打赏
举报
回复
line2 :改为ConnectFilters
jian
2003-04-04
打赏
举报
回复
1、添加最简单的是用AddFilterByCLSID,只要一句代码
2、连接使用ConnectFilter
下面是一个类似的例子:
IBaseFilter *pMux, *pWrite;
hr = AddFilterByCLSID(pGraph, CLSID_AviDest, L"AVI Mux", &pMux);
if (SUCCEEDED(hr))
{
hr = AddFilterByCLSID(pGraph, CLSID_FileWriter, L"File Writer", &pWrite);
if (SUCCEEDED(hr))
{
hr = ConnectFilters(pGraph, pMux, pWrite);
/* Use IFileSinkFilter to set the file name (not shown). */
pWrite->Release();
}
pMux->Release();
}
configure_
filter
graph
配置滤镜容器
当所有的 Input
Filter
都初始化完成,Input
Filter
里面的 format 不等于 -1 就是初始化完成,就会调 configure_
filter
graph
() 函数来配置与打开滤镜容器。configure_
filter
graph
() 会把所有的 Input
Filter
与 Output...
DirectShow 构建
Filter
Graph
·
Filter
Graph
Manager:这个对象用于控制
Filter
Graph
,支持I
Graph
Builder、IMediaControl和IMediaEvent等许多接口。所有的directshow应用程序都需要在某些地方用到这个对象,虽然在有些情况下,是其它的对象为...
构建
Filter
Graph
3.3. 构建
Filter
Graph
3.3.1. 用于构建
Graph
的组件 DirectShow提供了一系列用于构建...这个对象用于控制
filter
graph
,支持I
Graph
Builder、IMediaControl和IMediaEventEx等许多接口。所有的directshow应用程序都需要
Filter
Graph
和它的组件
3.2.
Filter
Graph
和它的组件 这一节描述了DirectShow的主要组件,为DirectShow应用程序和DirectShow
Filter
开发者提供一个介绍。应用程序开发者可以忽略掉很多底层部分,但是,了解底层对于理解DirectShow架构还是...
Filter
Graph
的动态构建
1动态的重新连接在进行pin连接的时候,应用程序一般都要讲
graph
停掉。但是,一些
filter
支持pin的动态连接。 图1如上图,我们想将
Filter
2动态移走。有两个必要条件:(1)
Filter
3 (pin D)必须支持IPinConnection...
多媒体/流媒体开发
2,543
社区成员
20,281
社区内容
发帖
与我相关
我的任务
多媒体/流媒体开发
专题开发/技术/项目 多媒体/流媒体开发
复制链接
扫一扫
分享
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章