[vorbis-dev] granulepos start/end revisited

André Pang ozone at algorithm.com.au
Tue May 18 00:49:35 PDT 2004



Hi all,

I noticed the following Subversion commit today:

   r6719 | xiphmont | 2004-05-18 16:04:53 +1000 (Tue, 18 May 2004) | 11 
lines

   Updated doc to reflect current proposal...

   Not as much a proposal at this point actually; this is the way I'm now
   implementing it.  Although we're still in the 'RFC'/'look for horrible
   lossage' stage, this is close to being set in stone unless we find
   something horribly wrong with it.

   Doc is still very light on detailed rationale and examples; I'd like
   to subcontract that part of the writing and get on with code.

I'm a bit concerned about some of the multiplexing changes, 
specifically these paragraphs:

     A granule position represents the instantaneous time location 
between two pages. However, continuous streams and discontinuous 
streams differ on whether the granulepos represents the end-time of the 
data on a page or the start-time. Continuous streams are 'end-time' 
encoded; the granulepos represents the point in time immediately after 
the last data decoded from a page. Discontinuous streams are 
'start-time' encoded; the granulepos represents the point in time of 
the first data decoded from the page.

     An Ogg stream type is declared continuous or discontinuous by its 
codec. A given codec may support both continuous and discontinuous 
operation so long as any given logical stream is continuous or 
discontinuous for its entirety and the codec is able to ascertain (and 
inform the Ogg layer) as to which after decoding the initial stream 
header. The majority of codecs will always be continuous (such as 
Vorbis) or discontinuous (such as Writ).

     Start- and end-time encoding do not affect multiplexing sort-order; 
pages are still sorted by the absolute time a given granulepos maps to 
regardless of whether that granulepos prepresents start- or end-time.

A simple question (with a complex answer, no doubt): what's the 
rationale for having a start-time encoded granulepos?  It adds (1) 
another dependency, and (2) the need for mode core to handle both start 
times and end times, which will also touch many parts of Ogg and 
possibly affect the code base of the codecs as well.

To frame the question another way, what's wrong with the current 
end-time granulepos scheme?  I've read through all the discussions and 
IRC meeting logs, and still don't understand the necessity for it.

Thanks,

<p>
-- 
% Andre Pang : trust.in.love.to.save

--- >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 'vorbis-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 Vorbis-dev mailing list