directshow 问题

天天学习^好好向上 2009-05-07 04:55:51
我用directshow写了一个程序,就是简单的使用IGraphBuilder直接RenderFile,

但是我在vc环境中debug时,发现生成的filtergraph和 不调试,直接运行,生成filtergraph不一样

在vc环境的解码filter和直接运行的filter用的不是同一个

但是程序是在同一台机器上,难道调试模式和运行模式,对与directshow还有什么不一样吗?

那个大侠遇到过这个问题啊,帮忙解决一下
...全文
92 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
UDX协议 2009-05-09
  • 打赏
  • 举报
回复
CyberLink Video/SP Decoder(PDVD7)应该是它有反调试技术。

如果你在debug模式下,他会不加载。

其实很多解码器,压缩器都会保护自己。
  • 打赏
  • 举报
回复
我如果在debug模式,那么文件filter链路

MPEG2_ts.MPG->CyberLink Demux(PDVD7)->Microsoft MPEG-2 Video Decocde->VideoRenderer


如果不在debug模式,那么文件filter链路就会变成

MPEG2_ts.MPG->CyberLink Demux(PDVD7)->CyberLink Video/SP Decoder(PDVD7)->VideoRenderer

实际上第二个才是正确的,就是在DEBUG模式下不对,如果程序在debug模式下运行就异常了,不能放映,直接运行就能放映了


  • 打赏
  • 举报
回复
我就是在graphedit中看到的,如果在VS2005中运行,graphedit用connect remote 查看,看到使用的解码器,是一个,如果不debug,直接从外部运行,用graphedit用connect remote 查看,看到的却是另外一个解码器,都是同一个程序,同一个机器,结果2种状态却不一样。

然后我找到了另外一个同事用bcb写的一个播放器,对于这个文件,在bcb的debug状态,和直接运行状态,2个的生成的图也不一样。

这directshow也真是太神奇了
  • 打赏
  • 举报
回复
确实是这个问题,这个解码器在调试状态无法插入,可能确实保护了
luckyboy101 2009-05-08
  • 打赏
  • 举报
回复
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;
}
void RemoveFromRot(DWORD pdwRegister)
{
IRunningObjectTable *pROT;
if(SUCCEEDED(GetRunningObjectTable(0,&pROT)))
{
pROT->Revoke(pdwRegister);
pROT->Release();
}
}


#ifdef _DEBUG
hr=AddToRot(pGraph,&dwRegister);
#endif

在graphedit中看看vc中的filter
UDX协议 2009-05-07
  • 打赏
  • 举报
回复
一般不会出现,你可以注册到rot上,在ge中可以明确看到不同点。

如果真如你说的不同,请把filter链路的名字排出来,帮你分析一下。
  • 打赏
  • 举报
回复
难道没有哪位遇到过这种问题吗?

2,542

社区成员

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

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