History: TheoraVideoPlugin Benchmark
Source of version: 2 (current)
Copy to clipboard
Here you can find various benchmarks of the plugin tested on a variety of hardware, using diferent versions of the plugin and underlaying libraries
{maketoc}
!!!Columns
* 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.
!!Revision 11
__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
!!!2GHz single-core laptop, 1GB RAM, ATI mobility radeon X600 (64MB RAM)
||* using theora compiled with SSE2 extensions | Video Size | decoding time | YUV -> RGB time | Tex Blit time | Time per frame | Dropped frames | Theora FPS | FPS
1280x528 | 6.3 | 30.3 | 39.9 | 76.5 | 76% | 13.1 | 161
1024x512 | 1.2 | 25.2 | 16.5 | 42.9 | 45% | 23.3 | 238
720x464 | 0.17 | 16.8 | 1.9 | 18.9 | 12% | 52.9 | 258
640x352 | 0.18 | 0.4 | 2.6 | 3.0 | 3% | 330 | 292
-||
!!!Conclusion
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 :)