이 예기치 않은 동작을한다. 나는 적절한 인터페이스를 사용하여이 DMO 포장했습니다!그래프에 DMO를 필터로서 삽입했을 때, 특정의 DMO를 내 DirectShow 그래프에 삽입하려고하고있는 경우,
이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는 잘 작동한다. 너희들이 호출 스택을 검사 할 경우이 문제를 해결하는 것 외에도
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을하는 이유에 더 많은 관심을 그가 샘플의 타임 스탬프를 제로로 필요하다고 생각.
도움 주셔서 감사합니다.