如何将DirectShow的Async Sample 和应用程序写到一起(200分) 如何将DirectShow的Async Sample 和应用程序写到一起《DS开发指南》上第4章有个TRANSFORM filter和应用程序集成的实例请问对于source filter 如何做 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <<DS实务精选>>3.3视频点播用是就是这个Async做的Source Filter可以参考. 把Async的代码加到工程中,到时直接用其指针,就不用COM了。 不同意楼上观点要用COM来做否则每个里面都要加入代码吗?没有源码的怎么办?你说的这个是Tans FilterSource Filter要难写些,iamwiner(烛泪)说的VOD点播中确实要用到SourceFilter,学习一下吧 CAsyncFilter* pAsyncflt = new CAsyncFilter(NULL,&hr); pAsyncflt->AddRef(); IBaseFilter *pFileSourceFilter = NULL; pAsyncflt->QueryInterface(IID_IBaseFilter,(void**)&pFileSourceFilter); if (FAILED(pigb->AddFilter(pFileSourceFilter, L"kyc Source"))) { MessageBox(ghApp, "Cannot source filter in Graph!!!", "Error", MB_ICONSTOP); return; } // Get file source interface IFileSourceFilter *pifsf = NULL; if (FAILED(pFileSourceFilter->QueryInterface(IID_IFileSourceFilter, (void **) &pifsf))) { HELPER_RELEASE(pFileSourceFilter); MessageBox(ghApp, "Cannot get IFileSourceFilter interface!!!", "Error", MB_ICONSTOP); return; } if (FAILED(pifsf->Load(wFile, NULL))) { HELPER_RELEASE(pifsf); HELPER_RELEASE(pFileSourceFilter); MessageBox(ghApp, "Cannot load source file!!!", "Error", MB_ICONSTOP); return; } HELPER_RELEASE(pifsf); // Find Audio PCM input for MP3 IPin *pPin = GetPin(pFileSourceFilter, 0); if (pPin == NULL) { MessageBox(ghApp, "Cannot find File Source pin 0!!!", "Error", MB_ICONSTOP); HELPER_RELEASE(pFileSourceFilter); return; } if (FAILED(pigb->Render(pPin))) { MessageBox(ghApp, "Cannot render source pin 0!!!", "Error", MB_ICONSTOP); HELPER_RELEASE(pFileSourceFilter); HELPER_RELEASE(pPin); return; } HELPER_RELEASE(pPin); HELPER_RELEASE(pFileSourceFilter); 怎么会没有源码呢,将DShow带的示例改一下就可。另可将这些做成一个静态库,直接链接在工程有一个好处,就是其它程序无法使用你的Filter。 当然用COM也未尝不可,只不是接口“暴露”了而已。 CString 转换DWORD CDC类函数画好的曲线怎么提取它的坐标 关于图像的小问题 如何判断某个目录是否存在?有相关函数吗? 高手,如何把变量当字符串处理?看一眼. 急,高分求解 C++基础问题!对指针理解比较深的高手和精通COM的专家请进!(菜鸟勿进)嫌分不够的话可以重开帖子另给! RELEASE版本修改什么地方才能像DEBUG版本那样调试 问高手:怎样在程序中实现贴大量位图时候的速度,因为一个一个读文件太慢了 inline函数的问题 哪位有《ATL 开发指南》这本书的源码,发给我一份?或者给一个能用的链接 如何使用DataGrid对数据表的数据进行增删改等操作?
用是就是这个Async做的Source Filter
可以参考.
要用COM来做
否则每个里面都要加入代码吗?没有源码的怎么办?你说的这个是Tans Filter
Source Filter要难写些,iamwiner(烛泪)说的VOD点播中确实要用到SourceFilter,学习一下吧
pAsyncflt->AddRef();
IBaseFilter *pFileSourceFilter = NULL;
pAsyncflt->QueryInterface(IID_IBaseFilter,(void**)&pFileSourceFilter);
if (FAILED(pigb->AddFilter(pFileSourceFilter, L"kyc Source")))
{
MessageBox(ghApp, "Cannot source filter in Graph!!!", "Error", MB_ICONSTOP);
return;
}
// Get file source interface
IFileSourceFilter *pifsf = NULL;
if (FAILED(pFileSourceFilter->QueryInterface(IID_IFileSourceFilter, (void **) &pifsf)))
{
HELPER_RELEASE(pFileSourceFilter);
MessageBox(ghApp, "Cannot get IFileSourceFilter interface!!!", "Error", MB_ICONSTOP);
return;
}
if (FAILED(pifsf->Load(wFile, NULL)))
{
HELPER_RELEASE(pifsf);
HELPER_RELEASE(pFileSourceFilter);
MessageBox(ghApp, "Cannot load source file!!!", "Error", MB_ICONSTOP);
return;
}
HELPER_RELEASE(pifsf);
// Find Audio PCM input for MP3
IPin *pPin = GetPin(pFileSourceFilter, 0);
if (pPin == NULL)
{
MessageBox(ghApp, "Cannot find File Source pin 0!!!", "Error", MB_ICONSTOP);
HELPER_RELEASE(pFileSourceFilter);
return;
}
if (FAILED(pigb->Render(pPin)))
{
MessageBox(ghApp, "Cannot render source pin 0!!!", "Error", MB_ICONSTOP);
HELPER_RELEASE(pFileSourceFilter);
HELPER_RELEASE(pPin);
return;
}
HELPER_RELEASE(pPin);
HELPER_RELEASE(pFileSourceFilter);