[Theora] Theora, great stuff!

Alen Ladavac alenl-ml at croteam.com
Mon Aug 22 05:04:35 PDT 2005


From: "Ralph Giles" <giles at xiph.org>
> Absolutely. The vorbis and speex codecs have in fact been very
> successful within proprietary games. Arguably that is their
> most successful domain. Primarily because of technical excellence
> and of course the zero cost--even Microsoft appears to prefer libvorbis
> to their own WMA technology for many titles. And of course if Theora
> becomes a dominant online form demanded by users, many proprietary
> applications will have to support it.

You are right on the spot here. BSD-style license is very important for 
games because most games must run on at least one closed-source platform 
(consoles usually). That's why GLPL just doesn't cut it for games. However, 
I'd like to point out two things that seem to be a bit overlooked when it 
comes to usability of Theora in games. And those are: (a) performance and 
(b) ease of encoding.

Let me analyze these a bit:

(a) Performance

None of the currently available decoders (to my knowledge) are able to run a 
640x360 movie at steady 30fps on a <1GHz CPU and this is especially visible 
in scenes with a lot of motion. Average CPU usage is usually well under 
100%, but some frames (keyframes perhaps?) simply take more than 33ms to 
decode, what makes the whole thing unusable. I am saying this from 
experience with trying to make this work on Xbox (733MHz Celeron - more or 
less). WMV was much faster so, unfortunately, we had to give up on Theora 
for that. Note that even some PCs that are quite capable of running latest 
games (1.5GHz and similar) are having a hard time with that size of movie in 
Theora. While competitive formats (DivX, Bink, WMV) handle that with ease.

I understand that the current decoder(s) are mostly reference code, but that 
doesn't help for real production. For Theora to be as accepted for games as 
Vorbis is, it would require much more attention at the performance side then 
it receives right now. (Not that Vorbis is perfect here. It is still 
significantly slower than WMA, but at least it is acceptable on the PC. But 
it is also not good enough for XBox yet, though.) I have noticed some 
efforts to measure and optimize Theora lately, and I have to mention I see 
one problem in approach: improving average time needed to decode an entire 
movie is not good enough. It needs to be capable of decoding each movie 
frame in time that is strictly lower than that frame's length. So efforts 
need to be concentrated on the frames with worst decompression time.

Generally, as BSD is most useful for closed platforms, and closed platforms 
usually have lower end CPUs than contemporary PCs, this is a contradiction 
in terms. To make a full use of the opportunites that Theora has, besides 
BSD license, it would also need to have significantly better performance. 
(Vorbis could use some as well, but that's not a topic here.)

(b) Ease of encoding

This is not a critical problem (as speed is), but is still a big pain in the 
neck. Majority of game shops are mostly Windows based and there is still no 
good way to frameserve a movie from a Windows video mixing app into Theora. 
The only possible way I was able to get at was to use the GraphEditor from 
DirectX SDK in combination with Illiminable's codecs. The problem is with 
the ogg container, which is not directly supported for video editing. All 
apps assume that the container for video files will be either AVI or MPEG. 
While it is possible to use a nonstandard container, and most apps support 
that for decoding, the only app that supports that for _encoding_ is 
GraphEditor and it is basically a buggy, hacked-up, proof-of-concept demo 
program, not a real useable tool. Using this method requires a lot of manual 
setup for each movie that is to be encoded, and there are literally hundreds 
in the project we are currently working on. Let me tell you people who 
worked on that now take the name "Theora" as a synonym for pain and 
suffering. :/

I hope that these comments will be taken in a good spirit. I appreciate what 
you Theora devs have done, and I just want to share this view "from the 
other side of API", and hopefully help make Theora a trully accepted 
standard.

Thanks for following through this,
Alen



More information about the Theora mailing list