Here you can find various benchmarks of the plugin tested on a variety of hardware, using diferent versions of the plugin and underlaying libraries
Table of contents
- All time values are averages, expressed in milliseconds
- decoding time - Time it takes for theora to decode a frame
- YUV -> RGB time - converting theora's YUV pixel buffer to RGB
- Tex Blit time - transfering an RGB buffer from RAM to a texture
- Time per frame - last three colums combined, how much time it takes to get prepare one video frame for rendering
- FPS - estimated frames per second the plugin could render if pre-caching.
Tester: Kresimir Spes (kspes)
Software: ogg,vorbis,theora SVN r15152, ptypes 1.8.3, TheoraVideoPlugin SVN r11, Ogre 1.4.9, WindowsXP SP2
Ogre setup: 1024x768@32 Direct3D, no vsync
|* using theora compiled with SSE2 extensions||Video Size||decoding time||YUV -> RGB time||Tex Blit time||Time per frame||Dropped frames||Theora FPS||FPS|
From this figure, an older laptop could run high resolution video quite fine. The biggest problem in the current version of the plugin (svn revision 11) is that it doesn't precache frames. you can see that theora takes an average of 6.3 milliseconds to generate YUV frames for a HD video which is great. 6.3 ms is ofcourse an average, meaning that it usually takes under 1 ms to render simple frames and 10-20 ms to render complex ones.
Precaching would reduce frame dropping considerably.
The next big bottleneck is YUV->RGB conversion, it takes 4-6 times as much as average decoding time. This conversion can be transferred to the display card, thus reducing the average time it takes to render a frame by half.
Currently, it takes 76.5 ms to transfer an HD video frame from theora to a texture, removing YUV->RGB conversion would reduce 30.3 ms from each frame, summing up to 46.2 ms per HD frame which would give 21.4 rendered frames per second. Not bad for an old laptop