[xiph-commits] r13954 - trunk/theora/doc/spec

giles at svn.xiph.org giles at svn.xiph.org
Wed Oct 10 17:59:56 PDT 2007


Author: giles
Date: 2007-10-10 17:59:56 -0700 (Wed, 10 Oct 2007)
New Revision: 13954

Modified:
   trunk/theora/doc/spec/spec.tex
Log:
More Ogg mapping cleanup.


Modified: trunk/theora/doc/spec/spec.tex
===================================================================
--- trunk/theora/doc/spec/spec.tex	2007-10-10 23:59:42 UTC (rev 13953)
+++ trunk/theora/doc/spec/spec.tex	2007-10-11 00:59:56 UTC (rev 13954)
@@ -7688,9 +7688,9 @@
 
 \section{Embedding in a logical bitstream}
 
-Ogg separates a {\em logical bitstream} consisting of the framing of
- a particular sequence of packets and complete within itself from
- the {\em physical bitstream} which may consist either of a single
+Ogg separates the concept of a {\em logical bitstream} consisting of the 
+ framing of a particular sequence of packets and complete within itself 
+ from the {\em physical bitstream} which may consist either of a single
  logical bitstream or a number of logical bitstreams multiplexed
  together.
 This section specifies the embedding of Theora packets in a logical Ogg
@@ -7700,11 +7700,12 @@
 
 \subsection{Headers}
 
-The initial info header packet appears by itself in a single Ogg page.
+The initial identification header packet appears by itself in a 
+ single Ogg page.
 This page defines the start of the logical stream and MUST have
  the `beginning of stream' flag set.
 
-The second and third header packets (metadata comments and decoder
+The second and third header packets (comment metadata and decoder
  setup data) can together span one or more Ogg pages.
 If there are additional non-normative header packets, they MUST be
  included in this sequence of pages as well.
@@ -7719,29 +7720,34 @@
 
 \subsection{Frame data}
 
-The first frame data packet in a logical bitstream MUST begin a fresh page.
+The first frame data packet in a logical bitstream MUST begin a new Ogg 
+ page.
 All other data packets are placed one at a time into Ogg pages
  until the end of the stream.
 Packets can span pages and multiple packets can be placed within any
  one page.
-The last page in the logical bitstream MUST have its `end of stream'
- flag set.
+The last page in the logical bitstream SHOULD have its 
+ 'end of stream' flag set to indicate complete transmission
+ of the available video.
 
 Frame data pages MUST be marked with a granule position corresponding to
- the end of the display interval of the last frame/packet that finishes in that page.
+ the end of the display interval of the last frame/packet that finishes 
+ in that page. See the next section for details.
 
 \subsection{Granule position}
 
 Data packets are marked by a granulepos derived from the count of decodable
 frames after that packet is processed. The field itself is divided into two
 sections, the width of the less significant section being given by the KFGSHIFT
-parameter decoded from the Identification Header. The more significant portion
-of the field gives the count of coded frames after the coding of the last keyframe
-in stream, and the less significant portion gives the count of frames since
-the last keyframe. Thus a stream would begin with a split granulepos of 
-$1|0$, followed by $1|1$, $1|2$, $1|3$, etc. Around a keyframe in the 
+parameter decoded from the identification header 
+(Section~\ref{sec:idheader}).
+The more significant portion of the field gives the count of coded 
+frames after the coding of the last keyframe in stream, and the less 
+significant portion gives the count of frames since the last keyframe.
+Thus a stream would begin with a split granulepos of $1|0$ (a keyframe),
+followed by $1|1$, $1|2$, $1|3$, etc. Around a  keyframe in the 
 middle of the stream the granulepos sequence might be $1234|35$, 
-$1234|36$, $1234|37$, $1271|0$ (for a keyframe), $1271|1$, and so
+$1234|36$, $1234|37$, $1271|0$ (for the keyframe), $1271|1$, and so
 on. In this way the granulepos field increased monotonically as required 
 by the Ogg format, but contains information necessary to efficiently 
 find the previous keyframe to continue decoding after a seek.
@@ -7804,14 +7810,13 @@
 %TBT: That's all pretty vague.
 
 After the `beginning of stream' pages, the header pages of each of
- the logical streams should be grouped together before any data pages
+ the logical streams MUST be grouped together before any data pages
  occur.
-%TBT: should or must?
 
 After all the header pages have been placed,
  the data pages are multiplexed together.
-They should be placed in the stream in increasing order by the playback
- time equivalents of their granule fields.
+They should be placed in the stream in increasing order by the 
+ time equivalents of their granule position fields.
 This facilitates seeking while limiting the buffering requirements of the
  playback demultiplexer.
 %TODO: A lot of this language is encoder-oriented.



More information about the commits mailing list