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

giles at svn.xiph.org giles at svn.xiph.org
Tue Oct 9 16:39:46 PDT 2007


Author: giles
Date: 2007-10-09 16:39:46 -0700 (Tue, 09 Oct 2007)
New Revision: 13946

Modified:
   trunk/theora/doc/spec/spec.tex
Log:
Rough draft of the new granulepos scheme.


Modified: trunk/theora/doc/spec/spec.tex
===================================================================
--- trunk/theora/doc/spec/spec.tex	2007-10-09 14:41:01 UTC (rev 13945)
+++ trunk/theora/doc/spec/spec.tex	2007-10-09 23:39:46 UTC (rev 13946)
@@ -7677,8 +7677,13 @@
 
 \subsection{MIME type}
 
-The correct MIME type of any Ogg file is {\tt application/ogg}.
-Outside of an encapsulation, the mime type {\tt video/x-theora} may
+The generic MIME type of any Ogg file is {\tt application/ogg}.
+The specific MIME type for the Ogg Theora profile documented here
+is {\tt video/ogg}. This is the MIME type recommended for files
+conforming to this appendix. The recommended filename extension
+is {\tt .ogv}.
+
+Outside of an encapsulation, the mime type {\tt video/theora} may
  be used to refer specifically to the Theora compressed video stream.
 
 \section{Embedding in a logical bitstream}
@@ -7711,8 +7716,6 @@
  simplify header acquisition for seeking and live streaming applications.
 
 All header pages MUST have their granule position field set to zero.
-%TODO: or -1?
-%TBT: What are we doing now?
 
 \subsection{Frame data}
 
@@ -7724,18 +7727,30 @@
 The last page in the logical bitstream MUST have its `end of stream'
  flag set.
 
-Frame data pages MUST be marked with a granule index corresponding to
- the display time of the last frame/packet that finishes in that page.
+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.
 
-%TODO: \subsection{Granule position}
+\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 
+middle of the stream the granulepos sequence might be $1234|35$, 
+$1234|36$, $1234|37$, $1271|0$ (for a 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.
+
 \section{Multiplexed stream mapping}
 
 Applications supporting Ogg Theora I must support Theora bitstreams
  multiplexed with compressed audio data in the Vorbis I and Speex
  formats, and should support Ogg-encapsulated MNG graphics for overlays.
-% and the Writ format for text-based titling.
-%TBT: That's great... do these things have specifications?
 
 Multiple audio and video bitstreams may be multiplexed together.
 How playback of multiple/alternate streams is handled is up to the
@@ -7974,7 +7989,7 @@
 \includegraphics[width=2.5cm]{xifish}
 \end{wrapfigure}
 
-These pages are copyright \textcopyright{} 2004 Xiph.org Foundation.
+These pages are Copyright \textcopyright{} 2004-2007 Xiph.org Foundation.
 All rights reserved.
 Ogg, Theora, Vorbis, Xiph.org Foundation and their logos are trademarks
  (\texttrademark) of the \href{http://www.xiph.org}{Xiph.org Foundation}.



More information about the commits mailing list