[xiph-rtp] Chaining Theora codebook changes

Ralph Giles giles at xiph.org
Sat May 21 01:19:47 PDT 2005


On Fri, May 20, 2005 at 02:44:36AM -0700, David Barrett wrote:

> Hi, I'm still getting up to speed on the topic so please forgive my
> ignorance, but does "chaining" mean "changing codebooks on the fly"?
> If so, what is the latest proposal on this?

The idea is to do the same thing as the latest consensus for vorbis. 
That's only documented in the list archives at the moment.

> Looking over the archive, it sounds like:
> 
> - The server CAN specify one or more codebooks URLs in SDP
> - The server CAN specify new codebooks at will inline
> - The server CAN change codebooks at will, and the client MUST accept
> 
> Are these statements true?

well, 'at will' has some caveats, but basically, yes.

> I know the precise language and syntax are in flux, but it sounds like
> each packet will have some kind of variable-length codebook
> identifier, effectively choosing from the codebooks predefined by the
> SDP.  Is this true?  Can I further choose not only from those defined
> in the SDP at the start, but those delivered inline since?

Yes. there's also a proposal for an url construction scheme, so that the 
server can generate new codebooks on the fly outside what's in the SDP 
and the client can construct a url to retrieve them.

> Next, are there any restrictions on what can change with the
> codebook?  Can I change framerates, bitrates, resolutions -- basically
> anything I want to change?

In principle anything in the decoder setup can be changed. I'm not sure 
how things like frame size and rate which have standard representations 
in the SDP would work. It may be some session estabilishment protocols 
will end up placing additional limits.

> Finally, if I have a stream that starts with codebook A, switches to
> B, and then switches back to A, is it assumed that A picks up "where
> it left off", or do I reset the encoder with codebook A?  Is switching
> codebooks (assuming I don't need to re-download them) an expensive
> operation?

Not sure what you mean here. Parsing the codebook does take a little bit 
of time, but should be small compared to frame decode or encode. One can 
also of course cache the parsed codec setup and switch simply by sending 
frames to one context or another.

How the encoder generates a particular set of codebooks could be very 
expensive, of course, if it's tuned to a particular input stream for 
example. It's not a problem on decode.

> Thanks for your clarifications; just trying to make sure I have my
> assumptions in line so I don't march myself into a corner down the
> road.

Sounds like you have it more or less right. The idea is really just to 
support the same chaining you can do with the Ogg container, where 
playback of the concatentation of any two streams must be handled, 
preferrably in as gapless a manner as possible.

 -r


More information about the xiph-rtp mailing list