首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将DMO作为筛选器插入图形时的意外行为

将DMO作为筛选器插入图形时的意外行为
EN

Stack Overflow用户
提问于 2012-07-29 13:10:35
回答 1查看 114关注 0票数 0

我正在尝试将某个DMO插入到我的DirectShow图中。我已经使用适当的接口封装了这个DMO:

代码语言:javascript
复制
ATL::CComPtr< IBaseFilter >         spDMOWrapper;
ATL::CComPtr< IDMOWrapperFilter >   spDMOWrapperEx;

if(FAILED(hr = spDMOWrapper.CoCreateInstance(CLSID_DMOWrapperFilter)))
    return hr;
if(FAILED(hr = spDMOWrapper.QueryInterface(&spDMOWrapperEx)))
    return hr;

IDMOWrapperFilter->Init(SomeDMO)

connecting pins and so on

if(FAILED(hr = pGraph->AddFilter(spDMOWrapper, L"WM DMO Video Encoder")))
        return hr;

下面的问题在相同的输入上随机出现,

qasf.dll!CMediaWrapperFilter::NewSample()使用我的DMO中实现的"Flush“函数重新初始化我的样本的时间戳。

我不确定到底发生了什么,但据我所能说,没有任何差距,在简短的剪辑中,DMO工作得很好。如果你们想检查callstack:

代码语言:javascript
复制
    DMO::Compression::Mainconcept::H264Encoder::Flush()  Line 1165  C++
    qasf.dll!CMediaWrapperFilter::NewSample()  + 0x48 bytes 
    qasf.dll!CWrapperInputPin::Receive()  + 0x16 bytes  
    Filters::Helpers::CPipeOutT<Filters::Helpers::CGenericPipe>::Deliver(IMediaSample * pSample)  Line 383 + 0x20 bytes C++
    Filters::Helpers::CPipeInT<Filters::Helpers::CGenericPipe,Filters::Helpers::CGenericInputPin>::Receive(IMediaSample * pSample)  Line 178 + 0x23 bytes   C++
    CBaseOutputPin::Deliver(IMediaSample * pSample)  Line 2695 + 0x20 bytes C++

除了解决这个问题之外,我更感兴趣的是让CMediaWrapperFilter认为他需要将样本的时间戳清零的原因。

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-03 16:17:38

这就是DMO Wrapper Filter的行为。如果在流式传输时发现底层DMO不再生成输出,但仍不接受新输入,则筛选器刷新DMO并指示流错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11706852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档