Author: Roman

Reference signal source for DirectShow

Every so often there are tasks that need certain reference video or video/audio footage with specific properties: resolution, frame rate, frame accuracy with content identifying specific frame, motion in view, amount of motion which is “hard” for processing with encoder tuned for natural video, specific video and audio synchronization. There is of course some content…

Read the full article

CLSID_FilterGraphNoThread and IMediaEvent::WaitForCompletion

An interesting find about CLSID_FilterGraphNoThread version of DirectShow fitler graph implementation is that its WaitForCompletion method available through IMediaEvent and IMediaEventEx interfaces is not implemented: the immediately returned value is E_NOTIMPL. CLSID_FilterGraphNoThread itself is not well documented and is rather a spin off the baseline implementation (which is – my guess would be – was…

Read the full article

IMediaObject::Discontinuity while Windows Media Video 9 Encoder has data to process

This is presumably a bug in Windows Media Video 9 Encoder in versions up to Windows 7 included (fixed in Windows 8.1 at the very least – wmvencod.dll 6.3.9600.17415). A IMediaObject::Discontinuity call destroys input the DMO it already holds: it reports success, and handles discontinuity correctly. It even drains output as it should, but if in the same time…

Read the full article

GDCL MPEG-4 filters update

As mentioned recently in DirectShowSpy media sample trace update, I uploaded a fork of MPEG-4 filters developed by Geraint Davies, which includes a few updates made over time. They are worth mentioning in a separate post: the projects received type libraries and it is easier to reference filters now by #importing the type library into…

Read the full article

Range-based for with ATL Collections

ATL collection classes did not receive an update related to new C++11 range-based fors and other fancy features. Well it’s a pity because writing for(auto&& pPin: AudioPinList) pPin-> //… compared to for(POSITION Position = AudioPinList.GetHeadPosition(); Position; AudioPinList.GetNext(Position)) { IPin* pPin = AudioPinList.GetAt(Position); pPin-> //… is indeed a relief. Namespace std is, of course, good but…

Read the full article