[Theora] Seeking through Theora+Vorbis ogg file..

Reinier Zwitserloot surial at gmail.com
Fri Jun 10 20:38:22 PDT 2005

Here's the problem:

I've rewritten large parts of the output code of cortado 0.1.0 with
the following aims:

 1. output to something SWT-like instead of AWT.
 2. Speed it up a bit.

In the rewrites I haven't restricted myself to java 1.1; the fact that
it uses SWT all by itself makes it useless for applets anyway. The
speedup worked very nicely; it's almost twice as fast as vanilla
cortado 0.1.0. I noticed there's a 0.1.2 out with what looks like some
serious speedups - but most of those are in the output layer which I
already rewrote, and I've already checked - merging my changes with
the 0.1.0 -> 0.1.2 seems horrible.

So, two questions:

 1. Does cortado 0.1.2 do anything in regards to seeking? I know
cortado isn't really made for seeking (as it's intended audience is as
a backend to a streaming server), and, assuming for a moment that the
answer is no:
 2. How hard would it be to code seek support into cortado, or native
(not using any libraries) theora+vorbis (in an ogg stream) players? I
freely confess I have very very little knowledge of how theora and
vorbis work. The rewrite work I did was all in code past the point
where the decoder delivers what amounts to raw video data, and I
didn't mess with the audio system at all.

alternative question:

Is there any vanilla java (any version) theora + vorbis decoder out
there that does support seeking?

For those interested:
I did manage to refit my modified cortado with a feature that resets
most buffers and allows you to start playing an entirely different
stream without creating entirely new objects (which wouldn't even work
right; there's a number of static methods and fields in play).
Unfortunately it only works half the time, and unfortunately, just
setting cortado's clock more than a few seconds away from start means
the whole system goes haywire, probably because cortado then tries to
unpack all frames as fast as it can until it hits the clock, instead
of just warping forward to an appropriate keyframe and taking it from

"Ubi non accusator, ibi non judex." 

 -- Reinier Zwitserloot

More information about the Theora mailing list