Comment 1 for bug 416382

Revision history for this message
Tristan Brindle (tristan-brindle) wrote :

OggConvert is designed to use lots of threads. The trouble is, only one of these is likely to be doing a lot of work!

To put it in a bit more detail, OggConvert uses GStreamer, which is very multithreaded by nature. In the OggConvert pipeline, each of the following happens in a different thread:

The GUI
file reading & demuxing
video decoding
video encoding
audio decoding
audio encoding
muxing & file writing

Unfortunately, the video encoding stage is (generally) much, much more work than anything else, and so when you look in gnome-system-monitor or whatever you see only one busy CPU, because the other threads all get their work done in a fraction of the time it takes to encode a chunk of video. (Actually, this isn't always the case. If you are transcoding from a complex video format like H.264, VC-1 or Dirac you will often see two busy CPUs: one doing the video decoding and one doing the encoding. This is why OggConvert is usually faster than ffmpeg2theora when transcoding from these formats.)

Not that this changes the fact that OggConvert doesn't use all of the horsepower in your PC. The only real way to do that would be to modify the video encoders to use multiple "internal" threads. Unfortunately this is a very hard problem, but I guess one that will receive more attention from encoder authors as multi-core systems are now the norm.