File Source (Async) Filter问题

zhangchaoyszq 2008-06-24 04:31:46
  如题:我在Graphedit里面插入一个file source filter(DS自带的),然后它弹出一个选择文件的窗口。选择一个window文件之后,它内部会生成一个OutPin。但是为什么我在应用程序内直接创建它,它没有自动生成一个OutPin。有人知道这个过程吗?
  我是想这样做的!在Grpah里面创建一个file source filter(但是它没有自动生成一个OutPutPin),再创建一个Splitter filter,我想获得file source filter的outPin,然后获得splitter filter 的InPutPin(这个是可以获得到的)。然后把它们两个连接起来!但是获不到file source filter的OutPutPin!怎么办呀?Who can help me?Thank you!!!
...全文
750 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemon_wei 2008-06-26
  • 打赏
  • 举报
回复


AddSourceByFilterCLSID(m_pGraph, SOURCE_FILTER, L"SOURCE FILTER", wPath);


HRESULT CDxGraph::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;
}
zhangchaoyszq 2008-06-26
  • 打赏
  • 举报
回复
  谢谢lemon_wei :问题解决啦!
  我之前是直接Render啦!应该先load,之后就有一个生成pin啦!分步进行就行啦!再次感谢!

2,554

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 多媒体/流媒体开发
社区管理员
  • 多媒体/流媒体开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧