Solved

Decode Rate VS Playback Rate using Directshow

Posted on 2007-03-22
1
290 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
Comment Utility
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

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Suggested Solutions

Templates For Beginners Or How To Encourage The Compiler To Work For You Introduction This tutorial is targeted at the reader who is, perhaps, familiar with the basics of C++ but would prefer a little slower introduction to the more ad…
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 viewer will learn how to pass data into a function in C++. This is one step further in using functions. Instead of only printing text onto the console, the function will be able to perform calculations with argumentents given by the user.
The viewer will be introduced to the technique of using vectors in C++. The video will cover how to define a vector, store values in the vector and retrieve data from the values stored in the vector.

743 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now