What I am trying to accomplish ...
I have an ASF file encoded in WMV3 (960 x 720, VBR @ 15 FPS). I want
to read individual frames of this file, perform some processing, and
render it back to the screen. I need to be able to do this such that
the video plays back smoothly after all the processing, at a frame
rate of 15 FPS or higher. I'm also working on a larger framework,
which has further restrictions. The rendering and processing is done
in this framework, hence I do not want to write a DirectShow filter to
process the frame, and I do not want to send the data to a DirectShow
renderer. Plain and simple, I just need to fetch random frames from
the WMV file as quickly as possible.
I have tried ...
2. DirectShow + SampleGrabber in Single Shot mode.
3. WMSyncReader using Frame Seeking and Time Seeking.
On every application timer tick, I need to perform a seek and grab the
frame. For IMediaDet, this takes around 100ms. For WMSyncReader, the
seek takes 60 ms and the decode takes 30 ms. Sample Grabber is way
slower. I've played with switching off hardware acceleration and some
of my numbers improved, probably due to decoding being moved back to
My target is to get back random high-definition WMV frames within 10
ms. Does anyone know how I can accomplish this?