Link to home
Start Free TrialLog in
Avatar of fungi8210
fungi8210

asked on

testing the performance of a decoder

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!
Avatar of thegilb
thegilb

Use QueryPerformanceCounter and set up a test to decode a number of frames of a movie.
Avatar of Infinity08
>>  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 ?
Avatar of fungi8210

ASKER

I'm talking about the performance of the decoding process, in particular, the performance of the decoder
If you use QPC and set up an adequate test environment then you should be able to yield very accurate results.
ASKER CERTIFIED SOLUTION
Avatar of Infinity08
Infinity08
Flag of Belgium image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
note : halfway through my last mail, I switched from the word "decoder" to "encoder". Just read "decoder" everywhere :)
by the way, my decoder is running on windows mobile platform
to Infinity08:

it is used in video telephony application so i guess it is a lossy encoding
>> 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