Solved

testing the performance of a decoder

Posted on 2007-03-19
9
301 Views
Last Modified: 2013-12-08
Given many choices of decoder to use, it is very hard to determine the performance of each decoder in an objective way.

Currently I am writing an application using directshow which will capture frame rates output by the decoder. Its use is to measure the performance of the decoder, since a bad performance decoder will overload the cpu, therefore will drop frames producing low frame rates.

Is there any other good/popular way to test the performance of a decoder, and what conclusion can be drawn from that particular result?

thanks!
0
Comment
Question by:fungi8210
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
9 Comments
 
LVL 5

Expert Comment

by:thegilb
ID: 18747197
Use QueryPerformanceCounter and set up a test to decode a number of frames of a movie.
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 18747438
>>  Its use is to measure the performance of the decoder,

Are you talking about the performance of the decoding process ? Or of the encoded video ?
0
 

Author Comment

by:fungi8210
ID: 18747540
I'm talking about the performance of the decoding process, in particular, the performance of the decoder
0
Independent Software Vendors: 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!

 
LVL 5

Expert Comment

by:thegilb
ID: 18747563
If you use QPC and set up an adequate test environment then you should be able to yield very accurate results.
0
 
LVL 53

Accepted Solution

by:
Infinity08 earned 500 total points
ID: 18747581
If you are purely looking at runtime performance, and not at the quality of the generated video, then you'll have to either :

1) ensure that the generated videos are (almost) exactly the same for all decoders
2) or take differences in quality of the generated video into account by adding a "quality factor" to the "performance value"

If the output of the different encoders is the same (ie. none of them have dropped frames, and all are encoded with the same quality settings, and the visual quality is similar for all of them), then it's simply a matter of measuring the time the encoders take.

If the output is different (ie. some encoders drop frames, different quality settings were used and/or the visual quality is visibly different), then you'll have to quantize the different quality parameters, and add those in the calculation. This quantization will mostly depend on what importance you attribute to them. For example, a few dropped frames might not be bad, as long as the visual quality isn't affected, etc.

btw, are we talking about lossless or lossy encodings here ?
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 18747607
note : halfway through my last mail, I switched from the word "decoder" to "encoder". Just read "decoder" everywhere :)
0
 

Author Comment

by:fungi8210
ID: 18747692
by the way, my decoder is running on windows mobile platform
0
 

Author Comment

by:fungi8210
ID: 18747702
to Infinity08:

it is used in video telephony application so i guess it is a lossy encoding
0
 
LVL 53

Expert Comment

by:Infinity08
ID: 18748209
>> it is used in video telephony application so i guess it is a lossy encoding
Not necessarily - it depends how the image is acquired (ie. the resolution of the camera I imagine).

What you could do to prevent that loss of frames is a factor, is to run the decoder in a "laboratory" environment. Meaning that you don't decode in real-time. You just let the decoder do its word without any loss of frames, and you time how long it takes.

A lot depends (as I already mentioned) on what you think is more important when it comes to quality.

Preferrably, you'd do several tests for each decoder :

1) pure performance (frames per second with similar quality settings)
2) quality : crispness of image
3) quality : fluidness of image (not too much dropped frames)
4) quality : color correctness of image

and maybe other tests. Then you attribute a weight to each of these tests, and the final decoder "performance" can then be calculated like this for example :

    weight1 * result1 + weight2 * result2 + weight3 * result3 + weight4 * result4
0

Featured Post

Independent Software Vendors: 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

Suggested Solutions

IntroductionThis article is the second in a three part article series on the Visual Studio 2008 Debugger.  It provides tips in setting and using breakpoints. If not familiar with this debugger, you can find a basic introduction in the EE article loc…
Artificial Intelligence comes in many forms, and for game developers, Path-Finding is an important ability for making an NPC (Non-Playable Character) maneuver through terrain.  A* is a particularly easy way to approach it.  I’ll start with the algor…
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 learn how to clear a vector as well as how to detect empty vectors in C++.

738 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