Solved

Decode Rate VS Playback Rate using Directshow

Posted on 2007-03-22
1
297 Views
Last Modified: 2013-11-13
Hi Experts,
    This is the graph that I built using directshow

Source Filter (file) -> Transform Filters -> Decoder -> FPS Counter (trans-in-place) -> Renderer

FPS Counter's function will be called each time a sample has been decoded.
The function that is called basically outputs the system time using timeGetTime()
I placed FPS Counter between decoder and renderer in order to obtain "decode rate", because I need to test the performance of the decoder.

I tested this graph on
/windows/clock.avi
as many of you might already know, this video clip has a playback rate of 1 fps with a total of 12 frames.

but the results i got follows (in millisecond):

> 16356152
> 16356332     180 milliseconds
> 16356445     113 milliseconds
> 16357354     909 milliseconds
> 16358340     986 milliseconds
> 16359342     1002 milliseconds
> 16360349     1007 milliseconds
> 16361346     997 milliseconds
> 16362342     996 milliseconds
> 16363341     999 milliseconds
> 16364344     1003 milliseconds
> 16365341     997 milliseconds

the first column represents the system time returned on each call to FPS Counter, and the second column represents the time it took to decode that frame, merely the system time of the current frame minus the system time of the previous frame.

first three frames were being decoded in less than one second, while the subsequent frames were being decoded in roughly one second, equal to the playback rate.

My question is, does this data look reasonable?
I understand that decode rate does not necessarily equal to the playback rate, since the renderer needs to do time synchronozation.

but what i am concerned is the accuracy of this data, since it has a large variations betwen the beginning frames and subsequent frames.

are there any useful tools that can produce fps in decode rate rather than playback rate?

thanks!
0
Comment
Question by:fungi8210
1 Comment
 
LVL 22

Accepted Solution

by:
grg99 earned 500 total points
ID: 18778491
It looks like you have a fast computer that can decode a frame in around 100 to 200  msec.

But as soon as it has decoded a frame or two, the decoder has to wait until the previous frame has been displayed, that's why the time jumps up to around 1000 msec.

Everything is fine.



0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Summary: This tutorial covers some basics of pointer, pointer arithmetic and function pointer. What is a pointer: A pointer is a variable which holds an address. This address might be address of another variable/address of devices/address of fu…
Windows programmers of the C/C++ variety, how many of you realise that since Window 9x Microsoft has been lying to you about what constitutes Unicode (http://en.wikipedia.org/wiki/Unicode)? They will have you believe that Unicode requires you to use…
The goal of this video is to provide viewers with basic examples to understand how to use strings and some functions related to them in the C programming language.
The viewer will learn additional member functions of the vector class. Specifically, the capacity and swap member functions will be introduced.

713 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question