[theora] Upgrading to Beta 2

Charles Mason charlie.mas at gmail.com
Mon Nov 12 08:46:21 PST 2007


I have just upgrade3d my app to us use Beta 2 of Theora with the new
API and I thought I would share with you a few things I have found and
ask a question. My app is written in C# so I have to use the .Net
interop system to access the native DLL. My app did use a swig
generated wrapper but I decided to write a more efficent one by hand
for the new decode API.

Firstly the project file in /Win32/VS2005 is a little out of date. Not
only that it also seems to only build dlls with the old libtheora api
and does not provide the optimisations that the GCC based builds do.
Because of this I switched to cross compiling from Ubuntu using mingw
using the make file in the  /Win32/xmingw32 folder. That worked much
better.

To make the interop process easier I had to write some wrapper
functions around any api function which had the ogg_packet structure
in its parameters. It didn't seem to be passing the packet pointer
properly. The wrapper functions simple reassembles a ogg packet from
the parameters passed and calls the api function.

I havn't used Ycbcr call back function which provides the frame in
sections (hopefully with it still in cache) as the interop for that is
more complicated. Does anyone have any experience with using that and
the size performance benefits that can be expected by using it?

I have to says as a whole he new decoder is a really big step forward
from the Alpha I used a year ago. The performance appears considerably
better. HD video is now fairly good on my test machine (3 year old P4)
where as before its as a lot more jurky. Also the actual video looks a
lot better, the processing really works well.

Keep up the good work.

Charlie M


More information about the theora mailing list