[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