[theora-dev] More Q's about theora...

Timothy B. Terriberry tterribe at vt.edu
Tue Apr 6 07:06:09 PDT 2004

>>Firstly in the header there is width and height parameters.
>>Are these fixed for the entire file ?
>>Is it possible for say halfway through the dimensions of the video to be changed ie two different size videos are spliced together ?
>>If it is... does the header represent the first size or the maximum size ?

These are fixed for the entire logical stream. In a chained file, this 
can change from time to time, in which case there will be a new set of 
header packets in each link in the chain, because there will be a new 
logical stream. The values in the first header are just the first 
values, not the maximum.

For more about chaining and multiplexing, see:

Note that in a chained file one does not have to have the same number of 
logical streams in each link, or even the same types of streams. For 
example, you could chain a pure video stream, followed by a pure audio 
stream, followed by a video stream and two different audio streams 
multiplexed together. How much of this the DirectShow architecture can 
actually support may limit your filter's capabilities, though.

>>Secondly what are the interleaving requirements...
>>Obviously it's much easier for the player if pages from the audio and video are interleaved relatively in sync... but is it legal to say have the entire video bitstream of the video, followed by the entire audio bitstream ?
>>Not that you probably want to go to that extreme... but is there a maximum defined amount that the video and audio can't be out of sync by ? ie can you go 10 seconds worth of video... 10 seconds worth of audio etc. Is the general consensus that it should be more than one page out of sync... ie a page of video which ends after the granule pos of the last page of audio... must be foloowed by pages of audio until the time of the audio exceeds the time of the last page of video etc.

Pages are sorted in the file by mapping the granule position of each to 
an absolute time value, and arranging them by that time value. There is 
currently some discussion over how to select a granule position for a 
page: current software uses a granule position corresponding to the end 
time of the last complete packet in the page, but switching to the start 
time of the first packet provides slightly more efficient buffering in 
some cases. For a video packet the start and end time are the same, but 
in an audio packet they depend on the number of samples available after 
the packet is decoded. Note, however, that because there can be multiple 
packets in a page, the start and end time of a page can still differ for 
--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'theora-dev-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.

More information about the Theora-dev mailing list