[theora] Theora, liboil and Cell processors

Aaron Whitehouse lists at whitehouse.org.nz
Tue Jul 18 03:49:35 PDT 2006


Hello all,

On more than one occasion I have advocated the use of liboil over
incorporating mmx code into libtheora.

The two main reasons are:

1) To keep optimisation code in one place and out of the library.
Everywhere else in the Linux world there is a move to centralise in
order to co-ordinate experts and reduce redundancy. This reason does not
seem to find a lot of agreement in Theora as it creates a dependency. I
don't see why this should be any more an issue for Theora than it is for
all other Linux packages. Libtheora is a library about compressed video,
not about processor optimisation.

2) To avoid backing one horse. Writing mmx code into Theora accelerates
it to the lowest common denominator of _most_ processors. It neither
uses the full potential of any additional acceleration methods created
since mmx, nor does it accelerate for Altivec etc. etc. processors.

The reason that I bring this all up again is that I was reading about
the new Cell processor created by SIT. It sounds to me as though the
Cell will have a big impact on Multimedia computers/devices. It also
sounds as though the processor will (no doubt thanks to IBM) accept
Altivec instructions.

If libtheora used liboil then this news would only matter to those
involved in liboil. Those interested in processor-specific optimisation
could check that the Altivec optimisations, which they have written for
Macs, would work for the Cell and libtheora would be optimised
automatically.

Instead we are in a situation where, every time a new instruction set
comes out (or use of an existing set changes), we have to decide whether
to ignore it or duplicate the liboil effort inside Xiph's libraries.

Correct me if I am wrong, but I understand that it would still be
possible to move the new mmx optimisations into liboil and continue down
that path instead.

I may be missing some fundamental arguments against liboil, so please
tell me if this looks to be the case. From what I have seen, liboil
seems a much better solution to the complete optimisation problem than
the approach that we are currently taking.

Aaron


More information about the theora mailing list