Re: Decoding Rate vs Playback Rate

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance



Anyway, if you measure time from when you finish displaying frame 1
and the time you finish displaying frame 2, you will get a
uncharacteristically short result, as you are gaining the maximum
advantage from this preroll computation. Perhaps a better benchmark
would be to measure from a known keyframe that is far enough into the
clip as to minimize this "running start" effect.

I'm not 100% certain but that's not it
in my experience and from docs on MSDN this is due to the fact how the renderer handles samples
usually the downstream filter provides the buffer allocator and only a limited amount of buffers
when those buffers are all used up, the allocators GetBuffer blocks until there's an available buffer
the renderer can hold on to the samples (in the input pin's Receive method) until they're rendered or copying them and returning the sample immediately
I guess here the first thing happens; the samples are held until rendered
it looks like the allocator has 2 buffers, you can check that with Allocator.GetProperties (get the allocator from Pin(IMemInputPin).GetAllocator)

to test the performance you should instead create a null renderer filter and count the samples in Receive method
there's an example in the SDK
.



Relevant Pages

  • Re: Can allocators usually allocate directdraw surfaces
    ... My ultimate goal here is to create a renderer that will ... it's own allocator that works either with D3D surfaces or textures. ... >> media type but I'm uncertain what types of buffers it allocates (the renderer ...
    (microsoft.public.win32.programmer.directx.video)
  • Custom Dshow Renderer filter(Allocator negotiation problem)
    ... I am developing a custom Renderer filter, which must be able to connect ... to any soft upstream filter. ... Not able to negotiate allocator properly. ...
    (microsoft.public.win32.programmer.directx.audio)
  • Re: Media PLayer 9, wont play with my video decode filter...
    ... It turns out the error code is SIZENOTSET not TIMEOUT... ... i can call Commit again here and it returns S_OK and not ... That the allocator has the requested properties. ... it is definately the allocator the input pin of the renderer offers. ...
    (microsoft.public.win32.programmer.directx.video)
  • Re: Data flow in graph
    ... If the allocator is accepted then this is the entity which will ... >provide the memory for samples upstream. ... >however it is acquired by the renderer. ...
    (microsoft.public.win32.programmer.directx.video)
  • Re: Audio Render too fast
    ... > I already set the number of buffers in my filter inside DecideBufferSize ... > I guess that the renderer is allocating more buffers. ... at the beginging there's a burst of request for frames from the renderer ... after there is a steady frame by frame request (in which I can do drift ...
    (microsoft.public.win32.programmer.directx.audio)