<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.xiph.org/skins/common/feed.css?272"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.xiph.org/index.php?title=Special:Contributions/Silvia&amp;feed=atom&amp;limit=50&amp;target=Silvia&amp;year=&amp;month=</id>
		<title>XiphWiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.xiph.org/index.php?title=Special:Contributions/Silvia&amp;feed=atom&amp;limit=50&amp;target=Silvia&amp;year=&amp;month="/>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Special:Contributions/Silvia"/>
		<updated>2013-05-19T19:46:33Z</updated>
		<subtitle>From XiphWiki</subtitle>
		<generator>MediaWiki 1.16.1</generator>

	<entry>
		<id>http://wiki.xiph.org/Chapter_Extension</id>
		<title>Chapter Extension</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Chapter_Extension"/>
				<updated>2012-10-12T02:51:44Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: make chapter spec simpler&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chapters are a means of providing direct and semantically relevant navigation points for a media file. On particular use case are so-called [http://en.wikipedia.org/wiki/Enhanced_podcast &amp;quot;enhanced podcasts&amp;quot;], i.e. audio files with additional chapter markers.&lt;br /&gt;
&lt;br /&gt;
Chapters are typically provided for a recorded file, not for a live resource.&lt;br /&gt;
&lt;br /&gt;
Since chapters are used for navigation - in particular to avoid having to listen to large amounts of undesired content in order to get to desired content - it is important that the information about chapters is available at the start of a media file to be able to be displayed without having to decode the media file. Therefore, we regard chapters as header-style metadata.&lt;br /&gt;
&lt;br /&gt;
Header-style metadata has traditionally been transported in [[VorbisComment]] headers inside Ogg.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
We therefore propose an extensions to VorbisComment for transporting chapters. We introduce VorbisComment fields called CHAPTERxxx and CHAPTERxxxNAME with xxx being a number between 000 and 999. (1000 chapters are assumed to be sufficient.)&lt;br /&gt;
&lt;br /&gt;
The value for the CHAPTERxxx field name is the start time of the chapter (Hour:Min:DecimalSeconds). See the [[#Examples|examples]] below.&lt;br /&gt;
&lt;br /&gt;
The value for the CHAPTERxxxNAME field name is just a text string (8 bit clean UTF-8 encoded values, as is required for VorbisComments).&lt;br /&gt;
&lt;br /&gt;
This should basically support the same input format that [http://savvyadmin.com/adding-chapters-to-videos-using-mkv-containers/ Matroska chapters] support, too.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
An example chapter file with two sequential chapters: &lt;br /&gt;
&lt;br /&gt;
 CHAPTER001=00:00:00.000&lt;br /&gt;
 CHAPTER001NAME=Chapter 1&lt;br /&gt;
 CHAPTER002=00:05:00.000&lt;br /&gt;
 CHAPTER002NAME=Chapter 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further Fields ==&lt;br /&gt;
&lt;br /&gt;
Other fields can also be used to support enhanced podcasts:&lt;br /&gt;
&lt;br /&gt;
* a field to extend chapters with a url to navigate to while listening to a chapter of a podcast:&lt;br /&gt;
&lt;br /&gt;
 CHAPTERxxxURL=http&amp;amp;#058;//...&amp;lt;!-- &amp;amp;#058; for colon used to suppress automatic link --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== WebVTT ==&lt;br /&gt;
&lt;br /&gt;
We expect people may also want support for hierarchically structured chapters with subchapters etc. This specification does not support this need. We recommend making use of WebVTT as a chapter format specification to satisfy this need. At a future time we expect a mapping of WebVTT into Ogg to allow for embedding of such files into Ogg, too.&lt;br /&gt;
&lt;br /&gt;
WebVTT is a more modern means of specifying chapters [http://dev.w3.org/html5/webvtt/#webvtt-file-using-chapter-title-text that use cues with chapter titles] and can deal with time overlapping cues.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Chapter_Extension</id>
		<title>Chapter Extension</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Chapter_Extension"/>
				<updated>2012-04-11T12:32:53Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added URLs to chapters&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chapters are a means of providing direct and semantically relevant navigation points for a media file. On particular use case are so-called [http://en.wikipedia.org/wiki/Enhanced_podcast &amp;quot;enhanced podcasts&amp;quot;], i.e. audio files with additional chapter markers.&lt;br /&gt;
&lt;br /&gt;
Chapters are typically provided for a recorded file, not for a live resource.&lt;br /&gt;
&lt;br /&gt;
Since chapters are used for navigation - in particular to avoid having to listen to large amounts of undesired content in order to get to desired content - it is important that the information about chapters is available at the start of a media file to be able to be displayed without having to decode the media file. Therefore, we regard chapters as header-style metadata.&lt;br /&gt;
&lt;br /&gt;
Header-style metadata has traditionally been transported in [[VorbisComment]] headers inside Ogg.&lt;br /&gt;
&lt;br /&gt;
== Format ==&lt;br /&gt;
&lt;br /&gt;
We therefore propose an extensions to VorbisComment for transporting chapters. We introduce VorbisComment fields called CHAPTERxxx and CHAPTERxxxNAME with xxx being a number between 000 and 999. (1000 chapters are assumed to be sufficient.)&lt;br /&gt;
&lt;br /&gt;
The value for the CHAPTERxxx field name is the start time of the chapter (Hour:Min:DecimalSeconds), &amp;quot;--&amp;gt;&amp;quot; (U+002D, U+002D, U+003E), and the end time (Hour:Min:DecimalSeconds). See the [[#Examples|examples]] below.&lt;br /&gt;
&lt;br /&gt;
The value for the CHAPTERxxxNAME field name is just a text string (8 bit clean UTF-8 encoded values, as is required for VorbisComments).&lt;br /&gt;
&lt;br /&gt;
This should basically support the same input format that [http://savvyadmin.com/adding-chapters-to-videos-using-mkv-containers/ Matroska chapters] support, too.&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
An example chapter file with two sequential chapters: &lt;br /&gt;
&lt;br /&gt;
 CHAPTER001=00:00:00.000--&amp;gt;00:05:00.000&lt;br /&gt;
 CHAPTER001NAME=Chapter 1&lt;br /&gt;
 CHAPTER002=00:05:00.000--&amp;gt;00:10:00.000&lt;br /&gt;
 CHAPTER002NAME=Chapter 2&lt;br /&gt;
&lt;br /&gt;
Another example chapter file with a chapter and three hierarchically structured subchapters: &lt;br /&gt;
&lt;br /&gt;
 CHAPTER001=00:00:00.000--&amp;gt;00:06:00.000&lt;br /&gt;
 CHAPTER001NAME=Chapter 1&lt;br /&gt;
 CHAPTER002=00:00:00.000--&amp;gt;00:02:00.000&lt;br /&gt;
 CHAPTER002NAME=Chapter 1.1&lt;br /&gt;
 CHAPTER003=00:00:02.000--&amp;gt;00:04:00.000&lt;br /&gt;
 CHAPTER003NAME=Chapter 1.2&lt;br /&gt;
 CHAPTER004=00:00:04.000--&amp;gt;00:06:00.000&lt;br /&gt;
 CHAPTER004NAME=Chapter 1.3&lt;br /&gt;
&lt;br /&gt;
== Further Fields ==&lt;br /&gt;
&lt;br /&gt;
Other fields can also be used to support enhanced podcasts:&lt;br /&gt;
&lt;br /&gt;
* a field to extend chapters with a url to navigate to while listening a chapter of a podcast:&lt;br /&gt;
&lt;br /&gt;
 CHAPTERxxxURL=http://...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WebVTT ==&lt;br /&gt;
&lt;br /&gt;
A more modern means of specifying chapters is through [http://dev.w3.org/html5/webvtt/#webvtt-file-using-chapter-title-text WebVTT files that use cues with chapter titles].&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/VorbisComment</id>
		<title>VorbisComment</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/VorbisComment"/>
				<updated>2012-03-05T09:49:53Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added chapter extension&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;VorbisComment is a base-level [[Metadata]] format initially created for use with Ogg [[Vorbis]]. It has since been adopted in the specifications of &lt;br /&gt;
[[Ogg]] encapsulations for other Xiph.Org codecs including [[Theora]], [[Speex]] and [[FLAC]].&lt;br /&gt;
&lt;br /&gt;
The use case for VorbisComment is given as:&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
... much like someone jotting a quick note on the bottom of a CDR. It should be a little information to remember the disc by and explain it to others; a short, to-the-point text note that need not only be a couple words, but isn't going to be more than a short paragraph.[http://xiph.org/vorbis/doc/v-comment.html]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
VorbisComments are typically used to provide basic information like the title and copyright holder of a work.&lt;br /&gt;
As such the scope is similar to that of ID3 tags used with MP3 files.&lt;br /&gt;
VorbisComment is widely supported on [[VorbisHardware|portable Ogg Vorbis players]] as well as streaming, editing and playback software.&lt;br /&gt;
&lt;br /&gt;
Although the syntax of VorbisComment is well-specified, various conventions exist for the field names in use.&lt;br /&gt;
The goal for this page is to codify best practices and collect proposals for standardization of VorbisComment field names.&lt;br /&gt;
&lt;br /&gt;
VorbisComments are typically encoded as the second packet in a codec stream. When VorbisComments are included in the first (ie. Theora) stream of an Ogg Theora file, they are assumed to cover all streams in the multiplexed group. [http://lists.xiph.org/pipermail/vorbis-dev/2008-December/019676.html]&lt;br /&gt;
&lt;br /&gt;
VorbisComment is the simplest and most widely-supported mechanism for storing metadata with Xiph.Org codecs. For other existing and proposed mechanisms, see [[Metadata]].&lt;br /&gt;
&lt;br /&gt;
== Recommended field names ==&lt;br /&gt;
&lt;br /&gt;
The current [http://xiph.org/vorbis/doc/v-comment.html VorbisComment recommendation] contains a recommended set&lt;br /&gt;
of field names for comments.&lt;br /&gt;
&lt;br /&gt;
== Proposed field names ==&lt;br /&gt;
&lt;br /&gt;
Some proposals for extra field names:&lt;br /&gt;
&lt;br /&gt;
* [http://age.hobba.nl/audio/mirroredpages/ogg-tagging.html Ogg Vorbis Comment Field Recommendations]&lt;br /&gt;
* [http://gophernet.org/articles/vorbiscomment/ Proposals for extending Ogg Vorbis comments]&lt;br /&gt;
* [[Field names]]&lt;br /&gt;
* [[Chapter Extension]]&lt;br /&gt;
&lt;br /&gt;
Comments are intended to be free-form, but for the purposes of interoperability, it is helpful to define tag sets for particular applications, and provide some guidelines for machine parsing. Note that some field names have to be non-free-form to achieve machine parsing.&lt;br /&gt;
&lt;br /&gt;
=== Cover art ===&lt;br /&gt;
&lt;br /&gt;
==== METADATA_BLOCK_PICTURE ====&lt;br /&gt;
The [http://flac.sourceforge.net/format.html#metadata_block_picture binary FLAC picture structure] is base64 encoded and placed within a VorbisComment with the tag name &amp;quot;METADATA_BLOCK_PICTURE&amp;quot;. This is the preferred and recommended way of embedding cover art within VorbisComments. It has the following benefits:&lt;br /&gt;
&lt;br /&gt;
* Easy to use for developers since the identical (or similar) structure is also used by FLAC and MP3.&lt;br /&gt;
* The cover art can either be linked or embedded within the stream.&lt;br /&gt;
* Common picture file formats are supported (jpg and png).&lt;br /&gt;
* A description may be included and the picture type (front cover, back cover...) and image mime type are provided.&lt;br /&gt;
* Base64 encoded data is invariant under UTF-8 and a valid UTF-8 string, so obeys the rules for comment data.&lt;br /&gt;
&lt;br /&gt;
Implementations interpreting or writing picture blocks should note the following details:  &lt;br /&gt;
&lt;br /&gt;
===== General encoding/decoding =====&lt;br /&gt;
* Failure to decode a picture block should not prevent playback of the file (failure to deal with the particularly large packet required by the comment header is a separate problem with the player implementation).&lt;br /&gt;
* Base64 encoding is used as in section 4 of [http://www.faqs.org/rfcs/rfc4648.html RFC4648]. We note that line feeds are not allowed and padding characters ('=') are required.&lt;br /&gt;
* Applications adding picture blocks should inform users that some applications or hardware may not support them and should provide a method to remove the blocks (this is expected to be trivial for applications capable of adding them).&lt;br /&gt;
&lt;br /&gt;
===== Block handling =====&lt;br /&gt;
* The unencoded format is that of the [http://flac.sourceforge.net/format.html#metadata_block_picture FLAC picture block].  The fields are stored in big endian order as in FLAC, picture data is stored according to the relevant standard.&lt;br /&gt;
* Picture data should be stored in PNG or JPEG formats or linked separately.  It is recommended readers support both PNG and JPEG&lt;br /&gt;
* Allowed values for the MIME string are &amp;quot;image/&amp;quot;, &amp;quot;image/png&amp;quot;, &amp;quot;image/jpeg&amp;quot; and &amp;quot;--&amp;gt;&amp;quot; (the link indicator) and &amp;quot;&amp;quot; (length 0).  An empty MIME string indicates type &amp;quot;image/&amp;quot;&lt;br /&gt;
* Fields present in the ID3V2.4.0 [http://www.id3.org/id3v2.4.0-frames#line-1085 Attached Picture Frame] (APIC Frame) take the same interpretation as in the ID3V2.4.0 format with the following exceptions (following the FLAC format):&lt;br /&gt;
** The description field is UTF-8 (encoded without ID3V2's initial 'encoding byte')&lt;br /&gt;
** String fields are not null terminated: their preceding length fields are used instead.&lt;br /&gt;
&lt;br /&gt;
===== Linked images =====&lt;br /&gt;
Support for linked images is optional for applications handling picture blocks. When a linked picture is indicated the following rules are observed:&lt;br /&gt;
* The picture data is a complete URL indicating the picture to be used, relative URLs are allowed (note relative URLs do not start with a protocol specifier and are retrieved with the same protocol as the file being processed).&lt;br /&gt;
* Links are ISO-8859-1 encoded&lt;br /&gt;
* Applications MAY retrieve linked images via the file:// protocol.&lt;br /&gt;
* Applications MUST obtain user approval if they wish to retrieve images via remote protocols.&lt;br /&gt;
* Link targets may become unavailable: applications supporting linked images SHOULD recover gracefully from this and MAY report the absence to the user.&lt;br /&gt;
* The type of the linked file is not restricted to JPEG and JFIF and applications MAY support other formats&lt;br /&gt;
* If the application does not support linked images, the target is unavailable, not permitted or an unknown format the picture block should be skipped.&lt;br /&gt;
* Applications may make links available to users, this is of particular use when links are unsupported or of unsupported type&lt;br /&gt;
&lt;br /&gt;
===== Image dimension fields =====&lt;br /&gt;
* The height, width, colour depth and 'number of colours' fields are for purely informational purposes.  Applications MUST NOT use them for decoding purposes, but MAY display them to the user and MAY use them to make a decision whether to skip the block (for example if selecting the most appropriate among multiple blocks).&lt;br /&gt;
* Applications writing picture blocks MUST set these fields correctly OR set them all to zero.&lt;br /&gt;
&lt;br /&gt;
===== Multiple blocks =====&lt;br /&gt;
* Multiple image blocks MAY be included as separate METADATA_BLOCK_PICTURE comments.&lt;br /&gt;
* There may only be one each of picture type (APIC type) 1 and 2 in a Vorbis stream.&lt;br /&gt;
* Block order is significant for some types and applications should preserve the comment order when reading or writing VorbisComment headers. The block order may be used to determine the order pictures are presented to the user.&lt;br /&gt;
&lt;br /&gt;
===== Playback tests =====&lt;br /&gt;
Embedding a picture into the file might break playback of existing players (especially hardware players, software players could be updated easily). A workaround would be to link the picture within the tag. Furthermore users should become informed in some way that embedding a picture COULD cause problems (as stated above).&lt;br /&gt;
&lt;br /&gt;
In order to test if there are playback problems, there are test files available [http://www.audioranger.com/coverart_mk.ogg here] and [http://www.audioranger.com/coverart_im.ogg here]. You're invited to download one of these test files (or both), test playback on your software and hardware players, and report the results here on the wiki.&lt;br /&gt;
&lt;br /&gt;
'''Tested software players'''&lt;br /&gt;
* Audacious 1.5.1: no problem&lt;br /&gt;
* foobar2000: no problems&lt;br /&gt;
* Gnome: built-in preview playback: no problem&lt;br /&gt;
* MediaMonkey: no problems&lt;br /&gt;
* Media Player Classic (unicode build) 6.4.9.1: no problem&lt;br /&gt;
* RoarAudio: no problems (server and client side)&lt;br /&gt;
* Rythmbox 0.11.6: no problem&lt;br /&gt;
* Totem 2.24.3: no problem&lt;br /&gt;
* VLC 0.9.4/0.9.6: doesn't play&lt;br /&gt;
** Patch send to VLC to fix this - should get in 1.0.0&lt;br /&gt;
* WinAmp: no problems&lt;br /&gt;
* Windows Media Player 11: no problem&lt;br /&gt;
* XMPlay 3.4.2: no problem&lt;br /&gt;
* Nero ShowTime: no problem&lt;br /&gt;
* Songbird 1.8.0: no problem, able to show and edit embedded pictures&lt;br /&gt;
&lt;br /&gt;
'''Tested hardware players'''&lt;br /&gt;
* Logitech Squeezebox: Supported as of January 2009 (server version 7.3.3)&lt;br /&gt;
* Sandisk Sansa Fuze (Firmware 01.01.22): Hangs up when trying to playback the demo file - had to reset the player&lt;br /&gt;
** Note: The &amp;quot;Fuze&amp;quot; can play ogg vorbis files which have embedded pictures from &amp;quot;Easytag&amp;quot;&lt;br /&gt;
* Cowon iAudio U3 (Firmware 1.29, 4 GB): works&lt;br /&gt;
* Cowon D2: no problem (latest Firmware: 2.59, 8GB Version)&lt;br /&gt;
* iRiver E100: no problem (latest Firmware: 1.16 G_U, 8GB Version)&lt;br /&gt;
* Samsung YP-R1: no problem (latest Firmware: 3.07, 16GB Version)&lt;br /&gt;
&lt;br /&gt;
'''Tested tag editors'''&lt;br /&gt;
* Easytag 2.1.6: can open the file to edit the normal tag fields&lt;br /&gt;
* MP3Tag 2.42e: can open the file to edit the normal tag fields&lt;br /&gt;
* MP3Tag 2.47b: is able to show and edit embedded pictures&lt;br /&gt;
&lt;br /&gt;
'''Tested other software'''&lt;br /&gt;
* Total Recorder: capable to work with artwork according to the specification.&lt;br /&gt;
&lt;br /&gt;
==== Unofficial COVERART field (deprecated) ====&lt;br /&gt;
There also exists an unofficial, not well supported comment field named &amp;quot;COVERART&amp;quot;. It includes a base64-encoded string of the binary picture data (usually a JPEG file, but this could be a different file format too). The disadvantages are that&lt;br /&gt;
* no additional information like a description about the cover art or its type (front cover, back cover etc.) is provided,&lt;br /&gt;
* the cover art can't be linked&lt;br /&gt;
* the base64 string is displayed within many tag editors as plain text because of their missing support for this &amp;quot;COVERART&amp;quot; field&lt;br /&gt;
* it may breaks the playback on hardware players because of a large VorbisComment header&lt;br /&gt;
The unofficial &amp;quot;COVERART&amp;quot; field is supported for example by such software as AudioShell (http://www.softpointer.com/AudioShell.htm) - read/write, and Total Recorder (http://www.totalrecorder.com/)- only read.&lt;br /&gt;
&lt;br /&gt;
===== Conversion to METADATA_BLOCK_PICTURE =====&lt;br /&gt;
Old &amp;quot;COVERART&amp;quot; tags should be converted to the new METADATA_BLOCK_PICTURE tag (see above for its specification). This conversion is straightforward and is suggested to be done the following way:&lt;br /&gt;
&lt;br /&gt;
* Decode the COVERART tag. A program MAY check the signature of the embedded picture in order to determine whether it is an allowed type. Lossless conversion from disallowed types to allowed types MAY be carried out.&lt;br /&gt;
* Fill out the FLAC block with the binary picture data. If the MIME type of the picture is unknown or can't be determined, the MIME type &amp;quot;image/&amp;quot; MAY be used instead. Supplying image dimensions, color depth etc. is optional (see specification above).&lt;br /&gt;
* In the absence of other information the picture type 'Other' should be used. Applications may want to allow users to select a default type or specify the type to use.&lt;br /&gt;
* Encode the new picture block, remove the COVERART tag from the comments and add the METADATA_BLOCK_PICTURE entry.&lt;br /&gt;
* If multiple tags are being converted the order of the METADATA_BLOCK_PICTURE tags should be the same as that of the COVERART tags they are replacing.&lt;br /&gt;
&lt;br /&gt;
=== Date and time ===&lt;br /&gt;
&lt;br /&gt;
The goal is to specify '''one''' standard format for describing date and/or time.&lt;br /&gt;
&lt;br /&gt;
==== ISO proposal ====&lt;br /&gt;
The date format for any field describing a date must follow the ISO scheme: YYYY-MM-DD, shortened to just YYYY-MM or simply YYYY.&lt;br /&gt;
&lt;br /&gt;
We have been recommending this usage with the DATE tag for some time. It is proposed that the spec be amended to include this information for machinability.&lt;br /&gt;
&lt;br /&gt;
The time format for any field '''except''' track duration must be specified with leading T and ending with a time zone. Schemas with and without dates: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
YYYY-MM-DDTHH:MM:SS+TS&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
THH:MM+TZ&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ENCODER ===&lt;br /&gt;
&lt;br /&gt;
The goal is to attribute encoder software. This value can be used in the future to determine which files can be improved by being re encoded with a newer version.&lt;br /&gt;
&lt;br /&gt;
:'''Comment''': What is lacking from the vendor string present in the spec from the start? All libvorbis and encoder tunings I'm aware of have recorded the encoder version here.&lt;br /&gt;
&lt;br /&gt;
Rationale for not using the vendor string:&lt;br /&gt;
* The vendor string is usually used to store the name and version of the underlying codec library&lt;br /&gt;
* The idea of ENCODER is to store the name of the user-visible application, for example &amp;lt;tt&amp;gt;ffmpeg2theora&amp;lt;/tt&amp;gt;.&lt;br /&gt;
* It can be useful for debugging to store the name and version of the calling application.&lt;br /&gt;
* The libvorbis API does not let applications override the vendor string.&lt;br /&gt;
&lt;br /&gt;
==== Proposal: Inclusion of URL in ENCODER value ====&lt;br /&gt;
The encoder field name must be a unique URL providing both encoder software name and version. If no unique URL address is available were both name and version is available; then the version number can be specified by separating with a space character. For example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;ENCODER=http://flac.sourceforge.net/ 1.2.1&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Note that ffmpeg2theora uses ENCODER, but does not include a url. ''Added by Rillian on September 17, 2007''&lt;br /&gt;
&lt;br /&gt;
==== Proposal: ENCODED_BY ====&lt;br /&gt;
&lt;br /&gt;
I've also seen ENCODED_BY. ''Added by Rillian on September 17, 2007''&lt;br /&gt;
: ENCODED_BY is usually the person who did the encoding. This should not be part of the recommendation due to legal problems around deliberate and accidental distribution to third parties. Basically the name of the encoder should not be included to protect encoders from their own egos and possible legal prosecution. ''Added by Aleksandersen on September 20, 2007''&lt;br /&gt;
&lt;br /&gt;
=== Improving license data ===&lt;br /&gt;
&lt;br /&gt;
The goal is to provide a method for proclaiming license and copyright information (basically clarifying ‘distribution rights (if any) and ownership’).&lt;br /&gt;
&lt;br /&gt;
The [http://xiph.org/vorbis/doc/v-comment.html specification document] describes LICENSE and COPYRIGHT fields. But is not clear enough about whether these should be machine-readable.&lt;br /&gt;
&lt;br /&gt;
We should consider working together with Creative Commons to have complementary and interlinked information on the Creative Commons and Xiph wikis. Refer to the [http://wiki.creativecommons.org/Ogg Ogg page] in the Creative Commons wiki.&lt;br /&gt;
&lt;br /&gt;
==== New RIGHTS field name proposal ====&lt;br /&gt;
One proposal is to replace the COPYRIGHT and LICENSE field names with RIGHTS. RIGHTS must be a human-readable copyright statement. Basic example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;RIGHTS=Copyright © Recording Company Inc. All distribution rights reserved.&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
But this is not machine-readable. Adding two complementary field names should do the trick: RIGHTS-DATE, describing the date of copyright; and RIGHTS-URI, providing a method for linking to a license. Software agents can assume that multiple songs uses the sameURIs, such as in the case for Creative Commons. Full example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;RIGHTS=Copyright © 2019 Recording Company Inc. All distribution rights reserved.&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;RIGHTS-DATE=2019-04&amp;lt;/nowiki&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;nowiki&amp;gt;RIGHTS-URI=http://somewhere.com/license.xhtml&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Software such as for multimedia management and playback are encouraged to display the RIGHTS statement as a linked phrase using RIGHTS-URI.&lt;br /&gt;
&lt;br /&gt;
RIGHTS-DATE does not need to be displayed as it is required in the human readable version by international copyright agreements. RIGHTS-DATE can be used to determine when a copyrighted work falls under the public domain and related matters. (''The Beatles''' copyright on their original studio recordings (not the remixes) are soon expiering. So mechanisms such as the RIGHTS-DATE are indeed required in music management and filesharing software!)&lt;br /&gt;
&lt;br /&gt;
To remain machine-readable it would be required to have at most one instance of each RIGHTS field name. All fields would of course remain optional.&lt;br /&gt;
&lt;br /&gt;
The ''Dublin Core Metadata Initiative'' recommends the use of ‘rights’ to describe license and copyright matters. The web feed format Atom 1.0 has implemented a rights element in their specification.&lt;br /&gt;
&lt;br /&gt;
:'''Comment''': The triplet RIGHTS, RIGHTS-DATE, RIGHTS-URI is an example of structured metadata. VorbisComments are inherently unstructured, and this should be respected. Structured metadata belongs in a different stream, such as XML (using [[Metadata#XMLEmbedding|XMLEmbedding]]).&lt;br /&gt;
&lt;br /&gt;
==== Improving existing fields proposal ====&lt;br /&gt;
Similar to the DATE tag above, we have generally recommended that a URL uniquely identifying the license be included in the LICENSE field to allow machine identification of the license. This is in agreement with the proposal in the Creative Commons wiki. Since the COPYRIGHT field is a human-readable statement of the copyright, like the proposed RIGHTS tag above, some people include a license url there. Therefore if a url can't be found in a LICENSE tag if any, applications should use one from the COPYRIGHT tag, if any. Contact information for verification, attribution, relicensing, etc. can be obtained from the COPYRIGHT field, but Creative Commons also recommend a separate CONTACT tag for this information. This is reasonable, so we propose it be included.&lt;br /&gt;
&lt;br /&gt;
=== Geo Location fields ===&lt;br /&gt;
&lt;br /&gt;
The existing LOCATION field is meant to carry a human readable location for the recording/creation of the media file. &lt;br /&gt;
&lt;br /&gt;
Having geographical coordinates according to [http://en.wikipedia.org/wiki/World_Geodetic_System WGS84] can be useful as well, especially in a form that can be machine parsed. The agreed format is similar to this [http://en.wikipedia.org/wiki/Geo_(microformat) geo microformat]:&lt;br /&gt;
&lt;br /&gt;
GEO_LOCATION= ''latitude'' ; ''longitude'' [; ''elevation'' ] &lt;br /&gt;
&lt;br /&gt;
where each value is a fixed point decimal number formatted in the C locale with a period (.) for the radix. Values are separated with a ';' and white space is not significant. The elevation is optional.&lt;br /&gt;
&lt;br /&gt;
''latitude'' is the geo latitude location of where the media has been recorded or produced in decimal degrees according to WGS84 (zero at the equator, negative values for southern latitudes) (C double).&lt;br /&gt;
&lt;br /&gt;
''longitude'' is the geo longitude location of where the media has been recorded or produced in decimal degrees according to WGS84 (zero at the prime meridian in Greenwich/UK, negative values for western longitudes). (C double).&lt;br /&gt;
&lt;br /&gt;
''elevation'' is the geo elevation of where the media has been recorded or produced in meters according to WGS84 (zero is average sea level) (C double).&lt;br /&gt;
&lt;br /&gt;
=== Replay Gain ===&lt;br /&gt;
&lt;br /&gt;
The REPLAYGAIN_* fields implement the Replay Gain proposal for storing a track relative volume adjustment, which can be used to &amp;quot;fix&amp;quot; quiet or loud sounding Vorbis or FLAC streams. The set of tags is intended to be machine parsed, and has the following form: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
REPLAYGAIN_TRACK_GAIN=-7.03 dB&lt;br /&gt;
REPLAYGAIN_TRACK_PEAK=1.21822226&lt;br /&gt;
REPLAYGAIN_ALBUM_GAIN=-6.37 dB&lt;br /&gt;
REPLAYGAIN_ALBUM_PEAK=1.21822226&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See http://www.replaygain.org/ for detailed information about Replay Gain and how the different values are calculated.&lt;br /&gt;
&lt;br /&gt;
=== Tantalos resource ID ===&lt;br /&gt;
Tantalos is a protocol to auto locate and access content in a network scope (normally 'LAN' but can also be bigger like 'company network'). It uses UUIDs to identify resources. There are two groups of those UUIDs: IDs generated using the meta data of the track and IDs generated in some other way (for example random IDs, see UUID specs). The later group may need to be passed with the track. The VCLT Playlist format (see below) uses 'HASH={UUID}id...' with hex-dash format for this (HASH={UUID}e278173d-4d6d-4c66-95ec-4ec85eedc7d1).&lt;br /&gt;
--[[User:Ph3-der-loewe|Ph3-der-loewe]] 02:05, 13 December 2011 (PST)&lt;br /&gt;
&lt;br /&gt;
== Other (non-proposed field names) ==&lt;br /&gt;
=== VCLT playlist format ===&lt;br /&gt;
The VCLT playlist format uses some ''keys'' which look like VorbisComments but they aren't nor they are proposed to become (expect for HASH). This includes the keys STREAMURL, FILENAME, FILEURL, LENGTH, HASH (see above for this one), SIGNALINFO, AUDIOINFO and OFFSET. You can find more infos about those at [https://bts.keep-cool.org/wiki/Specs/VCLT https://bts.keep-cool.org/wiki/Specs/VCLT].&lt;br /&gt;
&lt;br /&gt;
== Implementations ==&lt;br /&gt;
&lt;br /&gt;
* [http://sbooth.org/importers/ OggImporter] &amp;amp;ndash; imports Ogg Vorbis and Ogg FLAC files to Spotlight.&lt;br /&gt;
* vorbiscomment &amp;amp;ndash; a commandline tool, part of [[VorbisTools]].&lt;br /&gt;
* [http://www.xiph.org/oggz/ oggz-comment] &amp;amp;ndash; a commandline tool, part of [[Oggz]] tool. It can add comments to multitrack and video files.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Chapter_Extension</id>
		<title>Chapter Extension</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Chapter_Extension"/>
				<updated>2012-03-05T09:48:48Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: started specification&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Chapters are a means of providing direct and semantically relevant navigation points for a media file. On particular use case are so-called http://en.wikipedia.org/wiki/Enhanced_podcast &amp;quot;enhanced podcasts&amp;quot;], i.e. audio files with additional chapter markers.&lt;br /&gt;
&lt;br /&gt;
Chapters are typically provided for a recorded file, not for a live resource.&lt;br /&gt;
&lt;br /&gt;
Since chapters are used for navigation - in particular to avoid having to listen to large amounts of undesired content in order to get to desired content - it is important that the information about chapters is available at the start of a media file to be able to be displayed without having to decode the media file. Therefore, we regard chapters as header-style metadata.&lt;br /&gt;
&lt;br /&gt;
Header-style metadata has traditionally been transported in VorbisComment headers inside Ogg.&lt;br /&gt;
&lt;br /&gt;
We therefore propose an extensions to VorbisComment for transporting chapters. We introduce VorbisComment fields called CHAPTERxxx and CHAPTERxxxNAME with xxx being a number between 000 and 999. We assume 1000 chapters to be sufficient.&lt;br /&gt;
&lt;br /&gt;
An example chapter file with two sequential chapters: &lt;br /&gt;
&lt;br /&gt;
  CHAPTER001=00:00:00.000-00:05:00.000&lt;br /&gt;
  CHAPTER001NAME=Chapter 1&lt;br /&gt;
  CHAPTER002=00:05:00.000-00:10:00.000&lt;br /&gt;
  CHAPTER002NAME=Chapter 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Another example chapter file with a chapter and three hierarchically structured subchapters: &lt;br /&gt;
&lt;br /&gt;
  CHAPTER001=00:00:00.000-00:06:00.000&lt;br /&gt;
  CHAPTER001NAME=Chapter 1&lt;br /&gt;
  CHAPTER002=00:00:00.000-00:02:00.000&lt;br /&gt;
  CHAPTER002NAME=Chapter 1.1&lt;br /&gt;
  CHAPTER003=00:00:02.000-00:04:00.000&lt;br /&gt;
  CHAPTER003NAME=Chapter 1.2&lt;br /&gt;
  CHAPTER004=00:00:04.000-00:06:00.000&lt;br /&gt;
  CHAPTER004NAME=Chapter 1.3&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This should basically support the same input format that [http://savvyadmin.com/adding-chapters-to-videos-using-mkv-containers/ Matroska chapters] support, too.&lt;br /&gt;
&lt;br /&gt;
A more modern means of specifying chapters is through [http://dev.w3.org/html5/webvtt/#webvtt-file-using-chapter-title-text WebVTT files that use cues with chapter titles].&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/CMML</id>
		<title>CMML</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/CMML"/>
				<updated>2011-08-26T01:18:01Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: make Kate a link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NOTE: CMML is deprecated; Xiph recommends you use [[Kate]] instead =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CMML''' stands for &amp;lt;b&amp;gt;Continuous Media Markup Language&amp;lt;/b&amp;gt; and is to audio or video what HTML is to text. CMML is essentially a timed text codec. It allows to structure a time-continuously sampled data file by dividing it into temporal sections (so-called &amp;lt;i&amp;gt;clips&amp;lt;/i&amp;gt;) and provides these clips with some additional information. This information is HTML-like and is essentially a textual representation of the audio or video file. CMML enables textual searches on these otherwise binary files.&lt;br /&gt;
&lt;br /&gt;
CMML is appropriate for use with all [[Ogg]] media formats, to provide subtitles and timed metadata. This description gives a quick introduction only and explains how to map CMML into Ogg. For full specifications, see [http://www.annodex.net/specifications.html http://www.annodex.net/specifications.html].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CMML specification ==&lt;br /&gt;
&lt;br /&gt;
Before describing the actual data that goes into a logical Ogg bitstream, we need to understand what the stand-alone &amp;quot;codec&amp;quot; packets contains.&lt;br /&gt;
&lt;br /&gt;
CMML basically consists of:&lt;br /&gt;
&lt;br /&gt;
* a &amp;lt;b&amp;gt;head&amp;lt;/b&amp;gt; tag which contains information for the complete audio/video file&lt;br /&gt;
* a set of &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tags which each contains information on a temporal section of the file&lt;br /&gt;
* for authoring purposes, CMML also allows a &amp;lt;b&amp;gt;stream&amp;lt;/b&amp;gt; tag which spcifies the file it describes&lt;br /&gt;
&lt;br /&gt;
An example CMML file looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE cmml SYSTEM &amp;quot;cmml.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;cmml lang=&amp;quot;en&amp;quot; id=&amp;quot;simple&amp;quot; granulerate=&amp;quot;1000/1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;stream id=&amp;quot;fish&amp;quot; basetime=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;import id=&amp;quot;videosrc&amp;quot; lang=&amp;quot;en&amp;quot; title=&amp;quot;Video fish&amp;quot; &lt;br /&gt;
          granulerate=&amp;quot;25/1&amp;quot; contenttype=&amp;quot;video/ogg&amp;quot; &lt;br /&gt;
          src=&amp;quot;fish.ogv&amp;quot; start=&amp;quot;0&amp;quot; end=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;param id=&amp;quot;vheight&amp;quot; name=&amp;quot;video.height&amp;quot; value=&amp;quot;250&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;param id=&amp;quot;vwidth&amp;quot;  name=&amp;quot;video.width&amp;quot;  value=&amp;quot;180&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/import&amp;gt;&lt;br /&gt;
 &amp;lt;/stream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Types of fish&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;Producer&amp;quot; content=&amp;quot;Joe Ordinary&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;DC.Author&amp;quot; content=&amp;quot;Joe's friend&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;clip id=&amp;quot;intro&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a href=&amp;quot;http://www.example.com/fish.html&amp;quot;&amp;gt;Read more about fish&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;This is the introduction to the film Joe made about fish.&amp;lt;/desc&amp;gt;&lt;br /&gt;
 &amp;lt;/clip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;clip id=&amp;quot;dolphin&amp;quot; start=&amp;quot;npt:3.5&amp;quot; end=&amp;quot;npt:5:5.9&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;dolphin.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Here, Joe caught sight of a dolphin in the ocean.&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;Subject&amp;quot; content=&amp;quot;dolphin&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/clip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;clip id=&amp;quot;goldfish&amp;quot; start=&amp;quot;npt:5:5.9&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a href=&amp;quot;http://www.example.com/morefish.anx?id=goldfish&amp;quot;&amp;gt;More video clips on goldfish.&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;http://www.example.com/goldfish.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Joe has a fishtank at home with many colourful fish. The common goldfish is one of them and Joe's favourite.&lt;br /&gt;
        Here are some fabulous pictures he has taken of them.&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;Location&amp;quot; content=&amp;quot;Joe's fishtank&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;Subject&amp;quot; content=&amp;quot;goldfish&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/clip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/cmml&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The head element is a standard head element from html.&lt;br /&gt;
&lt;br /&gt;
Clips contain (amongst others) the following information:&lt;br /&gt;
&lt;br /&gt;
* a name in the &amp;lt;b&amp;gt;id&amp;lt;/b&amp;gt; attribute so addressing of the clips is possible, as in http://www.example.com/morefish.anx?id=goldfish (Web server needs to [http://annodex.net/software/mod_annodex/ support] this)&lt;br /&gt;
* a &amp;lt;b&amp;gt;start&amp;lt;/b&amp;gt; and possibly an &amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt; attribute, to tell the clip where it is temporally located&lt;br /&gt;
* a &amp;lt;b&amp;gt;title&amp;lt;/b&amp;gt; attribute to give it a short description&lt;br /&gt;
* &amp;lt;b&amp;gt;meta&amp;lt;/b&amp;gt; elements to provide it with structed meta data as name-value pairs&lt;br /&gt;
* a &amp;lt;b&amp;gt;img&amp;lt;/b&amp;gt; element which links to a picture that represents the content of the clip visually&lt;br /&gt;
* a &amp;lt;b&amp;gt;a&amp;lt;/b&amp;gt; element which puts a hyperlink to another Web resource into the clip&lt;br /&gt;
* a &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; element giving a long, free-text description/annotation/transcription for the clip&lt;br /&gt;
&lt;br /&gt;
Most of this information is optional.&lt;br /&gt;
&lt;br /&gt;
== CMML mapping into Ogg ==&lt;br /&gt;
&lt;br /&gt;
When CMML is mapped into an Ogg logical bitstream it needs to be serialised first. XML is a hierarchical file format, so is not generally serialisable. However, CMML has been designed to be serialised easily.&lt;br /&gt;
&lt;br /&gt;
CMML is serialised by having some initial header packets that set up the CMML decoding environment, and contain header type information. The content packets of a CMML logical bitstream then consists of &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tags only. The &amp;lt;b&amp;gt;stream&amp;lt;/b&amp;gt; tag is not copied into the CMML bitstream as it controls the authoring only.&lt;br /&gt;
&lt;br /&gt;
All of the CMML bitstream information is text.  As it gets encoded into a binary bitstream, an encoding format has to be specified. To simplify things, UTF-8 is defined as the mandatory encoding format for all data in a CMML binary bitstream. Also, the encoding process MUST ensure that newline characters are represented as LF (or &amp;quot;\n&amp;quot; in C) only and replace any new line representations that come as CR LF combinations (or  &amp;quot;\r\n&amp;quot; in C) with LF only.&lt;br /&gt;
&lt;br /&gt;
The media mapping for CMML into Ogg is as follows:&lt;br /&gt;
* The bos page contains a CMML ident packet.&lt;br /&gt;
* The first secondary header packet of CMML contains the xml preamble.&lt;br /&gt;
* The second secondary header packet contains the CMML &amp;quot;head&amp;quot; tag.&lt;br /&gt;
* The content or data packets for CMML contain the CMML &amp;quot;clip&amp;quot; tags each encoded in their own packet and inserted at the accurate time.&lt;br /&gt;
* The eos page contains a packet with an empty clip tag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The CMML ident header packet ===&lt;br /&gt;
&lt;br /&gt;
The CMML logical bitstream starts with an ident header which is encapsulated into the CMML bos page. The ident header contains all information required to identify the CMML bitstream and to set up a CMML decoder. It has the following format:&lt;br /&gt;
&lt;br /&gt;
  0                   1                   2                   3&lt;br /&gt;
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Identifier 'CMML\0\0\0\0'                                     | 0-3&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 |                                                               | 4-7&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Version major                 | Version minor                 | 8-11&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Granulerate numerator                                         | 12-15&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 |                                                               | 16-19&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Granulerate denominator                                       | 20-23&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 |                                                               | 24-27&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Granuleshift  |                                                 28&lt;br /&gt;
 +-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...&lt;br /&gt;
&lt;br /&gt;
The CMML &amp;lt;i&amp;gt;version&amp;lt;/i&amp;gt;  as described here is major=2 minor=1.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;i&amp;gt;granulerate&amp;lt;/i&amp;gt;  represents the temporal resolution of the logical bitstream in Hz given as a rational number in the same way as the [[OggSkeleton]] fisbone secondary header specifies granulerate. It enables a mapping of granule position of the data pages to time by calculating &amp;quot;granulepos / granulerate&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The default granule rate for CMML is: 1/1000.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;i&amp;gt;granuleshift&amp;lt;/i&amp;gt;  is a 1 Byte integer number describing whether to partition the granule_position into two for the CMML logical bitstream, and how many of the lower bits to use for the partitioning.  The upper bits then still signify a time-continuous granule position for a directly decodable and presentable data granule.  The lower bits allow for specification of the granule position of a previous CMML data packet (i.e. &amp;quot;clip&amp;quot; element), which helps to identify how much backwards seeking is necessary to get to the last and still active &amp;quot;clip&amp;quot; element (of the given track).  The granuleshift is therefore the log of the maximum possible clip spacing.&lt;br /&gt;
&lt;br /&gt;
The default granule shift used is 32, which halfs the granule position to allow for the backwards pointer.&lt;br /&gt;
&lt;br /&gt;
=== The CMML secondary header packets ===&lt;br /&gt;
&lt;br /&gt;
The CMML secondary headers are a sequence of two packets that contain the CMML and XML &amp;quot;setup&amp;quot; information:&lt;br /&gt;
* one packet with the CMML xml preamble and &amp;lt;b&amp;gt;cmml&amp;lt;/b&amp;gt; tag.&lt;br /&gt;
* one packet with the CMML &amp;lt;b&amp;gt;head&amp;lt;/b&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
These packets contain textual, not binary information.&lt;br /&gt;
&lt;br /&gt;
The CMML preamble tags are all single-line tags, such as the xml processing instruction (&amp;lt;?xml...&amp;gt;) and the document type declaration (&amp;lt;!DOCTYPE...&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The only CMML tag that is not already serialized from a CMML file is the &amp;lt;b&amp;gt;cmml&amp;lt;/b&amp;gt; tag, as it encloses all the other content tags.  To serialise it, the &amp;lt;b&amp;gt;cmml&amp;lt;/b&amp;gt; start tag is transformed into a processing instruction, retaining all its attributes (&amp;lt;?cmml ...&amp;gt;), and the &amp;lt;b&amp;gt;cmml&amp;lt;/b&amp;gt; end tag is deleted.&lt;br /&gt;
&lt;br /&gt;
The first CMML secondary header packet has the following format:&lt;br /&gt;
&lt;br /&gt;
  0                   1                   2                   3&lt;br /&gt;
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;?xml ...                                                     | 0-&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...                                                           |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;!DOCTYPE ...                                                 |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...                                                           |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;?cmml ...                                                    |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second CMML secondary header packet contains the CMML &amp;lt;b&amp;gt;head&amp;lt;/b&amp;gt; element with all its attributes and other containing elements and has the following format.&lt;br /&gt;
&lt;br /&gt;
  0                   1                   2                   3&lt;br /&gt;
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;head ...                                                     | 0-&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...                                                           |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;/head&amp;gt;                                                       |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The CMML data packets ===&lt;br /&gt;
&lt;br /&gt;
The data packets of the CMML bitstream contain the CMML &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; elements.  Their &amp;lt;b&amp;gt;start&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt; attributes however only exist for authoring purposes and are not copied into the bitstream (to avoid contradictory information), but are rather represented through the time mapping of the encapsulation format that interleaves CMML data with data from other time-continuous bitstreams. Generally the time mapping is done through some timestamp representation and through the position in the stream.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag is encoded with all tags (except for the &amp;lt;b&amp;gt;start&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt; attributes) as a string printed into a clip packet.  The &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag's &amp;lt;b&amp;gt;start&amp;lt;/b&amp;gt; attribute tells the encapsulator at what time to insert the clip packet into the bitstream. If an &amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt; attribute is present, it leads to the creation of another clip packet, unless another clip packet starts on the same track beforehand. This clip packet contains an &amp;quot;empty&amp;quot; &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag, i.e.  a &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag without &amp;lt;b&amp;gt;meta&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;a&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;img&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; elements and no attribute values except for a copy of the &amp;lt;b&amp;gt;track&amp;lt;/b&amp;gt; attribute from the original &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
  0                   1                   2                   3&lt;br /&gt;
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;clip ...                                                     | 0-&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...                                                           |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;/clip&amp;gt;                                                       |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
Ogg CMML is being supported by the following projects:&lt;br /&gt;
* the Ogg Directshow filters: see [http://www.illiminable.com/ogg/ illiminable]&lt;br /&gt;
* liboggz: [http://svn.annodex.net/liboggz/ liboggz svn] or [http://annodex.net/software/liboggz/ liboggz]&lt;br /&gt;
* libcmml: [http://svn.annodex.net/libcmml/ libcmml svn] or [http://annodex.net/software/libcmml/ libcmml]&lt;br /&gt;
* libannodex: [http://svn.annodex.net/libannodex/ libannodex svn] or [http://annodex.net/software/libannodex/ libannodex]&lt;br /&gt;
* the Annodex technology: [http://www.annodex.net/ annodex.net] including perl, python, php bindings, a firefox plugin, authoring software etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* CMML is described in more detail in the CMML v2.1 specification: [http://svn.annodex.net/standards/ I-D in svn] or [http://annodex.net/specifications.html I-D]&lt;br /&gt;
&lt;br /&gt;
[[Category:Ogg Mappings]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/CMML</id>
		<title>CMML</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/CMML"/>
				<updated>2011-08-26T01:17:09Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: deprecated CMML&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= NOTE: CMML is deprecated; Xiph recommends you use Kate instead =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''CMML''' stands for &amp;lt;b&amp;gt;Continuous Media Markup Language&amp;lt;/b&amp;gt; and is to audio or video what HTML is to text. CMML is essentially a timed text codec. It allows to structure a time-continuously sampled data file by dividing it into temporal sections (so-called &amp;lt;i&amp;gt;clips&amp;lt;/i&amp;gt;) and provides these clips with some additional information. This information is HTML-like and is essentially a textual representation of the audio or video file. CMML enables textual searches on these otherwise binary files.&lt;br /&gt;
&lt;br /&gt;
CMML is appropriate for use with all [[Ogg]] media formats, to provide subtitles and timed metadata. This description gives a quick introduction only and explains how to map CMML into Ogg. For full specifications, see [http://www.annodex.net/specifications.html http://www.annodex.net/specifications.html].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== CMML specification ==&lt;br /&gt;
&lt;br /&gt;
Before describing the actual data that goes into a logical Ogg bitstream, we need to understand what the stand-alone &amp;quot;codec&amp;quot; packets contains.&lt;br /&gt;
&lt;br /&gt;
CMML basically consists of:&lt;br /&gt;
&lt;br /&gt;
* a &amp;lt;b&amp;gt;head&amp;lt;/b&amp;gt; tag which contains information for the complete audio/video file&lt;br /&gt;
* a set of &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tags which each contains information on a temporal section of the file&lt;br /&gt;
* for authoring purposes, CMML also allows a &amp;lt;b&amp;gt;stream&amp;lt;/b&amp;gt; tag which spcifies the file it describes&lt;br /&gt;
&lt;br /&gt;
An example CMML file looks like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; standalone=&amp;quot;yes&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;!DOCTYPE cmml SYSTEM &amp;quot;cmml.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;cmml lang=&amp;quot;en&amp;quot; id=&amp;quot;simple&amp;quot; granulerate=&amp;quot;1000/1&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;stream id=&amp;quot;fish&amp;quot; basetime=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;import id=&amp;quot;videosrc&amp;quot; lang=&amp;quot;en&amp;quot; title=&amp;quot;Video fish&amp;quot; &lt;br /&gt;
          granulerate=&amp;quot;25/1&amp;quot; contenttype=&amp;quot;video/ogg&amp;quot; &lt;br /&gt;
          src=&amp;quot;fish.ogv&amp;quot; start=&amp;quot;0&amp;quot; end=&amp;quot;360&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;param id=&amp;quot;vheight&amp;quot; name=&amp;quot;video.height&amp;quot; value=&amp;quot;250&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;param id=&amp;quot;vwidth&amp;quot;  name=&amp;quot;video.width&amp;quot;  value=&amp;quot;180&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;/import&amp;gt;&lt;br /&gt;
 &amp;lt;/stream&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;head&amp;gt;&lt;br /&gt;
  &amp;lt;title&amp;gt;Types of fish&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;Producer&amp;quot; content=&amp;quot;Joe Ordinary&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;DC.Author&amp;quot; content=&amp;quot;Joe's friend&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;clip id=&amp;quot;intro&amp;quot; start=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a href=&amp;quot;http://www.example.com/fish.html&amp;quot;&amp;gt;Read more about fish&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;This is the introduction to the film Joe made about fish.&amp;lt;/desc&amp;gt;&lt;br /&gt;
 &amp;lt;/clip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;clip id=&amp;quot;dolphin&amp;quot; start=&amp;quot;npt:3.5&amp;quot; end=&amp;quot;npt:5:5.9&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;dolphin.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Here, Joe caught sight of a dolphin in the ocean.&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;Subject&amp;quot; content=&amp;quot;dolphin&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/clip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;clip id=&amp;quot;goldfish&amp;quot; start=&amp;quot;npt:5:5.9&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;a href=&amp;quot;http://www.example.com/morefish.anx?id=goldfish&amp;quot;&amp;gt;More video clips on goldfish.&amp;lt;/a&amp;gt;&lt;br /&gt;
  &amp;lt;img src=&amp;quot;http://www.example.com/goldfish.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;desc&amp;gt;Joe has a fishtank at home with many colourful fish. The common goldfish is one of them and Joe's favourite.&lt;br /&gt;
        Here are some fabulous pictures he has taken of them.&amp;lt;/desc&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;Location&amp;quot; content=&amp;quot;Joe's fishtank&amp;quot;/&amp;gt;&lt;br /&gt;
  &amp;lt;meta name=&amp;quot;Subject&amp;quot; content=&amp;quot;goldfish&amp;quot;/&amp;gt;&lt;br /&gt;
 &amp;lt;/clip&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/cmml&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The head element is a standard head element from html.&lt;br /&gt;
&lt;br /&gt;
Clips contain (amongst others) the following information:&lt;br /&gt;
&lt;br /&gt;
* a name in the &amp;lt;b&amp;gt;id&amp;lt;/b&amp;gt; attribute so addressing of the clips is possible, as in http://www.example.com/morefish.anx?id=goldfish (Web server needs to [http://annodex.net/software/mod_annodex/ support] this)&lt;br /&gt;
* a &amp;lt;b&amp;gt;start&amp;lt;/b&amp;gt; and possibly an &amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt; attribute, to tell the clip where it is temporally located&lt;br /&gt;
* a &amp;lt;b&amp;gt;title&amp;lt;/b&amp;gt; attribute to give it a short description&lt;br /&gt;
* &amp;lt;b&amp;gt;meta&amp;lt;/b&amp;gt; elements to provide it with structed meta data as name-value pairs&lt;br /&gt;
* a &amp;lt;b&amp;gt;img&amp;lt;/b&amp;gt; element which links to a picture that represents the content of the clip visually&lt;br /&gt;
* a &amp;lt;b&amp;gt;a&amp;lt;/b&amp;gt; element which puts a hyperlink to another Web resource into the clip&lt;br /&gt;
* a &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; element giving a long, free-text description/annotation/transcription for the clip&lt;br /&gt;
&lt;br /&gt;
Most of this information is optional.&lt;br /&gt;
&lt;br /&gt;
== CMML mapping into Ogg ==&lt;br /&gt;
&lt;br /&gt;
When CMML is mapped into an Ogg logical bitstream it needs to be serialised first. XML is a hierarchical file format, so is not generally serialisable. However, CMML has been designed to be serialised easily.&lt;br /&gt;
&lt;br /&gt;
CMML is serialised by having some initial header packets that set up the CMML decoding environment, and contain header type information. The content packets of a CMML logical bitstream then consists of &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tags only. The &amp;lt;b&amp;gt;stream&amp;lt;/b&amp;gt; tag is not copied into the CMML bitstream as it controls the authoring only.&lt;br /&gt;
&lt;br /&gt;
All of the CMML bitstream information is text.  As it gets encoded into a binary bitstream, an encoding format has to be specified. To simplify things, UTF-8 is defined as the mandatory encoding format for all data in a CMML binary bitstream. Also, the encoding process MUST ensure that newline characters are represented as LF (or &amp;quot;\n&amp;quot; in C) only and replace any new line representations that come as CR LF combinations (or  &amp;quot;\r\n&amp;quot; in C) with LF only.&lt;br /&gt;
&lt;br /&gt;
The media mapping for CMML into Ogg is as follows:&lt;br /&gt;
* The bos page contains a CMML ident packet.&lt;br /&gt;
* The first secondary header packet of CMML contains the xml preamble.&lt;br /&gt;
* The second secondary header packet contains the CMML &amp;quot;head&amp;quot; tag.&lt;br /&gt;
* The content or data packets for CMML contain the CMML &amp;quot;clip&amp;quot; tags each encoded in their own packet and inserted at the accurate time.&lt;br /&gt;
* The eos page contains a packet with an empty clip tag.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The CMML ident header packet ===&lt;br /&gt;
&lt;br /&gt;
The CMML logical bitstream starts with an ident header which is encapsulated into the CMML bos page. The ident header contains all information required to identify the CMML bitstream and to set up a CMML decoder. It has the following format:&lt;br /&gt;
&lt;br /&gt;
  0                   1                   2                   3&lt;br /&gt;
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Identifier 'CMML\0\0\0\0'                                     | 0-3&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 |                                                               | 4-7&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Version major                 | Version minor                 | 8-11&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Granulerate numerator                                         | 12-15&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 |                                                               | 16-19&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Granulerate denominator                                       | 20-23&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 |                                                               | 24-27&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | Granuleshift  |                                                 28&lt;br /&gt;
 +-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...&lt;br /&gt;
&lt;br /&gt;
The CMML &amp;lt;i&amp;gt;version&amp;lt;/i&amp;gt;  as described here is major=2 minor=1.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;i&amp;gt;granulerate&amp;lt;/i&amp;gt;  represents the temporal resolution of the logical bitstream in Hz given as a rational number in the same way as the [[OggSkeleton]] fisbone secondary header specifies granulerate. It enables a mapping of granule position of the data pages to time by calculating &amp;quot;granulepos / granulerate&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The default granule rate for CMML is: 1/1000.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;i&amp;gt;granuleshift&amp;lt;/i&amp;gt;  is a 1 Byte integer number describing whether to partition the granule_position into two for the CMML logical bitstream, and how many of the lower bits to use for the partitioning.  The upper bits then still signify a time-continuous granule position for a directly decodable and presentable data granule.  The lower bits allow for specification of the granule position of a previous CMML data packet (i.e. &amp;quot;clip&amp;quot; element), which helps to identify how much backwards seeking is necessary to get to the last and still active &amp;quot;clip&amp;quot; element (of the given track).  The granuleshift is therefore the log of the maximum possible clip spacing.&lt;br /&gt;
&lt;br /&gt;
The default granule shift used is 32, which halfs the granule position to allow for the backwards pointer.&lt;br /&gt;
&lt;br /&gt;
=== The CMML secondary header packets ===&lt;br /&gt;
&lt;br /&gt;
The CMML secondary headers are a sequence of two packets that contain the CMML and XML &amp;quot;setup&amp;quot; information:&lt;br /&gt;
* one packet with the CMML xml preamble and &amp;lt;b&amp;gt;cmml&amp;lt;/b&amp;gt; tag.&lt;br /&gt;
* one packet with the CMML &amp;lt;b&amp;gt;head&amp;lt;/b&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
These packets contain textual, not binary information.&lt;br /&gt;
&lt;br /&gt;
The CMML preamble tags are all single-line tags, such as the xml processing instruction (&amp;lt;?xml...&amp;gt;) and the document type declaration (&amp;lt;!DOCTYPE...&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The only CMML tag that is not already serialized from a CMML file is the &amp;lt;b&amp;gt;cmml&amp;lt;/b&amp;gt; tag, as it encloses all the other content tags.  To serialise it, the &amp;lt;b&amp;gt;cmml&amp;lt;/b&amp;gt; start tag is transformed into a processing instruction, retaining all its attributes (&amp;lt;?cmml ...&amp;gt;), and the &amp;lt;b&amp;gt;cmml&amp;lt;/b&amp;gt; end tag is deleted.&lt;br /&gt;
&lt;br /&gt;
The first CMML secondary header packet has the following format:&lt;br /&gt;
&lt;br /&gt;
  0                   1                   2                   3&lt;br /&gt;
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;?xml ...                                                     | 0-&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...                                                           |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;!DOCTYPE ...                                                 |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...                                                           |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;?cmml ...                                                    |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The second CMML secondary header packet contains the CMML &amp;lt;b&amp;gt;head&amp;lt;/b&amp;gt; element with all its attributes and other containing elements and has the following format.&lt;br /&gt;
&lt;br /&gt;
  0                   1                   2                   3&lt;br /&gt;
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;head ...                                                     | 0-&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...                                                           |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;/head&amp;gt;                                                       |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== The CMML data packets ===&lt;br /&gt;
&lt;br /&gt;
The data packets of the CMML bitstream contain the CMML &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; elements.  Their &amp;lt;b&amp;gt;start&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt; attributes however only exist for authoring purposes and are not copied into the bitstream (to avoid contradictory information), but are rather represented through the time mapping of the encapsulation format that interleaves CMML data with data from other time-continuous bitstreams. Generally the time mapping is done through some timestamp representation and through the position in the stream.&lt;br /&gt;
&lt;br /&gt;
A &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag is encoded with all tags (except for the &amp;lt;b&amp;gt;start&amp;lt;/b&amp;gt; and &amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt; attributes) as a string printed into a clip packet.  The &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag's &amp;lt;b&amp;gt;start&amp;lt;/b&amp;gt; attribute tells the encapsulator at what time to insert the clip packet into the bitstream. If an &amp;lt;b&amp;gt;end&amp;lt;/b&amp;gt; attribute is present, it leads to the creation of another clip packet, unless another clip packet starts on the same track beforehand. This clip packet contains an &amp;quot;empty&amp;quot; &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag, i.e.  a &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag without &amp;lt;b&amp;gt;meta&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;a&amp;lt;/b&amp;gt;, &amp;lt;b&amp;gt;img&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;desc&amp;lt;/b&amp;gt; elements and no attribute values except for a copy of the &amp;lt;b&amp;gt;track&amp;lt;/b&amp;gt; attribute from the original &amp;lt;b&amp;gt;clip&amp;lt;/b&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
  0                   1                   2                   3&lt;br /&gt;
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1| Byte&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;clip ...                                                     | 0-&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | ...                                                           |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
 | &amp;lt;/clip&amp;gt;                                                       |&lt;br /&gt;
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Development ==&lt;br /&gt;
&lt;br /&gt;
Ogg CMML is being supported by the following projects:&lt;br /&gt;
* the Ogg Directshow filters: see [http://www.illiminable.com/ogg/ illiminable]&lt;br /&gt;
* liboggz: [http://svn.annodex.net/liboggz/ liboggz svn] or [http://annodex.net/software/liboggz/ liboggz]&lt;br /&gt;
* libcmml: [http://svn.annodex.net/libcmml/ libcmml svn] or [http://annodex.net/software/libcmml/ libcmml]&lt;br /&gt;
* libannodex: [http://svn.annodex.net/libannodex/ libannodex svn] or [http://annodex.net/software/libannodex/ libannodex]&lt;br /&gt;
* the Annodex technology: [http://www.annodex.net/ annodex.net] including perl, python, php bindings, a firefox plugin, authoring software etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
&lt;br /&gt;
* CMML is described in more detail in the CMML v2.1 specification: [http://svn.annodex.net/standards/ I-D in svn] or [http://annodex.net/specifications.html I-D]&lt;br /&gt;
&lt;br /&gt;
[[Category:Ogg Mappings]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/MediaWiki:Sidebar</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/MediaWiki:Sidebar"/>
				<updated>2010-11-22T23:20:27Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: updated skeleton link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
&amp;lt;div class=&amp;quot;portlet&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;font size=&amp;quot;+1&amp;quot;&amp;gt;'''[[Main Page]]'''&amp;lt;/font&amp;gt;&lt;br /&gt;
===&amp;lt;font color=&amp;quot;black&amp;quot;&amp;gt;Xiph.Org Projects&amp;lt;/font&amp;gt;===&lt;br /&gt;
===Audio—===&lt;br /&gt;
*[[Vorbis]]&lt;br /&gt;
*[[FLAC]]&lt;br /&gt;
*[[Speex]]&lt;br /&gt;
*[[CELT]]&lt;br /&gt;
===Video—===&lt;br /&gt;
*[[Theora]]&lt;br /&gt;
*[[Dirac]]&lt;br /&gt;
===Text—===&lt;br /&gt;
*[[XSPF]] &lt;br /&gt;
*[[CMML]] &lt;br /&gt;
*[[Kate]] &lt;br /&gt;
===Container—===&lt;br /&gt;
*[[Ogg]] &lt;br /&gt;
*[[Ogg Skeleton 4|Skeleton]]&lt;br /&gt;
===Streaming—===&lt;br /&gt;
[[Icecast]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Main_Page</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Main_Page"/>
				<updated>2010-11-22T02:09:04Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: moved to skeleton 4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;In an effort to bring open-source ideals to the world of multimedia the [[Xiph.Org Foundation]] develops a multitude of amazing products.  This wiki describes our free and open protocols and software.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Demonstrations of Xiph technologies =&lt;br /&gt;
&lt;br /&gt;
Want to hear or see Xiph in action?  These projects are using our codecs, formats, or libraries.&lt;br /&gt;
&lt;br /&gt;
* [[VorbisStreams|Vorbis Streams]]: Stations streaming with the [[Vorbis]] codec&lt;br /&gt;
* [[Games that use Vorbis]]: Games using the Vorbis codec for music or sound effects&lt;br /&gt;
* [[VorbisHardware|Vorbis Hardware]]: Hardware players using the Vorbis codec&lt;br /&gt;
* [[VorbisSoftwarePlayers|Vorbis Software Players]]: list of media players with out-of-box support for Vorbis&lt;br /&gt;
* [[TheoraHardware|Theora Hardware]]: Hardware using the Theora video codec&lt;br /&gt;
* [[TheoraSoftwarePlayers|Theora Software Players]]: list of media players with Theora support&lt;br /&gt;
* [[List of Theora videos]]: Sources for video encoded with [[Theora]]&lt;br /&gt;
&lt;br /&gt;
= Projects/Formats =&lt;br /&gt;
&lt;br /&gt;
== Container Formats ==&lt;br /&gt;
&lt;br /&gt;
* [[Ogg]]: Media container. This is our native format and the recommended container for Xiph codecs.&lt;br /&gt;
** [[Ogg Skeleton 4]]: Skeleton information on all logical content bitstreams in Ogg.&lt;br /&gt;
** [[MIMETypesCodecs|Specification of MIME types and respective codecs parameter]]&lt;br /&gt;
* [[SpeexRTP]]: RTP payload format for voice&lt;br /&gt;
* [[VorbisRTP]]: RTP payload format for general audio&lt;br /&gt;
* [[TheoraRTP]]: RTP payload format for video&lt;br /&gt;
* [[XSPF]]: XML Sharable Playlist Format&lt;br /&gt;
&lt;br /&gt;
== Codecs ==&lt;br /&gt;
&lt;br /&gt;
* '''Compressed Audio/Video Codecs:'''&lt;br /&gt;
** [[Vorbis]]: Audio codec with a [[Tremor|fixed point decoder]]&lt;br /&gt;
** [[Theora]]: Video codec&lt;br /&gt;
** [[FLAC]]: Free Lossless Audio Codec&lt;br /&gt;
** [[Speex]]: Speech codec&lt;br /&gt;
* '''Uncompressed Audio/Video Codecs:'''&lt;br /&gt;
** [[OggPCM]]: Audio codec&lt;br /&gt;
* '''Timed Text/Metadata Codecs:'''&lt;br /&gt;
** [[CMML]]: Continuous Media Markup Language, used for [http://www.annodex.net/ Annodex] and subtitles (xine, vlc, gstreamer, and DirectShow support)&lt;br /&gt;
**[[OggKate|Kate]]: new format for lyrics and subtitles&lt;br /&gt;
&lt;br /&gt;
== Software ==&lt;br /&gt;
&lt;br /&gt;
* '''Software for distributing media'''&lt;br /&gt;
** [[Icecast]]: Streaming server&lt;br /&gt;
** [[Ices]]: Source client for Icecast servers&lt;br /&gt;
&lt;br /&gt;
* '''Libraries'''&lt;br /&gt;
** [[OggPlay]]: library for synchronised Xiph media playback&lt;br /&gt;
**[[XiphQT]]: Quicktime component to play the main Xiph formats&lt;br /&gt;
** [[VorbisCommentEdit]]: Macintosh Framework making it easy to incorporate the editing of [[VorbisComment|Vorbis Comments]]&lt;br /&gt;
&lt;br /&gt;
* '''Other software'''&lt;br /&gt;
** [[OggComponent/VorbisComponent]]: Wrappers to integrate Vorbis into Mac OS X (does not yet support encoding)&lt;br /&gt;
** [http://xiph.org/paranoia/ cdparanoia]: CDDA extractor/ripper&lt;br /&gt;
&lt;br /&gt;
== Community ==&lt;br /&gt;
&lt;br /&gt;
*[[How to help]]&lt;br /&gt;
*[[Spread Open Media]]: project to promote Xiph formats.&lt;br /&gt;
**[[MailOgging]]: provides templates for anyone willing to contact a company requesting them to add support for Xiph formats.&lt;br /&gt;
*[[People]]: Who's who in Xiph.&lt;br /&gt;
&lt;br /&gt;
== Work in Progress ==&lt;br /&gt;
* [[Work In Progress]]: codecs and software still in the research and development stages.&lt;br /&gt;
* [[Todo]]: To-do list for various Xiph projects.&lt;br /&gt;
&lt;br /&gt;
= Project management =&lt;br /&gt;
&lt;br /&gt;
* [[AdminProcesses]]: who's in charge of what project&lt;br /&gt;
* [[MonthlyMeeting]]: page with information on Xiph's MonthlyMeeting&lt;br /&gt;
* [[MailingLists]]: list of Xiph's mailing lists&lt;br /&gt;
* [[Bounties]]: list of bounties that you can take to improve Xiph's projects&lt;br /&gt;
&lt;br /&gt;
= Resources for Video and Audio programmers =&lt;br /&gt;
&lt;br /&gt;
* [[Ambisonics]]: page with technical information on Ambisonics&lt;br /&gt;
* [[Resources and papers on Audio, Music and Speech|Courses and papers on Audio, Music and Speech]]: page with links to MIT and other universities' content&lt;br /&gt;
* [[Oggless]]: for ideas on how to use the different Xiph codecs outside Ogg&lt;br /&gt;
&lt;br /&gt;
= Wiki internal =&lt;br /&gt;
&lt;br /&gt;
* [[Translations]]: What about some translation work&lt;br /&gt;
* [[Sandbox]]: Testbed for testing editing skills&lt;br /&gt;
* [[XiphWiki:Copyrights]]: License used for all content on the XiphWiki&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/TheoraSoftwareEncoders</id>
		<title>TheoraSoftwareEncoders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/TheoraSoftwareEncoders"/>
				<updated>2010-04-22T12:32:36Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added directshow filters - not sure why they were missing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Multi-platform ==&lt;br /&gt;
*[http://www.v2v.cc/~j/ffmpeg2theora/ ffmpeg2theora] a commandline encoder from any format read by ffmpeg to Theora/Vorbis: [http://svn.xiph.org/trunk/ffmpeg2theora/ svn], [http://www.v2v.cc/~j/ffmpeg2theora/download.html major releases], [http://firefogg.org/nightly/ very latest versions of ffmpeg2theora and some more stuff]&lt;br /&gt;
* [http://diracvideo.org/download/ffmpeg2dirac/ ffmpeg2dirac] - fork of ffmpeg2theora, can enode into OGG Dirac but also Theora&lt;br /&gt;
*[http://www.videolan.org/ VLC Media Player] Can transcode from any source it supports into Ogg/Theora. WARNING: Apparently creates broken Ogg streams.&lt;br /&gt;
*[http://gstreamer.freedesktop.org/ GStreamer] GStreamer is a library that allows the construction of graphs of media-handling components, ranging from simple Vorbis playback to complex audio (mixing) and video (non-linear editing) processing.&lt;br /&gt;
*[http://sarava.org/theorur/ Theorur] is a GUI for Ogg/Theora streaming (icecast2 system), written using gtk2.&lt;br /&gt;
*[http://handbrake.fr Handbrake] is a GUI/CLI free software for ripping/encoding DVD/Files into various containers and formats including theora &amp;amp; vorbis since September 2008. &lt;br /&gt;
*[http://firefogg.org/ firefogg] is a Firefox extension that encodes locally and uploads in chunks or when encoding finishes&lt;br /&gt;
&lt;br /&gt;
== Windows ==&lt;br /&gt;
*[http://dir.visonair.tv/streamer.php Visonair.tv Ogg Streamer] A Windows application to stream directly from a webcam to an Icecast server.&lt;br /&gt;
*[http://www.visonair.tv/ Visonair.tv Virtual Stage] Includes an application to encode to Theora, forces fixed size and encoding parameters though.  Registration required.&lt;br /&gt;
*[http://www.freewarefiles.com/program_6_227_33306.html GFrontend] GUI Frontend for ffmpeg2theora.  An unsupported / discontinued open source project.&lt;br /&gt;
*[http://sourceforge.net/projects/theoraconverter/ Theora Converter .NET] A GUI frontend for ffmpeg2theora based on GFrontend.  Supports 2 pass encoding with ffmpeg2theora 0.26.&lt;br /&gt;
*[http://mediacoder.sourceforge.net/ MediaCoder] Application to encode media files into many target formats, including Theora.&lt;br /&gt;
*[http://www.erightsoft.com/ SUPER] General purpose converter application, also serves as a frontend to ffmpeg2theora.&lt;br /&gt;
*[http://teejee2008.wordpress.com/ffcoder/ FFCoder], general purpose converter&lt;br /&gt;
*[http://en.wikipedia.org/wiki/Theora#Encoding The Wikipedia Theora Page] provides an up to date list of software that can encode Theora.&lt;br /&gt;
*[http://www.xiph.org/dshow/Ogg DSF DirectShow Filters for Windows] allows playback and encoding of Ogg Theora/Vorbis in all Windows apps that use the DirectShow framework.&lt;br /&gt;
&lt;br /&gt;
== Linux/BSD ==&lt;br /&gt;
*[http://thoggen.net/ Thoggen] is a DVD backup utility ('DVD ripper') for Linux, based on GStreamer and Gtk+.&lt;br /&gt;
*[http://freej.org/ Freej] Freej is a realtime video mixer. It can stream Theora and Vorbis live to [http://icecast.org icecast]. Check [http://lab.dyne.org/FreejStreaming here] for more info.&lt;br /&gt;
* [http://oggconvert.tristanb.net/ OggConvert] is a small Gnome utility which uses GStreamer to convert (almost) any media file to Vorbis, Theora and Dirac.&lt;br /&gt;
&lt;br /&gt;
== Mac OS X ==&lt;br /&gt;
*[http://xiph.org/quicktime XiphQT] allows you to export from Quicktime, or any application supporting Quicktime (i.e. Final Cut Pro), to Theora/Vorbis.&lt;br /&gt;
*[http://v2v.cc/~j/SimpleTheoraEncoder/ Simple Theora Encoder] an ffmpeg2theora frontend&lt;br /&gt;
&lt;br /&gt;
== See also== &lt;br /&gt;
{{Template:Theora}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Theora]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-24T01:18:47Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: removed transparentcolor&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
&lt;br /&gt;
= Ogg Skeleton 3.4 with new Message Headers =&lt;br /&gt;
&lt;br /&gt;
'''DRAFT, last updated 23 March 2010'''&lt;br /&gt;
&lt;br /&gt;
'''This specification is still a work in progress, and does not yet constitute an official Ogg specification.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding New Message Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
The Language field will have the dominating language specified as the first language. It is possible to specify less non-dominating languages as a list after the main language.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 Language: en-US, fr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot; - transcription of all sounds, including speech, for purposes of the hard-of-hearing&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot; - translation of all speech, typically into a different language&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot; - description/transcription of everything that happens in a video as text to be used for the vision-impaired through screen readers or braille&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot; - music lyrics delivered in chunks for singing along&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot; - titles for sections of the media that provide a kind of chapter segmentation (similar to DVD chapters)&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot; - text to run as informative text at the bottom of the media display&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot; - transcript of the text used in music media&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot; - name-value pairs that are associated with certain sections of the media&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot; - free text associated with certain sections of the media&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot; - linguistic markup of the spoken words&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot; - the main video track&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; - an alternative video track, e.g. different camera angle&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; - a sign language video track&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot; - the main audio track&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; - an alternative audio track, probably linked to an alternate video track&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot; - the audio track but with speech in a different language to the original&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot; - an audio description recording for the vision-impaired &lt;br /&gt;
* &amp;quot;audio/music&amp;quot; - a music track, e.g. when music, speech and sound effects are delivered in different tracks&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot; - a speech track, e.g. when music, speech and sound effects are delivered in different tracks&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; - a sound effects track, e.g. when music, speech and sound effects are delivered in different tracks&lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Title ===&lt;br /&gt;
&lt;br /&gt;
A free text field to provide a description of the track content.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 Title: &amp;quot;the French audio track for the movie&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently proposed hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the zero coordinates of the display area of the video with x,y providing the origin of the top left corner of the PIP video and w,h the width and height in pixels which are optional. x, y, w, and h can be specified in percentage, thus allowing persistent placement independent of the scaling of the video display.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20%,20%)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. x,y,w, and h can be provided in pixels or in percent. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,30%,25%)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% (int value between 0 and 100) on the complete video track as it will be rendered on top of other content. This transparency is applied to all pixels in the same way.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(25%)&lt;br /&gt;
 Display-hint: transparent(7%)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude (better name?) message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;br /&gt;
&lt;br /&gt;
It is tempting to introduce dependencies between tracks - to specify things such as:&lt;br /&gt;
&lt;br /&gt;
* track b depends on track a being available (e.g. main audio depending on main video), so always display them together and if you remove a track, remove all depending tracks, too&lt;br /&gt;
&lt;br /&gt;
* track c and d are alternative tracks to track b (e.g. dubs in other languages for main audio), so don't display them together and if you activate one, disable the others&lt;br /&gt;
&lt;br /&gt;
* track a and one of b,c,d one of e,f,g where e depends on b, f depends on c, and g depends on d, make up a presentation profile and should be displayed together (e.g. main video, one of the audio dubs, and their respective captions).&lt;br /&gt;
&lt;br /&gt;
It is not clear yet whether there is an actual need to maintain this information as author-provided hints or whether a media player can itself determine a lot from the other fields, such as role and language.&lt;br /&gt;
&lt;br /&gt;
MPEG has a &amp;quot;groupID&amp;quot; element which allows for tracks to be put into groups of alternative tracks. This feature is, however, not used very often and decisions are being left to the media player.&lt;br /&gt;
&lt;br /&gt;
At this stage, it's probably too early to make a specification for how to encode this in Ogg. The need has not been totally clarified yet.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-24T01:02:07Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added descriptions to the roles&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
&lt;br /&gt;
= Ogg Skeleton 3.4 with new Message Headers =&lt;br /&gt;
&lt;br /&gt;
'''DRAFT, last updated 23 March 2010'''&lt;br /&gt;
&lt;br /&gt;
'''This specification is still a work in progress, and does not yet constitute an official Ogg specification.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding New Message Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
The Language field will have the dominating language specified as the first language. It is possible to specify less non-dominating languages as a list after the main language.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 Language: en-US, fr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot; - transcription of all sounds, including speech, for purposes of the hard-of-hearing&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot; - translation of all speech, typically into a different language&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot; - description/transcription of everything that happens in a video as text to be used for the vision-impaired through screen readers or braille&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot; - music lyrics delivered in chunks for singing along&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot; - titles for sections of the media that provide a kind of chapter segmentation (similar to DVD chapters)&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot; - text to run as informative text at the bottom of the media display&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot; - transcript of the text used in music media&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot; - name-value pairs that are associated with certain sections of the media&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot; - free text associated with certain sections of the media&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot; - linguistic markup of the spoken words&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot; - the main video track&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; - an alternative video track, e.g. different camera angle&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; - a sign language video track&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot; - the main audio track&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; - an alternative audio track, probably linked to an alternate video track&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot; - the audio track but with speech in a different language to the original&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot; - an audio description recording for the vision-impaired &lt;br /&gt;
* &amp;quot;audio/music&amp;quot; - a music track, e.g. when music, speech and sound effects are delivered in different tracks&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot; - a speech track, e.g. when music, speech and sound effects are delivered in different tracks&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; - a sound effects track, e.g. when music, speech and sound effects are delivered in different tracks&lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently proposed hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the zero coordinates of the display area of the video with x,y providing the origin of the top left corner of the PIP video and w,h the width and height in pixels which are optional. x, y, w, and h can be specified in percentage, thus allowing persistent placement independent of the scaling of the video display.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20%,20%)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. x,y,w, and h can be provided in pixels or in percent. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,30%,25%)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% (int value between 0 and 100) on the complete video track as it will be rendered on top of other content. This transparency is applied to all pixels in the same way.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(25%)&lt;br /&gt;
 Display-hint: transparent(7%)&lt;br /&gt;
&lt;br /&gt;
* transparentcolor(colorcode) on a video track - turn all pixels of the color identified by the colorcode into transparent pixels.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparentcolor(#454545)&lt;br /&gt;
 Display-hint: transparentcolor(#777777)&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude (better name?) message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;br /&gt;
&lt;br /&gt;
It is tempting to introduce dependencies between tracks - to specify things such as:&lt;br /&gt;
&lt;br /&gt;
* track b depends on track a being available (e.g. main audio depending on main video), so always display them together and if you remove a track, remove all depending tracks, too&lt;br /&gt;
&lt;br /&gt;
* track c and d are alternative tracks to track b (e.g. dubs in other languages for main audio), so don't display them together and if you activate one, disable the others&lt;br /&gt;
&lt;br /&gt;
* track a and one of b,c,d one of e,f,g where e depends on b, f depends on c, and g depends on d, make up a presentation profile and should be displayed together (e.g. main video, one of the audio dubs, and their respective captions).&lt;br /&gt;
&lt;br /&gt;
It is not clear yet whether there is an actual need to maintain this information as author-provided hints or whether a media player can itself determine a lot from the other fields, such as role and language.&lt;br /&gt;
&lt;br /&gt;
MPEG has a &amp;quot;groupID&amp;quot; element which allows for tracks to be put into groups of alternative tracks. This feature is, however, not used very often and decisions are being left to the media player.&lt;br /&gt;
&lt;br /&gt;
At this stage, it's probably too early to make a specification for how to encode this in Ogg. The need has not been totally clarified yet.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-24T00:46:47Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added multi-value to language&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
&lt;br /&gt;
= Ogg Skeleton 3.4 with new Message Headers =&lt;br /&gt;
&lt;br /&gt;
'''DRAFT, last updated 23 March 2010'''&lt;br /&gt;
&lt;br /&gt;
'''This specification is still a work in progress, and does not yet constitute an official Ogg specification.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding New Message Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
The Language field will have the dominating language specified as the first language. It is possible to specify less non-dominating languages as a list after the main language.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 Language: en-US, fr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
* &amp;quot;text/activeregion&amp;quot;&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot;&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot;&lt;br /&gt;
* &amp;quot;text/transcript&amp;quot;&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently proposed hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the zero coordinates of the display area of the video with x,y providing the origin of the top left corner of the PIP video and w,h the width and height in pixels which are optional. x, y, w, and h can be specified in percentage, thus allowing persistent placement independent of the scaling of the video display.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20%,20%)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. x,y,w, and h can be provided in pixels or in percent. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,30%,25%)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% (int value between 0 and 100) on the complete video track as it will be rendered on top of other content. This transparency is applied to all pixels in the same way.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(25%)&lt;br /&gt;
 Display-hint: transparent(7%)&lt;br /&gt;
&lt;br /&gt;
* transparentcolor(colorcode) on a video track - turn all pixels of the color identified by the colorcode into transparent pixels.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparentcolor(#454545)&lt;br /&gt;
 Display-hint: transparentcolor(#777777)&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude (better name?) message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;br /&gt;
&lt;br /&gt;
It is tempting to introduce dependencies between tracks - to specify things such as:&lt;br /&gt;
&lt;br /&gt;
* track b depends on track a being available (e.g. main audio depending on main video), so always display them together and if you remove a track, remove all depending tracks, too&lt;br /&gt;
&lt;br /&gt;
* track c and d are alternative tracks to track b (e.g. dubs in other languages for main audio), so don't display them together and if you activate one, disable the others&lt;br /&gt;
&lt;br /&gt;
* track a and one of b,c,d one of e,f,g where e depends on b, f depends on c, and g depends on d, make up a presentation profile and should be displayed together (e.g. main video, one of the audio dubs, and their respective captions).&lt;br /&gt;
&lt;br /&gt;
It is not clear yet whether there is an actual need to maintain this information as author-provided hints or whether a media player can itself determine a lot from the other fields, such as role and language.&lt;br /&gt;
&lt;br /&gt;
MPEG has a &amp;quot;groupID&amp;quot; element which allows for tracks to be put into groups of alternative tracks. This feature is, however, not used very often and decisions are being left to the media player.&lt;br /&gt;
&lt;br /&gt;
At this stage, it's probably too early to make a specification for how to encode this in Ogg. The need has not been totally clarified yet.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-23T05:45:22Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added intro&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
&lt;br /&gt;
= Ogg Skeleton 3.4 with new Message Headers =&lt;br /&gt;
&lt;br /&gt;
'''DRAFT, last updated 23 March 2010'''&lt;br /&gt;
&lt;br /&gt;
'''This specification is still a work in progress, and does not yet constitute an official Ogg specification.'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding New Message Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
* &amp;quot;text/activeregion&amp;quot;&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot;&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot;&lt;br /&gt;
* &amp;quot;text/transcript&amp;quot;&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently proposed hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the zero coordinates of the display area of the video with x,y providing the origin of the top left corner of the PIP video and w,h the width and height in pixels which are optional. x, y, w, and h can be specified in percentage, thus allowing persistent placement independent of the scaling of the video display.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20%,20%)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. x,y,w, and h can be provided in pixels or in percent. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,30%,25%)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% (int value between 0 and 100) on the complete video track as it will be rendered on top of other content. This transparency is applied to all pixels in the same way.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(25%)&lt;br /&gt;
 Display-hint: transparent(7%)&lt;br /&gt;
&lt;br /&gt;
* transparentcolor(colorcode) on a video track - turn all pixels of the color identified by the colorcode into transparent pixels.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparentcolor(#454545)&lt;br /&gt;
 Display-hint: transparentcolor(#777777)&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude (better name?) message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;br /&gt;
&lt;br /&gt;
It is tempting to introduce dependencies between tracks - to specify things such as:&lt;br /&gt;
&lt;br /&gt;
* track b depends on track a being available (e.g. main audio depending on main video), so always display them together and if you remove a track, remove all depending tracks, too&lt;br /&gt;
&lt;br /&gt;
* track c and d are alternative tracks to track b (e.g. dubs in other languages for main audio), so don't display them together and if you activate one, disable the others&lt;br /&gt;
&lt;br /&gt;
* track a and one of b,c,d one of e,f,g where e depends on b, f depends on c, and g depends on d, make up a presentation profile and should be displayed together (e.g. main video, one of the audio dubs, and their respective captions).&lt;br /&gt;
&lt;br /&gt;
It is not clear yet whether there is an actual need to maintain this information as author-provided hints or whether a media player can itself determine a lot from the other fields, such as role and language.&lt;br /&gt;
&lt;br /&gt;
MPEG has a &amp;quot;groupID&amp;quot; element which allows for tracks to be put into groups of alternative tracks. This feature is, however, not used very often and decisions are being left to the media player.&lt;br /&gt;
&lt;br /&gt;
At this stage, it's probably too early to make a specification for how to encode this in Ogg. The need has not been totally clarified yet.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-23T05:22:13Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* Display-hint */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding New Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
* &amp;quot;text/activeregion&amp;quot;&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot;&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot;&lt;br /&gt;
* &amp;quot;text/transcript&amp;quot;&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently proposed hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the zero coordinates of the display area of the video with x,y providing the origin of the top left corner of the PIP video and w,h the width and height in pixels which are optional. x, y, w, and h can be specified in percentage, thus allowing persistent placement independent of the scaling of the video display.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20%,20%)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. x,y,w, and h can be provided in pixels or in percent. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,30%,25%)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% (int value between 0 and 100) on the complete video track as it will be rendered on top of other content. This transparency is applied to all pixels in the same way.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(25%)&lt;br /&gt;
 Display-hint: transparent(7%)&lt;br /&gt;
&lt;br /&gt;
* transparentcolor(colorcode) on a video track - turn all pixels of the color identified by the colorcode into transparent pixels.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparentcolor(#454545)&lt;br /&gt;
 Display-hint: transparentcolor(#777777)&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude (better name?) message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;br /&gt;
&lt;br /&gt;
It is tempting to introduce dependencies between tracks - to specify things such as:&lt;br /&gt;
&lt;br /&gt;
* track b depends on track a being available (e.g. main audio depending on main video), so always display them together and if you remove a track, remove all depending tracks, too&lt;br /&gt;
&lt;br /&gt;
* track c and d are alternative tracks to track b (e.g. dubs in other languages for main audio), so don't display them together and if you activate one, disable the others&lt;br /&gt;
&lt;br /&gt;
* track a and one of b,c,d one of e,f,g where e depends on b, f depends on c, and g depends on d, make up a presentation profile and should be displayed together (e.g. main video, one of the audio dubs, and their respective captions).&lt;br /&gt;
&lt;br /&gt;
It is not clear yet whether there is an actual need to maintain this information as author-provided hints or whether a media player can itself determine a lot from the other fields, such as role and language.&lt;br /&gt;
&lt;br /&gt;
MPEG has a &amp;quot;groupID&amp;quot; element which allows for tracks to be put into groups of alternative tracks. This feature is, however, not used very often and decisions are being left to the media player.&lt;br /&gt;
&lt;br /&gt;
At this stage, it's probably too early to make a specification for how to encode this in Ogg. The need has not been totally clarified yet.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-21T11:25:58Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding New Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
* &amp;quot;text/activeregion&amp;quot;&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot;&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot;&lt;br /&gt;
* &amp;quot;text/transcript&amp;quot;&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently available hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the zero coordinates of the display area of the video with x,y providing the origin of the top left corner of the PIP video and w,h the width and height in pixels which are optional. x, y, w, and h can be specified in percentage, thus allowing persistent placement independent of the scaling of the video display.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20%,20%)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. x,y,w, and h can be provided in pixels or in percent. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,30%,25%)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% (int value between 0 and 100) on the complete video track as it will be rendered on top of other content. This transparency is applied to all pixels in the same way.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(25%)&lt;br /&gt;
 Display-hint: transparent(7%)&lt;br /&gt;
&lt;br /&gt;
* transparentcolor(colorcode) on a video track - turn all pixels of the color identified by the colorcode into transparent pixels.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparentcolor(#454545)&lt;br /&gt;
 Display-hint: transparentcolor(#777777)&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude (better name?) message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;br /&gt;
&lt;br /&gt;
It is tempting to introduce dependencies between tracks - to specify things such as:&lt;br /&gt;
&lt;br /&gt;
* track b depends on track a being available (e.g. main audio depending on main video), so always display them together and if you remove a track, remove all depending tracks, too&lt;br /&gt;
&lt;br /&gt;
* track c and d are alternative tracks to track b (e.g. dubs in other languages for main audio), so don't display them together and if you activate one, disable the others&lt;br /&gt;
&lt;br /&gt;
* track a and one of b,c,d one of e,f,g where e depends on b, f depends on c, and g depends on d, make up a presentation profile and should be displayed together (e.g. main video, one of the audio dubs, and their respective captions).&lt;br /&gt;
&lt;br /&gt;
It is not clear yet whether there is an actual need to maintain this information as author-provided hints or whether a media player can itself determine a lot from the other fields, such as role and language.&lt;br /&gt;
&lt;br /&gt;
MPEG has a &amp;quot;groupID&amp;quot; element which allows for tracks to be put into groups of alternative tracks. This feature is, however, not used very often and decisions are being left to the media player.&lt;br /&gt;
&lt;br /&gt;
At this stage, it's probably too early to make a specification for how to encode this in Ogg. The need has not been totally clarified yet.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-21T00:51:40Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: clarifications&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
* &amp;quot;text/activeregion&amp;quot;&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot;&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot;&lt;br /&gt;
* &amp;quot;text/transcript&amp;quot;&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently available hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the zero coordinates of the display area of the video with x,y providing the origin of the top left corner of the PIP video and w,h the width and height in pixels which are optional. x, y, w, and h can be specified in percentage, thus allowing persistent placement independent of the scaling of the video display.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20%,20%)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. x,y,w, and h can be provided in pixels or in percent. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,30%,25%)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% (int value between 0 and 100) on the complete video track as it will be rendered on top of other content. This transparency is applied to all pixels in the same way.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(25%)&lt;br /&gt;
 Display-hint: transparent(7%)&lt;br /&gt;
&lt;br /&gt;
* transparentcolor(colorcode) on a video track - turn all pixels of the color identified by the colorcode into transparent pixels.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparentcolor(#454545)&lt;br /&gt;
 Display-hint: transparentcolor(#777777)&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude (better name?) message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;br /&gt;
&lt;br /&gt;
It is tempting to introduce dependencies between tracks - to specify things such as:&lt;br /&gt;
&lt;br /&gt;
* track b depends on track a being available (e.g. main audio depending on main video), so always display them together and if you remove a track, remove all depending tracks, too&lt;br /&gt;
&lt;br /&gt;
* track c and d are alternative tracks to track b (e.g. dubs in other languages for main audio), so don't display them together and if you activate one, disable the others&lt;br /&gt;
&lt;br /&gt;
* track a and one of b,c,d one of e,f,g where e depends on b, f depends on c, and g depends on d, make up a presentation profile and should be displayed together (e.g. main video, one of the audio dubs, and their respective captions).&lt;br /&gt;
&lt;br /&gt;
It is not clear yet whether there is an actual need to maintain this information as author-provided hints or whether a media player can itself determine a lot from the other fields, such as role and language.&lt;br /&gt;
&lt;br /&gt;
MPEG has a &amp;quot;groupID&amp;quot; element which allows for tracks to be put into groups of alternative tracks. This feature is, however, not used very often and decisions are being left to the media player.&lt;br /&gt;
&lt;br /&gt;
At this stage, it's probably too early to make a specification for how to encode this in Ogg. The need has not been totally clarified yet.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-21T00:39:01Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: turn it into actual percentages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
* &amp;quot;text/activeregion&amp;quot;&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot;&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot;&lt;br /&gt;
* &amp;quot;text/transcript&amp;quot;&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently available hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the &amp;quot;main&amp;quot; video track with x,y providing the origin of the top left corner of the PIP video and w,h the width and height which are optional&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20,20)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% (int value between 0 and 100) on the complete video track as it will be rendered on top of other content.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(25)&lt;br /&gt;
 Display-hint: transparent(7)&lt;br /&gt;
&lt;br /&gt;
* transparentcolor(colorcode) on a video track - turn the color identified by the colorcode into transparent pixels.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparentcolor(#454545)&lt;br /&gt;
 Display-hint: transparentcolor(#777777)&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude (better name?) message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;br /&gt;
&lt;br /&gt;
It is tempting to introduce dependencies between tracks - to specify things such as:&lt;br /&gt;
&lt;br /&gt;
* track b depends on track a being available (e.g. main audio depending on main video), so always display them together and if you remove a track, remove all depending tracks, too&lt;br /&gt;
&lt;br /&gt;
* track c and d are alternative tracks to track b (e.g. dubs in other languages for main audio), so don't display them together and if you activate one, disable the others&lt;br /&gt;
&lt;br /&gt;
* track a and one of b,c,d one of e,f,g where e depends on b, f depends on c, and g depends on d, make up a presentation profile and should be displayed together (e.g. main video, one of the audio dubs, and their respective captions).&lt;br /&gt;
&lt;br /&gt;
It is not clear yet whether there is an actual need to maintain this information as author-provided hints or whether a media player can itself determine a lot from the other fields, such as role and language.&lt;br /&gt;
&lt;br /&gt;
MPEG has a &amp;quot;groupID&amp;quot; element which allows for tracks to be put into groups of alternative tracks. This feature is, however, not used very often and decisions are being left to the media player.&lt;br /&gt;
&lt;br /&gt;
At this stage, it's probably too early to make a specification for how to encode this in Ogg. The need has not been totally clarified yet.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-21T00:29:27Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added dependencies section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
* &amp;quot;text/activeregion&amp;quot;&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot;&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot;&lt;br /&gt;
* &amp;quot;text/transcript&amp;quot;&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently available hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the &amp;quot;main&amp;quot; video track with x,y providing the origin of the top left corner of the PIP video and w,h the width and height which are optional&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20,20)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% on the complete video track as it will be rendered on top of other content.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(0.25)&lt;br /&gt;
 Display-hint: transparent(0.7)&lt;br /&gt;
&lt;br /&gt;
* transparentcolor(colorcode) on a video track - turn the color identified by the colorcode into transparent pixels.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparentcolor(#454545)&lt;br /&gt;
 Display-hint: transparentcolor(#777777)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude (better name?) message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;br /&gt;
&lt;br /&gt;
It is tempting to introduce dependencies between tracks - to specify things such as:&lt;br /&gt;
&lt;br /&gt;
* track b depends on track a being available (e.g. main audio depending on main video), so always display them together and if you remove a track, remove all depending tracks, too&lt;br /&gt;
&lt;br /&gt;
* track c and d are alternative tracks to track b (e.g. dubs in other languages for main audio), so don't display them together and if you activate one, disable the others&lt;br /&gt;
&lt;br /&gt;
* track a and one of b,c,d one of e,f,g where e depends on b, f depends on c, and g depends on d, make up a presentation profile and should be displayed together (e.g. main video, one of the audio dubs, and their respective captions).&lt;br /&gt;
&lt;br /&gt;
It is not clear yet whether there is an actual need to maintain this information as author-provided hints or whether a media player can itself determine a lot from the other fields, such as role and language.&lt;br /&gt;
&lt;br /&gt;
MPEG has a &amp;quot;groupID&amp;quot; element which allows for tracks to be put into groups of alternative tracks. This feature is, however, not used very often and decisions are being left to the media player.&lt;br /&gt;
&lt;br /&gt;
At this stage, it's probably too early to make a specification for how to encode this in Ogg. The need has not been totally clarified yet.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-20T13:47:10Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added Altitude&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
* &amp;quot;text/activeregion&amp;quot;&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot;&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot;&lt;br /&gt;
* &amp;quot;text/transcript&amp;quot;&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Currently available hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the &amp;quot;main&amp;quot; video track with x,y providing the origin of the top left corner of the PIP video and w,h the width and height which are optional&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: pip(20,20)&lt;br /&gt;
 Display-hint: pip(40,40,690,60)&lt;br /&gt;
&lt;br /&gt;
* mask(img,x,y,w,h) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png)&lt;br /&gt;
 Display-hint: mask(http://www.example.com/image.png,20,20,400,320)&lt;br /&gt;
&lt;br /&gt;
* transparent(transparency) on a video track - put a transparency of x% on the complete video track as it will be rendered on top of other content.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparent(0.25)&lt;br /&gt;
 Display-hint: transparent(0.7)&lt;br /&gt;
&lt;br /&gt;
* transparentcolor(colorcode) on a video track - turn the color identified by the colorcode into transparent pixels.&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
 Display-hint: transparentcolor(#454545)&lt;br /&gt;
 Display-hint: transparentcolor(#777777)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index in a consistent manner across different media players, such that e.g. JavaScript can always link to the same track reliably across browsers. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Altitude ===&lt;br /&gt;
&lt;br /&gt;
The Altitude message header field defines the stack order of the tracks, i.e. which track is displayed further towards the top of the stack and which further down. By default, a &amp;quot;main&amp;quot; track is always displayed bottom-most unless otherwise defined. &lt;br /&gt;
&lt;br /&gt;
The Altitude field takes the same numerical values as the z-index in CSS, unlimited negative and positive numbers.&lt;br /&gt;
An element with greater stack order is always in front of an element with a lower stack order.&lt;br /&gt;
&lt;br /&gt;
Example: Altitude: -150&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track dependencies ===&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-20T11:32:47Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: started on display hints&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
* &amp;quot;text/activeregion&amp;quot;&lt;br /&gt;
* &amp;quot;text/metadata&amp;quot;&lt;br /&gt;
* &amp;quot;text/annotation&amp;quot;&lt;br /&gt;
* &amp;quot;text/transcript&amp;quot;&lt;br /&gt;
* &amp;quot;text/linguistic&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
There may also be parameters to describe the roles better, such as &amp;quot;video/alternate;angle=nw&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Display-hint ===&lt;br /&gt;
&lt;br /&gt;
Media players that do not get informed about how a content author intends a media file to be displayed have no change to display the content &amp;quot;correctly&amp;quot;. This is why the Display-hint message header field allows providing of hints on how a certain track should be displayed. A media player can of course decide to ignore these hints.&lt;br /&gt;
&lt;br /&gt;
Example hints are:&lt;br /&gt;
&lt;br /&gt;
* pip(x,y,w,h) on a video track - picture-in-picture display in relation to the &amp;quot;main&amp;quot; video track with x,y providing the origin of the top left corner of the PIP video and w,h the width and height&lt;br /&gt;
&lt;br /&gt;
* mask(x,y,w,h,img) on a video track - use the image given at img url (?) as a video mask to allow the video to appear in shapes other than rectangular. The masking image should be a black shape on a white background. The image is placed at offset x,y and scaled to width and height w and h. Pixels under the white background are made transparent and only pixels under the black shape are retained.&lt;br /&gt;
&lt;br /&gt;
* overlay(transparency) on a video track - &lt;br /&gt;
&lt;br /&gt;
* alpha(trackref) on a video track - &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index. It has no influence on what should be displayed on top of which other track.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Track dependencies ===&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-20T10:33:54Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added roles section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Language ===&lt;br /&gt;
&lt;br /&gt;
Content in a track usually originates from a specific language. This language can be specified in a Language message header field. The code is created according to http://www.w3.org/TR/ltli/ and http://www.rfc-editor.org/rfc/bcp/bcp47.txt.&lt;br /&gt;
&lt;br /&gt;
For audio tracks with speech, the Language would be the language that dominates.&lt;br /&gt;
&lt;br /&gt;
For video tracks, it might be the language that is signed (if it is a sign language video), or the language that is most often represented in scene text.&lt;br /&gt;
&lt;br /&gt;
For text tracks, it is the dominating language in the text, e.g. English or German subtitles.&lt;br /&gt;
&lt;br /&gt;
Examples are: en-US, de-DE, sgn-ase, en-cockney&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
Role describe what semantic type of content is contained in a track. Every track can only have a single role value, so the most appropriate role has to be chosen. The same role can be used across multiple tracks.&lt;br /&gt;
&lt;br /&gt;
The following list some commonly used roles. Other roles are possible, too, but should only be used/introduced if there is really a need for it.&lt;br /&gt;
&lt;br /&gt;
Text tracks:&lt;br /&gt;
* &amp;quot;text/caption&amp;quot;&lt;br /&gt;
* &amp;quot;text/subtitle&amp;quot;&lt;br /&gt;
* &amp;quot;text/textaudiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;text/karaoke&amp;quot;&lt;br /&gt;
* &amp;quot;text/chapters&amp;quot;&lt;br /&gt;
* &amp;quot;text/tickertext&amp;quot;&lt;br /&gt;
* &amp;quot;text/lyrics&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Video tracks:&lt;br /&gt;
* &amp;quot;video/main&amp;quot;&lt;br /&gt;
* &amp;quot;video/alternate&amp;quot; (e.g. different camera angle)&lt;br /&gt;
* &amp;quot;video/sign&amp;quot; (for sign language)&lt;br /&gt;
* &amp;quot;video/alpha&amp;quot; (a track to alpha blend)&lt;br /&gt;
&lt;br /&gt;
Audio tracks:&lt;br /&gt;
* &amp;quot;audio/main&amp;quot;&lt;br /&gt;
* &amp;quot;audio/alternate&amp;quot; (probably linked to an alternate video track)&lt;br /&gt;
* &amp;quot;audio/dub&amp;quot;&lt;br /&gt;
* &amp;quot;audio/audiodesc&amp;quot;&lt;br /&gt;
* &amp;quot;audio/music&amp;quot;&lt;br /&gt;
* &amp;quot;audio/speech&amp;quot;&lt;br /&gt;
* &amp;quot;audio/sfx&amp;quot; (sound effects) &lt;br /&gt;
&lt;br /&gt;
Notice how we are re-using the Content-type approach of specifying the main semantic type of the track first. This is necessary, since mime types don't always provide the right main content type (e.g. application/kate is semantically a text format).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Name ===&lt;br /&gt;
&lt;br /&gt;
This field provides the opportunity to associate a free text string with the track to allow direct addressing of the track through its name.&lt;br /&gt;
&lt;br /&gt;
Characters allowed are basically all the characters that are also allowed for XML id fields:&lt;br /&gt;
&lt;br /&gt;
 the first character has to be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] |&lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]&lt;br /&gt;
&lt;br /&gt;
 any following characters can be one of:&lt;br /&gt;
 [A-Z] | &amp;quot;_&amp;quot; | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | [#x200C-#x200D] | &lt;br /&gt;
 [#x2070-#x218F] | [#x2C00-#x2FEF] | [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF] | &lt;br /&gt;
 &amp;quot;-&amp;quot; | &amp;quot;.&amp;quot; | [0-9] | #xB7 | [#x0300-#x036F] | [#x203F-#x2040]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The name needs to be unique between all the track names, otherwise it is undefined which of the tracks is retrieved when addressing by name.&lt;br /&gt;
&lt;br /&gt;
An example means of addressing the track by name is: track[name=&amp;quot;Madonna_singing&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index. It has no influence on what should be displayed on top of which other track.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-20T08:37:36Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added more details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory Message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-role ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-language ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media file and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream. If a file is re-encoded, the order may change, so you can only rely on this for addressing if the file doesn't change.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;br /&gt;
&lt;br /&gt;
This track order is simply to have a means to address tracks through an index. It has no influence on what should be displayed on top of which other track.&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/SkeletonHeaders</id>
		<title>SkeletonHeaders</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/SkeletonHeaders"/>
				<updated>2010-03-20T07:48:54Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: started page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Adding Required Headers to Skeleton ==&lt;br /&gt;
&lt;br /&gt;
With the HTML5 video element, Ogg is now a major format on the Web and is being applied to solve use cases it hasn't had to solve before, but was built to allow, see http://www.xiph.org/ogg/doc/oggstream.html.&lt;br /&gt;
&lt;br /&gt;
One particular such use case is dealing with multitrack audio and video, such as in videos with multiple view angles encoded in one, or ones with a sign language video track, an audio description audio track, a caption track and several subtitle tracks in different languages (i.e. several theora, several vorbis and several kate tracks).&lt;br /&gt;
&lt;br /&gt;
While encoding of multitrack files is already possible, it is unclear how such files would be rendered, how tracks would be differentiated and addressed (e.g. from a JavaScript API), etc. Skeleton has been built in a way such that it is extensible with message header fields for this purpose.&lt;br /&gt;
&lt;br /&gt;
On this wiki page, we are collecting such new information fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Content-type ===&lt;br /&gt;
&lt;br /&gt;
Right now, there is one mandatory Message header field for all of the logical bitstreams: the &amp;quot;Content-type&amp;quot; header field, which contains the mime type of the track. The mime types in use here are listed at http://wiki.xiph.org/MIME_Types_and_File_Extensions#Codec_MIME_types.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Role ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Track order ===&lt;br /&gt;
&lt;br /&gt;
In many applications it is necessary to walk through all the tracks in a media resource and address tracks by an index.&lt;br /&gt;
&lt;br /&gt;
In Ogg, the means to number through the tracks is by the order in which the bos pages of the tracks appear in the Ogg stream.&lt;br /&gt;
&lt;br /&gt;
For example, a video file with the following composition would have the following indexes:&lt;br /&gt;
* track[0]: Skeleton BOS&lt;br /&gt;
* track[1]: Theora BOS for main video&lt;br /&gt;
* track[2]: Vorbis BOS for main audio&lt;br /&gt;
* track[3]: Kate BOS for English captions&lt;br /&gt;
* track[4]: Kate BOS for German subtitles&lt;br /&gt;
* track[5]: Vorbis BOS for audio descriptions&lt;br /&gt;
* track[6]: Theora BOS for sign language&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/MIME_Types_and_File_Extensions</id>
		<title>MIME Types and File Extensions</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/MIME_Types_and_File_Extensions"/>
				<updated>2010-03-20T07:06:15Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* Codec MIME types */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STATUS: Work on RFCs and tools is in process to reflect these policies. More details are [http://wiki.xiph.org/index.php/MIMETypesCodecs here], which also include a specification of the codecs parameter of the MIME tyes. Use the correct file extensions straight away.&lt;br /&gt;
&lt;br /&gt;
DISCLAIMER: currently, application/ogg, video/ogg, audio/ogg and audio/vorbis are registered MIME types.  Registration for the others will be undertaken. During this process, the &amp;quot;x-&amp;quot; versions of these unregistered MIME types may be used.&lt;br /&gt;
&lt;br /&gt;
IMPLEMENTATION recommendations and patches: see [[MIME-Migration]].&lt;br /&gt;
&lt;br /&gt;
== .ogx - application/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Multiplex Profile (anything in [[Ogg]])&lt;br /&gt;
* can contain any logical bitstreams multiplexed together in an ogg container&lt;br /&gt;
* will replace the .ogg extension from RFC 3534 http://www.ietf.org/rfc/rfc3534.txt&lt;br /&gt;
* random multitrack files MUST contain a [[Skeleton]] track to identify all containing logical bitstreams&lt;br /&gt;
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can&lt;br /&gt;
* thus, e.g. an annodex file can gracefully degrade to .ogx if an app cannot decode [[CMML]] and/or [[Skeleton]]&lt;br /&gt;
* USE: application/ogg has been registered, so can be used immediately&lt;br /&gt;
&lt;br /&gt;
== .ogv - video/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Video Profile (a/v in Ogg container)&lt;br /&gt;
* apps supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams&lt;br /&gt;
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg&lt;br /&gt;
* This list is not exhaustive (for example, [[Dirac]] + FLAC is acceptable too)&lt;br /&gt;
* SHOULD contain a Skeleton track and/or MAY contain a CMML logical bitstream.&lt;br /&gt;
&lt;br /&gt;
== .oga - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Audio Profile (audio in Ogg container)&lt;br /&gt;
* Applications supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams&lt;br /&gt;
* Covers Ogg [[FLAC]], [[Ghost]], and [[OggPCM]] &lt;br /&gt;
* Although they share the same MIME type, Vorbis and Speex use different file extensions.&lt;br /&gt;
* SHOULD contain a Skeleton logical bitstream.&lt;br /&gt;
* Vorbis and Speex may use .oga, but it is not the prefered method of distributing these files because of backwards-compatibility issues.&lt;br /&gt;
&lt;br /&gt;
== .ogg - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Vorbis I Profile&lt;br /&gt;
* .ogg applies now for Vorbis I files only&lt;br /&gt;
* .ogg has more recently also been used for Ogg FLAC and for Theora, too &amp;amp;mdash; these uses are deprecated now in favor of .oga and .ogv respectively&lt;br /&gt;
* has been defined in RFC 3534 http://www.ietf.org/rfc/rfc3534.txt for application/ogg, so rfc 3534 will be re-defined&lt;br /&gt;
&lt;br /&gt;
RATIONALE: .ogg has traditionally been used for Vorbis I files, in particular in HW players, hence it is kept for backwards-compatibility&lt;br /&gt;
&lt;br /&gt;
== .spx - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Speex Profile&lt;br /&gt;
* .spx has traditionally been used for Speex files within Ogg and should be considered for backwards-compatibility&lt;br /&gt;
&lt;br /&gt;
== .flac - audio/flac ==&lt;br /&gt;
&lt;br /&gt;
* FLAC in native encapsulation format&lt;br /&gt;
&lt;br /&gt;
== .anx - application/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for multiplexed Ogg that includes a skeleton track and at least one CMML logical bitstream&lt;br /&gt;
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can&lt;br /&gt;
* apps that come across an annodex file and cannot decode CMML and/or Skeleton, but can deal with the others SHOULD gracefully degrade by ignoring these&lt;br /&gt;
&lt;br /&gt;
== .axa - audio/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for audio in Annodex &lt;br /&gt;
* covers e.g. [[Vorbis]], [[Speex]], [[FLAC]], [[Ghost]], [[OggPCM]] inside Ogg with Skeleton and CMML&lt;br /&gt;
&lt;br /&gt;
== .axv - video/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for video in Annodex &lt;br /&gt;
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg with Skeleton and CMML&lt;br /&gt;
&lt;br /&gt;
== .xspf - application/xspf+xml ==&lt;br /&gt;
&lt;br /&gt;
* Profile for XSPF&lt;br /&gt;
* Covers [[XSPF]], while being used through XML&lt;br /&gt;
* Does not cover [[JSPF]], which is XSPF but on JSON&lt;br /&gt;
&lt;br /&gt;
== Ogg Kate files - application/kate ==&lt;br /&gt;
&lt;br /&gt;
* Binary representation of Kate encapsulated in Ogg&lt;br /&gt;
* may have a skeleton&lt;br /&gt;
* can be used to identify the mime type of the track itself (e.g. in skeleton)&lt;br /&gt;
* uses .ogx extension when in a file by itself&lt;br /&gt;
* is subdued by the dominant mime type if in a audio or video file to become audio/ogg or video/ogg&lt;br /&gt;
&lt;br /&gt;
== Codec MIME types ==&lt;br /&gt;
&lt;br /&gt;
Codecs need their own MIME types for streaming in RTP and to be used in multitrack ogg files using skeleton:&lt;br /&gt;
&lt;br /&gt;
* audio/vorbis for Vorbis without container&lt;br /&gt;
* video/theora for Theora without container&lt;br /&gt;
* audio/speex for Speex without container&lt;br /&gt;
* audio/flac for FLAC without and in native container&lt;br /&gt;
* text/cmml for CMML without container&lt;br /&gt;
* application/kate for the textual representation of Kate (.kate files)&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Ogg_Index</id>
		<title>Ogg Index</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Ogg_Index"/>
				<updated>2010-03-20T06:37:26Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: typo - duplicate field&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
&lt;br /&gt;
= Ogg Skeleton 3.3 with Keyframe Index =&lt;br /&gt;
&lt;br /&gt;
'''DRAFT, last updated 27 January 2010'''&lt;br /&gt;
&lt;br /&gt;
'''This specification is still a work in progress, and does not yet constitute an official Ogg track format.'''&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
 &lt;br /&gt;
Seeking in an Ogg file is typically implemented as a bisection search &lt;br /&gt;
over the pages in the file. The Ogg physical bitstream is bisected and &lt;br /&gt;
the next Ogg page's end-time is extracted. The bisection continues until &lt;br /&gt;
it reaches an Ogg page with an end-time close enough to the seek target &lt;br /&gt;
time. However in media containing streams which have keyframes and &lt;br /&gt;
interframes, such as Theora streams, your bisection search won't &lt;br /&gt;
necessarily terminate at a keyframe. Thus if you begin decoding after your&lt;br /&gt;
first bisection terminates, you're likely to only get partial incomplete&lt;br /&gt;
frames, with &amp;quot;visual artifacts&amp;quot;, until you decode up to the next keyframe.&lt;br /&gt;
So to eliminate these visual artifacts, after the first bisection&lt;br /&gt;
terminates, you must extract the keyframe's timestamp from the last Theora&lt;br /&gt;
page's granulepos, and seek again back to the start of the keyframe and&lt;br /&gt;
decode forward until you reach the frame at the seek target. &lt;br /&gt;
&lt;br /&gt;
This is further complicated by the fact that packets often span multiple &lt;br /&gt;
Ogg pages, and that Ogg pages from different streams can be interleaved &lt;br /&gt;
between spanning packets. &lt;br /&gt;
&lt;br /&gt;
The bisection method above works fine for seeking in local files, but &lt;br /&gt;
for seeking in files served over the Internet via HTTP, each bisection &lt;br /&gt;
or non sequential read can trigger a new HTTP request, which can have &lt;br /&gt;
very high latency, making seeking very slow. &lt;br /&gt;
&lt;br /&gt;
== Seeking with an index ==&lt;br /&gt;
&lt;br /&gt;
The Skeleton 3.3 bitstream attempts to alleviate this problem, by &lt;br /&gt;
providing an index of periodic keyframes for every content stream in an &lt;br /&gt;
Ogg segment. Note that the Skeleton 3.3 track only holds data for the &lt;br /&gt;
segment or &amp;quot;link&amp;quot; in which it resides. So if two Ogg files are concatenated&lt;br /&gt;
together (&amp;quot;chained&amp;quot;), the Skeleton 3.3's keyframe indexes in the first Ogg&lt;br /&gt;
segment (the first &amp;quot;link&amp;quot; in the &amp;quot;chain&amp;quot;) do not contain information&lt;br /&gt;
about the keyframes in the second Ogg segment (the second link in the chain).&lt;br /&gt;
&lt;br /&gt;
Each content track has a separate index, which is stored in its own &lt;br /&gt;
packet in the Skeleton 3.3 track. The index for streams without the &lt;br /&gt;
concept of a keyframe, such as Vorbis streams, can instead record the &lt;br /&gt;
time position at periodic intervals, which achieves the same result. &lt;br /&gt;
When this document refers to keyframes, it also implicitly refers to these&lt;br /&gt;
independent periodic samples from keyframe-less streams. &lt;br /&gt;
&lt;br /&gt;
All the Skeleton 3.3 track's pages appear in the header pages of the Ogg &lt;br /&gt;
segment. This means the all the keyframe indexes are immediately &lt;br /&gt;
available once the header packets have been read when playing the media&lt;br /&gt;
over a network connection. &lt;br /&gt;
&lt;br /&gt;
For every content stream in an Ogg segment, the Ogg index bitstream &lt;br /&gt;
provides seek algorithms with an ordered table of &amp;quot;key points&amp;quot;. A key &lt;br /&gt;
point is intrinsically associated with exactly one stream, and stores the&lt;br /&gt;
offset of the page on which it starts, o, as well as the presentation time&lt;br /&gt;
of the keyframe t, as a fraction of seconds. This specifies that in order&lt;br /&gt;
to render the stream at presentation time t, the last page which lies before&lt;br /&gt;
all information required to render the keyframe at presentation time t begins&lt;br /&gt;
exactly at byte offset o, as offset from the beginning of the Ogg segment.&lt;br /&gt;
The offset is exactly the first byte of the page, so if you seek to a&lt;br /&gt;
keypoint's offset and don't find the beginning of a page there, you can&lt;br /&gt;
assume that the Ogg segment has been modified since the index was constructed,&lt;br /&gt;
and that the index is now invalid and should not be used. The time t is the&lt;br /&gt;
keyframe's presentation time corresponding to the granulepos, and is&lt;br /&gt;
represented as a fraction in seconds. Note that if a stream requires any&lt;br /&gt;
preroll, this will be accounted for in the time stored in the keypoint. &lt;br /&gt;
&lt;br /&gt;
The Skeleton 3.3 track contains one index for each content stream in the &lt;br /&gt;
file. To seek in an Ogg file which contains keyframe indexes, first&lt;br /&gt;
construct the set which contains every active streams' last keypoint which&lt;br /&gt;
has time less than or equal to the seek target time. Then from that set&lt;br /&gt;
of key points, select the key point with the smallest byte offset. You then&lt;br /&gt;
verify that there's a page found at exactly that offset, and if so, you can&lt;br /&gt;
begin decoding. If the first keyframe you encounter has a time equal to&lt;br /&gt;
that stored in the keypoint, you have made the optimal seek, and can safely&lt;br /&gt;
continue to decode up to the seek target time. You are guaranteed to pass&lt;br /&gt;
keyframes on all streams with time less than or equal to your seek target&lt;br /&gt;
time while decoding up to the seek target. However if the first keyframe&lt;br /&gt;
you encounter after decoding does not have the same presentation time as&lt;br /&gt;
is stored in the keypoint, you then the index is invalid (possibly the file&lt;br /&gt;
has been changed without updating the index) and you must either fallback&lt;br /&gt;
to a bisection search, or keep decoding if you've landed &amp;quot;close enough&amp;quot;&lt;br /&gt;
to the seek target.&lt;br /&gt;
&lt;br /&gt;
Be aware that you cannot assume that any or all Ogg files will contain &lt;br /&gt;
keyframe indexes, so when implementing Ogg seeking, you must gracefully&lt;br /&gt;
fall-back to a bisection search or other seek algorithm when the index&lt;br /&gt;
is not present, or when it is invalid.&lt;br /&gt;
&lt;br /&gt;
The Skeleton 3.3 BOS packet also stores meta data about the segment in &lt;br /&gt;
which it resides. It stores the timestamps of the first and last samples&lt;br /&gt;
in the segment. This also allows you to determine the duration of the&lt;br /&gt;
indexed Ogg media without having to decode the start and end of the&lt;br /&gt;
Ogg segment to calculate the difference (which is the duration).&lt;br /&gt;
&lt;br /&gt;
The Skeleton 3.3 BOS packet also contains the length of the indexed segment&lt;br /&gt;
in bytes. This is so that if the seek target is outside of the indexed range,&lt;br /&gt;
you can immediately move to the next/previous segment and either seek using&lt;br /&gt;
that segment's index, or narrow the bisection window if that segment has no&lt;br /&gt;
index. You can also use the segement length to verify if the index is valid.&lt;br /&gt;
If the contents of the segment have changed, it's highly likely that the&lt;br /&gt;
length of the segment has changed as well. When you load the segment's&lt;br /&gt;
header pages, you should check the length of the physical segment, and if it&lt;br /&gt;
doesn't match that stored in the Skeleton header packet, you know the index&lt;br /&gt;
is out of date and not safe to use.&lt;br /&gt;
&lt;br /&gt;
The Skeleton 3.3 BOS packet also contains the offset of the first non header&lt;br /&gt;
page in the Ogg segment. This means that if you wish to delay loading of an&lt;br /&gt;
index for whatever reason, you can skip forward to that offset, and start&lt;br /&gt;
decoding from that offset forwards.&lt;br /&gt;
&lt;br /&gt;
When using the index to seek, you must verify that the index is still &lt;br /&gt;
correct. You can consider the index invalid if any of the following are true:&lt;br /&gt;
&lt;br /&gt;
# The segment length stored in the Skeleton BOS packet doesn't match the length of the physical segment, or&lt;br /&gt;
# after a seek to a keypoint's offset, you don't land exactly on a page boundary, or&lt;br /&gt;
# the first keyframe decoded after seeking to a keypoint's offset doesn't have the same presentation time as stored in the index.&lt;br /&gt;
&lt;br /&gt;
You should also always check the Skeleton version header field&lt;br /&gt;
to ensure your decoder correctly knows how to parse the Skeleton track. &lt;br /&gt;
&lt;br /&gt;
Be aware that a keyframe index may not index all keyframes in the Ogg segment,&lt;br /&gt;
it may only index periodic keyframes instead.&lt;br /&gt;
&lt;br /&gt;
== Format Specification ==&lt;br /&gt;
 &lt;br /&gt;
Unless otherwise specified, all integers and fields in the bitstream are &lt;br /&gt;
encoded with the least significant bit coming first in each byte. &lt;br /&gt;
Integers and fields comprising of more than one byte are encoded least &lt;br /&gt;
significant byte first (i.e. little endian byte order). &lt;br /&gt;
&lt;br /&gt;
The Skeleton 3.3 track is intended to be backwards compatible with the &lt;br /&gt;
Skeleton 3.0 specification, available at &lt;br /&gt;
http://www.xiph.org/ogg/doc/skeleton.html . Unless specified &lt;br /&gt;
differently here, it is safe to assume that anything specified for a &lt;br /&gt;
Skeleton 3.0 track holds for a Skeleton 3.3 track. &lt;br /&gt;
&lt;br /&gt;
As per the Skeleton 3.0 track, a segment containing a Skeleton 3.3 track &lt;br /&gt;
must begin with a '''Skeleton 3.3 fishead BOS packet''' on a page by itself, with the &lt;br /&gt;
following format: &lt;br /&gt;
&lt;br /&gt;
# Identifier: 8 bytes, &amp;quot;fishead\0&amp;quot;.&lt;br /&gt;
# Version major: 2 Byte unsigned integer denoting the major version (3)&lt;br /&gt;
# Version minor: 2 Byte unsigned integer denoting the minor version (1)&lt;br /&gt;
# Presentationtime numerator: 8 Byte signed integer&lt;br /&gt;
# Presentationtime denominator: 8 Byte signed integer&lt;br /&gt;
# Basetime numerator: 8 Byte signed integer&lt;br /&gt;
# Basetime denominator: 8 Byte signed integer&lt;br /&gt;
# UTC [ISO8601]: a 20 Byte string containing a UTC time&lt;br /&gt;
# '''[NEW]''' First-sample-time numerator: 8 byte signed integer representing the numerator for the presentation time of the first sample in the media. Note that samples between the first-sample-time and the Presentationtime are supposed to be skipped during playback.&lt;br /&gt;
# '''[NEW]''' First-sample-time denominator: 8 byte signed integer, with value 0 if the timestamp is unknown. Decoders should always ensure that the denominator is not 0 before using it as a divisor!&lt;br /&gt;
# '''[NEW]''' Last-sample-time numerator: 8 byte signed integer representing the end time of the last sample in the segment.&lt;br /&gt;
# '''[NEW]''' Last-sample-time denominator: 8 byte signed integer, with value 0 if the timestamp is unknown. Decoders should always ensure that the denominator is not 0 before using it as a divisor!&lt;br /&gt;
# '''[NEW]''' The length of the segment, in bytes: 8 byte unsigned integer, 0 if unknown.&lt;br /&gt;
# '''[NEW]''' The offset of the first non-header page, in bytes: 8 byte unsigned integer, 0 if unknown.&lt;br /&gt;
&lt;br /&gt;
The first-sample-time and last-sample-time are rational numbers, in units&lt;br /&gt;
of seconds. If the denominator is 0 for the first-sample-time or the&lt;br /&gt;
last-sample-time, then that value was unable to be determined at indexing&lt;br /&gt;
time, and is unknown. The duration of the Ogg segment can be calculated by&lt;br /&gt;
subtracting the first-sample-time from the last-sample-time.&lt;br /&gt;
&lt;br /&gt;
In '''Skeleton 3.3 the &amp;quot;fisbone&amp;quot; packets remain unchanged from Skeleton &lt;br /&gt;
3.0''', and will still follow after the other streams' BOS pages and &lt;br /&gt;
secondary header pages. &lt;br /&gt;
&lt;br /&gt;
Before the Skeleton EOS page in the segment header pages come the &lt;br /&gt;
Skeleton 3.3 keyframe index packets. There should be one index packet for&lt;br /&gt;
each content stream in the Ogg segment, but index packets are not required&lt;br /&gt;
for a Skeleton 3.3 track to be considered valid. Each keypoint in the index&lt;br /&gt;
is stored in a &amp;quot;keypoint&amp;quot;, which in turn stores an offset, checksum, and&lt;br /&gt;
timestamp. In order to save space, the offsets and timestamps are stored as&lt;br /&gt;
deltas, and then variable byte-encoded. The offset and timestamp deltas&lt;br /&gt;
store the difference between the keypoint's offset and timestamp from the&lt;br /&gt;
previous keypoint's offset and timestamp. So to calculate the page offset&lt;br /&gt;
of a keypoint you must sum the offset deltas of up to and including the&lt;br /&gt;
keypoint in the index.&lt;br /&gt;
&lt;br /&gt;
The variable byte encoded integers are encoded using 7 bits per byte to&lt;br /&gt;
store the integer's bits, and the high bit is set in the last byte used&lt;br /&gt;
to encode the integer. The bits and bytes are in little endian byte order.&lt;br /&gt;
For example, the integer 7843, or &amp;lt;tt&amp;gt;0001 1110 1010 0011&amp;lt;/tt&amp;gt; in binary, would be&lt;br /&gt;
stored as two bytes: &amp;lt;tt&amp;gt;0xBD 0x23&amp;lt;/tt&amp;gt;, or &amp;lt;tt&amp;gt;1011 1101 0010 0011&amp;lt;/tt&amp;gt; in binary.&lt;br /&gt;
&lt;br /&gt;
Each '''Skeleton 3.3 keyframe index packet''' contains the following: &lt;br /&gt;
&lt;br /&gt;
# Identifier 6 bytes: &amp;quot;index\0&amp;quot;&lt;br /&gt;
# The serialno of the stream this index applies to, as a 4 byte field.&lt;br /&gt;
# The number of keypoints in this index packet, 'n' as a 8 byte unsigned integer. This can be 0.&lt;br /&gt;
# The keypoint presentation time denominator, as an 8 byte signed integer.&lt;br /&gt;
# 'n' key points, each of which contain, in the following order:&lt;br /&gt;
## the keyframe's page's byte offset delta, as a variable byte encoded integer. This is the number of bytes that this keypoint is after the preceeding keypoint's offset, or from the start of the segment if this is the first keypoint. The keypoint's page start is therefore the sum of the byte-offset-deltas of all the keypoints which come before it.&lt;br /&gt;
## the presentation time numerator delta, of the first key frame which starts on the page at the keypoint's offset, as a variable byte encoded integer. This is the difference from the previous keypoint's timestamp numerator. The keypoint's timestamp numerator is therefore the sum of all the timestamp numerator deltas up to and including the keypoint's. Divide the timestamp numerator sum by the timestamp denominator stored earlier in the index packet to determine the presentation time of the keyframe in seconds.&lt;br /&gt;
&lt;br /&gt;
Note that a keypoint always represents the first key frame on a page. If an&lt;br /&gt;
Ogg page contains two or more keyframes, the index's key point *must* refer&lt;br /&gt;
to the first keyframe on that page, not any subsequent keyframes on that page.&lt;br /&gt;
&lt;br /&gt;
The key points are stored in increasing order by offset (and thus by &lt;br /&gt;
presentation time as well).&lt;br /&gt;
&lt;br /&gt;
The byte offsets stored in keypoints are relative to the start of the Ogg&lt;br /&gt;
bitstream segment. So if you have a physical Ogg bitstream made up of two&lt;br /&gt;
chained Oggs, the offsets in the second Ogg segment's bitstream's index&lt;br /&gt;
are relative to the beginning of the second Ogg in the chain, not the first.&lt;br /&gt;
Also note that if a physical Ogg bitstream is made up of chained Oggs, the&lt;br /&gt;
presence of an index in one segment does not imply that there will be an&lt;br /&gt;
index in any other segment. &lt;br /&gt;
&lt;br /&gt;
The exact number of keyframes used to construct key points in the index &lt;br /&gt;
is up to the indexer, but to limit the index size, we recommend &lt;br /&gt;
including at most one key point per every 64KB of data, or every 2000ms, &lt;br /&gt;
whichever is least frequent. &lt;br /&gt;
&lt;br /&gt;
As per the Skeleton 3.0 track, '''the last packet in the Skeleton 3.3 track &lt;br /&gt;
is an empty EOS packet'''.&lt;br /&gt;
&lt;br /&gt;
== Software Prototype ==&lt;br /&gt;
&lt;br /&gt;
For a prototype indexer, see [http://github.com/cpearce/OggIndex OggIndex]. Also included there is a program OggIndexValid, which can verify that Theora and Vorbis indexes are valid. If you're implementing your own indexer, or going to be modifying existing indexes, always verify that your modified indexes are valid as per OggIndexValid!&lt;br /&gt;
&lt;br /&gt;
Recent [http://firefogg.org/nightly/ ffmpeg2theora nightlies] will also include a keyframe index in the Skeleton&lt;br /&gt;
3.3 track if you specify the command line option &amp;lt;tt&amp;gt;--seek-index&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To see how indexes improves network seeking performance, you can download a development&lt;br /&gt;
version of Firefox which can take advantage of indexes here:&lt;br /&gt;
&lt;br /&gt;
http://pearce.org.nz/video/firefox-indexed-seek-linux.tar.bz2&lt;br /&gt;
&lt;br /&gt;
http://pearce.org.nz/video/firefox-indexed-seek-macosx.dmg&lt;br /&gt;
&lt;br /&gt;
http://pearce.org.nz/video/firefox-indexed-seek-win32.zip&lt;br /&gt;
&lt;br /&gt;
If you already have a Firefox instance running, you'll need to either close your running&lt;br /&gt;
Firefox instance before starting the index-capable Firefox, or start the index-capable&lt;br /&gt;
Firefox with the &amp;lt;tt&amp;gt;--no-remote&amp;lt;/tt&amp;gt; command line parameter.&lt;br /&gt;
&lt;br /&gt;
To compare the network performance of indexed versus non-indexed seeking, point the&lt;br /&gt;
index-capable Firefox here:&lt;br /&gt;
&lt;br /&gt;
http://pearce.org.nz/video/indexed-seek-demo.html&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/IDABC_Questionnaire_2009</id>
		<title>IDABC Questionnaire 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/IDABC_Questionnaire_2009"/>
				<updated>2009-11-15T23:46:59Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: clarified consensus seeking process&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Context =&lt;br /&gt;
We received [http://lists.xiph.org/pipermail/theora/2009-November/002996.html an e-mail] from a consultant studying the suitability of Theora for use in &amp;quot;eGovernment&amp;quot;, on behalf of the [http://ec.europa.eu/idabc/ IDABC], an EU governmental agency responsible for &amp;quot;Interoperability&amp;quot; with an emphasis on open source.  The investigation is in the context of [http://ec.europa.eu/idabc/en/document/7728 European Interoperability Framework], about which there has been [http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2620&amp;amp;blogid=14&amp;amp;pn=1 some real controversy].&lt;br /&gt;
&lt;br /&gt;
The method of assessment is the Common Assessment Method for Standards and Specifications, including the questions below.&lt;br /&gt;
&lt;br /&gt;
= CAMSS Questions =&lt;br /&gt;
== Part 4: Market Criteria ==&lt;br /&gt;
&lt;br /&gt;
This group of Market criteria analyses the formal specification in the scope of its market environment, and more precisely it examines the implementations of the formal specification and the market players. This implies identifying to which extent the formal specification benefits from market support and wide adoption, what are its level of maturity and its capacity of reusability.&lt;br /&gt;
&lt;br /&gt;
Market support is evaluated through an analysis of how many products implementing the formal specification exist, what their market share is and who their end-users are. The quality and the completeness (in case of partitioning) of the implementations of the formal specification can also be analysed. Availability of existing or planned mechanisms to assess conformity of implementations to the standard or to the specification could also be identified. The existence of at least one reference implementation (i.e.: mentioning a recognized certification process) - and of which one is an open source implementation - can also be relevant to the assessment. Wide adoption can also be assessed across domains (i.e.: public and private sectors), in an open environment, and/or in a similar field (i.e.: best practices).&lt;br /&gt;
&lt;br /&gt;
A formal specification is mature if it has been in use and development for long enough that most of its initial problems have been overcome and its underlying technology is well understood and well defined. Maturity is also assessed by identifying if all aspects of the formal specification are considered as validated by usage, (i.e.: if the formal specification is partitioned), and if the reported issues have been solved and documented.&lt;br /&gt;
&lt;br /&gt;
Reusability of a formal specification is enabled if it includes guidelines for its implementation in a given context. The identification of successful implementations of the standard or specification should focus on good practices in a similar field. Its incompatibility with related standards or specifications should also be taken into account.&lt;br /&gt;
&lt;br /&gt;
The ideas behind the Market Criteria can also be expressed in the form of the following questions:&lt;br /&gt;
&lt;br /&gt;
=== Market support ===&lt;br /&gt;
* Does the standard have strong support in the marketplace? &lt;br /&gt;
: Yes.  For example, among web browsers, support for Xiph's Ogg, Theora, and Vorbis standards is now included by default in Mozilla Firefox, Google Chrome, and the latest versions of Opera, representing hundreds of millions of installed users just in this market alone. Further, a QuickTime component exists which enables use of Xiph's Ogg, Theora, and Vorbis standards in all Mac OS X applications that make use of the QuickTime framework - which includes Safari/Webkit, iMovie, QuickTime, and many others. On Windows, DirectShow filters exist which also enable all Windows applications that use the DirectShow framework to use Xiph's Ogg, Theora, and Vorbis standards.&lt;br /&gt;
* What products exist for this formal specification ? &lt;br /&gt;
: Theora is a video codec, and as such the required products are encoders, decoders, and transmission systems.  All three types of products are widely available for Theora.&lt;br /&gt;
* How many implementations of the formal specification are there? &lt;br /&gt;
: Xiph does not require implementors to acquire any license before implementing the specification.  Therefore, we do not have a definitive count of the number of implementations.  In addition to the reference implementation, which has been ported to most modern platforms and highly optimized for x86 and ARM CPUs and TI C64x+ DSPs, we are aware of a number of independent, conformant or mostly-conformant implementations.  These include two C decoders (ffmpeg and QTheora), a Java decoder (Jheora), a C# decoder, an FPGA decoder, and an FPGA encoder.&lt;br /&gt;
* Are there products from different suppliers in the market that implement this formal specification ? &lt;br /&gt;
: Yes.  Corporations such as Atari, Canonical, DailyMotion, Elphel, Fluendo, Google, Mozilla, Novell, Opera, Red Hat, Sun Microsystems, Ubisoft, and countless others have supplied products with an implementation of the Theora standard.&lt;br /&gt;
* Are there many products readily available from a variety of suppliers? &lt;br /&gt;
: Yes. Theora has been deployed in embedded devices, security cameras, video games, video conferencing systems, web browsers, home theater systems, and many other products.  A complete, legal, open-source reference implementation can also be downloaded free of charge, including components for all major media frameworks (DirectShow, gstreamer, and Quicktime), giving the plethora of applications which use these frameworks the ability to use the codec.&lt;br /&gt;
* What is the market share of the products implementing the formal specification, versus other implementations of competing formal specifications ? &lt;br /&gt;
: Theora playback is extremely widely available, covering virtually the entire market of personal computers.  Theora is also increasingly available in mobile and embedded devices.  Since we do not require licensing for products that implement the specification, we do not have market share numbers that can be compared with competing formal specifications.  Because implementations are readily available and free, Theora is included in many products that support multiple codecs, and is sometimes the only video codec included in free software products.&lt;br /&gt;
* Who are the end-users of these products implementing the formal specification?&lt;br /&gt;
: The end users are television viewers, video gamers, web surfers, movie makers, business people, video distribution services, and anyone else who interacts with moving pictures.&lt;br /&gt;
&lt;br /&gt;
=== Maturity ===&lt;br /&gt;
* Are there any existing or planned mechanisms to assess conformity of the implementations of the formal specification? &lt;br /&gt;
: Yes.  In addition to a continuous peer review process, we maintain a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that allow implementors to assess decoder conformity. We also provide free online developer support and testing for those attempting to make a conforming implementation. An [http://validator.xiph.org/ online validation service] is available.&lt;br /&gt;
* Is there a reference implementation (i.e.: mentioning a recognized certification process)? &lt;br /&gt;
: Yes.  Xiph maintains a reference implementation called [http://downloads.xiph.org/releases/theora/ libtheora].  In addition to serving as a reference, libtheora is also highly optimized to achieve the maximum possible speed, accuracy, reliability, efficiency, and video quality.  As a result, many implementors of Theora adopt the reference implementation.&lt;br /&gt;
* Is there an open source implementation? &lt;br /&gt;
: Yes.  libtheora is made available under a completely permissive BSD-like license.  Its open-source nature also contributes to its quality as a reference implementation, as implementors are welcome to contribute their improvements to the reference.  There are also several other open source implementations.&lt;br /&gt;
* Does the formal specification show wide adoption? &lt;br /&gt;
** across different domains? (I.e.: public and private) &lt;br /&gt;
: Yes.  In addition to the private companies mentioned in the previous section, Theora has also been specified as the sole format supported by non-profit institutions such as Wikipedia, currently the 6th largest website in the world, or as one of a small number of preferred formats supported by other public organizations, such as the Norwegian government.&lt;br /&gt;
** in an open environment? &lt;br /&gt;
: Yes.  On open/free operating systems such as those distributed by Novell/SuSE, Canonical, and Red Hat, Theora is the primary default video codec.&lt;br /&gt;
** in a similar field? (i.e.: can best practices be identified?) &lt;br /&gt;
* Has the formal specification been in use and development long enough that most of its initial problems have been overcome? &lt;br /&gt;
: Yes.  Theora was derived from VP3, which was originally released in May 2000.  The Theora specification was completed in 2004.  Theora has now been used in a wide variety of applications, on the full spectrum of computing devices.&lt;br /&gt;
* Is the underlying technology of the standard well-understood? (e.g., a reference model is well defined, appropriate concepts of the technology are in widespread use, the technology may have been in use for many years, a formal mathematical model is defined, etc.) &lt;br /&gt;
: Yes.  The underlying technology has been in use for nearly a decade, and most of the concepts have been in widespread use for even longer.&lt;br /&gt;
* Is the formal specification based upon technology that has not been well-defined and may be relatively new? &lt;br /&gt;
: No.  The formal specification is based on technology from the On2 VP3 codec, which is substantially similar to simple block-transform codecs like H.261. This class of codecs is extremely well understood, and has been actively in use for over 20 years.&lt;br /&gt;
* Has the formal specification been revised? (Yes/No, Nof) &lt;br /&gt;
: Yes.  The specification of the encoder is continuously revised based on user feedback to improve clarity and accuracy. The specification of the decoding part has been stable for years.&lt;br /&gt;
* Is the formal specification under the auspices of an architectural board? (Yes/No) &lt;br /&gt;
: No.  Although officially maintained by the Xiph.Org Foundation, anyone is free to join this organization, and one need not even be a member to make contributions. However, the core developers will review contributions and make sure they do not contradict the general architecture and they work well with the existing code and the test cases.&lt;br /&gt;
* Is the formal specification partitioned in its functionality? (Yes/No) &lt;br /&gt;
: No.  Theora is very deliberately not partitioned, to avoid the confusion created by a &amp;quot;standard&amp;quot; composed of many incompatible &amp;quot;profiles&amp;quot;.  The Theora standard does not have any optional components.  A compliant Theora decoder can correctly process any Theora stream.&lt;br /&gt;
** To what extent does each partition participate to its overall functionality? (NN%) &lt;br /&gt;
: N/A.&lt;br /&gt;
** To what extent is each partition implemented? (NN%) (cf market adoption)&lt;br /&gt;
: N/A.&lt;br /&gt;
&lt;br /&gt;
=== Re-usability === &lt;br /&gt;
* Does the formal specification provide guidelines for its implementation in a given organisation? &lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] provides &amp;quot;non-normative&amp;quot; advice and explanation for implementors of Theora decoders and encoders, including example algorithms for implementing required mathematical transforms.  Xiph also maintains [http://wiki.xiph.org/Main_Page a documentation base] for implementors who desire more guidelines beyond the specification itself.&lt;br /&gt;
* Can other cases where similar systems implement the formal specification be considered as successful implementations and good practices? &lt;br /&gt;
: Xiph's standards have successfully been implemented by many organisations in a wide variety of environments.  We maintain (non-exhaustive) [http://wiki.xiph.org/TheoraSoftwarePlayers lists] of products which implement Theora support, many of them open source, so that others may use them as a reference when preparing their own products. A particularly well known, independent, but interoperable implementation is provided by the FFmpeg open source project.&lt;br /&gt;
* Is its compatibility with related formal specification documented?&lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] also documents the use of Theora within the [http://www.ietf.org/rfc/rfc3533.txt standard Ogg encapsulation format], and the [http://svn.xiph.org/trunk/theora/doc/draft-ietf-avt-rtp-theora-00.txt TheoraRTP draft specification] explains how to transmit Theora using the [http://tools.ietf.org/html/rfc3550 RTP standard].  In addition, the specification documents Theora's compatibility with ITU-R B.470, ITU-R B.601, ITU-R B.709, SMPTE-170M, [http://tools.ietf.org/html/rfc2044 UTF-8], ISO 10646, and [http://www.xiph.org/vorbis/doc/Vorbis_I_spec.pdf Ogg Vorbis].&lt;br /&gt;
&lt;br /&gt;
== Part 5: Standardisation Criteria == &lt;br /&gt;
From Idabc-camss&lt;br /&gt;
&lt;br /&gt;
Note: Throughout this section, “Organisation” refers to the standardisation/fora/consortia body in charge of the formal specification.&lt;br /&gt;
&lt;br /&gt;
Significant characteristics of the way the organisation operates are for example the way it gives the possibility to stakeholders to influence the evolution of the formal specification, or which conditions it attaches to the use of the formal specification or its implementation. Moreover, it is important to know how the formal specification is defined, supported, and made available, as well as how interaction with stakeholders is managed by the organisation during these steps. Governance of interoperability testing with other formal specifications is also indicative.&lt;br /&gt;
&lt;br /&gt;
The standardisation criteria analyses therefore the following elements:&lt;br /&gt;
&lt;br /&gt;
=== Availability of Documentation ===&lt;br /&gt;
The availability of documentation criteria is linked to cost and online availability. Access to all preliminary results documentation can be online, online for members only, offline, offline, for members only or not available. Access can be free or for a fee (which fee?).&lt;br /&gt;
: Every Xiph standard is permanently available online to everyone at no cost.  For example, we invite everyone to download [http://theora.org/doc/Theora.pdf the most up-to-date copy of the Theora specification], and [http://xiph.org/vorbis/doc/Vorbis_I_spec.html the latest revision of Vorbis].  All previous revisions are available from Xiph's [http://svn.xiph.org/ revision control system].&lt;br /&gt;
&lt;br /&gt;
=== Intellectual Property Right ===&lt;br /&gt;
The Intellectual Property Rights evaluation criteria relates to the ability for implementers to use the formal specification in products without legal or financial implications. The IPR policy of the organisation is therefore evaluated according to: &lt;br /&gt;
* the availability of the IPR or copyright policies of the organisation (available on-line or off-line, or not available);&lt;br /&gt;
: The reference implementations of each codec include all necessary IPR and copyright licenses for that codec, including all documentation, and are freely available to everyone.&lt;br /&gt;
* the organisation’s governance to disclose any IPR from any contributor (ex-ante, online, offline, for free for all, for a fee for all, for members only, not available);&lt;br /&gt;
: Xiph does not require the identification of specific patents that may be required to implement a standard, however it does require an open-source compatible, royalty free license from a contributor for any such patents they may own before the corresponding technology can be included in a standard. These license are made available online, for free, to all parties.&lt;br /&gt;
* the level of IPR set &amp;quot;mandatory&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability , patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none); &lt;br /&gt;
: All standards, specifications, and software published by the Xiph.Org Foundation are required to have &amp;quot;open-source compatible&amp;quot; IPR.  This means that a contribution must either be entirely clear of any known patents, or any patents that read upon the contribution must be available under a transferable, irrevocable public nonassertion agreement to all people everywhere.  For example, see [http://svn.xiph.org/trunk/theora/LICENSE our On2 patent nonassertion warrant].  Other common &amp;quot;royalty free&amp;quot; patent licenses are either not transferable, revocable under certain conditions (such as patent infringement litigation against the originating party), or otherwise impose restrictions that would prevent distribution under common [http://www.opensource.org/ OSI]-approved licenses.  These would not be acceptable.&lt;br /&gt;
* the level of IPR &amp;quot;recommended&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability, patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none). [Note: RAND (Reasonable and Non Discriminatory License) is based on a &amp;quot;fairness&amp;quot; concept. Companies agree that if they receive any patents on technologies that become essential to the standard then they agree to allow other groups attempting to implement the standard to use these patents and they agree that the charges for the patents shall be reasonable. &amp;quot;RAND with limited availability&amp;quot; is a version of RAND where the &amp;quot;reasonable charges&amp;quot; have an upper limit.]&lt;br /&gt;
: Xiph's recommended IPR requirements are the same as our mandatory requirements.&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
&lt;br /&gt;
The accessibility evaluation criteria describe the importance of equal and safe accessibility by the users of implementations of formal specifications. This aspect can be related to safety (physical safety and conformance safety) and accessibility of physical impaired people (design for all).&lt;br /&gt;
&lt;br /&gt;
Focus is made particularly on accessibility and conformance safety. Conformance testing is testing to determine whether a system meets some specified formal specification. The result can be results from a test suite. Conformance validation is when the conformance test uniquely qualifies a given implementation as conformant or not. Conformance certification is a process that provides a public and easily visible &amp;quot;stamp of approval&amp;quot; that an implementation of a standard validates as conformant.&lt;br /&gt;
&lt;br /&gt;
The following questions allow an assessment of accessibility and conformance safety: &lt;br /&gt;
* Does a mechanism that ensures disability support by a formal specification exist? (Y/N) &lt;br /&gt;
: Yes.  Xiph ensures support for users with disabilities by providing specifications for accessible technologies independent of the codec itself.  Notably, the Xiph [http://wiki.xiph.org/OggKate OggKate] codec for time-aligned text and image content provides support for subtitles for internationalisation, captions for the hearing-impaired, and textual audio descriptions for the visually impaired. Further, Ogg supports multiple tracks of audio and video content in one container, such that sign language tracks and audio descriptions can be included into one file. For this to work, Xiph have defined [http://wiki.xiph.org/Ogg_Skeleton Skeleton] which holds metadata about each track encapsulated within the one Ogg file. When Theora is transmitted or stored in an Ogg container, it is automatically compatible with these accessibility measures.&lt;br /&gt;
* Is conformance governance always part of a standard? (Y/N) &lt;br /&gt;
: No.  Xiph does not normally provide a formal conformance testing process as part of a standard.&lt;br /&gt;
* Is a conformance test offered to implementers? (Y/N) &lt;br /&gt;
: Yes.  Xiph maintains a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that can be used by implementors to confirm basic conformance. Also, Xiph's [http://validator.xiph.org online validation service] is a freely available service that can be used by anyone to check conformance.&lt;br /&gt;
* Is conformance validation available to implementers? (Y/N) &lt;br /&gt;
: Yes.  Informal conformance testing is available to implementors upon request, and Xiph has provided such testing for a number of implementations in the past. The oggz tools contain a validation program called oggz-validate which implementers have made massive use of in the past.&lt;br /&gt;
* Is conformance certification available? (Y/N) &lt;br /&gt;
: Yes.  Xiph does not require certification, but maintains the right to withhold the use of our trademarks from implementors that act in bad faith.  Implementors may, however, request explicit permission to use our trademarks with a conforming implementation.&lt;br /&gt;
* Is localisation of a formal specification possible? (Y/N)&lt;br /&gt;
: Yes.  We welcome anyone who wishes to translate Xiph specifications into other languages.  We have no policy requiring that the normative specification be written in English.&lt;br /&gt;
&lt;br /&gt;
=== Interoperability governance === &lt;br /&gt;
The interoperability governance evaluation criteria relates to how interoperability is identified and maintained between interoperable formal specifications. In order to do this, the organisation may provide governance for: &lt;br /&gt;
* open identification in formal specifications, &lt;br /&gt;
* open negotiation in formal specifications, &lt;br /&gt;
* open selection in formal specifications. &lt;br /&gt;
&lt;br /&gt;
=== Meeting and consultation ===&lt;br /&gt;
The meeting and consultation evaluation criteria relates to the process of defining a formal specification. As formal specifications are usually defined by committees, and these committees normally consist of members of the organisation, this criteria studies how to become a member and which are the financial barriers for this, as well as how are non-members able to have an influence on the process of defining the formal specification. It analyses: &lt;br /&gt;
* if the organisation is open to all types of companies and organisations and to individuals; &lt;br /&gt;
: Yes.  Xiph welcomes representatives from all companies and organizations.&lt;br /&gt;
* if the standardisation process may specifically allow participation of members with limited abilities when relevant; &lt;br /&gt;
: Yes.  Standardization occurs almost entirely in internet communications channels, allowing participants with disabilities to engage fully in the standards development process.  We also encourage nonexperts and students to assist us as they can, and to learn about Xiph technologies by participating in the standards development process.&lt;br /&gt;
* if meetings are open to all members;&lt;br /&gt;
: Xiph meetings are open to everyone.  We charge no fee for and place no restrictions on attendance or participation.  For example, anyone interested in contributing to the Theora specification may join [http://lists.xiph.org/pipermail/theora-dev/ the Theora development mailing list].&lt;br /&gt;
* if all can participate in the formal specification creation process; &lt;br /&gt;
: Yes.  All people are welcome to participate in the specification creation process.  No dues or fees are required to participate&lt;br /&gt;
* if non-members can participate in the formal specification creation process.&lt;br /&gt;
: Yes.  Xiph does not maintain an explicit list of members, and no one is excluded from contributing to specifications as they are developed.&lt;br /&gt;
&lt;br /&gt;
=== Consensus ===&lt;br /&gt;
Consensus is decision making primarily with regard to the approval of formal specifications and review with interest groups (non-members). The consensus evaluation criterion is evaluated with the following questions:&lt;br /&gt;
* Does the organisation have a stated objective of reaching consensus when making decisions on standards? &lt;br /&gt;
: There is no explicitly stated objective of reaching consensus. However, when new contributions are made, the key specification developers will be able to veto on the introduction of a new feature. Generally, differences are discussed openly and new features are adapted until they fit the overall architecture of the standards, at which stage they are introduced into the specification, standards and software.&lt;br /&gt;
* If consensus is not reached, can the standard be approved? (answers are: cannot be approved but referred back to working group/committee, approved with 75% majority, approved with 66% majority, approved with 51% majority, can be decided by a &amp;quot;director&amp;quot; or similar in the organisation).&lt;br /&gt;
: The standard can be approved without consensus via the decision of a &amp;quot;director&amp;quot; or similar.&lt;br /&gt;
* Is there a formal process for external review of standard proposals by interest groups (nonmembers)?&lt;br /&gt;
: Since anyone may participate in the development process and make proposals, there is no need for a separate formal process to include proposals by nonmembers.&lt;br /&gt;
&lt;br /&gt;
=== Due Process ===&lt;br /&gt;
The due process evaluation criteria relates to the level of respect of each member of the organisation with regard to its rights. More specifically, it must be assured that if a member believes an error has been made in the process of defining a formal specification, it must be possible to appeal this to an independent, higher instance. The question is therefore: can a member formally appeal or raise objections to a procedure or to a technical specification to an independent, higher instance?&lt;br /&gt;
&lt;br /&gt;
: Yes.  Even if a member fails an appeal within the organization, because all of the technology Xiph standardizes is open and freely implementable, they are always free to develop their own, competing version.  Such competing versions may even still be eligible for standardization under the Xiph umbrella.&lt;br /&gt;
&lt;br /&gt;
=== Changes to the formal specification ===&lt;br /&gt;
The suggested changes made to a formal specification need to be presented, evaluated and approved in the same way as the formal specification was first defined. This criteria therefore applies the above criteria to the changes made to the formal specification(availability of documentation, Intellectual Property Right, accessibility, interoperability governance, meeting and consultation, consensus, due process).&lt;br /&gt;
&lt;br /&gt;
: The exact same process is used for revisions to the standard as was used for the original development of the standard, and thus the answers to all of the above questions remain the same.&lt;br /&gt;
&lt;br /&gt;
=== Support ===&lt;br /&gt;
It is critical that the organisation takes responsibility for the formal specification throughout its life span. This can be done in several ways such as for example a regular periodic review of the formal specification. The support criteria relates to the level of commitment the organisation has taken to support the formal specification throughout its life: &lt;br /&gt;
* does the organisation provide support until removal of the published formal specification from public domain (Including this process? &lt;br /&gt;
: Xiph.Org standards are never removed from the public domain.  Xiph endeavors to provide support for as long as the standard remains in use.&lt;br /&gt;
* does the organisation make the formal specification still available even when in non-maintenance mode?&lt;br /&gt;
: Yes.  All Xiph.Org standards are freely licensed and will always be available.&lt;br /&gt;
* does the organisation add new features and keep the formal specification up-to-date?&lt;br /&gt;
: Yes.  Xiph maintains its ecosystem of standards on a continuous basis.&lt;br /&gt;
* does the organisation rectify problems identified in initial implementations?&lt;br /&gt;
: Yes.  Xiph maintains [https://trac.xiph.org/report a problem reporting system] that is open to the public, and invites everyone to submit suggestions for improvements.  Improvements are made both to the standards documents and to the reference implementations.&lt;br /&gt;
* does the organisation only create the formal specification?&lt;br /&gt;
: No.  Xiph also produces high-quality reusable reference implementations of its standards, released under an open license.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/IDABC_Questionnaire_2009</id>
		<title>IDABC Questionnaire 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/IDABC_Questionnaire_2009"/>
				<updated>2009-11-15T23:42:22Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: clarification on a11y&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Context =&lt;br /&gt;
We received [http://lists.xiph.org/pipermail/theora/2009-November/002996.html an e-mail] from a consultant studying the suitability of Theora for use in &amp;quot;eGovernment&amp;quot;, on behalf of the [http://ec.europa.eu/idabc/ IDABC], an EU governmental agency responsible for &amp;quot;Interoperability&amp;quot; with an emphasis on open source.  The investigation is in the context of [http://ec.europa.eu/idabc/en/document/7728 European Interoperability Framework], about which there has been [http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2620&amp;amp;blogid=14&amp;amp;pn=1 some real controversy].&lt;br /&gt;
&lt;br /&gt;
The method of assessment is the Common Assessment Method for Standards and Specifications, including the questions below.&lt;br /&gt;
&lt;br /&gt;
= CAMSS Questions =&lt;br /&gt;
== Part 4: Market Criteria ==&lt;br /&gt;
&lt;br /&gt;
This group of Market criteria analyses the formal specification in the scope of its market environment, and more precisely it examines the implementations of the formal specification and the market players. This implies identifying to which extent the formal specification benefits from market support and wide adoption, what are its level of maturity and its capacity of reusability.&lt;br /&gt;
&lt;br /&gt;
Market support is evaluated through an analysis of how many products implementing the formal specification exist, what their market share is and who their end-users are. The quality and the completeness (in case of partitioning) of the implementations of the formal specification can also be analysed. Availability of existing or planned mechanisms to assess conformity of implementations to the standard or to the specification could also be identified. The existence of at least one reference implementation (i.e.: mentioning a recognized certification process) - and of which one is an open source implementation - can also be relevant to the assessment. Wide adoption can also be assessed across domains (i.e.: public and private sectors), in an open environment, and/or in a similar field (i.e.: best practices).&lt;br /&gt;
&lt;br /&gt;
A formal specification is mature if it has been in use and development for long enough that most of its initial problems have been overcome and its underlying technology is well understood and well defined. Maturity is also assessed by identifying if all aspects of the formal specification are considered as validated by usage, (i.e.: if the formal specification is partitioned), and if the reported issues have been solved and documented.&lt;br /&gt;
&lt;br /&gt;
Reusability of a formal specification is enabled if it includes guidelines for its implementation in a given context. The identification of successful implementations of the standard or specification should focus on good practices in a similar field. Its incompatibility with related standards or specifications should also be taken into account.&lt;br /&gt;
&lt;br /&gt;
The ideas behind the Market Criteria can also be expressed in the form of the following questions:&lt;br /&gt;
&lt;br /&gt;
=== Market support ===&lt;br /&gt;
* Does the standard have strong support in the marketplace? &lt;br /&gt;
: Yes.  For example, among web browsers, support for Xiph's Ogg, Theora, and Vorbis standards is now included by default in Mozilla Firefox, Google Chrome, and the latest versions of Opera, representing hundreds of millions of installed users just in this market alone. Further, a QuickTime component exists which enables use of Xiph's Ogg, Theora, and Vorbis standards in all Mac OS X applications that make use of the QuickTime framework - which includes Safari/Webkit, iMovie, QuickTime, and many others. On Windows, DirectShow filters exist which also enable all Windows applications that use the DirectShow framework to use Xiph's Ogg, Theora, and Vorbis standards.&lt;br /&gt;
* What products exist for this formal specification ? &lt;br /&gt;
: Theora is a video codec, and as such the required products are encoders, decoders, and transmission systems.  All three types of products are widely available for Theora.&lt;br /&gt;
* How many implementations of the formal specification are there? &lt;br /&gt;
: Xiph does not require implementors to acquire any license before implementing the specification.  Therefore, we do not have a definitive count of the number of implementations.  In addition to the reference implementation, which has been ported to most modern platforms and highly optimized for x86 and ARM CPUs and TI C64x+ DSPs, we are aware of a number of independent, conformant or mostly-conformant implementations.  These include two C decoders (ffmpeg and QTheora), a Java decoder (Jheora), a C# decoder, an FPGA decoder, and an FPGA encoder.&lt;br /&gt;
* Are there products from different suppliers in the market that implement this formal specification ? &lt;br /&gt;
: Yes.  Corporations such as Atari, Canonical, DailyMotion, Elphel, Fluendo, Google, Mozilla, Novell, Opera, Red Hat, Sun Microsystems, Ubisoft, and countless others have supplied products with an implementation of the Theora standard.&lt;br /&gt;
* Are there many products readily available from a variety of suppliers? &lt;br /&gt;
: Yes. Theora has been deployed in embedded devices, security cameras, video games, video conferencing systems, web browsers, home theater systems, and many other products.  A complete, legal, open-source reference implementation can also be downloaded free of charge, including components for all major media frameworks (DirectShow, gstreamer, and Quicktime), giving the plethora of applications which use these frameworks the ability to use the codec.&lt;br /&gt;
* What is the market share of the products implementing the formal specification, versus other implementations of competing formal specifications ? &lt;br /&gt;
: Theora playback is extremely widely available, covering virtually the entire market of personal computers.  Theora is also increasingly available in mobile and embedded devices.  Since we do not require licensing for products that implement the specification, we do not have market share numbers that can be compared with competing formal specifications.  Because implementations are readily available and free, Theora is included in many products that support multiple codecs, and is sometimes the only video codec included in free software products.&lt;br /&gt;
* Who are the end-users of these products implementing the formal specification?&lt;br /&gt;
: The end users are television viewers, video gamers, web surfers, movie makers, business people, video distribution services, and anyone else who interacts with moving pictures.&lt;br /&gt;
&lt;br /&gt;
=== Maturity ===&lt;br /&gt;
* Are there any existing or planned mechanisms to assess conformity of the implementations of the formal specification? &lt;br /&gt;
: Yes.  In addition to a continuous peer review process, we maintain a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that allow implementors to assess decoder conformity. We also provide free online developer support and testing for those attempting to make a conforming implementation. An [http://validator.xiph.org/ online validation service] is available.&lt;br /&gt;
* Is there a reference implementation (i.e.: mentioning a recognized certification process)? &lt;br /&gt;
: Yes.  Xiph maintains a reference implementation called [http://downloads.xiph.org/releases/theora/ libtheora].  In addition to serving as a reference, libtheora is also highly optimized to achieve the maximum possible speed, accuracy, reliability, efficiency, and video quality.  As a result, many implementors of Theora adopt the reference implementation.&lt;br /&gt;
* Is there an open source implementation? &lt;br /&gt;
: Yes.  libtheora is made available under a completely permissive BSD-like license.  Its open-source nature also contributes to its quality as a reference implementation, as implementors are welcome to contribute their improvements to the reference.  There are also several other open source implementations.&lt;br /&gt;
* Does the formal specification show wide adoption? &lt;br /&gt;
** across different domains? (I.e.: public and private) &lt;br /&gt;
: Yes.  In addition to the private companies mentioned in the previous section, Theora has also been specified as the sole format supported by non-profit institutions such as Wikipedia, currently the 6th largest website in the world, or as one of a small number of preferred formats supported by other public organizations, such as the Norwegian government.&lt;br /&gt;
** in an open environment? &lt;br /&gt;
: Yes.  On open/free operating systems such as those distributed by Novell/SuSE, Canonical, and Red Hat, Theora is the primary default video codec.&lt;br /&gt;
** in a similar field? (i.e.: can best practices be identified?) &lt;br /&gt;
* Has the formal specification been in use and development long enough that most of its initial problems have been overcome? &lt;br /&gt;
: Yes.  Theora was derived from VP3, which was originally released in May 2000.  The Theora specification was completed in 2004.  Theora has now been used in a wide variety of applications, on the full spectrum of computing devices.&lt;br /&gt;
* Is the underlying technology of the standard well-understood? (e.g., a reference model is well defined, appropriate concepts of the technology are in widespread use, the technology may have been in use for many years, a formal mathematical model is defined, etc.) &lt;br /&gt;
: Yes.  The underlying technology has been in use for nearly a decade, and most of the concepts have been in widespread use for even longer.&lt;br /&gt;
* Is the formal specification based upon technology that has not been well-defined and may be relatively new? &lt;br /&gt;
: No.  The formal specification is based on technology from the On2 VP3 codec, which is substantially similar to simple block-transform codecs like H.261. This class of codecs is extremely well understood, and has been actively in use for over 20 years.&lt;br /&gt;
* Has the formal specification been revised? (Yes/No, Nof) &lt;br /&gt;
: Yes.  The specification of the encoder is continuously revised based on user feedback to improve clarity and accuracy. The specification of the decoding part has been stable for years.&lt;br /&gt;
* Is the formal specification under the auspices of an architectural board? (Yes/No) &lt;br /&gt;
: No.  Although officially maintained by the Xiph.Org Foundation, anyone is free to join this organization, and one need not even be a member to make contributions. However, the core developers will review contributions and make sure they do not contradict the general architecture and they work well with the existing code and the test cases.&lt;br /&gt;
* Is the formal specification partitioned in its functionality? (Yes/No) &lt;br /&gt;
: No.  Theora is very deliberately not partitioned, to avoid the confusion created by a &amp;quot;standard&amp;quot; composed of many incompatible &amp;quot;profiles&amp;quot;.  The Theora standard does not have any optional components.  A compliant Theora decoder can correctly process any Theora stream.&lt;br /&gt;
** To what extent does each partition participate to its overall functionality? (NN%) &lt;br /&gt;
: N/A.&lt;br /&gt;
** To what extent is each partition implemented? (NN%) (cf market adoption)&lt;br /&gt;
: N/A.&lt;br /&gt;
&lt;br /&gt;
=== Re-usability === &lt;br /&gt;
* Does the formal specification provide guidelines for its implementation in a given organisation? &lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] provides &amp;quot;non-normative&amp;quot; advice and explanation for implementors of Theora decoders and encoders, including example algorithms for implementing required mathematical transforms.  Xiph also maintains [http://wiki.xiph.org/Main_Page a documentation base] for implementors who desire more guidelines beyond the specification itself.&lt;br /&gt;
* Can other cases where similar systems implement the formal specification be considered as successful implementations and good practices? &lt;br /&gt;
: Xiph's standards have successfully been implemented by many organisations in a wide variety of environments.  We maintain (non-exhaustive) [http://wiki.xiph.org/TheoraSoftwarePlayers lists] of products which implement Theora support, many of them open source, so that others may use them as a reference when preparing their own products. A particularly well known, independent, but interoperable implementation is provided by the FFmpeg open source project.&lt;br /&gt;
* Is its compatibility with related formal specification documented?&lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] also documents the use of Theora within the [http://www.ietf.org/rfc/rfc3533.txt standard Ogg encapsulation format], and the [http://svn.xiph.org/trunk/theora/doc/draft-ietf-avt-rtp-theora-00.txt TheoraRTP draft specification] explains how to transmit Theora using the [http://tools.ietf.org/html/rfc3550 RTP standard].  In addition, the specification documents Theora's compatibility with ITU-R B.470, ITU-R B.601, ITU-R B.709, SMPTE-170M, [http://tools.ietf.org/html/rfc2044 UTF-8], ISO 10646, and [http://www.xiph.org/vorbis/doc/Vorbis_I_spec.pdf Ogg Vorbis].&lt;br /&gt;
&lt;br /&gt;
== Part 5: Standardisation Criteria == &lt;br /&gt;
From Idabc-camss&lt;br /&gt;
&lt;br /&gt;
Note: Throughout this section, “Organisation” refers to the standardisation/fora/consortia body in charge of the formal specification.&lt;br /&gt;
&lt;br /&gt;
Significant characteristics of the way the organisation operates are for example the way it gives the possibility to stakeholders to influence the evolution of the formal specification, or which conditions it attaches to the use of the formal specification or its implementation. Moreover, it is important to know how the formal specification is defined, supported, and made available, as well as how interaction with stakeholders is managed by the organisation during these steps. Governance of interoperability testing with other formal specifications is also indicative.&lt;br /&gt;
&lt;br /&gt;
The standardisation criteria analyses therefore the following elements:&lt;br /&gt;
&lt;br /&gt;
=== Availability of Documentation ===&lt;br /&gt;
The availability of documentation criteria is linked to cost and online availability. Access to all preliminary results documentation can be online, online for members only, offline, offline, for members only or not available. Access can be free or for a fee (which fee?).&lt;br /&gt;
: Every Xiph standard is permanently available online to everyone at no cost.  For example, we invite everyone to download [http://theora.org/doc/Theora.pdf the most up-to-date copy of the Theora specification], and [http://xiph.org/vorbis/doc/Vorbis_I_spec.html the latest revision of Vorbis].  All previous revisions are available from Xiph's [http://svn.xiph.org/ revision control system].&lt;br /&gt;
&lt;br /&gt;
=== Intellectual Property Right ===&lt;br /&gt;
The Intellectual Property Rights evaluation criteria relates to the ability for implementers to use the formal specification in products without legal or financial implications. The IPR policy of the organisation is therefore evaluated according to: &lt;br /&gt;
* the availability of the IPR or copyright policies of the organisation (available on-line or off-line, or not available);&lt;br /&gt;
: The reference implementations of each codec include all necessary IPR and copyright licenses for that codec, including all documentation, and are freely available to everyone.&lt;br /&gt;
* the organisation’s governance to disclose any IPR from any contributor (ex-ante, online, offline, for free for all, for a fee for all, for members only, not available);&lt;br /&gt;
: Xiph does not require the identification of specific patents that may be required to implement a standard, however it does require an open-source compatible, royalty free license from a contributor for any such patents they may own before the corresponding technology can be included in a standard. These license are made available online, for free, to all parties.&lt;br /&gt;
* the level of IPR set &amp;quot;mandatory&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability , patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none); &lt;br /&gt;
: All standards, specifications, and software published by the Xiph.Org Foundation are required to have &amp;quot;open-source compatible&amp;quot; IPR.  This means that a contribution must either be entirely clear of any known patents, or any patents that read upon the contribution must be available under a transferable, irrevocable public nonassertion agreement to all people everywhere.  For example, see [http://svn.xiph.org/trunk/theora/LICENSE our On2 patent nonassertion warrant].  Other common &amp;quot;royalty free&amp;quot; patent licenses are either not transferable, revocable under certain conditions (such as patent infringement litigation against the originating party), or otherwise impose restrictions that would prevent distribution under common [http://www.opensource.org/ OSI]-approved licenses.  These would not be acceptable.&lt;br /&gt;
* the level of IPR &amp;quot;recommended&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability, patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none). [Note: RAND (Reasonable and Non Discriminatory License) is based on a &amp;quot;fairness&amp;quot; concept. Companies agree that if they receive any patents on technologies that become essential to the standard then they agree to allow other groups attempting to implement the standard to use these patents and they agree that the charges for the patents shall be reasonable. &amp;quot;RAND with limited availability&amp;quot; is a version of RAND where the &amp;quot;reasonable charges&amp;quot; have an upper limit.]&lt;br /&gt;
: Xiph's recommended IPR requirements are the same as our mandatory requirements.&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
&lt;br /&gt;
The accessibility evaluation criteria describe the importance of equal and safe accessibility by the users of implementations of formal specifications. This aspect can be related to safety (physical safety and conformance safety) and accessibility of physical impaired people (design for all).&lt;br /&gt;
&lt;br /&gt;
Focus is made particularly on accessibility and conformance safety. Conformance testing is testing to determine whether a system meets some specified formal specification. The result can be results from a test suite. Conformance validation is when the conformance test uniquely qualifies a given implementation as conformant or not. Conformance certification is a process that provides a public and easily visible &amp;quot;stamp of approval&amp;quot; that an implementation of a standard validates as conformant.&lt;br /&gt;
&lt;br /&gt;
The following questions allow an assessment of accessibility and conformance safety: &lt;br /&gt;
* Does a mechanism that ensures disability support by a formal specification exist? (Y/N) &lt;br /&gt;
: Yes.  Xiph ensures support for users with disabilities by providing specifications for accessible technologies independent of the codec itself.  Notably, the Xiph [http://wiki.xiph.org/OggKate OggKate] codec for time-aligned text and image content provides support for subtitles for internationalisation, captions for the hearing-impaired, and textual audio descriptions for the visually impaired. Further, Ogg supports multiple tracks of audio and video content in one container, such that sign language tracks and audio descriptions can be included into one file. For this to work, Xiph have defined [http://wiki.xiph.org/Ogg_Skeleton Skeleton] which holds metadata about each track encapsulated within the one Ogg file. When Theora is transmitted or stored in an Ogg container, it is automatically compatible with these accessibility measures.&lt;br /&gt;
* Is conformance governance always part of a standard? (Y/N) &lt;br /&gt;
: No.  Xiph does not normally provide a formal conformance testing process as part of a standard.&lt;br /&gt;
* Is a conformance test offered to implementers? (Y/N) &lt;br /&gt;
: Yes.  Xiph maintains a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that can be used by implementors to confirm basic conformance. Also, Xiph's [http://validator.xiph.org online validation service] is a freely available service that can be used by anyone to check conformance.&lt;br /&gt;
* Is conformance validation available to implementers? (Y/N) &lt;br /&gt;
: Yes.  Informal conformance testing is available to implementors upon request, and Xiph has provided such testing for a number of implementations in the past. The oggz tools contain a validation program called oggz-validate which implementers have made massive use of in the past.&lt;br /&gt;
* Is conformance certification available? (Y/N) &lt;br /&gt;
: Yes.  Xiph does not require certification, but maintains the right to withhold the use of our trademarks from implementors that act in bad faith.  Implementors may, however, request explicit permission to use our trademarks with a conforming implementation.&lt;br /&gt;
* Is localisation of a formal specification possible? (Y/N)&lt;br /&gt;
: Yes.  We welcome anyone who wishes to translate Xiph specifications into other languages.  We have no policy requiring that the normative specification be written in English.&lt;br /&gt;
&lt;br /&gt;
=== Interoperability governance === &lt;br /&gt;
The interoperability governance evaluation criteria relates to how interoperability is identified and maintained between interoperable formal specifications. In order to do this, the organisation may provide governance for: &lt;br /&gt;
* open identification in formal specifications, &lt;br /&gt;
* open negotiation in formal specifications, &lt;br /&gt;
* open selection in formal specifications. &lt;br /&gt;
&lt;br /&gt;
=== Meeting and consultation ===&lt;br /&gt;
The meeting and consultation evaluation criteria relates to the process of defining a formal specification. As formal specifications are usually defined by committees, and these committees normally consist of members of the organisation, this criteria studies how to become a member and which are the financial barriers for this, as well as how are non-members able to have an influence on the process of defining the formal specification. It analyses: &lt;br /&gt;
* if the organisation is open to all types of companies and organisations and to individuals; &lt;br /&gt;
: Yes.  Xiph welcomes representatives from all companies and organizations.&lt;br /&gt;
* if the standardisation process may specifically allow participation of members with limited abilities when relevant; &lt;br /&gt;
: Yes.  Standardization occurs almost entirely in internet communications channels, allowing participants with disabilities to engage fully in the standards development process.  We also encourage nonexperts and students to assist us as they can, and to learn about Xiph technologies by participating in the standards development process.&lt;br /&gt;
* if meetings are open to all members;&lt;br /&gt;
: Xiph meetings are open to everyone.  We charge no fee for and place no restrictions on attendance or participation.  For example, anyone interested in contributing to the Theora specification may join [http://lists.xiph.org/pipermail/theora-dev/ the Theora development mailing list].&lt;br /&gt;
* if all can participate in the formal specification creation process; &lt;br /&gt;
: Yes.  All people are welcome to participate in the specification creation process.  No dues or fees are required to participate&lt;br /&gt;
* if non-members can participate in the formal specification creation process.&lt;br /&gt;
: Yes.  Xiph does not maintain an explicit list of members, and no one is excluded from contributing to specifications as they are developed.&lt;br /&gt;
&lt;br /&gt;
=== Consensus ===&lt;br /&gt;
Consensus is decision making primarily with regard to the approval of formal specifications and review with interest groups (non-members). The consensus evaluation criterion is evaluated with the following questions:&lt;br /&gt;
* Does the organisation have a stated objective of reaching consensus when making decisions on standards? &lt;br /&gt;
: There is no explicitly stated objective of reaching consensus.&lt;br /&gt;
* If consensus is not reached, can the standard be approved? (answers are: cannot be approved but referred back to working group/committee, approved with 75% majority, approved with 66% majority, approved with 51% majority, can be decided by a &amp;quot;director&amp;quot; or similar in the organisation).&lt;br /&gt;
: The standard can be approved without consensus via the decision of a &amp;quot;director&amp;quot; or similar.&lt;br /&gt;
* Is there a formal process for external review of standard proposals by interest groups (nonmembers)?&lt;br /&gt;
: Since anyone may participate in the development process and make proposals, there is no need for a separate formal process to include proposals by nonmembers.&lt;br /&gt;
&lt;br /&gt;
=== Due Process ===&lt;br /&gt;
The due process evaluation criteria relates to the level of respect of each member of the organisation with regard to its rights. More specifically, it must be assured that if a member believes an error has been made in the process of defining a formal specification, it must be possible to appeal this to an independent, higher instance. The question is therefore: can a member formally appeal or raise objections to a procedure or to a technical specification to an independent, higher instance?&lt;br /&gt;
&lt;br /&gt;
: Yes.  Even if a member fails an appeal within the organization, because all of the technology Xiph standardizes is open and freely implementable, they are always free to develop their own, competing version.  Such competing versions may even still be eligible for standardization under the Xiph umbrella.&lt;br /&gt;
&lt;br /&gt;
=== Changes to the formal specification ===&lt;br /&gt;
The suggested changes made to a formal specification need to be presented, evaluated and approved in the same way as the formal specification was first defined. This criteria therefore applies the above criteria to the changes made to the formal specification(availability of documentation, Intellectual Property Right, accessibility, interoperability governance, meeting and consultation, consensus, due process).&lt;br /&gt;
&lt;br /&gt;
: The exact same process is used for revisions to the standard as was used for the original development of the standard, and thus the answers to all of the above questions remain the same.&lt;br /&gt;
&lt;br /&gt;
=== Support ===&lt;br /&gt;
It is critical that the organisation takes responsibility for the formal specification throughout its life span. This can be done in several ways such as for example a regular periodic review of the formal specification. The support criteria relates to the level of commitment the organisation has taken to support the formal specification throughout its life: &lt;br /&gt;
* does the organisation provide support until removal of the published formal specification from public domain (Including this process? &lt;br /&gt;
: Xiph.Org standards are never removed from the public domain.  Xiph endeavors to provide support for as long as the standard remains in use.&lt;br /&gt;
* does the organisation make the formal specification still available even when in non-maintenance mode?&lt;br /&gt;
: Yes.  All Xiph.Org standards are freely licensed and will always be available.&lt;br /&gt;
* does the organisation add new features and keep the formal specification up-to-date?&lt;br /&gt;
: Yes.  Xiph maintains its ecosystem of standards on a continuous basis.&lt;br /&gt;
* does the organisation rectify problems identified in initial implementations?&lt;br /&gt;
: Yes.  Xiph maintains [https://trac.xiph.org/report a problem reporting system] that is open to the public, and invites everyone to submit suggestions for improvements.  Improvements are made both to the standards documents and to the reference implementations.&lt;br /&gt;
* does the organisation only create the formal specification?&lt;br /&gt;
: No.  Xiph also produces high-quality reusable reference implementations of its standards, released under an open license.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/IDABC_Questionnaire_2009</id>
		<title>IDABC Questionnaire 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/IDABC_Questionnaire_2009"/>
				<updated>2009-11-15T23:32:10Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: some word smithing to clarify &amp;quot;standards&amp;quot; of Xiph&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Context =&lt;br /&gt;
We received [http://lists.xiph.org/pipermail/theora/2009-November/002996.html an e-mail] from a consultant studying the suitability of Theora for use in &amp;quot;eGovernment&amp;quot;, on behalf of the [http://ec.europa.eu/idabc/ IDABC], an EU governmental agency responsible for &amp;quot;Interoperability&amp;quot; with an emphasis on open source.  The investigation is in the context of [http://ec.europa.eu/idabc/en/document/7728 European Interoperability Framework], about which there has been [http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2620&amp;amp;blogid=14&amp;amp;pn=1 some real controversy].&lt;br /&gt;
&lt;br /&gt;
The method of assessment is the Common Assessment Method for Standards and Specifications, including the questions below.&lt;br /&gt;
&lt;br /&gt;
= CAMSS Questions =&lt;br /&gt;
== Part 4: Market Criteria ==&lt;br /&gt;
&lt;br /&gt;
This group of Market criteria analyses the formal specification in the scope of its market environment, and more precisely it examines the implementations of the formal specification and the market players. This implies identifying to which extent the formal specification benefits from market support and wide adoption, what are its level of maturity and its capacity of reusability.&lt;br /&gt;
&lt;br /&gt;
Market support is evaluated through an analysis of how many products implementing the formal specification exist, what their market share is and who their end-users are. The quality and the completeness (in case of partitioning) of the implementations of the formal specification can also be analysed. Availability of existing or planned mechanisms to assess conformity of implementations to the standard or to the specification could also be identified. The existence of at least one reference implementation (i.e.: mentioning a recognized certification process) - and of which one is an open source implementation - can also be relevant to the assessment. Wide adoption can also be assessed across domains (i.e.: public and private sectors), in an open environment, and/or in a similar field (i.e.: best practices).&lt;br /&gt;
&lt;br /&gt;
A formal specification is mature if it has been in use and development for long enough that most of its initial problems have been overcome and its underlying technology is well understood and well defined. Maturity is also assessed by identifying if all aspects of the formal specification are considered as validated by usage, (i.e.: if the formal specification is partitioned), and if the reported issues have been solved and documented.&lt;br /&gt;
&lt;br /&gt;
Reusability of a formal specification is enabled if it includes guidelines for its implementation in a given context. The identification of successful implementations of the standard or specification should focus on good practices in a similar field. Its incompatibility with related standards or specifications should also be taken into account.&lt;br /&gt;
&lt;br /&gt;
The ideas behind the Market Criteria can also be expressed in the form of the following questions:&lt;br /&gt;
&lt;br /&gt;
=== Market support ===&lt;br /&gt;
* Does the standard have strong support in the marketplace? &lt;br /&gt;
: Yes.  For example, among web browsers, support for Xiph's Ogg, Theora, and Vorbis standards is now included by default in Mozilla Firefox, Google Chrome, and the latest versions of Opera, representing hundreds of millions of installed users just in this market alone. Further, a QuickTime component exists which enables use of Xiph's Ogg, Theora, and Vorbis standards in all Mac OS X applications that make use of the QuickTime framework - which includes Safari/Webkit, iMovie, QuickTime, and many others. On Windows, DirectShow filters exist which also enable all Windows applications that use the DirectShow framework to use Xiph's Ogg, Theora, and Vorbis standards.&lt;br /&gt;
* What products exist for this formal specification ? &lt;br /&gt;
: Theora is a video codec, and as such the required products are encoders, decoders, and transmission systems.  All three types of products are widely available for Theora.&lt;br /&gt;
* How many implementations of the formal specification are there? &lt;br /&gt;
: Xiph does not require implementors to acquire any license before implementing the specification.  Therefore, we do not have a definitive count of the number of implementations.  In addition to the reference implementation, which has been ported to most modern platforms and highly optimized for x86 and ARM CPUs and TI C64x+ DSPs, we are aware of a number of independent, conformant or mostly-conformant implementations.  These include two C decoders (ffmpeg and QTheora), a Java decoder (Jheora), a C# decoder, an FPGA decoder, and an FPGA encoder.&lt;br /&gt;
* Are there products from different suppliers in the market that implement this formal specification ? &lt;br /&gt;
: Yes.  Corporations such as Atari, Canonical, DailyMotion, Elphel, Fluendo, Google, Mozilla, Novell, Opera, Red Hat, Sun Microsystems, Ubisoft, and countless others have supplied products with an implementation of the Theora standard.&lt;br /&gt;
* Are there many products readily available from a variety of suppliers? &lt;br /&gt;
: Yes. Theora has been deployed in embedded devices, security cameras, video games, video conferencing systems, web browsers, home theater systems, and many other products.  A complete, legal, open-source reference implementation can also be downloaded free of charge, including components for all major media frameworks (DirectShow, gstreamer, and Quicktime), giving the plethora of applications which use these frameworks the ability to use the codec.&lt;br /&gt;
* What is the market share of the products implementing the formal specification, versus other implementations of competing formal specifications ? &lt;br /&gt;
: Theora playback is extremely widely available, covering virtually the entire market of personal computers.  Theora is also increasingly available in mobile and embedded devices.  Since we do not require licensing for products that implement the specification, we do not have market share numbers that can be compared with competing formal specifications.  Because implementations are readily available and free, Theora is included in many products that support multiple codecs, and is sometimes the only video codec included in free software products.&lt;br /&gt;
* Who are the end-users of these products implementing the formal specification?&lt;br /&gt;
: The end users are television viewers, video gamers, web surfers, movie makers, business people, video distribution services, and anyone else who interacts with moving pictures.&lt;br /&gt;
&lt;br /&gt;
=== Maturity ===&lt;br /&gt;
* Are there any existing or planned mechanisms to assess conformity of the implementations of the formal specification? &lt;br /&gt;
: Yes.  In addition to a continuous peer review process, we maintain a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that allow implementors to assess decoder conformity. We also provide free online developer support and testing for those attempting to make a conforming implementation. An [http://validator.xiph.org/ online validation service] is available.&lt;br /&gt;
* Is there a reference implementation (i.e.: mentioning a recognized certification process)? &lt;br /&gt;
: Yes.  Xiph maintains a reference implementation called [http://downloads.xiph.org/releases/theora/ libtheora].  In addition to serving as a reference, libtheora is also highly optimized to achieve the maximum possible speed, accuracy, reliability, efficiency, and video quality.  As a result, many implementors of Theora adopt the reference implementation.&lt;br /&gt;
* Is there an open source implementation? &lt;br /&gt;
: Yes.  libtheora is made available under a completely permissive BSD-like license.  Its open-source nature also contributes to its quality as a reference implementation, as implementors are welcome to contribute their improvements to the reference.  There are also several other open source implementations.&lt;br /&gt;
* Does the formal specification show wide adoption? &lt;br /&gt;
** across different domains? (I.e.: public and private) &lt;br /&gt;
: Yes.  In addition to the private companies mentioned in the previous section, Theora has also been specified as the sole format supported by non-profit institutions such as Wikipedia, currently the 6th largest website in the world, or as one of a small number of preferred formats supported by other public organizations, such as the Norwegian government.&lt;br /&gt;
** in an open environment? &lt;br /&gt;
: Yes.  On open/free operating systems such as those distributed by Novell/SuSE, Canonical, and Red Hat, Theora is the primary default video codec.&lt;br /&gt;
** in a similar field? (i.e.: can best practices be identified?) &lt;br /&gt;
* Has the formal specification been in use and development long enough that most of its initial problems have been overcome? &lt;br /&gt;
: Yes.  Theora was derived from VP3, which was originally released in May 2000.  The Theora specification was completed in 2004.  Theora has now been used in a wide variety of applications, on the full spectrum of computing devices.&lt;br /&gt;
* Is the underlying technology of the standard well-understood? (e.g., a reference model is well defined, appropriate concepts of the technology are in widespread use, the technology may have been in use for many years, a formal mathematical model is defined, etc.) &lt;br /&gt;
: Yes.  The underlying technology has been in use for nearly a decade, and most of the concepts have been in widespread use for even longer.&lt;br /&gt;
* Is the formal specification based upon technology that has not been well-defined and may be relatively new? &lt;br /&gt;
: No.  The formal specification is based on technology from the On2 VP3 codec, which is substantially similar to simple block-transform codecs like H.261. This class of codecs is extremely well understood, and has been actively in use for over 20 years.&lt;br /&gt;
* Has the formal specification been revised? (Yes/No, Nof) &lt;br /&gt;
: Yes.  The specification of the encoder is continuously revised based on user feedback to improve clarity and accuracy. The specification of the decoding part has been stable for years.&lt;br /&gt;
* Is the formal specification under the auspices of an architectural board? (Yes/No) &lt;br /&gt;
: No.  Although officially maintained by the Xiph.Org Foundation, anyone is free to join this organization, and one need not even be a member to make contributions. However, the core developers will review contributions and make sure they do not contradict the general architecture and they work well with the existing code and the test cases.&lt;br /&gt;
* Is the formal specification partitioned in its functionality? (Yes/No) &lt;br /&gt;
: No.  Theora is very deliberately not partitioned, to avoid the confusion created by a &amp;quot;standard&amp;quot; composed of many incompatible &amp;quot;profiles&amp;quot;.  The Theora standard does not have any optional components.  A compliant Theora decoder can correctly process any Theora stream.&lt;br /&gt;
** To what extent does each partition participate to its overall functionality? (NN%) &lt;br /&gt;
: N/A.&lt;br /&gt;
** To what extent is each partition implemented? (NN%) (cf market adoption)&lt;br /&gt;
: N/A.&lt;br /&gt;
&lt;br /&gt;
=== Re-usability === &lt;br /&gt;
* Does the formal specification provide guidelines for its implementation in a given organisation? &lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] provides &amp;quot;non-normative&amp;quot; advice and explanation for implementors of Theora decoders and encoders, including example algorithms for implementing required mathematical transforms.  Xiph also maintains [http://wiki.xiph.org/Main_Page a documentation base] for implementors who desire more guidelines beyond the specification itself.&lt;br /&gt;
* Can other cases where similar systems implement the formal specification be considered as successful implementations and good practices? &lt;br /&gt;
: Xiph's standards have successfully been implemented by many organisations in a wide variety of environments.  We maintain (non-exhaustive) [http://wiki.xiph.org/TheoraSoftwarePlayers lists] of products which implement Theora support, many of them open source, so that others may use them as a reference when preparing their own products. A particularly well known, independent, but interoperable implementation is provided by the FFmpeg open source project.&lt;br /&gt;
* Is its compatibility with related formal specification documented?&lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] also documents the use of Theora within the [http://www.ietf.org/rfc/rfc3533.txt standard Ogg encapsulation format], and the [http://svn.xiph.org/trunk/theora/doc/draft-ietf-avt-rtp-theora-00.txt TheoraRTP draft specification] explains how to transmit Theora using the [http://tools.ietf.org/html/rfc3550 RTP standard].  In addition, the specification documents Theora's compatibility with ITU-R B.470, ITU-R B.601, ITU-R B.709, SMPTE-170M, [http://tools.ietf.org/html/rfc2044 UTF-8], ISO 10646, and [http://www.xiph.org/vorbis/doc/Vorbis_I_spec.pdf Ogg Vorbis].&lt;br /&gt;
&lt;br /&gt;
== Part 5: Standardisation Criteria == &lt;br /&gt;
From Idabc-camss&lt;br /&gt;
&lt;br /&gt;
Note: Throughout this section, “Organisation” refers to the standardisation/fora/consortia body in charge of the formal specification.&lt;br /&gt;
&lt;br /&gt;
Significant characteristics of the way the organisation operates are for example the way it gives the possibility to stakeholders to influence the evolution of the formal specification, or which conditions it attaches to the use of the formal specification or its implementation. Moreover, it is important to know how the formal specification is defined, supported, and made available, as well as how interaction with stakeholders is managed by the organisation during these steps. Governance of interoperability testing with other formal specifications is also indicative.&lt;br /&gt;
&lt;br /&gt;
The standardisation criteria analyses therefore the following elements:&lt;br /&gt;
&lt;br /&gt;
=== Availability of Documentation ===&lt;br /&gt;
The availability of documentation criteria is linked to cost and online availability. Access to all preliminary results documentation can be online, online for members only, offline, offline, for members only or not available. Access can be free or for a fee (which fee?).&lt;br /&gt;
: Every Xiph standard is permanently available online to everyone at no cost.  For example, we invite everyone to download [http://theora.org/doc/Theora.pdf the most up-to-date copy of the Theora specification], and [http://xiph.org/vorbis/doc/Vorbis_I_spec.html the latest revision of Vorbis].  All previous revisions are available from Xiph's [http://svn.xiph.org/ revision control system].&lt;br /&gt;
&lt;br /&gt;
=== Intellectual Property Right ===&lt;br /&gt;
The Intellectual Property Rights evaluation criteria relates to the ability for implementers to use the formal specification in products without legal or financial implications. The IPR policy of the organisation is therefore evaluated according to: &lt;br /&gt;
* the availability of the IPR or copyright policies of the organisation (available on-line or off-line, or not available);&lt;br /&gt;
: The reference implementations of each codec include all necessary IPR and copyright licenses for that codec, including all documentation, and are freely available to everyone.&lt;br /&gt;
* the organisation’s governance to disclose any IPR from any contributor (ex-ante, online, offline, for free for all, for a fee for all, for members only, not available);&lt;br /&gt;
: Xiph does not require the identification of specific patents that may be required to implement a standard, however it does require an open-source compatible, royalty free license from a contributor for any such patents they may own before the corresponding technology can be included in a standard. These license are made available online, for free, to all parties.&lt;br /&gt;
* the level of IPR set &amp;quot;mandatory&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability , patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none); &lt;br /&gt;
: All standards, specifications, and software published by the Xiph.Org Foundation are required to have &amp;quot;open-source compatible&amp;quot; IPR.  This means that a contribution must either be entirely clear of any known patents, or any patents that read upon the contribution must be available under a transferable, irrevocable public nonassertion agreement to all people everywhere.  For example, see [http://svn.xiph.org/trunk/theora/LICENSE our On2 patent nonassertion warrant].  Other common &amp;quot;royalty free&amp;quot; patent licenses are either not transferable, revocable under certain conditions (such as patent infringement litigation against the originating party), or otherwise impose restrictions that would prevent distribution under common [http://www.opensource.org/ OSI]-approved licenses.  These would not be acceptable.&lt;br /&gt;
* the level of IPR &amp;quot;recommended&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability, patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none). [Note: RAND (Reasonable and Non Discriminatory License) is based on a &amp;quot;fairness&amp;quot; concept. Companies agree that if they receive any patents on technologies that become essential to the standard then they agree to allow other groups attempting to implement the standard to use these patents and they agree that the charges for the patents shall be reasonable. &amp;quot;RAND with limited availability&amp;quot; is a version of RAND where the &amp;quot;reasonable charges&amp;quot; have an upper limit.]&lt;br /&gt;
: Xiph's recommended IPR requirements are the same as our mandatory requirements.&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
&lt;br /&gt;
The accessibility evaluation criteria describe the importance of equal and safe accessibility by the users of implementations of formal specifications. This aspect can be related to safety (physical safety and conformance safety) and accessibility of physical impaired people (design for all).&lt;br /&gt;
&lt;br /&gt;
Focus is made particularly on accessibility and conformance safety. Conformance testing is testing to determine whether a system meets some specified formal specification. The result can be results from a test suite. Conformance validation is when the conformance test uniquely qualifies a given implementation as conformant or not. Conformance certification is a process that provides a public and easily visible &amp;quot;stamp of approval&amp;quot; that an implementation of a standard validates as conformant.&lt;br /&gt;
&lt;br /&gt;
The following questions allow an assessment of accessibility and conformance safety: &lt;br /&gt;
* Does a mechanism that ensures disability support by a formal specification exist? (Y/N) &lt;br /&gt;
: Yes.  Xiph ensures support for users with disabilities by providing specifications for accessible technologies independent of the codec itself.  Notable Xiph specifications include [http://wiki.xiph.org/OggKate OggKate] and [http://wiki.xiph.org/index.php/CMML CMML], which provide subtitles for the hearing-impaired, as well as [http://wiki.xiph.org/Ogg_Skeleton Skeleton], which can specify scene description audio tracks for the visually impaired.  When Theora is transmitted or stored in an Ogg container, it is automatically compatible with these accessibility measures.&lt;br /&gt;
* Is conformance governance always part of a standard? (Y/N) &lt;br /&gt;
: No.  Xiph does not normally provide a formal conformance testing process as part of a standard.&lt;br /&gt;
* Is a conformance test offered to implementers? (Y/N) &lt;br /&gt;
: Yes.  Xiph maintains a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that can be used by implementors to confirm basic conformance.&lt;br /&gt;
* Is conformance validation available to implementers? (Y/N) &lt;br /&gt;
: Yes.  Informal conformance testing is available to implementors upon request, and Xiph has provided such testing for a number of implementations in the past.&lt;br /&gt;
* Is conformance certification available? (Y/N) &lt;br /&gt;
: Yes.  Xiph does not require certification, but maintains the right to withhold the use of our trademarks from implementors that act in bad faith.  Implementors may, however, request explicit permission to use our trademarks with a conforming implementation.&lt;br /&gt;
* Is localisation of a formal specification possible? (Y/N)&lt;br /&gt;
: Yes.  We welcome anyone who wishes to translate Xiph specifications into other languages.  We have no policy requiring that the normative specification be written in English.&lt;br /&gt;
&lt;br /&gt;
=== Interoperability governance === &lt;br /&gt;
The interoperability governance evaluation criteria relates to how interoperability is identified and maintained between interoperable formal specifications. In order to do this, the organisation may provide governance for: &lt;br /&gt;
* open identification in formal specifications, &lt;br /&gt;
* open negotiation in formal specifications, &lt;br /&gt;
* open selection in formal specifications. &lt;br /&gt;
&lt;br /&gt;
=== Meeting and consultation ===&lt;br /&gt;
The meeting and consultation evaluation criteria relates to the process of defining a formal specification. As formal specifications are usually defined by committees, and these committees normally consist of members of the organisation, this criteria studies how to become a member and which are the financial barriers for this, as well as how are non-members able to have an influence on the process of defining the formal specification. It analyses: &lt;br /&gt;
* if the organisation is open to all types of companies and organisations and to individuals; &lt;br /&gt;
: Yes.  Xiph welcomes representatives from all companies and organizations.&lt;br /&gt;
* if the standardisation process may specifically allow participation of members with limited abilities when relevant; &lt;br /&gt;
: Yes.  Standardization occurs almost entirely in internet communications channels, allowing participants with disabilities to engage fully in the standards development process.  We also encourage nonexperts and students to assist us as they can, and to learn about Xiph technologies by participating in the standards development process.&lt;br /&gt;
* if meetings are open to all members;&lt;br /&gt;
: Xiph meetings are open to everyone.  We charge no fee for and place no restrictions on attendance or participation.  For example, anyone interested in contributing to the Theora specification may join [http://lists.xiph.org/pipermail/theora-dev/ the Theora development mailing list].&lt;br /&gt;
* if all can participate in the formal specification creation process; &lt;br /&gt;
: Yes.  All people are welcome to participate in the specification creation process.  No dues or fees are required to participate&lt;br /&gt;
* if non-members can participate in the formal specification creation process.&lt;br /&gt;
: Yes.  Xiph does not maintain an explicit list of members, and no one is excluded from contributing to specifications as they are developed.&lt;br /&gt;
&lt;br /&gt;
=== Consensus ===&lt;br /&gt;
Consensus is decision making primarily with regard to the approval of formal specifications and review with interest groups (non-members). The consensus evaluation criterion is evaluated with the following questions:&lt;br /&gt;
* Does the organisation have a stated objective of reaching consensus when making decisions on standards? &lt;br /&gt;
: There is no explicitly stated objective of reaching consensus.&lt;br /&gt;
* If consensus is not reached, can the standard be approved? (answers are: cannot be approved but referred back to working group/committee, approved with 75% majority, approved with 66% majority, approved with 51% majority, can be decided by a &amp;quot;director&amp;quot; or similar in the organisation).&lt;br /&gt;
: The standard can be approved without consensus via the decision of a &amp;quot;director&amp;quot; or similar.&lt;br /&gt;
* Is there a formal process for external review of standard proposals by interest groups (nonmembers)?&lt;br /&gt;
: Since anyone may participate in the development process and make proposals, there is no need for a separate formal process to include proposals by nonmembers.&lt;br /&gt;
&lt;br /&gt;
=== Due Process ===&lt;br /&gt;
The due process evaluation criteria relates to the level of respect of each member of the organisation with regard to its rights. More specifically, it must be assured that if a member believes an error has been made in the process of defining a formal specification, it must be possible to appeal this to an independent, higher instance. The question is therefore: can a member formally appeal or raise objections to a procedure or to a technical specification to an independent, higher instance?&lt;br /&gt;
&lt;br /&gt;
: Yes.  Even if a member fails an appeal within the organization, because all of the technology Xiph standardizes is open and freely implementable, they are always free to develop their own, competing version.  Such competing versions may even still be eligible for standardization under the Xiph umbrella.&lt;br /&gt;
&lt;br /&gt;
=== Changes to the formal specification ===&lt;br /&gt;
The suggested changes made to a formal specification need to be presented, evaluated and approved in the same way as the formal specification was first defined. This criteria therefore applies the above criteria to the changes made to the formal specification(availability of documentation, Intellectual Property Right, accessibility, interoperability governance, meeting and consultation, consensus, due process).&lt;br /&gt;
&lt;br /&gt;
: The exact same process is used for revisions to the standard as was used for the original development of the standard, and thus the answers to all of the above questions remain the same.&lt;br /&gt;
&lt;br /&gt;
=== Support ===&lt;br /&gt;
It is critical that the organisation takes responsibility for the formal specification throughout its life span. This can be done in several ways such as for example a regular periodic review of the formal specification. The support criteria relates to the level of commitment the organisation has taken to support the formal specification throughout its life: &lt;br /&gt;
* does the organisation provide support until removal of the published formal specification from public domain (Including this process? &lt;br /&gt;
: Xiph.Org standards are never removed from the public domain.  Xiph endeavors to provide support for as long as the standard remains in use.&lt;br /&gt;
* does the organisation make the formal specification still available even when in non-maintenance mode?&lt;br /&gt;
: Yes.  All Xiph.Org standards are freely licensed and will always be available.&lt;br /&gt;
* does the organisation add new features and keep the formal specification up-to-date?&lt;br /&gt;
: Yes.  Xiph maintains its ecosystem of standards on a continuous basis.&lt;br /&gt;
* does the organisation rectify problems identified in initial implementations?&lt;br /&gt;
: Yes.  Xiph maintains [https://trac.xiph.org/report a problem reporting system] that is open to the public, and invites everyone to submit suggestions for improvements.  Improvements are made both to the standards documents and to the reference implementations.&lt;br /&gt;
* does the organisation only create the formal specification?&lt;br /&gt;
: No.  Xiph also produces high-quality reusable reference implementations of its standards, released under an open license.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/IDABC_Questionnaire_2009</id>
		<title>IDABC Questionnaire 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/IDABC_Questionnaire_2009"/>
				<updated>2009-11-15T23:20:53Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: ups, type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Context =&lt;br /&gt;
We received [http://lists.xiph.org/pipermail/theora/2009-November/002996.html an e-mail] from a consultant studying the suitability of Theora for use in &amp;quot;eGovernment&amp;quot;, on behalf of the [http://ec.europa.eu/idabc/ IDABC], an EU governmental agency responsible for &amp;quot;Interoperability&amp;quot; with an emphasis on open source.  The investigation is in the context of [http://ec.europa.eu/idabc/en/document/7728 European Interoperability Framework], about which there has been [http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2620&amp;amp;blogid=14&amp;amp;pn=1 some real controversy].&lt;br /&gt;
&lt;br /&gt;
The method of assessment is the Common Assessment Method for Standards and Specifications, including the questions below.&lt;br /&gt;
&lt;br /&gt;
= CAMSS Questions =&lt;br /&gt;
== Part 4: Market Criteria ==&lt;br /&gt;
&lt;br /&gt;
This group of Market criteria analyses the formal specification in the scope of its market environment, and more precisely it examines the implementations of the formal specification and the market players. This implies identifying to which extent the formal specification benefits from market support and wide adoption, what are its level of maturity and its capacity of reusability.&lt;br /&gt;
&lt;br /&gt;
Market support is evaluated through an analysis of how many products implementing the formal specification exist, what their market share is and who their end-users are. The quality and the completeness (in case of partitioning) of the implementations of the formal specification can also be analysed. Availability of existing or planned mechanisms to assess conformity of implementations to the standard or to the specification could also be identified. The existence of at least one reference implementation (i.e.: mentioning a recognized certification process) - and of which one is an open source implementation - can also be relevant to the assessment. Wide adoption can also be assessed across domains (i.e.: public and private sectors), in an open environment, and/or in a similar field (i.e.: best practices).&lt;br /&gt;
&lt;br /&gt;
A formal specification is mature if it has been in use and development for long enough that most of its initial problems have been overcome and its underlying technology is well understood and well defined. Maturity is also assessed by identifying if all aspects of the formal specification are considered as validated by usage, (i.e.: if the formal specification is partitioned), and if the reported issues have been solved and documented.&lt;br /&gt;
&lt;br /&gt;
Reusability of a formal specification is enabled if it includes guidelines for its implementation in a given context. The identification of successful implementations of the standard or specification should focus on good practices in a similar field. Its incompatibility with related standards or specifications should also be taken into account.&lt;br /&gt;
&lt;br /&gt;
The ideas behind the Market Criteria can also be expressed in the form of the following questions:&lt;br /&gt;
&lt;br /&gt;
=== Market support ===&lt;br /&gt;
* Does the standard have strong support in the marketplace? &lt;br /&gt;
: Yes.  For example, among web browsers, support for Xiph's Ogg, Theora, and Vorbis standards is now included by default in Mozilla Firefox, Google Chrome, and the latest versions of Opera, representing hundreds of millions of installed users just in this market alone. Further, a QuickTime component exists which enables use of Xiph's Ogg, Theora, and Vorbis standards in all Mac OS X applications that make use of the QuickTime framework - which includes Safari/Webkit, iMovie, QuickTime, and many others. On Windows, DirectShow filters exist which also enable all Windows applications that use the DirectShow framework to use Xiph's Ogg, Theora, and Vorbis standards.&lt;br /&gt;
* What products exist for this formal specification ? &lt;br /&gt;
: Theora is a video codec, and as such the required products are encoders, decoders, and transmission systems.  All three types of products are widely available for Theora.&lt;br /&gt;
* How many implementations of the formal specification are there? &lt;br /&gt;
: Xiph does not require implementors to acquire any license before implementing the specification.  Therefore, we do not have a definitive count of the number of implementations.  In addition to the reference implementation, which has been ported to most modern platforms and highly optimized for x86 and ARM CPUs and TI C64x+ DSPs, we are aware of a number of independent, conformant or mostly-conformant implementations.  These include two C decoders (ffmpeg and QTheora), a Java decoder (Jheora), a C# decoder, an FPGA decoder, and an FPGA encoder.&lt;br /&gt;
* Are there products from different suppliers in the market that implement this formal specification ? &lt;br /&gt;
: Yes.  Corporations such as Atari, Canonical, DailyMotion, Elphel, Fluendo, Google, Mozilla, Novell, Opera, Red Hat, Sun Microsystems, Ubisoft, and countless others have supplied products with an implementation of the Theora standard.&lt;br /&gt;
* Are there many products readily available from a variety of suppliers? &lt;br /&gt;
: Yes. Theora has been deployed in embedded devices, security cameras, video games, video conferencing systems, web browsers, home theater systems, and many other products.  A complete, legal, open-source reference implementation can also be downloaded free of charge, including components for all major media frameworks (DirectShow, gstreamer, and Quicktime), giving the plethora of applications which use these frameworks the ability to use the codec.&lt;br /&gt;
* What is the market share of the products implementing the formal specification, versus other implementations of competing formal specifications ? &lt;br /&gt;
: Theora playback is extremely widely available, covering virtually the entire market of personal computers.  Theora is also increasingly available in mobile and embedded devices.  Since we do not require licensing for products that implement the specification, we do not have market share numbers that can be compared with competing formal specifications.  Because implementations are readily available and free, Theora is included in many products that support multiple codecs, and is sometimes the only video codec included in free software products.&lt;br /&gt;
* Who are the end-users of these products implementing the formal specification?&lt;br /&gt;
: The end users are television viewers, video gamers, web surfers, movie makers, business people, video distribution services, and anyone else who interacts with moving pictures.&lt;br /&gt;
&lt;br /&gt;
=== Maturity ===&lt;br /&gt;
* Are there any existing or planned mechanisms to assess conformity of the implementations of the formal specification? &lt;br /&gt;
: Yes.  In addition to a continuous peer review process, we maintain a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that allow implementors to assess decoder conformity. We also provide free online developer support and testing for those attempting to make a conforming implementation. An [http://validator.xiph.org/ online validation service] is available.&lt;br /&gt;
* Is there a reference implementation (i.e.: mentioning a recognized certification process)? &lt;br /&gt;
: Yes.  Xiph maintains a reference implementation called [http://downloads.xiph.org/releases/theora/ libtheora].  In addition to serving as a reference, libtheora is also highly optimized to achieve the maximum possible speed, accuracy, reliability, efficiency, and video quality.  As a result, many implementors of Theora adopt the reference implementation.&lt;br /&gt;
* Is there an open source implementation? &lt;br /&gt;
: Yes.  libtheora is made available under a completely permissive BSD-like license.  Its open-source nature also contributes to its quality as a reference implementation, as implementors are welcome to contribute their improvements to the reference.  There are also several other open source implementations.&lt;br /&gt;
* Does the formal specification show wide adoption? &lt;br /&gt;
** across different domains? (I.e.: public and private) &lt;br /&gt;
: Yes.  In addition to the private companies mentioned in the previous section, Theora has also been specified as the sole format supported by non-profit institutions such as Wikipedia, currently the 6th largest website in the world, or as one of a small number of preferred formats supported by other public organizations, such as the Norwegian government.&lt;br /&gt;
** in an open environment? &lt;br /&gt;
: Yes.  On open/free operating systems such as those distributed by Novell/SuSE, Canonical, and Red Hat, Theora is the primary default video codec.&lt;br /&gt;
** in a similar field? (i.e.: can best practices be identified?) &lt;br /&gt;
* Has the formal specification been in use and development long enough that most of its initial problems have been overcome? &lt;br /&gt;
: Yes.  Theora was derived from VP3, which was originally released in May 2000.  The Theora specification was completed in 2004.  Theora has now been used in a wide variety of applications, on the full spectrum of computing devices.&lt;br /&gt;
* Is the underlying technology of the standard well-understood? (e.g., a reference model is well defined, appropriate concepts of the technology are in widespread use, the technology may have been in use for many years, a formal mathematical model is defined, etc.) &lt;br /&gt;
: Yes.  The underlying technology has been in use for nearly a decade, and most of the concepts have been in widespread use for even longer.&lt;br /&gt;
* Is the formal specification based upon technology that has not been well-defined and may be relatively new? &lt;br /&gt;
: No.  The formal specification is based on technology from the On2 VP3 codec, which is substantially similar to simple block-transform codecs like H.261. This class of codecs is extremely well understood, and has been actively in use for over 20 years.&lt;br /&gt;
* Has the formal specification been revised? (Yes/No, Nof) &lt;br /&gt;
: Yes.  The specification of the encoder is continuously revised based on user feedback to improve clarity and accuracy. The specification of the decoding part has been stable for years.&lt;br /&gt;
* Is the formal specification under the auspices of an architectural board? (Yes/No) &lt;br /&gt;
: No.  Although officially maintained by the Xiph.Org Foundation, anyone is free to join this organization, and one need not even be a member to make contributions. However, the core developers will review contributions and make sure they do not contradict the general architecture and they work well with the existing code and the test cases.&lt;br /&gt;
* Is the formal specification partitioned in its functionality? (Yes/No) &lt;br /&gt;
: No.  Theora is very deliberately not partitioned, to avoid the confusion created by a &amp;quot;standard&amp;quot; composed of many incompatible &amp;quot;profiles&amp;quot;.  The Theora standard does not have any optional components.  A compliant Theora decoder can correctly process any Theora stream.&lt;br /&gt;
** To what extent does each partition participate to its overall functionality? (NN%) &lt;br /&gt;
: N/A.&lt;br /&gt;
** To what extent is each partition implemented? (NN%) (cf market adoption)&lt;br /&gt;
: N/A.&lt;br /&gt;
&lt;br /&gt;
=== Re-usability === &lt;br /&gt;
* Does the formal specification provide guidelines for its implementation in a given organisation? &lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] provides &amp;quot;non-normative&amp;quot; advice and explanation for implementors of Theora decoders and encoders, including example algorithms for implementing required mathematical transforms.  Xiph also maintains [http://wiki.xiph.org/Main_Page a documentation base] for implementors who desire more guidelines beyond the specification itself.&lt;br /&gt;
* Can other cases where similar systems implement the formal specification be considered as successful implementations and good practices? &lt;br /&gt;
: Xiph's standards have successfully been implemented by many organisations in a wide variety of environments.  We maintain (non-exhaustive) [http://wiki.xiph.org/TheoraSoftwarePlayers lists] of products which implement Theora support, many of them open source, so that others may use them as a reference when preparing their own products. A particularly well known, independent, but interoperable implementation is provided by the FFmpeg open source project.&lt;br /&gt;
* Is its compatibility with related formal specification documented?&lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] also documents the use of Theora within the [http://www.ietf.org/rfc/rfc3533.txt standard Ogg encapsulation format], and the [http://svn.xiph.org/trunk/theora/doc/draft-ietf-avt-rtp-theora-00.txt TheoraRTP draft specification] explains how to transmit Theora using the [http://tools.ietf.org/html/rfc3550 RTP standard].  In addition, the specification documents Theora's compatibility with ITU-R B.470, ITU-R B.601, ITU-R B.709, SMPTE-170M, [http://tools.ietf.org/html/rfc2044 UTF-8], ISO 10646, and [http://www.xiph.org/vorbis/doc/Vorbis_I_spec.pdf Ogg Vorbis].&lt;br /&gt;
&lt;br /&gt;
== Part 5: Standardisation Criteria == &lt;br /&gt;
From Idabc-camss&lt;br /&gt;
&lt;br /&gt;
Note: Throughout this section, “Organisation” refers to the standardisation/fora/consortia body in charge of the formal specification.&lt;br /&gt;
&lt;br /&gt;
Significant characteristics of the way the organisation operates are for example the way it gives the possibility to stakeholders to influence the evolution of the formal specification, or which conditions it attaches to the use of the formal specification or its implementation. Moreover, it is important to know how the formal specification is defined, supported, and made available, as well as how interaction with stakeholders is managed by the organisation during these steps. Governance of interoperability testing with other formal specifications is also indicative.&lt;br /&gt;
&lt;br /&gt;
The standardisation criteria analyses therefore the following elements:&lt;br /&gt;
&lt;br /&gt;
=== Availability of Documentation ===&lt;br /&gt;
The availability of documentation criteria is linked to cost and online availability. Access to all preliminary results documentation can be online, online for members only, offline, offline, for members only or not available. Access can be free or for a fee (which fee?).&lt;br /&gt;
: Every Xiph standard is permanently available online to everyone at no cost.  For example, we invite everyone to download [http://theora.org/doc/Theora.pdf the most up-to-date copy of the Theora specification], and [http://xiph.org/vorbis/doc/Vorbis_I_spec.html the latest revision of Vorbis].  All previous revisions are available from Xiph's [http://svn.xiph.org/ revision control system].&lt;br /&gt;
&lt;br /&gt;
=== Intellectual Property Right ===&lt;br /&gt;
The Intellectual Property Rights evaluation criteria relates to the ability for implementers to use the formal specification in products without legal or financial implications. The IPR policy of the organisation is therefore evaluated according to: &lt;br /&gt;
* the availability of the IPR or copyright policies of the organisation (available on-line or off-line, or not available);&lt;br /&gt;
: The reference implementations of each codec include all necessary IPR and copyright licenses for that codec, including all documentation, and are freely available to everyone.&lt;br /&gt;
* the organisation’s governance to disclose any IPR from any contributor (ex-ante, online, offline, for free for all, for a fee for all, for members only, not available);&lt;br /&gt;
: Xiph does not require the identification of specific patents that may be required to implement a standard, however it does require an open-source compatible, royalty free license from a contributor for any such patents they may own before the corresponding technology can be included in a standard. These license are made available online, for free, to all parties.&lt;br /&gt;
* the level of IPR set &amp;quot;mandatory&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability , patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none); &lt;br /&gt;
: All standards published by the Xiph.Org Foundation are required to have &amp;quot;open-source compatible&amp;quot; IPR.  This means that a standard must either be entirely clear of any known patents, or any patents that read upon the standard must be available under a transferable, irrevocable public nonassertion agreement to all people everywhere.  For example, see [http://svn.xiph.org/trunk/theora/LICENSE our On2 patent nonassertion warrant].  Other common &amp;quot;royalty free&amp;quot; patent licenses are either not transferable, revocable under certain conditions (such as patent infringement litigation against the originating party), or otherwise impose restrictions that would prevent distribution under common [http://www.opensource.org/ OSI]-approved licenses.  These would not be acceptable.&lt;br /&gt;
* the level of IPR &amp;quot;recommended&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability, patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none). [Note: RAND (Reasonable and Non Discriminatory License) is based on a &amp;quot;fairness&amp;quot; concept. Companies agree that if they receive any patents on technologies that become essential to the standard then they agree to allow other groups attempting to implement the standard to use these patents and they agree that the charges for the patents shall be reasonable. &amp;quot;RAND with limited availability&amp;quot; is a version of RAND where the &amp;quot;reasonable charges&amp;quot; have an upper limit.]&lt;br /&gt;
: Xiph's recommended IPR requirements are the same as our mandatory requirements.&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
&lt;br /&gt;
The accessibility evaluation criteria describe the importance of equal and safe accessibility by the users of implementations of formal specifications. This aspect can be related to safety (physical safety and conformance safety) and accessibility of physical impaired people (design for all).&lt;br /&gt;
&lt;br /&gt;
Focus is made particularly on accessibility and conformance safety. Conformance testing is testing to determine whether a system meets some specified formal specification. The result can be results from a test suite. Conformance validation is when the conformance test uniquely qualifies a given implementation as conformant or not. Conformance certification is a process that provides a public and easily visible &amp;quot;stamp of approval&amp;quot; that an implementation of a standard validates as conformant.&lt;br /&gt;
&lt;br /&gt;
The following questions allow an assessment of accessibility and conformance safety: &lt;br /&gt;
* Does a mechanism that ensures disability support by a formal specification exist? (Y/N) &lt;br /&gt;
: Yes.  Xiph ensures support for users with disabilities by providing specifications for accessible technologies independent of the codec itself.  Notable Xiph specifications include [http://wiki.xiph.org/OggKate OggKate] and [http://wiki.xiph.org/index.php/CMML CMML], which provide subtitles for the hearing-impaired, as well as [http://wiki.xiph.org/Ogg_Skeleton Skeleton], which can specify scene description audio tracks for the visually impaired.  When Theora is transmitted or stored in an Ogg container, it is automatically compatible with these accessibility measures.&lt;br /&gt;
* Is conformance governance always part of a standard? (Y/N) &lt;br /&gt;
: No.  Xiph does not normally provide a formal conformance testing process as part of a standard.&lt;br /&gt;
* Is a conformance test offered to implementers? (Y/N) &lt;br /&gt;
: Yes.  Xiph maintains a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that can be used by implementors to confirm basic conformance.&lt;br /&gt;
* Is conformance validation available to implementers? (Y/N) &lt;br /&gt;
: Yes.  Informal conformance testing is available to implementors upon request, and Xiph has provided such testing for a number of implementations in the past.&lt;br /&gt;
* Is conformance certification available? (Y/N) &lt;br /&gt;
: Yes.  Xiph does not require certification, but maintains the right to withhold the use of our trademarks from implementors that act in bad faith.  Implementors may, however, request explicit permission to use our trademarks with a conforming implementation.&lt;br /&gt;
* Is localisation of a formal specification possible? (Y/N)&lt;br /&gt;
: Yes.  We welcome anyone who wishes to translate Xiph specifications into other languages.  We have no policy requiring that the normative specification be written in English.&lt;br /&gt;
&lt;br /&gt;
=== Interoperability governance === &lt;br /&gt;
The interoperability governance evaluation criteria relates to how interoperability is identified and maintained between interoperable formal specifications. In order to do this, the organisation may provide governance for: &lt;br /&gt;
* open identification in formal specifications, &lt;br /&gt;
* open negotiation in formal specifications, &lt;br /&gt;
* open selection in formal specifications. &lt;br /&gt;
&lt;br /&gt;
=== Meeting and consultation ===&lt;br /&gt;
The meeting and consultation evaluation criteria relates to the process of defining a formal specification. As formal specifications are usually defined by committees, and these committees normally consist of members of the organisation, this criteria studies how to become a member and which are the financial barriers for this, as well as how are non-members able to have an influence on the process of defining the formal specification. It analyses: &lt;br /&gt;
* if the organisation is open to all types of companies and organisations and to individuals; &lt;br /&gt;
: Yes.  Xiph welcomes representatives from all companies and organizations.&lt;br /&gt;
* if the standardisation process may specifically allow participation of members with limited abilities when relevant; &lt;br /&gt;
: Yes.  Standardization occurs almost entirely in internet communications channels, allowing participants with disabilities to engage fully in the standards development process.  We also encourage nonexperts and students to assist us as they can, and to learn about Xiph technologies by participating in the standards development process.&lt;br /&gt;
* if meetings are open to all members;&lt;br /&gt;
: Xiph meetings are open to everyone.  We charge no fee for and place no restrictions on attendance or participation.  For example, anyone interested in contributing to the Theora specification may join [http://lists.xiph.org/pipermail/theora-dev/ the Theora development mailing list].&lt;br /&gt;
* if all can participate in the formal specification creation process; &lt;br /&gt;
: Yes.  All people are welcome to participate in the specification creation process.  No dues or fees are required to participate&lt;br /&gt;
* if non-members can participate in the formal specification creation process.&lt;br /&gt;
: Yes.  Xiph does not maintain an explicit list of members, and no one is excluded from contributing to specifications as they are developed.&lt;br /&gt;
&lt;br /&gt;
=== Consensus ===&lt;br /&gt;
Consensus is decision making primarily with regard to the approval of formal specifications and review with interest groups (non-members). The consensus evaluation criterion is evaluated with the following questions:&lt;br /&gt;
* Does the organisation have a stated objective of reaching consensus when making decisions on standards? &lt;br /&gt;
: There is no explicitly stated objective of reaching consensus.&lt;br /&gt;
* If consensus is not reached, can the standard be approved? (answers are: cannot be approved but referred back to working group/committee, approved with 75% majority, approved with 66% majority, approved with 51% majority, can be decided by a &amp;quot;director&amp;quot; or similar in the organisation).&lt;br /&gt;
: The standard can be approved without consensus via the decision of a &amp;quot;director&amp;quot; or similar.&lt;br /&gt;
* Is there a formal process for external review of standard proposals by interest groups (nonmembers)?&lt;br /&gt;
: Since anyone may participate in the development process and make proposals, there is no need for a separate formal process to include proposals by nonmembers.&lt;br /&gt;
&lt;br /&gt;
=== Due Process ===&lt;br /&gt;
The due process evaluation criteria relates to the level of respect of each member of the organisation with regard to its rights. More specifically, it must be assured that if a member believes an error has been made in the process of defining a formal specification, it must be possible to appeal this to an independent, higher instance. The question is therefore: can a member formally appeal or raise objections to a procedure or to a technical specification to an independent, higher instance?&lt;br /&gt;
&lt;br /&gt;
: Yes.  Even if a member fails an appeal within the organization, because all of the technology Xiph standardizes is open and freely implementable, they are always free to develop their own, competing version.  Such competing versions may even still be eligible for standardization under the Xiph umbrella.&lt;br /&gt;
&lt;br /&gt;
=== Changes to the formal specification ===&lt;br /&gt;
The suggested changes made to a formal specification need to be presented, evaluated and approved in the same way as the formal specification was first defined. This criteria therefore applies the above criteria to the changes made to the formal specification(availability of documentation, Intellectual Property Right, accessibility, interoperability governance, meeting and consultation, consensus, due process).&lt;br /&gt;
&lt;br /&gt;
: The exact same process is used for revisions to the standard as was used for the original development of the standard, and thus the answers to all of the above questions remain the same.&lt;br /&gt;
&lt;br /&gt;
=== Support ===&lt;br /&gt;
It is critical that the organisation takes responsibility for the formal specification throughout its life span. This can be done in several ways such as for example a regular periodic review of the formal specification. The support criteria relates to the level of commitment the organisation has taken to support the formal specification throughout its life: &lt;br /&gt;
* does the organisation provide support until removal of the published formal specification from public domain (Including this process? &lt;br /&gt;
: Xiph.Org standards are never removed from the public domain.  Xiph endeavors to provide support for as long as the standard remains in use.&lt;br /&gt;
* does the organisation make the formal specification still available even when in non-maintenance mode?&lt;br /&gt;
: Yes.  All Xiph.Org standards are freely licensed and will always be available.&lt;br /&gt;
* does the organisation add new features and keep the formal specification up-to-date?&lt;br /&gt;
: Yes.  Xiph maintains its ecosystem of standards on a continuous basis.&lt;br /&gt;
* does the organisation rectify problems identified in initial implementations?&lt;br /&gt;
: Yes.  Xiph maintains [https://trac.xiph.org/report a problem reporting system] that is open to the public, and invites everyone to submit suggestions for improvements.  Improvements are made both to the standards documents and to the reference implementations.&lt;br /&gt;
* does the organisation only create the formal specification?&lt;br /&gt;
: No.  Xiph also produces high-quality reusable reference implementations of its standards, released under an open license.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/IDABC_Questionnaire_2009</id>
		<title>IDABC Questionnaire 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/IDABC_Questionnaire_2009"/>
				<updated>2009-11-15T23:20:15Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added ffmpeg independent implementation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Context =&lt;br /&gt;
We received [http://lists.xiph.org/pipermail/theora/2009-November/002996.html an e-mail] from a consultant studying the suitability of Theora for use in &amp;quot;eGovernment&amp;quot;, on behalf of the [http://ec.europa.eu/idabc/ IDABC], an EU governmental agency responsible for &amp;quot;Interoperability&amp;quot; with an emphasis on open source.  The investigation is in the context of [http://ec.europa.eu/idabc/en/document/7728 European Interoperability Framework], about which there has been [http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2620&amp;amp;blogid=14&amp;amp;pn=1 some real controversy].&lt;br /&gt;
&lt;br /&gt;
The method of assessment is the Common Assessment Method for Standards and Specifications, including the questions below.&lt;br /&gt;
&lt;br /&gt;
= CAMSS Questions =&lt;br /&gt;
== Part 4: Market Criteria ==&lt;br /&gt;
&lt;br /&gt;
This group of Market criteria analyses the formal specification in the scope of its market environment, and more precisely it examines the implementations of the formal specification and the market players. This implies identifying to which extent the formal specification benefits from market support and wide adoption, what are its level of maturity and its capacity of reusability.&lt;br /&gt;
&lt;br /&gt;
Market support is evaluated through an analysis of how many products implementing the formal specification exist, what their market share is and who their end-users are. The quality and the completeness (in case of partitioning) of the implementations of the formal specification can also be analysed. Availability of existing or planned mechanisms to assess conformity of implementations to the standard or to the specification could also be identified. The existence of at least one reference implementation (i.e.: mentioning a recognized certification process) - and of which one is an open source implementation - can also be relevant to the assessment. Wide adoption can also be assessed across domains (i.e.: public and private sectors), in an open environment, and/or in a similar field (i.e.: best practices).&lt;br /&gt;
&lt;br /&gt;
A formal specification is mature if it has been in use and development for long enough that most of its initial problems have been overcome and its underlying technology is well understood and well defined. Maturity is also assessed by identifying if all aspects of the formal specification are considered as validated by usage, (i.e.: if the formal specification is partitioned), and if the reported issues have been solved and documented.&lt;br /&gt;
&lt;br /&gt;
Reusability of a formal specification is enabled if it includes guidelines for its implementation in a given context. The identification of successful implementations of the standard or specification should focus on good practices in a similar field. Its incompatibility with related standards or specifications should also be taken into account.&lt;br /&gt;
&lt;br /&gt;
The ideas behind the Market Criteria can also be expressed in the form of the following questions:&lt;br /&gt;
&lt;br /&gt;
=== Market support ===&lt;br /&gt;
* Does the standard have strong support in the marketplace? &lt;br /&gt;
: Yes.  For example, among web browsers, support for Xiph's Ogg, Theora, and Vorbis standards is now included by default in Mozilla Firefox, Google Chrome, and the latest versions of Opera, representing hundreds of millions of installed users just in this market alone. Further, a QuickTime component exists which enables use of Xiph's Ogg, Theora, and Vorbis standards in all Mac OS X applications that make use of the QuickTime framework - which includes Safari/Webkit, iMovie, QuickTime, and many others. On Windows, DirectShow filters exist which also enable all Windows applications that use the DirectShow framework to use Xiph's Ogg, Theora, and Vorbis standards.&lt;br /&gt;
* What products exist for this formal specification ? &lt;br /&gt;
: Theora is a video codec, and as such the required products are encoders, decoders, and transmission systems.  All three types of products are widely available for Theora.&lt;br /&gt;
* How many implementations of the formal specification are there? &lt;br /&gt;
: Xiph does not require implementors to acquire any license before implementing the specification.  Therefore, we do not have a definitive count of the number of implementations.  In addition to the reference implementation, which has been ported to most modern platforms and highly optimized for x86 and ARM CPUs and TI C64x+ DSPs, we are aware of a number of independent, conformant or mostly-conformant implementations.  These include two C decoders (ffmpeg and QTheora), a Java decoder (Jheora), a C# decoder, an FPGA decoder, and an FPGA encoder.&lt;br /&gt;
* Are there products from different suppliers in the market that implement this formal specification ? &lt;br /&gt;
: Yes.  Corporations such as Atari, Canonical, DailyMotion, Elphel, Fluendo, Google, Mozilla, Novell, Opera, Red Hat, Sun Microsystems, Ubisoft, and countless others have supplied products with an implementation of the Theora standard.&lt;br /&gt;
* Are there many products readily available from a variety of suppliers? &lt;br /&gt;
: Yes. Theora has been deployed in embedded devices, security cameras, video games, video conferencing systems, web browsers, home theater systems, and many other products.  A complete, legal, open-source reference implementation can also be downloaded free of charge, including components for all major media frameworks (DirectShow, gstreamer, and Quicktime), giving the plethora of applications which use these frameworks the ability to use the codec.&lt;br /&gt;
* What is the market share of the products implementing the formal specification, versus other implementations of competing formal specifications ? &lt;br /&gt;
: Theora playback is extremely widely available, covering virtually the entire market of personal computers.  Theora is also increasingly available in mobile and embedded devices.  Since we do not require licensing for products that implement the specification, we do not have market share numbers that can be compared with competing formal specifications.  Because implementations are readily available and free, Theora is included in many products that support multiple codecs, and is sometimes the only video codec included in free software products.&lt;br /&gt;
* Who are the end-users of these products implementing the formal specification?&lt;br /&gt;
: The end users are television viewers, video gamers, web surfers, movie makers, business people, video distribution services, and anyone else who interacts with moving pictures.&lt;br /&gt;
&lt;br /&gt;
=== Maturity ===&lt;br /&gt;
* Are there any existing or planned mechanisms to assess conformity of the implementations of the formal specification? &lt;br /&gt;
: Yes.  In addition to a continuous peer review process, we maintain a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that allow implementors to assess decoder conformity. We also provide free online developer support and testing for those attempting to make a conforming implementation. An [http://validator.xiph.org/ online validation service] is available.&lt;br /&gt;
* Is there a reference implementation (i.e.: mentioning a recognized certification process)? &lt;br /&gt;
: Yes.  Xiph maintains a reference implementation called [http://downloads.xiph.org/releases/theora/ libtheora].  In addition to serving as a reference, libtheora is also highly optimized to achieve the maximum possible speed, accuracy, reliability, efficiency, and video quality.  As a result, many implementors of Theora adopt the reference implementation.&lt;br /&gt;
* Is there an open source implementation? &lt;br /&gt;
: Yes.  libtheora is made available under a completely permissive BSD-like license.  Its open-source nature also contributes to its quality as a reference implementation, as implementors are welcome to contribute their improvements to the reference.  There are also several other open source implementations.&lt;br /&gt;
* Does the formal specification show wide adoption? &lt;br /&gt;
** across different domains? (I.e.: public and private) &lt;br /&gt;
: Yes.  In addition to the private companies mentioned in the previous section, Theora has also been specified as the sole format supported by non-profit institutions such as Wikipedia, currently the 6th largest website in the world, or as one of a small number of preferred formats supported by other public organizations, such as the Norwegian government.&lt;br /&gt;
** in an open environment? &lt;br /&gt;
: Yes.  On open/free operating systems such as those distributed by Novell/SuSE, Canonical, and Red Hat, Theora is the primary default video codec.&lt;br /&gt;
** in a similar field? (i.e.: can best practices be identified?) &lt;br /&gt;
* Has the formal specification been in use and development long enough that most of its initial problems have been overcome? &lt;br /&gt;
: Yes.  Theora was derived from VP3, which was originally released in May 2000.  The Theora specification was completed in 2004.  Theora has now been used in a wide variety of applications, on the full spectrum of computing devices.&lt;br /&gt;
* Is the underlying technology of the standard well-understood? (e.g., a reference model is well defined, appropriate concepts of the technology are in widespread use, the technology may have been in use for many years, a formal mathematical model is defined, etc.) &lt;br /&gt;
: Yes.  The underlying technology has been in use for nearly a decade, and most of the concepts have been in widespread use for even longer.&lt;br /&gt;
* Is the formal specification based upon technology that has not been well-defined and may be relatively new? &lt;br /&gt;
: No.  The formal specification is based on technology from the On2 VP3 codec, which is substantially similar to simple block-transform codecs like H.261. This class of codecs is extremely well understood, and has been actively in use for over 20 years.&lt;br /&gt;
* Has the formal specification been revised? (Yes/No, Nof) &lt;br /&gt;
: Yes.  The specification of the encoder is continuously revised based on user feedback to improve clarity and accuracy. The specification of the decoding part has been stable for years.&lt;br /&gt;
* Is the formal specification under the auspices of an architectural board? (Yes/No) &lt;br /&gt;
: No.  Although officially maintained by the Xiph.Org Foundation, anyone is free to join this organization, and one need not even be a member to make contributions. However, the core developers will review contributions and make sure they do not contradict the general architecture and they work well with the existing code and the test cases.&lt;br /&gt;
* Is the formal specification partitioned in its functionality? (Yes/No) &lt;br /&gt;
: No.  Theora is very deliberately not partitioned, to avoid the confusion created by a &amp;quot;standard&amp;quot; composed of many incompatible &amp;quot;profiles&amp;quot;.  The Theora standard does not have any optional components.  A compliant Theora decoder can correctly process any Theora stream.&lt;br /&gt;
** To what extent does each partition participate to its overall functionality? (NN%) &lt;br /&gt;
: N/A.&lt;br /&gt;
** To what extent is each partition implemented? (NN%) (cf market adoption)&lt;br /&gt;
: N/A.&lt;br /&gt;
&lt;br /&gt;
=== Re-usability === &lt;br /&gt;
* Does the formal specification provide guidelines for its implementation in a given organisation? &lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] provides &amp;quot;non-normative&amp;quot; advice and explanation for implementors of Theora decoders and encoders, including example algorithms for implementing required mathematical transforms.  Xiph also maintains [http://wiki.xiph.org/Main_Page a documentation base] for implementors who desire more guidelines beyond the specification itself.&lt;br /&gt;
* Can other cases where similar systems implement the formal specification be considered as successful implementations and good practices? &lt;br /&gt;
: Xiph's standards have successfully been implemented by many organisations in a wide variety of environments.  We maintain (non-exhaustive) [http://wiki.xiph.org/TheoraSoftwarePlayers lists] of products which implement Theora support, many of them open source, so that others may use them as a reference when preparing their own products. A particularly well known, independent, but interoperable implementation is provided by the ffmpeg open source project.&lt;br /&gt;
* Is its compatibility with related formal specification documented?&lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] also documents the use of Theora within the [http://www.ietf.org/rfc/rfc3533.txt standard Ogg encapsulation format], and the [http://svn.xiph.org/trunk/theora/doc/draft-ietf-avt-rtp-theora-00.txt TheoraRTP draft specification] explains how to transmit Theora using the [http://tools.ietf.org/html/rfc3550 RTP standard].  In addition, the specification documents Theora's compatibility with ITU-R B.470, ITU-R B.601, ITU-R B.709, SMPTE-170M, [http://tools.ietf.org/html/rfc2044 UTF-8], ISO 10646, and [http://www.xiph.org/vorbis/doc/Vorbis_I_spec.pdf Ogg Vorbis].&lt;br /&gt;
&lt;br /&gt;
== Part 5: Standardisation Criteria == &lt;br /&gt;
From Idabc-camss&lt;br /&gt;
&lt;br /&gt;
Note: Throughout this section, “Organisation” refers to the standardisation/fora/consortia body in charge of the formal specification.&lt;br /&gt;
&lt;br /&gt;
Significant characteristics of the way the organisation operates are for example the way it gives the possibility to stakeholders to influence the evolution of the formal specification, or which conditions it attaches to the use of the formal specification or its implementation. Moreover, it is important to know how the formal specification is defined, supported, and made available, as well as how interaction with stakeholders is managed by the organisation during these steps. Governance of interoperability testing with other formal specifications is also indicative.&lt;br /&gt;
&lt;br /&gt;
The standardisation criteria analyses therefore the following elements:&lt;br /&gt;
&lt;br /&gt;
=== Availability of Documentation ===&lt;br /&gt;
The availability of documentation criteria is linked to cost and online availability. Access to all preliminary results documentation can be online, online for members only, offline, offline, for members only or not available. Access can be free or for a fee (which fee?).&lt;br /&gt;
: Every Xiph standard is permanently available online to everyone at no cost.  For example, we invite everyone to download [http://theora.org/doc/Theora.pdf the most up-to-date copy of the Theora specification], and [http://xiph.org/vorbis/doc/Vorbis_I_spec.html the latest revision of Vorbis].  All previous revisions are available from Xiph's [http://svn.xiph.org/ revision control system].&lt;br /&gt;
&lt;br /&gt;
=== Intellectual Property Right ===&lt;br /&gt;
The Intellectual Property Rights evaluation criteria relates to the ability for implementers to use the formal specification in products without legal or financial implications. The IPR policy of the organisation is therefore evaluated according to: &lt;br /&gt;
* the availability of the IPR or copyright policies of the organisation (available on-line or off-line, or not available);&lt;br /&gt;
: The reference implementations of each codec include all necessary IPR and copyright licenses for that codec, including all documentation, and are freely available to everyone.&lt;br /&gt;
* the organisation’s governance to disclose any IPR from any contributor (ex-ante, online, offline, for free for all, for a fee for all, for members only, not available);&lt;br /&gt;
: Xiph does not require the identification of specific patents that may be required to implement a standard, however it does require an open-source compatible, royalty free license from a contributor for any such patents they may own before the corresponding technology can be included in a standard. These license are made available online, for free, to all parties.&lt;br /&gt;
* the level of IPR set &amp;quot;mandatory&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability , patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none); &lt;br /&gt;
: All standards published by the Xiph.Org Foundation are required to have &amp;quot;open-source compatible&amp;quot; IPR.  This means that a standard must either be entirely clear of any known patents, or any patents that read upon the standard must be available under a transferable, irrevocable public nonassertion agreement to all people everywhere.  For example, see [http://svn.xiph.org/trunk/theora/LICENSE our On2 patent nonassertion warrant].  Other common &amp;quot;royalty free&amp;quot; patent licenses are either not transferable, revocable under certain conditions (such as patent infringement litigation against the originating party), or otherwise impose restrictions that would prevent distribution under common [http://www.opensource.org/ OSI]-approved licenses.  These would not be acceptable.&lt;br /&gt;
* the level of IPR &amp;quot;recommended&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability, patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none). [Note: RAND (Reasonable and Non Discriminatory License) is based on a &amp;quot;fairness&amp;quot; concept. Companies agree that if they receive any patents on technologies that become essential to the standard then they agree to allow other groups attempting to implement the standard to use these patents and they agree that the charges for the patents shall be reasonable. &amp;quot;RAND with limited availability&amp;quot; is a version of RAND where the &amp;quot;reasonable charges&amp;quot; have an upper limit.]&lt;br /&gt;
: Xiph's recommended IPR requirements are the same as our mandatory requirements.&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
&lt;br /&gt;
The accessibility evaluation criteria describe the importance of equal and safe accessibility by the users of implementations of formal specifications. This aspect can be related to safety (physical safety and conformance safety) and accessibility of physical impaired people (design for all).&lt;br /&gt;
&lt;br /&gt;
Focus is made particularly on accessibility and conformance safety. Conformance testing is testing to determine whether a system meets some specified formal specification. The result can be results from a test suite. Conformance validation is when the conformance test uniquely qualifies a given implementation as conformant or not. Conformance certification is a process that provides a public and easily visible &amp;quot;stamp of approval&amp;quot; that an implementation of a standard validates as conformant.&lt;br /&gt;
&lt;br /&gt;
The following questions allow an assessment of accessibility and conformance safety: &lt;br /&gt;
* Does a mechanism that ensures disability support by a formal specification exist? (Y/N) &lt;br /&gt;
: Yes.  Xiph ensures support for users with disabilities by providing specifications for accessible technologies independent of the codec itself.  Notable Xiph specifications include [http://wiki.xiph.org/OggKate OggKate] and [http://wiki.xiph.org/index.php/CMML CMML], which provide subtitles for the hearing-impaired, as well as [http://wiki.xiph.org/Ogg_Skeleton Skeleton], which can specify scene description audio tracks for the visually impaired.  When Theora is transmitted or stored in an Ogg container, it is automatically compatible with these accessibility measures.&lt;br /&gt;
* Is conformance governance always part of a standard? (Y/N) &lt;br /&gt;
: No.  Xiph does not normally provide a formal conformance testing process as part of a standard.&lt;br /&gt;
* Is a conformance test offered to implementers? (Y/N) &lt;br /&gt;
: Yes.  Xiph maintains a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that can be used by implementors to confirm basic conformance.&lt;br /&gt;
* Is conformance validation available to implementers? (Y/N) &lt;br /&gt;
: Yes.  Informal conformance testing is available to implementors upon request, and Xiph has provided such testing for a number of implementations in the past.&lt;br /&gt;
* Is conformance certification available? (Y/N) &lt;br /&gt;
: Yes.  Xiph does not require certification, but maintains the right to withhold the use of our trademarks from implementors that act in bad faith.  Implementors may, however, request explicit permission to use our trademarks with a conforming implementation.&lt;br /&gt;
* Is localisation of a formal specification possible? (Y/N)&lt;br /&gt;
: Yes.  We welcome anyone who wishes to translate Xiph specifications into other languages.  We have no policy requiring that the normative specification be written in English.&lt;br /&gt;
&lt;br /&gt;
=== Interoperability governance === &lt;br /&gt;
The interoperability governance evaluation criteria relates to how interoperability is identified and maintained between interoperable formal specifications. In order to do this, the organisation may provide governance for: &lt;br /&gt;
* open identification in formal specifications, &lt;br /&gt;
* open negotiation in formal specifications, &lt;br /&gt;
* open selection in formal specifications. &lt;br /&gt;
&lt;br /&gt;
=== Meeting and consultation ===&lt;br /&gt;
The meeting and consultation evaluation criteria relates to the process of defining a formal specification. As formal specifications are usually defined by committees, and these committees normally consist of members of the organisation, this criteria studies how to become a member and which are the financial barriers for this, as well as how are non-members able to have an influence on the process of defining the formal specification. It analyses: &lt;br /&gt;
* if the organisation is open to all types of companies and organisations and to individuals; &lt;br /&gt;
: Yes.  Xiph welcomes representatives from all companies and organizations.&lt;br /&gt;
* if the standardisation process may specifically allow participation of members with limited abilities when relevant; &lt;br /&gt;
: Yes.  Standardization occurs almost entirely in internet communications channels, allowing participants with disabilities to engage fully in the standards development process.  We also encourage nonexperts and students to assist us as they can, and to learn about Xiph technologies by participating in the standards development process.&lt;br /&gt;
* if meetings are open to all members;&lt;br /&gt;
: Xiph meetings are open to everyone.  We charge no fee for and place no restrictions on attendance or participation.  For example, anyone interested in contributing to the Theora specification may join [http://lists.xiph.org/pipermail/theora-dev/ the Theora development mailing list].&lt;br /&gt;
* if all can participate in the formal specification creation process; &lt;br /&gt;
: Yes.  All people are welcome to participate in the specification creation process.  No dues or fees are required to participate&lt;br /&gt;
* if non-members can participate in the formal specification creation process.&lt;br /&gt;
: Yes.  Xiph does not maintain an explicit list of members, and no one is excluded from contributing to specifications as they are developed.&lt;br /&gt;
&lt;br /&gt;
=== Consensus ===&lt;br /&gt;
Consensus is decision making primarily with regard to the approval of formal specifications and review with interest groups (non-members). The consensus evaluation criterion is evaluated with the following questions:&lt;br /&gt;
* Does the organisation have a stated objective of reaching consensus when making decisions on standards? &lt;br /&gt;
: There is no explicitly stated objective of reaching consensus.&lt;br /&gt;
* If consensus is not reached, can the standard be approved? (answers are: cannot be approved but referred back to working group/committee, approved with 75% majority, approved with 66% majority, approved with 51% majority, can be decided by a &amp;quot;director&amp;quot; or similar in the organisation).&lt;br /&gt;
: The standard can be approved without consensus via the decision of a &amp;quot;director&amp;quot; or similar.&lt;br /&gt;
* Is there a formal process for external review of standard proposals by interest groups (nonmembers)?&lt;br /&gt;
: Since anyone may participate in the development process and make proposals, there is no need for a separate formal process to include proposals by nonmembers.&lt;br /&gt;
&lt;br /&gt;
=== Due Process ===&lt;br /&gt;
The due process evaluation criteria relates to the level of respect of each member of the organisation with regard to its rights. More specifically, it must be assured that if a member believes an error has been made in the process of defining a formal specification, it must be possible to appeal this to an independent, higher instance. The question is therefore: can a member formally appeal or raise objections to a procedure or to a technical specification to an independent, higher instance?&lt;br /&gt;
&lt;br /&gt;
: Yes.  Even if a member fails an appeal within the organization, because all of the technology Xiph standardizes is open and freely implementable, they are always free to develop their own, competing version.  Such competing versions may even still be eligible for standardization under the Xiph umbrella.&lt;br /&gt;
&lt;br /&gt;
=== Changes to the formal specification ===&lt;br /&gt;
The suggested changes made to a formal specification need to be presented, evaluated and approved in the same way as the formal specification was first defined. This criteria therefore applies the above criteria to the changes made to the formal specification(availability of documentation, Intellectual Property Right, accessibility, interoperability governance, meeting and consultation, consensus, due process).&lt;br /&gt;
&lt;br /&gt;
: The exact same process is used for revisions to the standard as was used for the original development of the standard, and thus the answers to all of the above questions remain the same.&lt;br /&gt;
&lt;br /&gt;
=== Support ===&lt;br /&gt;
It is critical that the organisation takes responsibility for the formal specification throughout its life span. This can be done in several ways such as for example a regular periodic review of the formal specification. The support criteria relates to the level of commitment the organisation has taken to support the formal specification throughout its life: &lt;br /&gt;
* does the organisation provide support until removal of the published formal specification from public domain (Including this process? &lt;br /&gt;
: Xiph.Org standards are never removed from the public domain.  Xiph endeavors to provide support for as long as the standard remains in use.&lt;br /&gt;
* does the organisation make the formal specification still available even when in non-maintenance mode?&lt;br /&gt;
: Yes.  All Xiph.Org standards are freely licensed and will always be available.&lt;br /&gt;
* does the organisation add new features and keep the formal specification up-to-date?&lt;br /&gt;
: Yes.  Xiph maintains its ecosystem of standards on a continuous basis.&lt;br /&gt;
* does the organisation rectify problems identified in initial implementations?&lt;br /&gt;
: Yes.  Xiph maintains [https://trac.xiph.org/report a problem reporting system] that is open to the public, and invites everyone to submit suggestions for improvements.  Improvements are made both to the standards documents and to the reference implementations.&lt;br /&gt;
* does the organisation only create the formal specification?&lt;br /&gt;
: No.  Xiph also produces high-quality reusable reference implementations of its standards, released under an open license.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/IDABC_Questionnaire_2009</id>
		<title>IDABC Questionnaire 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/IDABC_Questionnaire_2009"/>
				<updated>2009-11-15T23:17:41Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added validation service, architecture consistency, and decoder stability&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Context =&lt;br /&gt;
We received [http://lists.xiph.org/pipermail/theora/2009-November/002996.html an e-mail] from a consultant studying the suitability of Theora for use in &amp;quot;eGovernment&amp;quot;, on behalf of the [http://ec.europa.eu/idabc/ IDABC], an EU governmental agency responsible for &amp;quot;Interoperability&amp;quot; with an emphasis on open source.  The investigation is in the context of [http://ec.europa.eu/idabc/en/document/7728 European Interoperability Framework], about which there has been [http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2620&amp;amp;blogid=14&amp;amp;pn=1 some real controversy].&lt;br /&gt;
&lt;br /&gt;
The method of assessment is the Common Assessment Method for Standards and Specifications, including the questions below.&lt;br /&gt;
&lt;br /&gt;
= CAMSS Questions =&lt;br /&gt;
== Part 4: Market Criteria ==&lt;br /&gt;
&lt;br /&gt;
This group of Market criteria analyses the formal specification in the scope of its market environment, and more precisely it examines the implementations of the formal specification and the market players. This implies identifying to which extent the formal specification benefits from market support and wide adoption, what are its level of maturity and its capacity of reusability.&lt;br /&gt;
&lt;br /&gt;
Market support is evaluated through an analysis of how many products implementing the formal specification exist, what their market share is and who their end-users are. The quality and the completeness (in case of partitioning) of the implementations of the formal specification can also be analysed. Availability of existing or planned mechanisms to assess conformity of implementations to the standard or to the specification could also be identified. The existence of at least one reference implementation (i.e.: mentioning a recognized certification process) - and of which one is an open source implementation - can also be relevant to the assessment. Wide adoption can also be assessed across domains (i.e.: public and private sectors), in an open environment, and/or in a similar field (i.e.: best practices).&lt;br /&gt;
&lt;br /&gt;
A formal specification is mature if it has been in use and development for long enough that most of its initial problems have been overcome and its underlying technology is well understood and well defined. Maturity is also assessed by identifying if all aspects of the formal specification are considered as validated by usage, (i.e.: if the formal specification is partitioned), and if the reported issues have been solved and documented.&lt;br /&gt;
&lt;br /&gt;
Reusability of a formal specification is enabled if it includes guidelines for its implementation in a given context. The identification of successful implementations of the standard or specification should focus on good practices in a similar field. Its incompatibility with related standards or specifications should also be taken into account.&lt;br /&gt;
&lt;br /&gt;
The ideas behind the Market Criteria can also be expressed in the form of the following questions:&lt;br /&gt;
&lt;br /&gt;
=== Market support ===&lt;br /&gt;
* Does the standard have strong support in the marketplace? &lt;br /&gt;
: Yes.  For example, among web browsers, support for Xiph's Ogg, Theora, and Vorbis standards is now included by default in Mozilla Firefox, Google Chrome, and the latest versions of Opera, representing hundreds of millions of installed users just in this market alone. Further, a QuickTime component exists which enables use of Xiph's Ogg, Theora, and Vorbis standards in all Mac OS X applications that make use of the QuickTime framework - which includes Safari/Webkit, iMovie, QuickTime, and many others. On Windows, DirectShow filters exist which also enable all Windows applications that use the DirectShow framework to use Xiph's Ogg, Theora, and Vorbis standards.&lt;br /&gt;
* What products exist for this formal specification ? &lt;br /&gt;
: Theora is a video codec, and as such the required products are encoders, decoders, and transmission systems.  All three types of products are widely available for Theora.&lt;br /&gt;
* How many implementations of the formal specification are there? &lt;br /&gt;
: Xiph does not require implementors to acquire any license before implementing the specification.  Therefore, we do not have a definitive count of the number of implementations.  In addition to the reference implementation, which has been ported to most modern platforms and highly optimized for x86 and ARM CPUs and TI C64x+ DSPs, we are aware of a number of independent, conformant or mostly-conformant implementations.  These include two C decoders (ffmpeg and QTheora), a Java decoder (Jheora), a C# decoder, an FPGA decoder, and an FPGA encoder.&lt;br /&gt;
* Are there products from different suppliers in the market that implement this formal specification ? &lt;br /&gt;
: Yes.  Corporations such as Atari, Canonical, DailyMotion, Elphel, Fluendo, Google, Mozilla, Novell, Opera, Red Hat, Sun Microsystems, Ubisoft, and countless others have supplied products with an implementation of the Theora standard.&lt;br /&gt;
* Are there many products readily available from a variety of suppliers? &lt;br /&gt;
: Yes. Theora has been deployed in embedded devices, security cameras, video games, video conferencing systems, web browsers, home theater systems, and many other products.  A complete, legal, open-source reference implementation can also be downloaded free of charge, including components for all major media frameworks (DirectShow, gstreamer, and Quicktime), giving the plethora of applications which use these frameworks the ability to use the codec.&lt;br /&gt;
* What is the market share of the products implementing the formal specification, versus other implementations of competing formal specifications ? &lt;br /&gt;
: Theora playback is extremely widely available, covering virtually the entire market of personal computers.  Theora is also increasingly available in mobile and embedded devices.  Since we do not require licensing for products that implement the specification, we do not have market share numbers that can be compared with competing formal specifications.  Because implementations are readily available and free, Theora is included in many products that support multiple codecs, and is sometimes the only video codec included in free software products.&lt;br /&gt;
* Who are the end-users of these products implementing the formal specification?&lt;br /&gt;
: The end users are television viewers, video gamers, web surfers, movie makers, business people, video distribution services, and anyone else who interacts with moving pictures.&lt;br /&gt;
&lt;br /&gt;
=== Maturity ===&lt;br /&gt;
* Are there any existing or planned mechanisms to assess conformity of the implementations of the formal specification? &lt;br /&gt;
: Yes.  In addition to a continuous peer review process, we maintain a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that allow implementors to assess decoder conformity. We also provide free online developer support and testing for those attempting to make a conforming implementation. An [http://validator.xiph.org/ online validation service] is available.&lt;br /&gt;
* Is there a reference implementation (i.e.: mentioning a recognized certification process)? &lt;br /&gt;
: Yes.  Xiph maintains a reference implementation called [http://downloads.xiph.org/releases/theora/ libtheora].  In addition to serving as a reference, libtheora is also highly optimized to achieve the maximum possible speed, accuracy, reliability, efficiency, and video quality.  As a result, many implementors of Theora adopt the reference implementation.&lt;br /&gt;
* Is there an open source implementation? &lt;br /&gt;
: Yes.  libtheora is made available under a completely permissive BSD-like license.  Its open-source nature also contributes to its quality as a reference implementation, as implementors are welcome to contribute their improvements to the reference.  There are also several other open source implementations.&lt;br /&gt;
* Does the formal specification show wide adoption? &lt;br /&gt;
** across different domains? (I.e.: public and private) &lt;br /&gt;
: Yes.  In addition to the private companies mentioned in the previous section, Theora has also been specified as the sole format supported by non-profit institutions such as Wikipedia, currently the 6th largest website in the world, or as one of a small number of preferred formats supported by other public organizations, such as the Norwegian government.&lt;br /&gt;
** in an open environment? &lt;br /&gt;
: Yes.  On open/free operating systems such as those distributed by Novell/SuSE, Canonical, and Red Hat, Theora is the primary default video codec.&lt;br /&gt;
** in a similar field? (i.e.: can best practices be identified?) &lt;br /&gt;
* Has the formal specification been in use and development long enough that most of its initial problems have been overcome? &lt;br /&gt;
: Yes.  Theora was derived from VP3, which was originally released in May 2000.  The Theora specification was completed in 2004.  Theora has now been used in a wide variety of applications, on the full spectrum of computing devices.&lt;br /&gt;
* Is the underlying technology of the standard well-understood? (e.g., a reference model is well defined, appropriate concepts of the technology are in widespread use, the technology may have been in use for many years, a formal mathematical model is defined, etc.) &lt;br /&gt;
: Yes.  The underlying technology has been in use for nearly a decade, and most of the concepts have been in widespread use for even longer.&lt;br /&gt;
* Is the formal specification based upon technology that has not been well-defined and may be relatively new? &lt;br /&gt;
: No.  The formal specification is based on technology from the On2 VP3 codec, which is substantially similar to simple block-transform codecs like H.261. This class of codecs is extremely well understood, and has been actively in use for over 20 years.&lt;br /&gt;
* Has the formal specification been revised? (Yes/No, Nof) &lt;br /&gt;
: Yes.  The specification of the encoder is continuously revised based on user feedback to improve clarity and accuracy. The specification of the decoding part has been stable for years.&lt;br /&gt;
* Is the formal specification under the auspices of an architectural board? (Yes/No) &lt;br /&gt;
: No.  Although officially maintained by the Xiph.Org Foundation, anyone is free to join this organization, and one need not even be a member to make contributions. However, the core developers will review contributions and make sure they do not contradict the general architecture and they work well with the existing code and the test cases.&lt;br /&gt;
* Is the formal specification partitioned in its functionality? (Yes/No) &lt;br /&gt;
: No.  Theora is very deliberately not partitioned, to avoid the confusion created by a &amp;quot;standard&amp;quot; composed of many incompatible &amp;quot;profiles&amp;quot;.  The Theora standard does not have any optional components.  A compliant Theora decoder can correctly process any Theora stream.&lt;br /&gt;
** To what extent does each partition participate to its overall functionality? (NN%) &lt;br /&gt;
: N/A.&lt;br /&gt;
** To what extent is each partition implemented? (NN%) (cf market adoption)&lt;br /&gt;
: N/A.&lt;br /&gt;
&lt;br /&gt;
=== Re-usability === &lt;br /&gt;
* Does the formal specification provide guidelines for its implementation in a given organisation? &lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] provides &amp;quot;non-normative&amp;quot; advice and explanation for implementors of Theora decoders and encoders, including example algorithms for implementing required mathematical transforms.  Xiph also maintains [http://wiki.xiph.org/Main_Page a documentation base] for implementors who desire more guidelines beyond the specification itself.&lt;br /&gt;
* Can other cases where similar systems implement the formal specification be considered as successful implementations and good practices? &lt;br /&gt;
: Xiph's standards have successfully been implemented by many organisations in a wide variety of environments.  We maintain (non-exhaustive) [http://wiki.xiph.org/TheoraSoftwarePlayers lists] of products which implement Theora support, many of them open source, so that others may use them as a reference when preparing their own products.&lt;br /&gt;
* Is its compatibility with related formal specification documented?&lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] also documents the use of Theora within the [http://www.ietf.org/rfc/rfc3533.txt standard Ogg encapsulation format], and the [http://svn.xiph.org/trunk/theora/doc/draft-ietf-avt-rtp-theora-00.txt TheoraRTP draft specification] explains how to transmit Theora using the [http://tools.ietf.org/html/rfc3550 RTP standard].  In addition, the specification documents Theora's compatibility with ITU-R B.470, ITU-R B.601, ITU-R B.709, SMPTE-170M, [http://tools.ietf.org/html/rfc2044 UTF-8], ISO 10646, and [http://www.xiph.org/vorbis/doc/Vorbis_I_spec.pdf Ogg Vorbis].&lt;br /&gt;
&lt;br /&gt;
== Part 5: Standardisation Criteria == &lt;br /&gt;
From Idabc-camss&lt;br /&gt;
&lt;br /&gt;
Note: Throughout this section, “Organisation” refers to the standardisation/fora/consortia body in charge of the formal specification.&lt;br /&gt;
&lt;br /&gt;
Significant characteristics of the way the organisation operates are for example the way it gives the possibility to stakeholders to influence the evolution of the formal specification, or which conditions it attaches to the use of the formal specification or its implementation. Moreover, it is important to know how the formal specification is defined, supported, and made available, as well as how interaction with stakeholders is managed by the organisation during these steps. Governance of interoperability testing with other formal specifications is also indicative.&lt;br /&gt;
&lt;br /&gt;
The standardisation criteria analyses therefore the following elements:&lt;br /&gt;
&lt;br /&gt;
=== Availability of Documentation ===&lt;br /&gt;
The availability of documentation criteria is linked to cost and online availability. Access to all preliminary results documentation can be online, online for members only, offline, offline, for members only or not available. Access can be free or for a fee (which fee?).&lt;br /&gt;
: Every Xiph standard is permanently available online to everyone at no cost.  For example, we invite everyone to download [http://theora.org/doc/Theora.pdf the most up-to-date copy of the Theora specification], and [http://xiph.org/vorbis/doc/Vorbis_I_spec.html the latest revision of Vorbis].  All previous revisions are available from Xiph's [http://svn.xiph.org/ revision control system].&lt;br /&gt;
&lt;br /&gt;
=== Intellectual Property Right ===&lt;br /&gt;
The Intellectual Property Rights evaluation criteria relates to the ability for implementers to use the formal specification in products without legal or financial implications. The IPR policy of the organisation is therefore evaluated according to: &lt;br /&gt;
* the availability of the IPR or copyright policies of the organisation (available on-line or off-line, or not available);&lt;br /&gt;
: The reference implementations of each codec include all necessary IPR and copyright licenses for that codec, including all documentation, and are freely available to everyone.&lt;br /&gt;
* the organisation’s governance to disclose any IPR from any contributor (ex-ante, online, offline, for free for all, for a fee for all, for members only, not available);&lt;br /&gt;
: Xiph does not require the identification of specific patents that may be required to implement a standard, however it does require an open-source compatible, royalty free license from a contributor for any such patents they may own before the corresponding technology can be included in a standard. These license are made available online, for free, to all parties.&lt;br /&gt;
* the level of IPR set &amp;quot;mandatory&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability , patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none); &lt;br /&gt;
: All standards published by the Xiph.Org Foundation are required to have &amp;quot;open-source compatible&amp;quot; IPR.  This means that a standard must either be entirely clear of any known patents, or any patents that read upon the standard must be available under a transferable, irrevocable public nonassertion agreement to all people everywhere.  For example, see [http://svn.xiph.org/trunk/theora/LICENSE our On2 patent nonassertion warrant].  Other common &amp;quot;royalty free&amp;quot; patent licenses are either not transferable, revocable under certain conditions (such as patent infringement litigation against the originating party), or otherwise impose restrictions that would prevent distribution under common [http://www.opensource.org/ OSI]-approved licenses.  These would not be acceptable.&lt;br /&gt;
* the level of IPR &amp;quot;recommended&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability, patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none). [Note: RAND (Reasonable and Non Discriminatory License) is based on a &amp;quot;fairness&amp;quot; concept. Companies agree that if they receive any patents on technologies that become essential to the standard then they agree to allow other groups attempting to implement the standard to use these patents and they agree that the charges for the patents shall be reasonable. &amp;quot;RAND with limited availability&amp;quot; is a version of RAND where the &amp;quot;reasonable charges&amp;quot; have an upper limit.]&lt;br /&gt;
: Xiph's recommended IPR requirements are the same as our mandatory requirements.&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
&lt;br /&gt;
The accessibility evaluation criteria describe the importance of equal and safe accessibility by the users of implementations of formal specifications. This aspect can be related to safety (physical safety and conformance safety) and accessibility of physical impaired people (design for all).&lt;br /&gt;
&lt;br /&gt;
Focus is made particularly on accessibility and conformance safety. Conformance testing is testing to determine whether a system meets some specified formal specification. The result can be results from a test suite. Conformance validation is when the conformance test uniquely qualifies a given implementation as conformant or not. Conformance certification is a process that provides a public and easily visible &amp;quot;stamp of approval&amp;quot; that an implementation of a standard validates as conformant.&lt;br /&gt;
&lt;br /&gt;
The following questions allow an assessment of accessibility and conformance safety: &lt;br /&gt;
* Does a mechanism that ensures disability support by a formal specification exist? (Y/N) &lt;br /&gt;
: Yes.  Xiph ensures support for users with disabilities by providing specifications for accessible technologies independent of the codec itself.  Notable Xiph specifications include [http://wiki.xiph.org/OggKate OggKate] and [http://wiki.xiph.org/index.php/CMML CMML], which provide subtitles for the hearing-impaired, as well as [http://wiki.xiph.org/Ogg_Skeleton Skeleton], which can specify scene description audio tracks for the visually impaired.  When Theora is transmitted or stored in an Ogg container, it is automatically compatible with these accessibility measures.&lt;br /&gt;
* Is conformance governance always part of a standard? (Y/N) &lt;br /&gt;
: No.  Xiph does not normally provide a formal conformance testing process as part of a standard.&lt;br /&gt;
* Is a conformance test offered to implementers? (Y/N) &lt;br /&gt;
: Yes.  Xiph maintains a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that can be used by implementors to confirm basic conformance.&lt;br /&gt;
* Is conformance validation available to implementers? (Y/N) &lt;br /&gt;
: Yes.  Informal conformance testing is available to implementors upon request, and Xiph has provided such testing for a number of implementations in the past.&lt;br /&gt;
* Is conformance certification available? (Y/N) &lt;br /&gt;
: Yes.  Xiph does not require certification, but maintains the right to withhold the use of our trademarks from implementors that act in bad faith.  Implementors may, however, request explicit permission to use our trademarks with a conforming implementation.&lt;br /&gt;
* Is localisation of a formal specification possible? (Y/N)&lt;br /&gt;
: Yes.  We welcome anyone who wishes to translate Xiph specifications into other languages.  We have no policy requiring that the normative specification be written in English.&lt;br /&gt;
&lt;br /&gt;
=== Interoperability governance === &lt;br /&gt;
The interoperability governance evaluation criteria relates to how interoperability is identified and maintained between interoperable formal specifications. In order to do this, the organisation may provide governance for: &lt;br /&gt;
* open identification in formal specifications, &lt;br /&gt;
* open negotiation in formal specifications, &lt;br /&gt;
* open selection in formal specifications. &lt;br /&gt;
&lt;br /&gt;
=== Meeting and consultation ===&lt;br /&gt;
The meeting and consultation evaluation criteria relates to the process of defining a formal specification. As formal specifications are usually defined by committees, and these committees normally consist of members of the organisation, this criteria studies how to become a member and which are the financial barriers for this, as well as how are non-members able to have an influence on the process of defining the formal specification. It analyses: &lt;br /&gt;
* if the organisation is open to all types of companies and organisations and to individuals; &lt;br /&gt;
: Yes.  Xiph welcomes representatives from all companies and organizations.&lt;br /&gt;
* if the standardisation process may specifically allow participation of members with limited abilities when relevant; &lt;br /&gt;
: Yes.  Standardization occurs almost entirely in internet communications channels, allowing participants with disabilities to engage fully in the standards development process.  We also encourage nonexperts and students to assist us as they can, and to learn about Xiph technologies by participating in the standards development process.&lt;br /&gt;
* if meetings are open to all members;&lt;br /&gt;
: Xiph meetings are open to everyone.  We charge no fee for and place no restrictions on attendance or participation.  For example, anyone interested in contributing to the Theora specification may join [http://lists.xiph.org/pipermail/theora-dev/ the Theora development mailing list].&lt;br /&gt;
* if all can participate in the formal specification creation process; &lt;br /&gt;
: Yes.  All people are welcome to participate in the specification creation process.  No dues or fees are required to participate&lt;br /&gt;
* if non-members can participate in the formal specification creation process.&lt;br /&gt;
: Yes.  Xiph does not maintain an explicit list of members, and no one is excluded from contributing to specifications as they are developed.&lt;br /&gt;
&lt;br /&gt;
=== Consensus ===&lt;br /&gt;
Consensus is decision making primarily with regard to the approval of formal specifications and review with interest groups (non-members). The consensus evaluation criterion is evaluated with the following questions:&lt;br /&gt;
* Does the organisation have a stated objective of reaching consensus when making decisions on standards? &lt;br /&gt;
: There is no explicitly stated objective of reaching consensus.&lt;br /&gt;
* If consensus is not reached, can the standard be approved? (answers are: cannot be approved but referred back to working group/committee, approved with 75% majority, approved with 66% majority, approved with 51% majority, can be decided by a &amp;quot;director&amp;quot; or similar in the organisation).&lt;br /&gt;
: The standard can be approved without consensus via the decision of a &amp;quot;director&amp;quot; or similar.&lt;br /&gt;
* Is there a formal process for external review of standard proposals by interest groups (nonmembers)?&lt;br /&gt;
: Since anyone may participate in the development process and make proposals, there is no need for a separate formal process to include proposals by nonmembers.&lt;br /&gt;
&lt;br /&gt;
=== Due Process ===&lt;br /&gt;
The due process evaluation criteria relates to the level of respect of each member of the organisation with regard to its rights. More specifically, it must be assured that if a member believes an error has been made in the process of defining a formal specification, it must be possible to appeal this to an independent, higher instance. The question is therefore: can a member formally appeal or raise objections to a procedure or to a technical specification to an independent, higher instance?&lt;br /&gt;
&lt;br /&gt;
: Yes.  Even if a member fails an appeal within the organization, because all of the technology Xiph standardizes is open and freely implementable, they are always free to develop their own, competing version.  Such competing versions may even still be eligible for standardization under the Xiph umbrella.&lt;br /&gt;
&lt;br /&gt;
=== Changes to the formal specification ===&lt;br /&gt;
The suggested changes made to a formal specification need to be presented, evaluated and approved in the same way as the formal specification was first defined. This criteria therefore applies the above criteria to the changes made to the formal specification(availability of documentation, Intellectual Property Right, accessibility, interoperability governance, meeting and consultation, consensus, due process).&lt;br /&gt;
&lt;br /&gt;
: The exact same process is used for revisions to the standard as was used for the original development of the standard, and thus the answers to all of the above questions remain the same.&lt;br /&gt;
&lt;br /&gt;
=== Support ===&lt;br /&gt;
It is critical that the organisation takes responsibility for the formal specification throughout its life span. This can be done in several ways such as for example a regular periodic review of the formal specification. The support criteria relates to the level of commitment the organisation has taken to support the formal specification throughout its life: &lt;br /&gt;
* does the organisation provide support until removal of the published formal specification from public domain (Including this process? &lt;br /&gt;
: Xiph.Org standards are never removed from the public domain.  Xiph endeavors to provide support for as long as the standard remains in use.&lt;br /&gt;
* does the organisation make the formal specification still available even when in non-maintenance mode?&lt;br /&gt;
: Yes.  All Xiph.Org standards are freely licensed and will always be available.&lt;br /&gt;
* does the organisation add new features and keep the formal specification up-to-date?&lt;br /&gt;
: Yes.  Xiph maintains its ecosystem of standards on a continuous basis.&lt;br /&gt;
* does the organisation rectify problems identified in initial implementations?&lt;br /&gt;
: Yes.  Xiph maintains [https://trac.xiph.org/report a problem reporting system] that is open to the public, and invites everyone to submit suggestions for improvements.  Improvements are made both to the standards documents and to the reference implementations.&lt;br /&gt;
* does the organisation only create the formal specification?&lt;br /&gt;
: No.  Xiph also produces high-quality reusable reference implementations of its standards, released under an open license.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/IDABC_Questionnaire_2009</id>
		<title>IDABC Questionnaire 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/IDABC_Questionnaire_2009"/>
				<updated>2009-11-15T23:07:46Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* Market support */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Context =&lt;br /&gt;
We received [http://lists.xiph.org/pipermail/theora/2009-November/002996.html an e-mail] from a consultant studying the suitability of Theora for use in &amp;quot;eGovernment&amp;quot;, on behalf of the [http://ec.europa.eu/idabc/ IDABC], an EU governmental agency responsible for &amp;quot;Interoperability&amp;quot; with an emphasis on open source.  The investigation is in the context of [http://ec.europa.eu/idabc/en/document/7728 European Interoperability Framework], about which there has been [http://www.computerworlduk.com/community/blogs/index.cfm?entryid=2620&amp;amp;blogid=14&amp;amp;pn=1 some real controversy].&lt;br /&gt;
&lt;br /&gt;
The method of assessment is the Common Assessment Method for Standards and Specifications, including the questions below.&lt;br /&gt;
&lt;br /&gt;
= CAMSS Questions =&lt;br /&gt;
== Part 4: Market Criteria ==&lt;br /&gt;
&lt;br /&gt;
This group of Market criteria analyses the formal specification in the scope of its market environment, and more precisely it examines the implementations of the formal specification and the market players. This implies identifying to which extent the formal specification benefits from market support and wide adoption, what are its level of maturity and its capacity of reusability.&lt;br /&gt;
&lt;br /&gt;
Market support is evaluated through an analysis of how many products implementing the formal specification exist, what their market share is and who their end-users are. The quality and the completeness (in case of partitioning) of the implementations of the formal specification can also be analysed. Availability of existing or planned mechanisms to assess conformity of implementations to the standard or to the specification could also be identified. The existence of at least one reference implementation (i.e.: mentioning a recognized certification process) - and of which one is an open source implementation - can also be relevant to the assessment. Wide adoption can also be assessed across domains (i.e.: public and private sectors), in an open environment, and/or in a similar field (i.e.: best practices).&lt;br /&gt;
&lt;br /&gt;
A formal specification is mature if it has been in use and development for long enough that most of its initial problems have been overcome and its underlying technology is well understood and well defined. Maturity is also assessed by identifying if all aspects of the formal specification are considered as validated by usage, (i.e.: if the formal specification is partitioned), and if the reported issues have been solved and documented.&lt;br /&gt;
&lt;br /&gt;
Reusability of a formal specification is enabled if it includes guidelines for its implementation in a given context. The identification of successful implementations of the standard or specification should focus on good practices in a similar field. Its incompatibility with related standards or specifications should also be taken into account.&lt;br /&gt;
&lt;br /&gt;
The ideas behind the Market Criteria can also be expressed in the form of the following questions:&lt;br /&gt;
&lt;br /&gt;
=== Market support ===&lt;br /&gt;
* Does the standard have strong support in the marketplace? &lt;br /&gt;
: Yes.  For example, among web browsers, support for Xiph's Ogg, Theora, and Vorbis standards is now included by default in Mozilla Firefox, Google Chrome, and the latest versions of Opera, representing hundreds of millions of installed users just in this market alone. Further, a QuickTime component exists which enables use of Xiph's Ogg, Theora, and Vorbis standards in all Mac OS X applications that make use of the QuickTime framework - which includes Safari/Webkit, iMovie, QuickTime, and many others. On Windows, DirectShow filters exist which also enable all Windows applications that use the DirectShow framework to use Xiph's Ogg, Theora, and Vorbis standards.&lt;br /&gt;
* What products exist for this formal specification ? &lt;br /&gt;
: Theora is a video codec, and as such the required products are encoders, decoders, and transmission systems.  All three types of products are widely available for Theora.&lt;br /&gt;
* How many implementations of the formal specification are there? &lt;br /&gt;
: Xiph does not require implementors to acquire any license before implementing the specification.  Therefore, we do not have a definitive count of the number of implementations.  In addition to the reference implementation, which has been ported to most modern platforms and highly optimized for x86 and ARM CPUs and TI C64x+ DSPs, we are aware of a number of independent, conformant or mostly-conformant implementations.  These include two C decoders (ffmpeg and QTheora), a Java decoder (Jheora), a C# decoder, an FPGA decoder, and an FPGA encoder.&lt;br /&gt;
* Are there products from different suppliers in the market that implement this formal specification ? &lt;br /&gt;
: Yes.  Corporations such as Atari, Canonical, DailyMotion, Elphel, Fluendo, Google, Mozilla, Novell, Opera, Red Hat, Sun Microsystems, Ubisoft, and countless others have supplied products with an implementation of the Theora standard.&lt;br /&gt;
* Are there many products readily available from a variety of suppliers? &lt;br /&gt;
: Yes. Theora has been deployed in embedded devices, security cameras, video games, video conferencing systems, web browsers, home theater systems, and many other products.  A complete, legal, open-source reference implementation can also be downloaded free of charge, including components for all major media frameworks (DirectShow, gstreamer, and Quicktime), giving the plethora of applications which use these frameworks the ability to use the codec.&lt;br /&gt;
* What is the market share of the products implementing the formal specification, versus other implementations of competing formal specifications ? &lt;br /&gt;
: Theora playback is extremely widely available, covering virtually the entire market of personal computers.  Theora is also increasingly available in mobile and embedded devices.  Since we do not require licensing for products that implement the specification, we do not have market share numbers that can be compared with competing formal specifications.  Because implementations are readily available and free, Theora is included in many products that support multiple codecs, and is sometimes the only video codec included in free software products.&lt;br /&gt;
* Who are the end-users of these products implementing the formal specification?&lt;br /&gt;
: The end users are television viewers, video gamers, web surfers, movie makers, business people, video distribution services, and anyone else who interacts with moving pictures.&lt;br /&gt;
&lt;br /&gt;
=== Maturity ===&lt;br /&gt;
* Are there any existing or planned mechanisms to assess conformity of the implementations of the formal specification? &lt;br /&gt;
: Yes.  In addition to a continuous peer review process, we maintain a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that allow implementors to assess decoder conformity. We also provide free online developer support and testing for those attempting to make a conforming implementation.&lt;br /&gt;
* Is there a reference implementation (i.e.: mentioning a recognized certification process)? &lt;br /&gt;
: Yes.  Xiph maintains a reference implementation called [http://downloads.xiph.org/releases/theora/ libtheora].  In addition to serving as a reference, libtheora is also highly optimized to achieve the maximum possible speed, accuracy, reliability, efficiency, and video quality.  As a result, many implementors of Theora adopt the reference implementation.&lt;br /&gt;
* Is there an open source implementation? &lt;br /&gt;
: Yes.  libtheora is made available under a completely permissive BSD-like license.  Its open-source nature also contributes to its quality as a reference implementation, as implementors are welcome to contribute their improvements to the reference.  There are also several other open source implementations.&lt;br /&gt;
* Does the formal specification show wide adoption? &lt;br /&gt;
** across different domains? (I.e.: public and private) &lt;br /&gt;
: Yes.  In addition to the private companies mentioned in the previous section, Theora has also been specified as the sole format supported by non-profit institutions such as Wikipedia, currently the 6th largest website in the world, or as one of a small number of preferred formats supported by other public organizations, such as the Norwegian government.&lt;br /&gt;
** in an open environment? &lt;br /&gt;
: Yes.  On open/free operating systems such as those distributed by Novell/SuSE, Canonical, and Red Hat, Theora is the primary default video codec.&lt;br /&gt;
** in a similar field? (i.e.: can best practices be identified?) &lt;br /&gt;
* Has the formal specification been in use and development long enough that most of its initial problems have been overcome? &lt;br /&gt;
: Yes.  Theora was derived from VP3, which was originally released in May 2000.  The Theora specification was completed in 2004.  Theora has now been used in a wide variety of applications, on the full spectrum of computing devices.&lt;br /&gt;
* Is the underlying technology of the standard well-understood? (e.g., a reference model is welldefined, appropriate concepts of the technology are in widespread use, the technology may have been in use for many years, a formal mathematical model is defined, etc.) &lt;br /&gt;
: Yes.  The underlying technology has been in use for nearly a decade, and most of the concepts have been in widespread use for even longer.&lt;br /&gt;
* Is the formal specification based upon technology that has not been well-defined and may be relatively new? &lt;br /&gt;
: No.  The formal specification is based on technology from the On2 VP3 codec, which is substantially similar to simple block-transform codecs like H.261. This class of codecs is extremely well understood, and has been actively in use for over 20 years.&lt;br /&gt;
* Has the formal specification been revised? (Yes/No, Nof) &lt;br /&gt;
: Yes.  The specification is continuously revised based on user feedback to improve clarity and accuracy.&lt;br /&gt;
* Is the formal specification under the auspices of an architectural board? (Yes/No) &lt;br /&gt;
: No.  Although officially maintained by the Xiph.Org Foundation, anyone is free to join this organization, and one need not even be a member to make contributions.&lt;br /&gt;
* Is the formal specification partitioned in its functionality? (Yes/No) &lt;br /&gt;
: No.  Theora is very deliberately not partitioned, to avoid the confusion created by a &amp;quot;standard&amp;quot; composed of many incompatible &amp;quot;profiles&amp;quot;.  The Theora standard does not have any optional components.  A compliant Theora decoder can correctly process any Theora stream.&lt;br /&gt;
** To what extent does each partition participate to its overall functionality? (NN%) &lt;br /&gt;
: N/A.&lt;br /&gt;
** To what extent is each partition implemented? (NN%) (cf market adoption)&lt;br /&gt;
: N/A.&lt;br /&gt;
&lt;br /&gt;
=== Re-usability === &lt;br /&gt;
* Does the formal specification provide guidelines for its implementation in a given organisation? &lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] provides &amp;quot;non-normative&amp;quot; advice and explanation for implementors of Theora decoders and encoders, including example algorithms for implementing required mathematical transforms.  Xiph also maintains [http://wiki.xiph.org/Main_Page a documentation base] for implementors who desire more guidelines beyond the specification itself.&lt;br /&gt;
* Can other cases where similar systems implement the formal specification be considered as successful implementations and good practices? &lt;br /&gt;
: Xiph's standards have successfully been implemented by many organisations in a wide variety of environments.  We maintain (non-exhaustive) [http://wiki.xiph.org/TheoraSoftwarePlayers lists] of products which implement Theora support, many of them open source, so that others may use them as a reference when preparing their own products.&lt;br /&gt;
* Is its compatibility with related formal specification documented?&lt;br /&gt;
: Yes.  For example, [http://theora.org/doc/Theora.pdf the Theora specification] also documents the use of Theora within the [http://www.ietf.org/rfc/rfc3533.txt standard Ogg encapsulation format], and the [http://svn.xiph.org/trunk/theora/doc/draft-ietf-avt-rtp-theora-00.txt TheoraRTP draft specification] explains how to transmit Theora using the [http://tools.ietf.org/html/rfc3550 RTP standard].  In addition, the specification documents Theora's compatibility with ITU-R B.470, ITU-R B.601, ITU-R B.709, SMPTE-170M, [http://tools.ietf.org/html/rfc2044 UTF-8], ISO 10646, and [http://www.xiph.org/vorbis/doc/Vorbis_I_spec.pdf Ogg Vorbis].&lt;br /&gt;
&lt;br /&gt;
== Part 5: Standardisation Criteria == &lt;br /&gt;
From Idabc-camss&lt;br /&gt;
&lt;br /&gt;
Note: Throughout this section, “Organisation” refers to the standardisation/fora/consortia body in charge of the formal specification.&lt;br /&gt;
&lt;br /&gt;
Significant characteristics of the way the organisation operates are for example the way it gives the possibility to stakeholders to influence the evolution of the formal specification, or which conditions it attaches to the use of the formal specification or its implementation. Moreover, it is important to know how the formal specification is defined, supported, and made available, as well as how interaction with stakeholders is managed by the organisation during these steps. Governance of interoperability testing with other formal specifications is also indicative.&lt;br /&gt;
&lt;br /&gt;
The standardisation criteria analyses therefore the following elements:&lt;br /&gt;
&lt;br /&gt;
=== Availability of Documentation ===&lt;br /&gt;
The availability of documentation criteria is linked to cost and online availability. Access to all preliminary results documentation can be online, online for members only, offline, offline, for members only or not available. Access can be free or for a fee (which fee?).&lt;br /&gt;
: Every Xiph standard is permanently available online to everyone at no cost.  For example, we invite everyone to download [http://theora.org/doc/Theora.pdf the most up-to-date copy of the Theora specification], and [http://xiph.org/vorbis/doc/Vorbis_I_spec.html the latest revision of Vorbis].  All previous revisions are available from Xiph's [http://svn.xiph.org/ revision control system].&lt;br /&gt;
&lt;br /&gt;
=== Intellectual Property Right ===&lt;br /&gt;
The Intellectual Property Rights evaluation criteria relates to the ability for implementers to use the formal specification in products without legal or financial implications. The IPR policy of the organisation is therefore evaluated according to: &lt;br /&gt;
* the availability of the IPR or copyright policies of the organisation (available on-line or off-line, or not available);&lt;br /&gt;
: The reference implementations of each codec include all necessary IPR and copyright licenses for that codec, including all documentation, and are freely available to everyone.&lt;br /&gt;
* the organisation’s governance to disclose any IPR from any contributor (ex-ante, online, offline, for free for all, for a fee for all, for members only, not available);&lt;br /&gt;
: Xiph does not require the identification of specific patents that may be required to implement a standard, however it does require an open-source compatible, royalty free license from a contributor for any such patents they may own before the corresponding technology can be included in a standard. These license are made available online, for free, to all parties.&lt;br /&gt;
* the level of IPR set &amp;quot;mandatory&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability , patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none); &lt;br /&gt;
: All standards published by the Xiph.Org Foundation are required to have &amp;quot;open-source compatible&amp;quot; IPR.  This means that a standard must either be entirely clear of any known patents, or any patents that read upon the standard must be available under a transferable, irrevocable public nonassertion agreement to all people everywhere.  For example, see [http://svn.xiph.org/trunk/theora/LICENSE our On2 patent nonassertion warrant].  Other common &amp;quot;royalty free&amp;quot; patent licenses are either not transferable, revocable under certain conditions (such as patent infringement litigation against the originating party), or otherwise impose restrictions that would prevent distribution under common [http://www.opensource.org/ OSI]-approved licenses.  These would not be acceptable.&lt;br /&gt;
* the level of IPR &amp;quot;recommended&amp;quot; by the organisation (no patent, royalty free patent, patent and RAND with limited liability, patent and classic RAND, patent with explicit licensing, patent with defensive licensing, or none). [Note: RAND (Reasonable and Non Discriminatory License) is based on a &amp;quot;fairness&amp;quot; concept. Companies agree that if they receive any patents on technologies that become essential to the standard then they agree to allow other groups attempting to implement the standard to use these patents and they agree that the charges for the patents shall be reasonable. &amp;quot;RAND with limited availability&amp;quot; is a version of RAND where the &amp;quot;reasonable charges&amp;quot; have an upper limit.]&lt;br /&gt;
: Xiph's recommended IPR requirements are the same as our mandatory requirements.&lt;br /&gt;
&lt;br /&gt;
=== Accessibility ===&lt;br /&gt;
&lt;br /&gt;
The accessibility evaluation criteria describe the importance of equal and safe accessibility by the users of implementations of formal specifications. This aspect can be related to safety (physical safety and conformance safety) and accessibility of physical impaired people (design for all).&lt;br /&gt;
&lt;br /&gt;
Focus is made particularly on accessibility and conformance safety. Conformance testing is testing to determine whether a system meets some specified formal specification. The result can be results from a test suite. Conformance validation is when the conformance test uniquely qualifies a given implementation as conformant or not. Conformance certification is a process that provides a public and easily visible &amp;quot;stamp of approval&amp;quot; that an implementation of a standard validates as conformant.&lt;br /&gt;
&lt;br /&gt;
The following questions allow an assessment of accessibility and conformance safety: &lt;br /&gt;
* Does a mechanism that ensures disability support by a formal specification exist? (Y/N) &lt;br /&gt;
: Yes.  Xiph ensures support for users with disabilities by providing specifications for accessible technologies independent of the codec itself.  Notable Xiph specifications include [http://wiki.xiph.org/OggKate OggKate] and [http://wiki.xiph.org/index.php/CMML CMML], which provide subtitles for the hearing-impaired, as well as [http://wiki.xiph.org/Ogg_Skeleton Skeleton], which can specify scene description audio tracks for the visually impaired.  When Theora is transmitted or stored in an Ogg container, it is automatically compatible with these accessibility measures.&lt;br /&gt;
* Is conformance governance always part of a standard? (Y/N) &lt;br /&gt;
: No.  Xiph does not normally provide a formal conformance testing process as part of a standard.&lt;br /&gt;
* Is a conformance test offered to implementers? (Y/N) &lt;br /&gt;
: Yes.  Xiph maintains a suite of [http://v2v.cc/~j/theora_testsuite/ test vectors] that can be used by implementors to confirm basic conformance.&lt;br /&gt;
* Is conformance validation available to implementers? (Y/N) &lt;br /&gt;
: Yes.  Informal conformance testing is available to implementors upon request, and Xiph has provided such testing for a number of implementations in the past.&lt;br /&gt;
* Is conformance certification available? (Y/N) &lt;br /&gt;
: Yes.  Xiph does not require certification, but maintains the right to withhold the use of our trademarks from implementors that act in bad faith.  Implementors may, however, request explicit permission to use our trademarks with a conforming implementation.&lt;br /&gt;
* Is localisation of a formal specification possible? (Y/N)&lt;br /&gt;
: Yes.  We welcome anyone who wishes to translate Xiph specifications into other languages.  We have no policy requiring that the normative specification be written in English.&lt;br /&gt;
&lt;br /&gt;
=== Interoperability governance === &lt;br /&gt;
The interoperability governance evaluation criteria relates to how interoperability is identified and maintained between interoperable formal specifications. In order to do this, the organisation may provide governance for: &lt;br /&gt;
* open identification in formal specifications, &lt;br /&gt;
* open negotiation in formal specifications, &lt;br /&gt;
* open selection in formal specifications. &lt;br /&gt;
&lt;br /&gt;
=== Meeting and consultation ===&lt;br /&gt;
The meeting and consultation evaluation criteria relates to the process of defining a formal specification. As formal specifications are usually defined by committees, and these committees normally consist of members of the organisation, this criteria studies how to become a member and which are the financial barriers for this, as well as how are non-members able to have an influence on the process of defining the formal specification. It analyses: &lt;br /&gt;
* if the organisation is open to all types of companies and organisations and to individuals; &lt;br /&gt;
: Yes.  Xiph welcomes representatives from all companies and organizations.&lt;br /&gt;
* if the standardisation process may specifically allow participation of members with limited abilities when relevant; &lt;br /&gt;
: Yes.  Standardization occurs almost entirely in internet communications channels, allowing participants with disabilities to engage fully in the standards development process.  We also encourage nonexperts and students to assist us as they can, and to learn about Xiph technologies by participating in the standards development process.&lt;br /&gt;
* if meetings are open to all members;&lt;br /&gt;
: Xiph meetings are open to everyone.  We charge no fee for and place no restrictions on attendance or participation.  For example, anyone interested in contributing to the Theora specification may join [http://lists.xiph.org/pipermail/theora-dev/ the Theora development mailing list].&lt;br /&gt;
* if all can participate in the formal specification creation process; &lt;br /&gt;
: Yes.  All people are welcome to participate in the specification creation process.  No dues or fees are required to participate&lt;br /&gt;
* if non-members can participate in the formal specification creation process.&lt;br /&gt;
: Yes.  Xiph does not maintain an explicit list of members, and no one is excluded from contributing to specifications as they are developed.&lt;br /&gt;
&lt;br /&gt;
=== Consensus ===&lt;br /&gt;
Consensus is decision making primarily with regard to the approval of formal specifications and review with interest groups (non-members). The consensus evaluation criterion is evaluated with the following questions:&lt;br /&gt;
* Does the organisation have a stated objective of reaching consensus when making decisions on standards? &lt;br /&gt;
: There is no explicitly stated objective of reaching consensus.&lt;br /&gt;
* If consensus is not reached, can the standard be approved? (answers are: cannot be approved but referred back to working group/committee, approved with 75% majority, approved with 66% majority, approved with 51% majority, can be decided by a &amp;quot;director&amp;quot; or similar in the organisation).&lt;br /&gt;
: The standard can be approved without consensus via the decision of a &amp;quot;director&amp;quot; or similar.&lt;br /&gt;
* Is there a formal process for external review of standard proposals by interest groups (nonmembers)?&lt;br /&gt;
: Since anyone may participate in the development process and make proposals, there is no need for a separate formal process to include proposals by nonmembers.&lt;br /&gt;
&lt;br /&gt;
=== Due Process ===&lt;br /&gt;
The due process evaluation criteria relates to the level of respect of each member of the organisation with regard to its rights. More specifically, it must be assured that if a member believes an error has been made in the process of defining a formal specification, it must be possible to appeal this to an independent, higher instance. The question is therefore: can a member formally appeal or raise objections to a procedure or to a technical specification to an independent, higher instance?&lt;br /&gt;
&lt;br /&gt;
: Yes.  Even if a member fails an appeal within the organization, because all of the technology Xiph standardizes is open and freely implementable, they are always free to develop their own, competing version.  Such competing versions may even still be eligible for standardization under the Xiph umbrella.&lt;br /&gt;
&lt;br /&gt;
=== Changes to the formal specification ===&lt;br /&gt;
The suggested changes made to a formal specification need to be presented, evaluated and approved in the same way as the formal specification was first defined. This criteria therefore applies the above criteria to the changes made to the formal specification(availability of documentation, Intellectual Property Right, accessibility, interoperability governance, meeting and consultation, consensus, due process).&lt;br /&gt;
&lt;br /&gt;
: The exact same process is used for revisions to the standard as was used for the original development of the standard, and thus the answers to all of the above questions remain the same.&lt;br /&gt;
&lt;br /&gt;
=== Support ===&lt;br /&gt;
It is critical that the organisation takes responsibility for the formal specification throughout its life span. This can be done in several ways such as for example a regular periodic review of the formal specification. The support criteria relates to the level of commitment the organisation has taken to support the formal specification throughout its life: &lt;br /&gt;
* does the organisation provide support until removal of the published formal specification from public domain (Including this process? &lt;br /&gt;
: Xiph.Org standards are never removed from the public domain.  Xiph endeavors to provide support for as long as the standard remains in use.&lt;br /&gt;
* does the organisation make the formal specification still available even when in non-maintenance mode?&lt;br /&gt;
: Yes.  All Xiph.Org standards are freely licensed and will always be available.&lt;br /&gt;
* does the organisation add new features and keep the formal specification up-to-date?&lt;br /&gt;
: Yes.  Xiph maintains its ecosystem of standards on a continuous basis.&lt;br /&gt;
* does the organisation rectify problems identified in initial implementations?&lt;br /&gt;
: Yes.  Xiph maintains [https://trac.xiph.org/report a problem reporting system] that is open to the public, and invites everyone to submit suggestions for improvements.  Improvements are made both to the standards documents and to the reference implementations.&lt;br /&gt;
* does the organisation only create the formal specification?&lt;br /&gt;
: No.  Xiph also produces high-quality reusable reference implementations of its standards, released under an open license.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strong&amp;gt;This is a draft document. A work in progress. A scratchpad for ideas. It should not be widely circulated in this form.&amp;lt;/strong&amp;gt;&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Work_In_Progress</id>
		<title>Work In Progress</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Work_In_Progress"/>
				<updated>2009-10-11T08:58:33Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added Ogg Index&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''General Usage:'''&lt;br /&gt;
** [[Ogg_Index]]: Introducting index headers into Ogg&lt;br /&gt;
** [[Metadata]]: Various types of Ogg metadata including the [[M3F]] (Multimedia Metadata Format) and [[XMLEmbedding]]&lt;br /&gt;
** [[MIME_Types_and_File_Extensions]]: MIME Types and file extensions for Ogg multimedia files&lt;br /&gt;
** [[Subtle]]: Subtitling tool for professional use that intends to support most subtitle formats including CMML and OggKate&lt;br /&gt;
** [[OggText]]: A generic media mapping for (discontinuous) text codecs into Ogg&lt;br /&gt;
** [[ROE]]: A description format for describing the tracks and languages etc. of an Ogg multitrack composition&lt;br /&gt;
&lt;br /&gt;
* '''Compressed Codecs:'''&lt;br /&gt;
** [[Theora]] 1.1 &amp;quot;thusnelda&amp;quot;: improving compression efficiency while keeping compatibility, see [[Theora11Todo]]&lt;br /&gt;
** [[OggDirac]]: The &amp;quot;next-generation&amp;quot; wavelet based video codec, lossy or lossless &lt;br /&gt;
** [[OggCELT]]: A low-latency audio codec&lt;br /&gt;
** [[OggMNG]]: A mapping for encapsulating the MNG animation format in Ogg&lt;br /&gt;
&lt;br /&gt;
* '''Uncompressed Codecs:'''&lt;br /&gt;
** [[OggKate]]: A codec for karaoke and text encapsulation in Ogg&lt;br /&gt;
** [[OggPCM]]: Uncompressed PCM audio, currently being implemented&lt;br /&gt;
** [[OggSpots]]: A mapping for encapsulating timed images in Ogg&lt;br /&gt;
** [[OggUVS]]: Uncompressed RGB and YUV video&lt;br /&gt;
&lt;br /&gt;
* '''Abandonware''' (nobody working on those as far as we know)&lt;br /&gt;
** [[Ghost]]: A &amp;quot;next-generation&amp;quot; audio codec (vapourware so far -- don't hold your breath)&lt;br /&gt;
** [[Oggless]]: Embedding Xiph codecs like Vorbis in containers other than Ogg&lt;br /&gt;
** [[IceShare]]: P2P content distribution&lt;br /&gt;
** [[OggPCM_Draft1]]: Original uncompressed PCM audio proposal&lt;br /&gt;
** [[OggRGB]]: Original uncompressed RGB video proposal&lt;br /&gt;
** [[OggWrit]]: Text phrase codec (e.g. subtitles)&lt;br /&gt;
** [[OggYUV]]: Original uncompressed YUV video proposal&lt;br /&gt;
&lt;br /&gt;
[[Category:Developers stuff]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/MIME_Types_and_File_Extensions</id>
		<title>MIME Types and File Extensions</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/MIME_Types_and_File_Extensions"/>
				<updated>2009-10-04T10:50:29Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* Ogg Kate files - application/kate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STATUS: Work on RFCs and tools is in process to reflect these policies. More details are [http://wiki.xiph.org/index.php/MIMETypesCodecs here], which also include a specification of the codecs parameter of the MIME tyes. Use the correct file extensions straight away.&lt;br /&gt;
&lt;br /&gt;
DISCLAIMER: currently, application/ogg, video/ogg, audio/ogg and audio/vorbis are registered MIME types.  Registration for the others will be undertaken. During this process, the &amp;quot;x-&amp;quot; versions of these unregistered MIME types may be used.&lt;br /&gt;
&lt;br /&gt;
IMPLEMENTATION recommendations and patches: see [[MIME-Migration]].&lt;br /&gt;
&lt;br /&gt;
== .ogx - application/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Multiplex Profile (anything in [[Ogg]])&lt;br /&gt;
* can contain any logical bitstreams multiplexed together in an ogg container&lt;br /&gt;
* will replace the .ogg extension from RFC 3534 http://www.ietf.org/rfc/rfc3534.txt&lt;br /&gt;
* random multitrack files MUST contain a [[Skeleton]] track to identify all containing logical bitstreams&lt;br /&gt;
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can&lt;br /&gt;
* thus, e.g. an annodex file can gracefully degrade to .ogx if an app cannot decode [[CMML]] and/or [[Skeleton]]&lt;br /&gt;
* USE: application/ogg has been registered, so can be used immediately&lt;br /&gt;
&lt;br /&gt;
== .ogv - video/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Video Profile (a/v in Ogg container)&lt;br /&gt;
* apps supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams&lt;br /&gt;
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg&lt;br /&gt;
* This list is not exhaustive (for example, [[Dirac]] + FLAC is acceptable too)&lt;br /&gt;
* SHOULD contain a Skeleton track and/or MAY contain a CMML logical bitstream.&lt;br /&gt;
&lt;br /&gt;
== .oga - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Audio Profile (audio in Ogg container)&lt;br /&gt;
* Applications supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams&lt;br /&gt;
* Covers Ogg [[FLAC]], [[Ghost]], and [[OggPCM]] &lt;br /&gt;
* Although they share the same MIME type, Vorbis and Speex use different file extensions.&lt;br /&gt;
* SHOULD contain a Skeleton logical bitstream.&lt;br /&gt;
* Vorbis and Speex may use .oga, but it is not the prefered method of distributing these files because of backwards-compatibility issues.&lt;br /&gt;
&lt;br /&gt;
== .ogg - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Vorbis I Profile&lt;br /&gt;
* .ogg applies now for Vorbis I files only&lt;br /&gt;
* .ogg has more recently also been used for Ogg FLAC and for Theora, too &amp;amp;mdash; these uses are deprecated now in favor of .oga and .ogv respectively&lt;br /&gt;
* has been defined in RFC 3534 http://www.ietf.org/rfc/rfc3534.txt for application/ogg, so rfc 3534 will be re-defined&lt;br /&gt;
&lt;br /&gt;
RATIONALE: .ogg has traditionally been used for Vorbis I files, in particular in HW players, hence it is kept for backwards-compatibility&lt;br /&gt;
&lt;br /&gt;
== .spx - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Speex Profile&lt;br /&gt;
* .spx has traditionally been used for Speex files within Ogg and should be considered for backwards-compatibility&lt;br /&gt;
&lt;br /&gt;
== .flac - audio/flac ==&lt;br /&gt;
&lt;br /&gt;
* FLAC in native encapsulation format&lt;br /&gt;
&lt;br /&gt;
== .anx - application/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for multiplexed Ogg that includes a skeleton track and at least one CMML logical bitstream&lt;br /&gt;
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can&lt;br /&gt;
* apps that come across an annodex file and cannot decode CMML and/or Skeleton, but can deal with the others SHOULD gracefully degrade by ignoring these&lt;br /&gt;
&lt;br /&gt;
== .axa - audio/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for audio in Annodex &lt;br /&gt;
* covers e.g. [[Vorbis]], [[Speex]], [[FLAC]], [[Ghost]], [[OggPCM]] inside Ogg with Skeleton and CMML&lt;br /&gt;
&lt;br /&gt;
== .axv - video/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for video in Annodex &lt;br /&gt;
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg with Skeleton and CMML&lt;br /&gt;
&lt;br /&gt;
== .xspf - application/xspf+xml ==&lt;br /&gt;
&lt;br /&gt;
* Profile for XSPF&lt;br /&gt;
* Covers [[XSPF]], while being used through XML&lt;br /&gt;
* Does not cover [[JSPF]], which is XSPF but on JSON&lt;br /&gt;
&lt;br /&gt;
== Ogg Kate files - application/kate ==&lt;br /&gt;
&lt;br /&gt;
* Binary representation of Kate encapsulated in Ogg&lt;br /&gt;
* may have a skeleton&lt;br /&gt;
* can be used to identify the mime type of the track itself (e.g. in skeleton)&lt;br /&gt;
* uses .ogx extension when in a file by itself&lt;br /&gt;
* is subdued by the dominant mime type if in a audio or video file to become audio/ogg or video/ogg&lt;br /&gt;
&lt;br /&gt;
== Codec MIME types ==&lt;br /&gt;
&lt;br /&gt;
Codecs need their own MIME types for streaming in RTP and to be used in multitrack ogg files using skeleton:&lt;br /&gt;
&lt;br /&gt;
* audio/vorbis for Vorbis without container&lt;br /&gt;
* video/theora for Theora without container&lt;br /&gt;
* audio/speex for Speex without container&lt;br /&gt;
* audio/flac for FLAC without and in native container&lt;br /&gt;
* text/cmml for CMML without container&lt;br /&gt;
* text/kate for the textual representation of Kate (.kate files)&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/MIME_Types_and_File_Extensions</id>
		<title>MIME Types and File Extensions</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/MIME_Types_and_File_Extensions"/>
				<updated>2009-10-04T10:49:55Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* Ogg Kate files - application/kate */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STATUS: Work on RFCs and tools is in process to reflect these policies. More details are [http://wiki.xiph.org/index.php/MIMETypesCodecs here], which also include a specification of the codecs parameter of the MIME tyes. Use the correct file extensions straight away.&lt;br /&gt;
&lt;br /&gt;
DISCLAIMER: currently, application/ogg, video/ogg, audio/ogg and audio/vorbis are registered MIME types.  Registration for the others will be undertaken. During this process, the &amp;quot;x-&amp;quot; versions of these unregistered MIME types may be used.&lt;br /&gt;
&lt;br /&gt;
IMPLEMENTATION recommendations and patches: see [[MIME-Migration]].&lt;br /&gt;
&lt;br /&gt;
== .ogx - application/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Multiplex Profile (anything in [[Ogg]])&lt;br /&gt;
* can contain any logical bitstreams multiplexed together in an ogg container&lt;br /&gt;
* will replace the .ogg extension from RFC 3534 http://www.ietf.org/rfc/rfc3534.txt&lt;br /&gt;
* random multitrack files MUST contain a [[Skeleton]] track to identify all containing logical bitstreams&lt;br /&gt;
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can&lt;br /&gt;
* thus, e.g. an annodex file can gracefully degrade to .ogx if an app cannot decode [[CMML]] and/or [[Skeleton]]&lt;br /&gt;
* USE: application/ogg has been registered, so can be used immediately&lt;br /&gt;
&lt;br /&gt;
== .ogv - video/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Video Profile (a/v in Ogg container)&lt;br /&gt;
* apps supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams&lt;br /&gt;
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg&lt;br /&gt;
* This list is not exhaustive (for example, [[Dirac]] + FLAC is acceptable too)&lt;br /&gt;
* SHOULD contain a Skeleton track and/or MAY contain a CMML logical bitstream.&lt;br /&gt;
&lt;br /&gt;
== .oga - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Audio Profile (audio in Ogg container)&lt;br /&gt;
* Applications supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams&lt;br /&gt;
* Covers Ogg [[FLAC]], [[Ghost]], and [[OggPCM]] &lt;br /&gt;
* Although they share the same MIME type, Vorbis and Speex use different file extensions.&lt;br /&gt;
* SHOULD contain a Skeleton logical bitstream.&lt;br /&gt;
* Vorbis and Speex may use .oga, but it is not the prefered method of distributing these files because of backwards-compatibility issues.&lt;br /&gt;
&lt;br /&gt;
== .ogg - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Vorbis I Profile&lt;br /&gt;
* .ogg applies now for Vorbis I files only&lt;br /&gt;
* .ogg has more recently also been used for Ogg FLAC and for Theora, too &amp;amp;mdash; these uses are deprecated now in favor of .oga and .ogv respectively&lt;br /&gt;
* has been defined in RFC 3534 http://www.ietf.org/rfc/rfc3534.txt for application/ogg, so rfc 3534 will be re-defined&lt;br /&gt;
&lt;br /&gt;
RATIONALE: .ogg has traditionally been used for Vorbis I files, in particular in HW players, hence it is kept for backwards-compatibility&lt;br /&gt;
&lt;br /&gt;
== .spx - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Speex Profile&lt;br /&gt;
* .spx has traditionally been used for Speex files within Ogg and should be considered for backwards-compatibility&lt;br /&gt;
&lt;br /&gt;
== .flac - audio/flac ==&lt;br /&gt;
&lt;br /&gt;
* FLAC in native encapsulation format&lt;br /&gt;
&lt;br /&gt;
== .anx - application/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for multiplexed Ogg that includes a skeleton track and at least one CMML logical bitstream&lt;br /&gt;
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can&lt;br /&gt;
* apps that come across an annodex file and cannot decode CMML and/or Skeleton, but can deal with the others SHOULD gracefully degrade by ignoring these&lt;br /&gt;
&lt;br /&gt;
== .axa - audio/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for audio in Annodex &lt;br /&gt;
* covers e.g. [[Vorbis]], [[Speex]], [[FLAC]], [[Ghost]], [[OggPCM]] inside Ogg with Skeleton and CMML&lt;br /&gt;
&lt;br /&gt;
== .axv - video/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for video in Annodex &lt;br /&gt;
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg with Skeleton and CMML&lt;br /&gt;
&lt;br /&gt;
== .xspf - application/xspf+xml ==&lt;br /&gt;
&lt;br /&gt;
* Profile for XSPF&lt;br /&gt;
* Covers [[XSPF]], while being used through XML&lt;br /&gt;
* Does not cover [[JSPF]], which is XSPF but on JSON&lt;br /&gt;
&lt;br /&gt;
== Ogg Kate files - application/kate ==&lt;br /&gt;
&lt;br /&gt;
* Binary representation of Kate encapsulated in Ogg&lt;br /&gt;
* may have a skeleton&lt;br /&gt;
* can be used to identify the mime type of the track itself (e.g. in skeleton)&lt;br /&gt;
* uses .ogx extension when in a file by itself&lt;br /&gt;
* is subdued by the dominant mime type if in a audio or video file to become audio/vorbis or video/theora&lt;br /&gt;
&lt;br /&gt;
== Codec MIME types ==&lt;br /&gt;
&lt;br /&gt;
Codecs need their own MIME types for streaming in RTP and to be used in multitrack ogg files using skeleton:&lt;br /&gt;
&lt;br /&gt;
* audio/vorbis for Vorbis without container&lt;br /&gt;
* video/theora for Theora without container&lt;br /&gt;
* audio/speex for Speex without container&lt;br /&gt;
* audio/flac for FLAC without and in native container&lt;br /&gt;
* text/cmml for CMML without container&lt;br /&gt;
* text/kate for the textual representation of Kate (.kate files)&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/MIME_Types_and_File_Extensions</id>
		<title>MIME Types and File Extensions</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/MIME_Types_and_File_Extensions"/>
				<updated>2009-10-04T10:47:18Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added kate&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;STATUS: Work on RFCs and tools is in process to reflect these policies. More details are [http://wiki.xiph.org/index.php/MIMETypesCodecs here], which also include a specification of the codecs parameter of the MIME tyes. Use the correct file extensions straight away.&lt;br /&gt;
&lt;br /&gt;
DISCLAIMER: currently, application/ogg, video/ogg, audio/ogg and audio/vorbis are registered MIME types.  Registration for the others will be undertaken. During this process, the &amp;quot;x-&amp;quot; versions of these unregistered MIME types may be used.&lt;br /&gt;
&lt;br /&gt;
IMPLEMENTATION recommendations and patches: see [[MIME-Migration]].&lt;br /&gt;
&lt;br /&gt;
== .ogx - application/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Multiplex Profile (anything in [[Ogg]])&lt;br /&gt;
* can contain any logical bitstreams multiplexed together in an ogg container&lt;br /&gt;
* will replace the .ogg extension from RFC 3534 http://www.ietf.org/rfc/rfc3534.txt&lt;br /&gt;
* random multitrack files MUST contain a [[Skeleton]] track to identify all containing logical bitstreams&lt;br /&gt;
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can&lt;br /&gt;
* thus, e.g. an annodex file can gracefully degrade to .ogx if an app cannot decode [[CMML]] and/or [[Skeleton]]&lt;br /&gt;
* USE: application/ogg has been registered, so can be used immediately&lt;br /&gt;
&lt;br /&gt;
== .ogv - video/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Video Profile (a/v in Ogg container)&lt;br /&gt;
* apps supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams&lt;br /&gt;
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg&lt;br /&gt;
* This list is not exhaustive (for example, [[Dirac]] + FLAC is acceptable too)&lt;br /&gt;
* SHOULD contain a Skeleton track and/or MAY contain a CMML logical bitstream.&lt;br /&gt;
&lt;br /&gt;
== .oga - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Audio Profile (audio in Ogg container)&lt;br /&gt;
* Applications supporting .oga, .ogv SHOULD support decoding from muxed Ogg streams&lt;br /&gt;
* Covers Ogg [[FLAC]], [[Ghost]], and [[OggPCM]] &lt;br /&gt;
* Although they share the same MIME type, Vorbis and Speex use different file extensions.&lt;br /&gt;
* SHOULD contain a Skeleton logical bitstream.&lt;br /&gt;
* Vorbis and Speex may use .oga, but it is not the prefered method of distributing these files because of backwards-compatibility issues.&lt;br /&gt;
&lt;br /&gt;
== .ogg - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Vorbis I Profile&lt;br /&gt;
* .ogg applies now for Vorbis I files only&lt;br /&gt;
* .ogg has more recently also been used for Ogg FLAC and for Theora, too &amp;amp;mdash; these uses are deprecated now in favor of .oga and .ogv respectively&lt;br /&gt;
* has been defined in RFC 3534 http://www.ietf.org/rfc/rfc3534.txt for application/ogg, so rfc 3534 will be re-defined&lt;br /&gt;
&lt;br /&gt;
RATIONALE: .ogg has traditionally been used for Vorbis I files, in particular in HW players, hence it is kept for backwards-compatibility&lt;br /&gt;
&lt;br /&gt;
== .spx - audio/ogg ==&lt;br /&gt;
&lt;br /&gt;
* Ogg Speex Profile&lt;br /&gt;
* .spx has traditionally been used for Speex files within Ogg and should be considered for backwards-compatibility&lt;br /&gt;
&lt;br /&gt;
== .flac - audio/flac ==&lt;br /&gt;
&lt;br /&gt;
* FLAC in native encapsulation format&lt;br /&gt;
&lt;br /&gt;
== .anx - application/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for multiplexed Ogg that includes a skeleton track and at least one CMML logical bitstream&lt;br /&gt;
* apps that identify a logical bitstream which they cannot decode SHOULD ignore it but MAY still decode the ones they can&lt;br /&gt;
* apps that come across an annodex file and cannot decode CMML and/or Skeleton, but can deal with the others SHOULD gracefully degrade by ignoring these&lt;br /&gt;
&lt;br /&gt;
== .axa - audio/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for audio in Annodex &lt;br /&gt;
* covers e.g. [[Vorbis]], [[Speex]], [[FLAC]], [[Ghost]], [[OggPCM]] inside Ogg with Skeleton and CMML&lt;br /&gt;
&lt;br /&gt;
== .axv - video/annodex ==&lt;br /&gt;
&lt;br /&gt;
* Profile for video in Annodex &lt;br /&gt;
* covers e.g. [[Theora]], Theora + Vorbis, Theora + Speex, Theora + FLAC, [[Dirac]] + Vorbis, [[OggMNG|MNG]] + FLAC, [[OggUVS]] inside Ogg with Skeleton and CMML&lt;br /&gt;
&lt;br /&gt;
== .xspf - application/xspf+xml ==&lt;br /&gt;
&lt;br /&gt;
* Profile for XSPF&lt;br /&gt;
* Covers [[XSPF]], while being used through XML&lt;br /&gt;
* Does not cover [[JSPF]], which is XSPF but on JSON&lt;br /&gt;
&lt;br /&gt;
== Ogg Kate files - application/kate ==&lt;br /&gt;
&lt;br /&gt;
* Binary representation of Kate encapsulated in Ogg&lt;br /&gt;
* may have a skeleton&lt;br /&gt;
* can be used to identify the mime type of the track itself (e.g. in skeleton)&lt;br /&gt;
* uses .ogx extension when in a file by itself&lt;br /&gt;
* is subdued by the dominant mime type if in a audio or video file&lt;br /&gt;
&lt;br /&gt;
== Codec MIME types ==&lt;br /&gt;
&lt;br /&gt;
Codecs need their own MIME types for streaming in RTP and to be used in multitrack ogg files using skeleton:&lt;br /&gt;
&lt;br /&gt;
* audio/vorbis for Vorbis without container&lt;br /&gt;
* video/theora for Theora without container&lt;br /&gt;
* audio/speex for Speex without container&lt;br /&gt;
* audio/flac for FLAC without and in native container&lt;br /&gt;
* text/cmml for CMML without container&lt;br /&gt;
* text/kate for the textual representation of Kate (.kate files)&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Work_In_Progress</id>
		<title>Work In Progress</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Work_In_Progress"/>
				<updated>2009-08-25T14:05:57Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added ROE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* '''General Usage:'''&lt;br /&gt;
** [[Metadata]]: Various types of Ogg metadata including the [[M3F]] (Multimedia Metadata Format) and [[XMLEmbedding]]&lt;br /&gt;
** [[MIME_Types_and_File_Extensions]]: MIME Types and file extensions for Ogg multimedia files&lt;br /&gt;
** [[Subtle]]: Subtitling tool for professional use that intends to support most subtitle formats including CMML and OggKate&lt;br /&gt;
** [[OggText]]: A generic media mapping for (discontinuous) text codecs into Ogg&lt;br /&gt;
** [[ROE]]: A description format for describing the tracks and languages etc. of an Ogg multitrack composition&lt;br /&gt;
&lt;br /&gt;
* '''Compressed Codecs:'''&lt;br /&gt;
** [[Theora]] 1.1 &amp;quot;thusnelda&amp;quot;: improving compression efficiency while keeping compatibility, see [[Theora11Todo]]&lt;br /&gt;
** [[OggDirac]]: The &amp;quot;next-generation&amp;quot; wavelet based video codec, lossy or lossless &lt;br /&gt;
** [[OggCELT]]: A low-latency audio codec&lt;br /&gt;
** [[OggMNG]]: A mapping for encapsulating the MNG animation format in Ogg&lt;br /&gt;
&lt;br /&gt;
* '''Uncompressed Codecs:'''&lt;br /&gt;
** [[OggKate]]: A codec for karaoke and text encapsulation in Ogg&lt;br /&gt;
** [[OggPCM]]: New Uncompressed PCM audio, currently being implemented (formerly Draft2)&lt;br /&gt;
** [[OggSpots]]: A mapping for encapsulating timed images in Ogg&lt;br /&gt;
** [[OggUVS]]: Uncompressed RGB and YUV video, under active development (preferred to OggRGB and OggYUV).&lt;br /&gt;
&lt;br /&gt;
* '''Abandonware''' (nobody working on those as far as we know)&lt;br /&gt;
** [[Ghost]]: A &amp;quot;next-generation&amp;quot; audio codec (vapourware so far -- don't hold your breath)&lt;br /&gt;
** [[Oggless]]: Embedding Xiph codecs like Vorbis in containers other than Ogg&lt;br /&gt;
** [[IceShare]]: P2P content distribution&lt;br /&gt;
** [[OggPCM_Draft1]]: Original uncompressed PCM audio proposal&lt;br /&gt;
** [[OggRGB]]: Original uncompressed RGB video proposal&lt;br /&gt;
** [[OggWrit]]: Text phrase codec (e.g. subtitles)&lt;br /&gt;
** [[OggYUV]]: Original uncompressed YUV video proposal&lt;br /&gt;
&lt;br /&gt;
[[Category:Developers stuff]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Timed_Divs_HTML</id>
		<title>Timed Divs HTML</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Timed_Divs_HTML"/>
				<updated>2009-06-21T22:59:46Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* Direct linking on a HTML5 page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
This page specifies a subclass of HTML documents that is a time-aligned text format for audio-visual content. We call the format &amp;quot;timed divs within HTML&amp;quot; or TDHT. It is intended to be used only in a World Wide Web context i.e. everywhere that Web browser functionality is available. Use cases for the format are subtitles, captions, annotations and other time aligned text as listed at http://wiki.xiph.org/index.php/OggText#Categories_of_Text_Codecs .&lt;br /&gt;
&lt;br /&gt;
TDHT may be similar to W3C TimedText DFXP in many respects, but in comparison to DFXP it does not re-invent HTML, CSS and effects, but rather uses existing HTML, CSS and javascript for these. The purpose of DFXP is to create a web-independent exchange format for timed text, which is why it cannot directly be specified as a subpart of HTML.&lt;br /&gt;
&lt;br /&gt;
TDHT in contrast is HTML with a minimum number of changes. TDHT is parsable by any HTML parser. It works with CSS and javascript. No new functionality has to be defined for TDHT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= File Extension =&lt;br /&gt;
&lt;br /&gt;
Files in this format are to be of text/html mime type since they are valid html files, apart from some extra attributes.&lt;br /&gt;
&lt;br /&gt;
Files in this format should have a file extension of .tdht to separate them from plain html files.&lt;br /&gt;
&lt;br /&gt;
= The TDHT format changes from HTML =&lt;br /&gt;
&lt;br /&gt;
TDHT files are time-aligned text. This means there is a time association with blocks of text and there is time-based seeking functionality on those blocks of text.&lt;br /&gt;
&lt;br /&gt;
Here is an example TDHT file for subtitles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Desperate Housewives - Season 5, Episode 6&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div start=&amp;quot;00:00:00.070&amp;quot; end=&amp;quot;00:00:02.270&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Previously on...&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div start=&amp;quot;00:00:02.280&amp;quot; end=&amp;quot;00:00:04.270&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;We had an agreement to keep things casual.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div start=&amp;quot;00:00:04.280&amp;quot; end=&amp;quot;00:00:06.660&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Susan made her feelings clear.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div start=&amp;quot;00:00:06.800&amp;quot; end=&amp;quot;00:00:10.100&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;So if I was with another woman, that wouldn't bother you? No, it wouldn't.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The differences of TDHT from HTML are described using [http://www.w3.org/TR/html401/ HTML4.01], but the changes apply the same to [http://www.whatwg.org/specs/web-apps/current-work/ HTML5], which doesn't have a normative schema.&lt;br /&gt;
&lt;br /&gt;
The following changes to HTML are made for TDHT:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1. The body element ==&lt;br /&gt;
&lt;br /&gt;
In HTML4.01, the [http://www.w3.org/TR/html401/struct/global.html#h-7.5 body element] is defined as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body --&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST BODY&lt;br /&gt;
  %attrs;                              -- %coreattrs, %i18n, %events --&lt;br /&gt;
  onload          %Script;   #IMPLIED  -- the document has been loaded --&lt;br /&gt;
  onunload        %Script;   #IMPLIED  -- the document has been removed --&lt;br /&gt;
  &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In TDHT1.0 we restrict body to just contain a sequence of div tags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT BODY O O (DIV)+ -- document body --&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST BODY&lt;br /&gt;
  %attrs;                              -- %coreattrs, %i18n, %events --&lt;br /&gt;
  onload          %Script;   #IMPLIED  -- the document has been loaded --&lt;br /&gt;
  onunload        %Script;   #IMPLIED  -- the document has been removed --&lt;br /&gt;
  &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Any tags inside the body tag that are non-conformant to this specification (such as regular html tags that are allowed inside body) must be ignored for TDHT.&lt;br /&gt;
&lt;br /&gt;
The div tags, however, can contain anything that HTML div tags can contain, thus enabling a very flexible, but time-aligned text model.&lt;br /&gt;
&lt;br /&gt;
== 2. The div element ==&lt;br /&gt;
&lt;br /&gt;
In HTML, the [http://www.w3.org/TR/html401/struct/global.html#h-7.5.4 div element] is defined as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DIV - - (%flow;)*            -- generic language/style container --&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST DIV&lt;br /&gt;
  %attrs;                              -- %coreattrs, %i18n, %events --&lt;br /&gt;
  &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In TDHT1.0 we extend it with start and end time attributes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DIV - - (%flow;)*            -- generic language/style container --&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST DIV&lt;br /&gt;
  %attrs;                              -- %coreattrs, %i18n, %events --&lt;br /&gt;
  start           %Time;    #IMPLIED   -- start time&lt;br /&gt;
  end             %Time;    #IMPLIED   -- end time&lt;br /&gt;
  &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Time entity represents a valid time string accroding to HTML5: http://www.whatwg.org/specs/web-apps/current-work/#valid-time-string . The end time string must be larger than the start time string, otherwise the div element does not exist for any duration and can never turn active.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;div&amp;gt; elements in a TDHT file should be ordered by start time to simplify parsing. Inside Ogg or when rendered, they will be ordered by start time.&lt;br /&gt;
&lt;br /&gt;
= Rendering in a Web Browser =&lt;br /&gt;
&lt;br /&gt;
A TDHT file is meant to be associated with a audio or video file and rendered in a Web browser in sync with the audio or video file.&lt;br /&gt;
&lt;br /&gt;
The TDHT file's div elements are not rendered into an existing HTML page, but rather a TDHT file creates its own [http://www.whatwg.org/specs/web-apps/current-work/#the-iframe-element iframe-like] new nested browsing context. It is linked to the parent HTML page through an itext element that is inserted as a child of the video element. Creation of a nested browsing context is important because a TDHT file can come from a different URI than the Web page and thus for security reasons and for general base URI computations a nested browsing context is the better approach with the DOM nodes of the hosting page and the DOM nodes of the TDHT document in different owner documents. That way, the hosting document has the security origin of its own URL and the TDHT document has the security origin of its URL. &lt;br /&gt;
&lt;br /&gt;
The rendering and CSS view port are either by default the rectangle occupied by the given &amp;lt;video&amp;gt; or &amp;lt;audio&amp;gt; tag, or an area provided for by the hosting HTML page through the itext element's properties. The zoom factor of the iframe must be set to such a value that the width of the view port established by the itext frame is equally wide in CSS px as the video frame is wide in codec pixels. (Example: If the video encodes a frame that is 240 pixels wide but is displayed at 480 CSS px wide, the zoom factor of the itext frame should be 200% so that the box that on the outsize measures 480 px seems like a box of 240 px from within the itext frame.)&lt;br /&gt;
&lt;br /&gt;
The itext frame is by default transparent.&lt;br /&gt;
&lt;br /&gt;
A TDHT file can get to a browser either as a external resource, or as part of audio or video resource (in particular inside Ogg, see below). Parsing in these two cases is slightly different for the browser.&lt;br /&gt;
&lt;br /&gt;
For the external TDHT file case:&lt;br /&gt;
The TDHT file is parsed using the HTML5 parsing algorithm in its normal mode into a non-rendered DOM. To render a div, the children of the div would be cloned into the body of the rendering shell document (replacing possible previous children of body).&lt;br /&gt;
&lt;br /&gt;
For the Ogg-internal TDHT case:&lt;br /&gt;
To multiplex an external TDHT file into Ogg, each div with its innerHTML would be placed into a data packet and the head data in to an Ogg header. For decoding, the rendering shell document is set up and the head tag is included from the Ogg headers. To render a packet, the div and its innerHTML would be added to the innerHTML of the body element of the rendering shell document as they come. This will use the HTML fragment parser.&lt;br /&gt;
&lt;br /&gt;
As the browser plays the video, it must render the TDHT &amp;amp;lt;div&amp;gt; tags in sync. As the start time of a &amp;amp;lt;div&amp;gt; tag is reached, the &amp;amp;lt;div&amp;gt; tag is made activate, and it is made inactive as the &amp;amp;lt;div&amp;gt; tag's end time is reached. If no start time is given, the start is assumed to be 0, and if no end time is given, end is assumed to be infinity.&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;active&amp;quot; &amp;amp;lt;div&amp;gt; tag may be a &amp;amp;lt;div&amp;gt; tag that is being displayed (&amp;quot;display: block&amp;quot;) in contrast to an &amp;quot;inactive&amp;quot; &amp;amp;lt;div&amp;gt; tag, which may not be displayed (&amp;quot;display: none&amp;quot;). For some text formats however the difference between &amp;quot;active&amp;quot; and &amp;quot;inactive&amp;quot; may be a background colour or the display location on screen or some other mechanism. The default should be between &amp;quot;block&amp;quot; and &amp;quot;none&amp;quot;, but changeable through CSS.&lt;br /&gt;
&lt;br /&gt;
As the browser has parsed the TDHT file or its consitutent &amp;amp;lt;div&amp;gt; tags, it is expected to keep the structure in memory. When seeking happens on the video, it can then decide upon which &amp;amp;lt;div&amp;gt; tags are supposed to be active at the seek time and display these. [There is a discussion to be had here about the effect this has on the DOM. Different selectors may apply to a caption depending on whether the video was played back all the way there or seeking skipped over data to get there. It was suggested that inactive captions should be removed from the DOM, so there's always a well-defined small unambiguous DOM to match selectors against. However, this may for example not be desirable on some text display formats.]&lt;br /&gt;
&lt;br /&gt;
= Encapsulation into Ogg =&lt;br /&gt;
&lt;br /&gt;
The [http://wiki.xiph.org/index.php/OggText OggText] specification is used to encapsulate a TDHT file into Ogg.&lt;br /&gt;
&lt;br /&gt;
The codec-specific header data for the OggText ident header is the &amp;lt;head&amp;gt;..&amp;lt;/head&amp;gt; part of the TDHT file. The complete &amp;lt;head&amp;gt; tag including all its subtags is encoded into the ident header unchanged.&lt;br /&gt;
&lt;br /&gt;
The &amp;amp;lt;div&amp;gt; elements with all their inner HTML are the data packets of the TDHT text codec and are thus encapsulated into the data packets as text codec data. A complete &amp;amp;lt;div&amp;gt; including all its subtags is encoded into one data packet each.&lt;br /&gt;
&lt;br /&gt;
= Direct linking on a HTML5 page =&lt;br /&gt;
&lt;br /&gt;
Often, subtitles and other time-aligned text files are not actually provided inside a video stream (e.g. inside Ogg), but are referenced as a separate partner resource to a video.&lt;br /&gt;
&lt;br /&gt;
To allow association of such files with a &amp;lt;video&amp;gt; or &amp;lt;audio&amp;gt; element, we propose the following approach:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;video i=&amp;quot;video&amp;quot; src=&amp;quot;http://example.com/video.ogv&amp;quot; controls&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;caption1&amp;quot;  category=&amp;quot;CC&amp;quot; lang=&amp;quot;en/us&amp;quot; src=&amp;quot;caption.srt&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;caption2&amp;quot;  category=&amp;quot;CC&amp;quot; lang=&amp;quot;de/de&amp;quot; src=&amp;quot;caption.tdht&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;subtitle1&amp;quot; category=&amp;quot;SUB&amp;quot; lang=&amp;quot;de/de&amp;quot; src=&amp;quot;german.dfxp&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;subtitle2&amp;quot; category=&amp;quot;SUB&amp;quot; lang=&amp;quot;jp&amp;quot; src=&amp;quot;japanese.smil&amp;quot; style=&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;subtitle3&amp;quot; category=&amp;quot;SUB&amp;quot; lang=&amp;quot;fr&amp;quot; src=&amp;quot;translation_webservice/fr/caption.srt&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the second set of closed captions being a TDHT file.&lt;br /&gt;
&lt;br /&gt;
The id tag is simply a unique identifier for the tag.&lt;br /&gt;
The category is from [http://wiki.xiph.org/index.php/OggText#Categories_of_Text_Codecs Ogg text categories].&lt;br /&gt;
The lang contains a natural language according to [http://en.wikipedia.org/wiki/Language_code  language codes].&lt;br /&gt;
The src element contains the actual file URI that we are after.&lt;br /&gt;
The style element allows to attach styling to marked-up import files.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;itext&amp;gt; element would act like an &amp;lt;iframe&amp;gt; element and create the nested browsing context described earlier. It has been renamed from earlier mentions of this approach from &amp;lt;text&amp;gt; to &amp;lt;itext&amp;gt; to avoid name clashes with e.g. SVG.&lt;br /&gt;
&lt;br /&gt;
The user agent would then provide an interface such as:&lt;br /&gt;
&lt;br /&gt;
  interface MediaItextElement : HTMLElement {&lt;br /&gt;
    attribute DOMString src;&lt;br /&gt;
    attribute DOMString category;&lt;br /&gt;
    attribute DOMString lang;&lt;br /&gt;
    attribute DOMString id;&lt;br /&gt;
    attribute DOMString style;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
In javascript there will need to be additional functions such as:&lt;br /&gt;
&lt;br /&gt;
  getItext (): returns an array of time-aligned text elements&lt;br /&gt;
  addItext({src,category,lang,style,name}): adds a time-aligned text element to a &amp;lt;video&amp;gt; or &amp;lt;audio&amp;gt; element&lt;br /&gt;
  enable(itextElement): activates display of an itext file&lt;br /&gt;
  disable(itextElement) : deactivates display of an itext file&lt;br /&gt;
  delay(itextElement, seconds) : delays the itext file in relation to the video file by a positive or negative number of seconds&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Timed_Divs_HTML</id>
		<title>Timed Divs HTML</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Timed_Divs_HTML"/>
				<updated>2009-06-21T22:27:50Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* Direct linking on a HTML5 page */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{draft}}&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
This page specifies a subclass of HTML documents that is a time-aligned text format for audio-visual content. We call the format &amp;quot;timed divs within HTML&amp;quot; or TDHT. It is intended to be used only in a World Wide Web context i.e. everywhere that Web browser functionality is available. Use cases for the format are subtitles, captions, annotations and other time aligned text as listed at http://wiki.xiph.org/index.php/OggText#Categories_of_Text_Codecs .&lt;br /&gt;
&lt;br /&gt;
TDHT may be similar to W3C TimedText DFXP in many respects, but in comparison to DFXP it does not re-invent HTML, CSS and effects, but rather uses existing HTML, CSS and javascript for these. The purpose of DFXP is to create a web-independent exchange format for timed text, which is why it cannot directly be specified as a subpart of HTML.&lt;br /&gt;
&lt;br /&gt;
TDHT in contrast is HTML with a minimum number of changes. TDHT is parsable by any HTML parser. It works with CSS and javascript. No new functionality has to be defined for TDHT.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= File Extension =&lt;br /&gt;
&lt;br /&gt;
Files in this format are to be of text/html mime type since they are valid html files, apart from some extra attributes.&lt;br /&gt;
&lt;br /&gt;
Files in this format should have a file extension of .tdht to separate them from plain html files.&lt;br /&gt;
&lt;br /&gt;
= The TDHT format changes from HTML =&lt;br /&gt;
&lt;br /&gt;
TDHT files are time-aligned text. This means there is a time association with blocks of text and there is time-based seeking functionality on those blocks of text.&lt;br /&gt;
&lt;br /&gt;
Here is an example TDHT file for subtitles:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Desperate Housewives - Season 5, Episode 6&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div start=&amp;quot;00:00:00.070&amp;quot; end=&amp;quot;00:00:02.270&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Previously on...&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div start=&amp;quot;00:00:02.280&amp;quot; end=&amp;quot;00:00:04.270&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;We had an agreement to keep things casual.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div start=&amp;quot;00:00:04.280&amp;quot; end=&amp;quot;00:00:06.660&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;Susan made her feelings clear.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;div start=&amp;quot;00:00:06.800&amp;quot; end=&amp;quot;00:00:10.100&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;p&amp;gt;So if I was with another woman, that wouldn't bother you? No, it wouldn't.&amp;lt;/p&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The differences of TDHT from HTML are described using [http://www.w3.org/TR/html401/ HTML4.01], but the changes apply the same to [http://www.whatwg.org/specs/web-apps/current-work/ HTML5], which doesn't have a normative schema.&lt;br /&gt;
&lt;br /&gt;
The following changes to HTML are made for TDHT:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 1. The body element ==&lt;br /&gt;
&lt;br /&gt;
In HTML4.01, the [http://www.w3.org/TR/html401/struct/global.html#h-7.5 body element] is defined as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body --&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST BODY&lt;br /&gt;
  %attrs;                              -- %coreattrs, %i18n, %events --&lt;br /&gt;
  onload          %Script;   #IMPLIED  -- the document has been loaded --&lt;br /&gt;
  onunload        %Script;   #IMPLIED  -- the document has been removed --&lt;br /&gt;
  &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In TDHT1.0 we restrict body to just contain a sequence of div tags:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT BODY O O (DIV)+ -- document body --&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST BODY&lt;br /&gt;
  %attrs;                              -- %coreattrs, %i18n, %events --&lt;br /&gt;
  onload          %Script;   #IMPLIED  -- the document has been loaded --&lt;br /&gt;
  onunload        %Script;   #IMPLIED  -- the document has been removed --&lt;br /&gt;
  &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Any tags inside the body tag that are non-conformant to this specification (such as regular html tags that are allowed inside body) must be ignored for TDHT.&lt;br /&gt;
&lt;br /&gt;
The div tags, however, can contain anything that HTML div tags can contain, thus enabling a very flexible, but time-aligned text model.&lt;br /&gt;
&lt;br /&gt;
== 2. The div element ==&lt;br /&gt;
&lt;br /&gt;
In HTML, the [http://www.w3.org/TR/html401/struct/global.html#h-7.5.4 div element] is defined as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DIV - - (%flow;)*            -- generic language/style container --&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST DIV&lt;br /&gt;
  %attrs;                              -- %coreattrs, %i18n, %events --&lt;br /&gt;
  &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In TDHT1.0 we extend it with start and end time attributes:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!ELEMENT DIV - - (%flow;)*            -- generic language/style container --&amp;gt;&lt;br /&gt;
&amp;lt;!ATTLIST DIV&lt;br /&gt;
  %attrs;                              -- %coreattrs, %i18n, %events --&lt;br /&gt;
  start           %Time;    #IMPLIED   -- start time&lt;br /&gt;
  end             %Time;    #IMPLIED   -- end time&lt;br /&gt;
  &amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Time entity represents a valid time string accroding to HTML5: http://www.whatwg.org/specs/web-apps/current-work/#valid-time-string . The end time string must be larger than the start time string, otherwise the div element does not exist for any duration and can never turn active.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;lt;div&amp;gt; elements in a TDHT file should be ordered by start time to simplify parsing. Inside Ogg or when rendered, they will be ordered by start time.&lt;br /&gt;
&lt;br /&gt;
= Rendering in a Web Browser =&lt;br /&gt;
&lt;br /&gt;
A TDHT file is meant to be associated with a audio or video file and rendered in a Web browser in sync with the audio or video file.&lt;br /&gt;
&lt;br /&gt;
The TDHT file's div elements are not rendered into an existing HTML page, but rather a TDHT file creates its own [http://www.whatwg.org/specs/web-apps/current-work/#the-iframe-element iframe-like] new nested browsing context. It is linked to the parent HTML page through an itext element that is inserted as a child of the video element. Creation of a nested browsing context is important because a TDHT file can come from a different URI than the Web page and thus for security reasons and for general base URI computations a nested browsing context is the better approach with the DOM nodes of the hosting page and the DOM nodes of the TDHT document in different owner documents. That way, the hosting document has the security origin of its own URL and the TDHT document has the security origin of its URL. &lt;br /&gt;
&lt;br /&gt;
The rendering and CSS view port are either by default the rectangle occupied by the given &amp;lt;video&amp;gt; or &amp;lt;audio&amp;gt; tag, or an area provided for by the hosting HTML page through the itext element's properties. The zoom factor of the iframe must be set to such a value that the width of the view port established by the itext frame is equally wide in CSS px as the video frame is wide in codec pixels. (Example: If the video encodes a frame that is 240 pixels wide but is displayed at 480 CSS px wide, the zoom factor of the itext frame should be 200% so that the box that on the outsize measures 480 px seems like a box of 240 px from within the itext frame.)&lt;br /&gt;
&lt;br /&gt;
The itext frame is by default transparent.&lt;br /&gt;
&lt;br /&gt;
A TDHT file can get to a browser either as a external resource, or as part of audio or video resource (in particular inside Ogg, see below). Parsing in these two cases is slightly different for the browser.&lt;br /&gt;
&lt;br /&gt;
For the external TDHT file case:&lt;br /&gt;
The TDHT file is parsed using the HTML5 parsing algorithm in its normal mode into a non-rendered DOM. To render a div, the children of the div would be cloned into the body of the rendering shell document (replacing possible previous children of body).&lt;br /&gt;
&lt;br /&gt;
For the Ogg-internal TDHT case:&lt;br /&gt;
To multiplex an external TDHT file into Ogg, each div with its innerHTML would be placed into a data packet and the head data in to an Ogg header. For decoding, the rendering shell document is set up and the head tag is included from the Ogg headers. To render a packet, the div and its innerHTML would be added to the innerHTML of the body element of the rendering shell document as they come. This will use the HTML fragment parser.&lt;br /&gt;
&lt;br /&gt;
As the browser plays the video, it must render the TDHT &amp;amp;lt;div&amp;gt; tags in sync. As the start time of a &amp;amp;lt;div&amp;gt; tag is reached, the &amp;amp;lt;div&amp;gt; tag is made activate, and it is made inactive as the &amp;amp;lt;div&amp;gt; tag's end time is reached. If no start time is given, the start is assumed to be 0, and if no end time is given, end is assumed to be infinity.&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;active&amp;quot; &amp;amp;lt;div&amp;gt; tag may be a &amp;amp;lt;div&amp;gt; tag that is being displayed (&amp;quot;display: block&amp;quot;) in contrast to an &amp;quot;inactive&amp;quot; &amp;amp;lt;div&amp;gt; tag, which may not be displayed (&amp;quot;display: none&amp;quot;). For some text formats however the difference between &amp;quot;active&amp;quot; and &amp;quot;inactive&amp;quot; may be a background colour or the display location on screen or some other mechanism. The default should be between &amp;quot;block&amp;quot; and &amp;quot;none&amp;quot;, but changeable through CSS.&lt;br /&gt;
&lt;br /&gt;
As the browser has parsed the TDHT file or its consitutent &amp;amp;lt;div&amp;gt; tags, it is expected to keep the structure in memory. When seeking happens on the video, it can then decide upon which &amp;amp;lt;div&amp;gt; tags are supposed to be active at the seek time and display these. [There is a discussion to be had here about the effect this has on the DOM. Different selectors may apply to a caption depending on whether the video was played back all the way there or seeking skipped over data to get there. It was suggested that inactive captions should be removed from the DOM, so there's always a well-defined small unambiguous DOM to match selectors against. However, this may for example not be desirable on some text display formats.]&lt;br /&gt;
&lt;br /&gt;
= Encapsulation into Ogg =&lt;br /&gt;
&lt;br /&gt;
The [http://wiki.xiph.org/index.php/OggText OggText] specification is used to encapsulate a TDHT file into Ogg.&lt;br /&gt;
&lt;br /&gt;
The codec-specific header data for the OggText ident header is the &amp;lt;head&amp;gt;..&amp;lt;/head&amp;gt; part of the TDHT file. The complete &amp;lt;head&amp;gt; tag including all its subtags is encoded into the ident header unchanged.&lt;br /&gt;
&lt;br /&gt;
The &amp;amp;lt;div&amp;gt; elements with all their inner HTML are the data packets of the TDHT text codec and are thus encapsulated into the data packets as text codec data. A complete &amp;amp;lt;div&amp;gt; including all its subtags is encoded into one data packet each.&lt;br /&gt;
&lt;br /&gt;
= Direct linking on a HTML5 page =&lt;br /&gt;
&lt;br /&gt;
Often, subtitles and other time-aligned text files are not actually provided inside a video stream (e.g. inside Ogg), but are referenced as a separate partner resource to a video.&lt;br /&gt;
&lt;br /&gt;
To allow association of such files with a &amp;lt;video&amp;gt; or &amp;lt;audio&amp;gt; element, we propose the following approach:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;video i=&amp;quot;video&amp;quot; src=&amp;quot;http://example.com/video.ogv&amp;quot; controls&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;caption1&amp;quot;  category=&amp;quot;CC&amp;quot; lang=&amp;quot;en/us&amp;quot; src=&amp;quot;caption.srt&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;caption2&amp;quot;  category=&amp;quot;CC&amp;quot; lang=&amp;quot;de/de&amp;quot; src=&amp;quot;caption.tdht&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;subtitle1&amp;quot; category=&amp;quot;SUB&amp;quot; lang=&amp;quot;de/de&amp;quot; src=&amp;quot;german.dfxp&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;subtitle2&amp;quot; category=&amp;quot;SUB&amp;quot; lang=&amp;quot;jp&amp;quot; src=&amp;quot;japanese.smil&amp;quot; style=&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
  &amp;lt;itext id=&amp;quot;subtitle3&amp;quot; category=&amp;quot;SUB&amp;quot; lang=&amp;quot;fr&amp;quot; src=&amp;quot;translation_webservice/fr/caption.srt&amp;quot; style=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/itext&amp;gt;&lt;br /&gt;
&amp;lt;/video&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the second set of closed captions being a TDHT file.&lt;br /&gt;
&lt;br /&gt;
The id tag is simply a unique identifier for the tag.&lt;br /&gt;
The category is from [[http://wiki.xiph.org/index.php/OggText#Categories_of_Text_Codecs Ogg text categories]].&lt;br /&gt;
The lang contains a natural language according to [[http://en.wikipedia.org/wiki/Language_code | language codes]].&lt;br /&gt;
The src element contains the actual file URI that we are after.&lt;br /&gt;
The style element allows to attach styling to marked-up import files.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;itext&amp;gt; element would act like an &amp;lt;iframe&amp;gt; element and create the nested browsing context described earlier. It has been renamed from earlier mentions of this approach from &amp;lt;text&amp;gt; to &amp;lt;itext&amp;gt; to avoid name clashes with e.g. SVG.&lt;br /&gt;
&lt;br /&gt;
The user agent would then provide an interface such as:&lt;br /&gt;
&lt;br /&gt;
  interface MediaItextElement : HTMLElement {&lt;br /&gt;
    attribute DOMString src;&lt;br /&gt;
    attribute DOMString category;&lt;br /&gt;
    attribute DOMString lang;&lt;br /&gt;
    attribute DOMString id;&lt;br /&gt;
    attribute DOMString style;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
In javascript there will need to be additional functions such as:&lt;br /&gt;
&lt;br /&gt;
  getItext (): returns an array of time-aligned text elements&lt;br /&gt;
  addItext({src,category,lang,style,name}): adds a time-aligned text element to a &amp;lt;video&amp;gt; or &amp;lt;audio&amp;gt; element&lt;br /&gt;
  enable(itextElement): activates display of an itext file&lt;br /&gt;
  disable(itextElement) : deactivates display of an itext file&lt;br /&gt;
  delay(itextElement, seconds) : delays the itext file in relation to the video file by a positive or negative number of seconds&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/MIMETypesCodecs</id>
		<title>MIMETypesCodecs</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/MIMETypesCodecs"/>
				<updated>2009-06-04T11:35:12Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added file extension sentence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Specification of MIME types and respective codecs parameter ==&lt;br /&gt;
&lt;br /&gt;
Also includes a specification of the recommended file extensions to use with Ogg.&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
The following MIME types are now officially registered with IANA and specified with the IETF as [http://www.ietf.org/rfc/rfc5334.txt RFC 5334]:&lt;br /&gt;
&lt;br /&gt;
* video/ogg - for video (with audio) encapsulated in Ogg&lt;br /&gt;
** recommends a Skeleton logical bitstrem&lt;br /&gt;
** .ogv file extension&lt;br /&gt;
** Macintosh File Type Code: OggV&lt;br /&gt;
&lt;br /&gt;
* audio/ogg - for audio encapsulated in Ogg&lt;br /&gt;
** recommends a Skeleton logical bitstrem&lt;br /&gt;
** .oga file extension, .ogg for Vorbis I, .spx for Speex&lt;br /&gt;
** Macintosh File Type Code: OggA&lt;br /&gt;
&lt;br /&gt;
* application/ogg - for complex, multitrack, multiplexed files encapsulated in Ogg&lt;br /&gt;
** requires a Skeleton logical bitstream&lt;br /&gt;
** .ogx file extension&lt;br /&gt;
** Macintosh File Type Code: OggX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[MIME_Types_and_File_Extensions|Other MIME types]] are still in the process.&lt;br /&gt;
&lt;br /&gt;
=== Codecs Parameter ===&lt;br /&gt;
&lt;br /&gt;
[http://www.rfc-editor.org/rfc/rfc4281.txt Typically], MIME types of media encapsulation formats use the optional &amp;quot;codecs&amp;quot; parameter to specify which codes are being used in a particular file.&lt;br /&gt;
&lt;br /&gt;
Codecs encapsulated in Ogg require a text identifier at the beginning of the first header page to identify the encapsulated codecs.  The following table contains the identifiers for existing Xiph codecs and the codecs parameter names used for */ogg MIME types (in alphabetical order):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;codecstable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Codecs Parameter Name&lt;br /&gt;
! Codec Type&lt;br /&gt;
! Codec Identifier&lt;br /&gt;
(decimal, hex, octal)&lt;br /&gt;
! Version Field (if available)&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h celt]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'CELT\ \ \ \ '&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x43 0x45 0x4c 0x54 0x20 0x20 0x20 0x20'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0103 0105 0114 0124 0040 0040 0040 0040'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[28,4]: version id&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h cmml]&lt;br /&gt;
| text&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'CMML\0\0\0\0'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x43 0x4d 0x4d 0x4c 0x00 0x00 0x00 0x00'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0103 0115 0115 0114 0000 0000 0000 0000'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[8,2]: major version number,&lt;br /&gt;
char[10,2]: minor version number&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.xiph.org/index.php/OggDirac  dirac]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,5]: &amp;lt;tt&amp;gt;'BBCD\0'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x42 0x42 0x43 0x44 00'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0102 0102 0103 0104 0000'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| [http://flac.sourceforge.net/ogg_mapping.html  flac]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,5]: &amp;lt;tt&amp;gt;'\177FLAC'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x7F 0x46 0x4C 0x41 0x43'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0177 0106 0114 0101 0103'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[5,1]: binary major version number, &lt;br /&gt;
char[6,1]: binary minor version number of mapping&lt;br /&gt;
|-&lt;br /&gt;
| [[OggMNG|jng]]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'\213JNG\r\n\032\n'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x8b 0x4a 0x4e 0x47 0x0D 0x0A 0x1A 0x0A'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0213 0112 0116 0107 0015 0012 0032 0012'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| [[OggKate|kate]]&lt;br /&gt;
| text&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'\x80kate\0\0\0'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x80 0x6b 0x61 0x74 0x65 0x00 0x00 0x00'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0200 0153 0141 0164 0145 0000 0000 0000'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[9,1]: major version number,&lt;br /&gt;
char[10,1]: minor version number&lt;br /&gt;
|-&lt;br /&gt;
| [http://lists.xiph.org/pipermail/vorbis-dev/2001-August/004501.html  midi]&lt;br /&gt;
| text&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'OggMIDI\0'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x4f 0x67 0x67 0x4d 0x49 0x44 0x49 0x00'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0117 0147 0147 0115 0111 0104 0111 0000'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[8,1]: version field&lt;br /&gt;
|-&lt;br /&gt;
| [[OggMNG|mng]]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'\212MNG\r\n\032\n'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x8a 0x4d 0x4e 0x47 0x0D 0x0A 0x1A 0x0A'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0212 0115 0116 0107 0015 0012 0032 0012'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| [[OggPCM|pcm]]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'PCM\ \ \ \ \ '&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x53 0x70 0x65 0x65 0x78 0x20 0x20 0x20'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0123 0160 0145 0145 0170 0040 0040 0040'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[8,2]: version major field,&lt;br /&gt;
char[10,2]: version minor field&lt;br /&gt;
|-&lt;br /&gt;
| [[OggMNG|png]]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'\211PNG\r\n\032\n'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x89 0x50 0x4e 0x47 0x0D 0x0A 0x1A 0x0A'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0211 0120 0116 0107 0015 0012 0032 0012'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h  speex]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'Speex\ \ \ '&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x53 0x70 0x65 0x65 0x78 0x20 0x20 0x20'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0123 0160 0145 0145 0170 0040 0040 0040'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[28,4]: version id&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h  theora]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,7]: &amp;lt;tt&amp;gt;'\x80theora'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x80 0x74 0x68 0x65 0x6f 0x72 0x61'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0180 0164 0150 0145 0157 0162 0141'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[7,1]: major version number,&lt;br /&gt;
char[8,1]: minor version number,&lt;br /&gt;
&lt;br /&gt;
char[9,1]: version revision number&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h  vorbis]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,7]: &amp;lt;tt&amp;gt;'\x01vorbis'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x01 0x76 0x6f 0x72 0x62 0x69 0x73'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0001 0166 0157 0162 0142 0151 0163'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[7,4]: version field&lt;br /&gt;
|-&lt;br /&gt;
| [[OggYUV4MPEG|yuv4mpeg]]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'YUV4MPEG'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x59 0x55 0x56 0x34 0x4d 0x50 0x45 0x47'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0131 0125 0126 0064 0115 0120 0105 0107'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[8,1] = '2' (0x32) for yuv4mpeg format version 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;char[x,y]&amp;quot; fields mean here: start at byte number x (counting from 0) for a length of y bytes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ogg]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/MIMETypesCodecs</id>
		<title>MIMETypesCodecs</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/MIMETypesCodecs"/>
				<updated>2009-06-04T11:33:25Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added audio; moved the ogx section down&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Specification of MIME types and respective codecs parameter ==&lt;br /&gt;
&lt;br /&gt;
=== MIME Types ===&lt;br /&gt;
&lt;br /&gt;
The following MIME types are now officially registered with IANA and specified with the IETF as [http://www.ietf.org/rfc/rfc5334.txt RFC 5334]:&lt;br /&gt;
&lt;br /&gt;
* video/ogg - for video (with audio) encapsulated in Ogg&lt;br /&gt;
** recommends a Skeleton logical bitstrem&lt;br /&gt;
** .ogv file extension&lt;br /&gt;
** Macintosh File Type Code: OggV&lt;br /&gt;
&lt;br /&gt;
* audio/ogg - for audio encapsulated in Ogg&lt;br /&gt;
** recommends a Skeleton logical bitstrem&lt;br /&gt;
** .oga file extension, .ogg for Vorbis I, .spx for Speex&lt;br /&gt;
** Macintosh File Type Code: OggA&lt;br /&gt;
&lt;br /&gt;
* application/ogg - for complex, multitrack, multiplexed files encapsulated in Ogg&lt;br /&gt;
** requires a Skeleton logical bitstream&lt;br /&gt;
** .ogx file extension&lt;br /&gt;
** Macintosh File Type Code: OggX&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[MIME_Types_and_File_Extensions|Other MIME types]] are still in the process.&lt;br /&gt;
&lt;br /&gt;
=== Codecs Parameter ===&lt;br /&gt;
&lt;br /&gt;
[http://www.rfc-editor.org/rfc/rfc4281.txt Typically], MIME types of media encapsulation formats use the optional &amp;quot;codecs&amp;quot; parameter to specify which codes are being used in a particular file.&lt;br /&gt;
&lt;br /&gt;
Codecs encapsulated in Ogg require a text identifier at the beginning of the first header page to identify the encapsulated codecs.  The following table contains the identifiers for existing Xiph codecs and the codecs parameter names used for */ogg MIME types (in alphabetical order):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;codecstable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Codecs Parameter Name&lt;br /&gt;
! Codec Type&lt;br /&gt;
! Codec Identifier&lt;br /&gt;
(decimal, hex, octal)&lt;br /&gt;
! Version Field (if available)&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h celt]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'CELT\ \ \ \ '&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x43 0x45 0x4c 0x54 0x20 0x20 0x20 0x20'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0103 0105 0114 0124 0040 0040 0040 0040'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[28,4]: version id&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h cmml]&lt;br /&gt;
| text&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'CMML\0\0\0\0'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x43 0x4d 0x4d 0x4c 0x00 0x00 0x00 0x00'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0103 0115 0115 0114 0000 0000 0000 0000'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[8,2]: major version number,&lt;br /&gt;
char[10,2]: minor version number&lt;br /&gt;
|-&lt;br /&gt;
| [http://wiki.xiph.org/index.php/OggDirac  dirac]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,5]: &amp;lt;tt&amp;gt;'BBCD\0'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x42 0x42 0x43 0x44 00'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0102 0102 0103 0104 0000'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| [http://flac.sourceforge.net/ogg_mapping.html  flac]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,5]: &amp;lt;tt&amp;gt;'\177FLAC'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x7F 0x46 0x4C 0x41 0x43'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0177 0106 0114 0101 0103'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[5,1]: binary major version number, &lt;br /&gt;
char[6,1]: binary minor version number of mapping&lt;br /&gt;
|-&lt;br /&gt;
| [[OggMNG|jng]]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'\213JNG\r\n\032\n'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x8b 0x4a 0x4e 0x47 0x0D 0x0A 0x1A 0x0A'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0213 0112 0116 0107 0015 0012 0032 0012'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| [[OggKate|kate]]&lt;br /&gt;
| text&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'\x80kate\0\0\0'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x80 0x6b 0x61 0x74 0x65 0x00 0x00 0x00'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0200 0153 0141 0164 0145 0000 0000 0000'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[9,1]: major version number,&lt;br /&gt;
char[10,1]: minor version number&lt;br /&gt;
|-&lt;br /&gt;
| [http://lists.xiph.org/pipermail/vorbis-dev/2001-August/004501.html  midi]&lt;br /&gt;
| text&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'OggMIDI\0'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x4f 0x67 0x67 0x4d 0x49 0x44 0x49 0x00'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0117 0147 0147 0115 0111 0104 0111 0000'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[8,1]: version field&lt;br /&gt;
|-&lt;br /&gt;
| [[OggMNG|mng]]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'\212MNG\r\n\032\n'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x8a 0x4d 0x4e 0x47 0x0D 0x0A 0x1A 0x0A'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0212 0115 0116 0107 0015 0012 0032 0012'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| [[OggPCM|pcm]]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'PCM\ \ \ \ \ '&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x53 0x70 0x65 0x65 0x78 0x20 0x20 0x20'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0123 0160 0145 0145 0170 0040 0040 0040'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[8,2]: version major field,&lt;br /&gt;
char[10,2]: version minor field&lt;br /&gt;
|-&lt;br /&gt;
| [[OggMNG|png]]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'\211PNG\r\n\032\n'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x89 0x50 0x4e 0x47 0x0D 0x0A 0x1A 0x0A'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0211 0120 0116 0107 0015 0012 0032 0012'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| ??&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h  speex]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'Speex\ \ \ '&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x53 0x70 0x65 0x65 0x78 0x20 0x20 0x20'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0123 0160 0145 0145 0170 0040 0040 0040'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[28,4]: version id&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h  theora]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,7]: &amp;lt;tt&amp;gt;'\x80theora'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x80 0x74 0x68 0x65 0x6f 0x72 0x61'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0180 0164 0150 0145 0157 0162 0141'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[7,1]: major version number,&lt;br /&gt;
char[8,1]: minor version number,&lt;br /&gt;
&lt;br /&gt;
char[9,1]: version revision number&lt;br /&gt;
|-&lt;br /&gt;
| [http://svn.annodex.net/liboggz/trunk/src/liboggz/oggz_auto.h  vorbis]&lt;br /&gt;
| audio&lt;br /&gt;
| char[0,7]: &amp;lt;tt&amp;gt;'\x01vorbis'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x01 0x76 0x6f 0x72 0x62 0x69 0x73'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0001 0166 0157 0162 0142 0151 0163'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[7,4]: version field&lt;br /&gt;
|-&lt;br /&gt;
| [[OggYUV4MPEG|yuv4mpeg]]&lt;br /&gt;
| video&lt;br /&gt;
| char[0,8]: &amp;lt;tt&amp;gt;'YUV4MPEG'&amp;lt;/tt&amp;gt;&lt;br /&gt;
hex: &amp;lt;tt&amp;gt;'0x59 0x55 0x56 0x34 0x4d 0x50 0x45 0x47'&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
oct: &amp;lt;tt&amp;gt;'0131 0125 0126 0064 0115 0120 0105 0107'&amp;lt;/tt&amp;gt;&lt;br /&gt;
| char[8,1] = '2' (0x32) for yuv4mpeg format version 2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;char[x,y]&amp;quot; fields mean here: start at byte number x (counting from 0) for a length of y bytes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Ogg]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/ROE</id>
		<title>ROE</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/ROE"/>
				<updated>2009-04-13T06:28:44Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Rich Open multitrack media Exposition (ROE)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
ROE (Rich Open multitrack media Exposition) is a way of describing the relationships between tracks of media in a stream. It is used to group tracks which have similar purpose and to identify alternatives.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
== Authoring ==&lt;br /&gt;
One use of ROE is to author a multi-track audio-visual stream from multiple input files. In this document, we present a description of how to use ROE to author multi-track Ogg files.&lt;br /&gt;
&lt;br /&gt;
== Dynamic Web Requests ==&lt;br /&gt;
Another use of ROE is in a Web client-server scenario. The Web server uses ROE as a means of representing the different tracks that are available for a multi-track Web resource. A Web client may not require all available tracks to present the resource to the user. It may decide to request the ROE representation first and then request only a subset of tracks from the server, e.g. only the English soundtrack. Or it may directly request particular tracks only. The server will use the request from the client to dynamically compose a multi-track stream with the requested tracks and mandatory tracks and serve this to satisfy the resource request.&lt;br /&gt;
&lt;br /&gt;
== ROE in Use ==&lt;br /&gt;
A draft version of the spec is in use in the mediaWiki extension [http://metavid.org/w/index.php/MetaVidWiki MetaVidWiki]. This runs on the site [http://metavid.org metavid.org] and is used for remote embeding. In [http://metavid-mike.blogspot.com/ this blog] for example all the clips refrence a single roe file to expose multiple video tracks and text transcripts. [http://metavid.org/w/index.php?title=Special:MvExportStream&amp;amp;feed_format=roe&amp;amp;stream_name=House_proceeding_06-09-08_01&amp;amp;t=0%3A01%3A38%2F0%3A10%3A00 Sample ROE output] from metavid&lt;br /&gt;
&lt;br /&gt;
= The ROE model =&lt;br /&gt;
&lt;br /&gt;
Here we describe two representations of ROE: that of ROE XML, and that of ROE in Ogg Skeleton. Each representation is capable of entirely encoding the relationships of the ROE model, such that it is possible to losslessly convert between them.&lt;br /&gt;
&lt;br /&gt;
= ROE XML =&lt;br /&gt;
&lt;br /&gt;
ROE XML is a XML markup language that describes a hierarchical serialization of the ROE model.&lt;br /&gt;
&lt;br /&gt;
A ROE XML file is an instance document of the [http://svn.annodex.net/standards/roe/roe_1_0.xsd ROE XML schema].&lt;br /&gt;
&lt;br /&gt;
It is composed of a &amp;lt;head&amp;gt; tag followed by a &amp;lt;body&amp;gt; tag. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Head Element ==&lt;br /&gt;
&lt;br /&gt;
=== Head Tags ===&lt;br /&gt;
The &amp;lt;head&amp;gt; tag is optional and may optionally contain:&lt;br /&gt;
&lt;br /&gt;
* a &amp;lt;title&amp;gt; tag to provide a textual description for the multi-track stream,&lt;br /&gt;
* a set of &amp;lt;link&amp;gt; tags that provide an alternative representation of the multi-track stream, e.g. as a html document,&lt;br /&gt;
* a &amp;lt;img&amp;gt; tag to provide a representative thumbnail for the multi-track stream,&lt;br /&gt;
* a set of &amp;lt;meta&amp;gt; tags that provide structured name-value annotations of the multi-track stream,&lt;br /&gt;
* a &amp;lt;base&amp;gt; tag to provide a base URI for resources referred to in the ROE file, and&lt;br /&gt;
* a set of &amp;lt;profile&amp;gt; tags that allows description of so-called track profiles.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;title&amp;gt;, &amp;lt;link&amp;gt;, &amp;lt;meta&amp;gt;, and &amp;lt;base&amp;gt; tags are taken out of [http://www.w3.org/TR/xhtml1-schema/ XHTML] and serve the same purpose as they serve there.&lt;br /&gt;
&lt;br /&gt;
=== Track Profiles ===&lt;br /&gt;
A track profile is a combination of tracks that is pre-defined within the ROE file and can be accessed by Web clients or authoring applications directly. Examples of such profiles are the Director's cut, or the Australian version.&lt;br /&gt;
&lt;br /&gt;
A profile defines a list of references to the tracks of a media resource and possibly a selection from the alternative media sources of the track, to use for a particular pre-defined profile of the resource.&lt;br /&gt;
&lt;br /&gt;
To that end, the profile element has a subelement called &amp;quot;partial&amp;quot; which contains the ID of a selected track and potentially the ID of a selected alternate media source for the track.&lt;br /&gt;
&lt;br /&gt;
An example profile is:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;profile name=&amp;quot;director's cut&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;partial track=&amp;quot;v&amp;quot; select=&amp;quot;v1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;partial track=&amp;quot;a&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/profile&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;head&amp;gt; tag essentially separates the profiles from the core document structure being provided in the &amp;lt;body&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Body Element ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;body&amp;gt; tag consists of a sequence of &amp;lt;track&amp;gt; elements that each describe a logical media track.&lt;br /&gt;
&lt;br /&gt;
=== The Track Tag ===&lt;br /&gt;
A media track may consist of one of:&lt;br /&gt;
&lt;br /&gt;
* a media source, such as a audio, video, or text stream described in a &amp;lt;mediaSource&amp;gt; tag,&lt;br /&gt;
* a sequence of media sources described in a &amp;lt;seq&amp;gt; tag with start and end times, or&lt;br /&gt;
* a set of alternate media sources described in a &amp;lt;switch&amp;gt; tag, only one of which can be selected.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;track&amp;gt; element contains a mandatory &amp;quot;provides&amp;quot; attribute, which introduces a virtual label such as &amp;quot;commentary&amp;quot;, &amp;quot;video&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;textoverlay&amp;quot;, &amp;quot;closedcaption&amp;quot;, &amp;quot;logo&amp;quot;, or &amp;quot;scoreboard&amp;quot;. The track provides that kind of content.&lt;br /&gt;
&lt;br /&gt;
=== The Switch Tag ===&lt;br /&gt;
The &amp;lt;switch&amp;gt; tag provides a choice between alternates, distinguished for a specific reason. The reason is given in the &amp;quot;distinction&amp;quot; attribute of the &amp;lt;switch&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
Inside a &amp;lt;switch&amp;gt; tag, the choices can be specified through the following means:&lt;br /&gt;
&lt;br /&gt;
* directly as a &amp;lt;mediaSource&amp;gt;,&lt;br /&gt;
* as a sequence of media sources in a &amp;lt;seq&amp;gt; element, or&lt;br /&gt;
* as the outcome of another &amp;lt;switch&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
Example &amp;lt;switch&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;switch distinction=&amp;quot;language&amp;quot; default=&amp;quot;a3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;switch id=&amp;quot;a1&amp;quot; distinction=&amp;quot;bitrate&amp;quot; default=&amp;quot;a1b1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;mediaSource id=&amp;quot;a1b1&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang1b1.oga&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;mediaSource id=&amp;quot;a1b2&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang1b2.oga&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
    &amp;lt;mediaSource id=&amp;quot;a2&amp;quot; lang=&amp;quot;de&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang2.oga&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;seq id=&amp;quot;a3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;mediaSource id=&amp;quot;a3a&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang3a.oga&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;mediaSource id=&amp;quot;a3b&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang3b.oga&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/seq&amp;gt;&lt;br /&gt;
  &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, we have a choice between three languages: en, de and fr.&lt;br /&gt;
The English language track also comes in two different bitrates.&lt;br /&gt;
The French language track comes in two different files that should be played in sequence&lt;br /&gt;
&lt;br /&gt;
=== Inline XML files ===&lt;br /&gt;
Some media source elements are XML documents themselves. These can be represented inline in a ROE file. The purpose of this is to contain all or some the annotation information of a media resource inside one XML file. Thus, the &amp;quot;inline&amp;quot; attribute can have the values &amp;quot;false&amp;quot;, &amp;quot;partial&amp;quot; or &amp;quot;full&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
An example inline XML file is the use of CMML inside a ROE track:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;track id=&amp;quot;t1&amp;quot; provides=&amp;quot;caption&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;mediaSource id=&amp;quot;c&amp;quot; src=&amp;quot;http://example.com/cmml1.cmml&amp;quot; inline=&amp;quot;partial&amp;quot; content-type=&amp;quot;text/cmml&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;cmml role=&amp;quot;caption&amp;quot; xmlns:cmml=&amp;quot;http://www.annodex.org/spec/cmml/cmml40&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;cmml:head&amp;gt;&lt;br /&gt;
          &amp;lt;cmml:title&amp;gt;random 1&amp;lt;/cmml:title&amp;gt;&lt;br /&gt;
        &amp;lt;/cmml:head&amp;gt;&lt;br /&gt;
        &amp;lt;cmml:clip start=&amp;quot;t1&amp;quot; end=&amp;quot;t2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;cmml:body&amp;gt;&lt;br /&gt;
            &amp;lt;html:p&amp;gt;&amp;lt;html:span&amp;gt;rillian:&amp;lt;/html:span&amp;gt;FOMS rocks&amp;lt;/html:p&amp;gt;&lt;br /&gt;
          &amp;lt;/cmml:body&amp;gt;&lt;br /&gt;
        &amp;lt;/cmml:clip&amp;gt;&lt;br /&gt;
      &amp;lt;/cmml&amp;gt;&lt;br /&gt;
    &amp;lt;/mediaSource&amp;gt;&lt;br /&gt;
  &amp;lt;/track&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== An example ROE XML file ==&lt;br /&gt;
&lt;br /&gt;
Putting it all together, here is an example of a ROE XML file:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;xs:schema targetNamespace=&amp;quot;http://www.xiph.org/roe1.0&amp;quot;&lt;br /&gt;
             xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLS&lt;br /&gt;
             xmlns:html=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
             elementFormDefault=&amp;quot;qualified&amp;quot;&lt;br /&gt;
             attributeFormDefault=&amp;quot;unqualified&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROE&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
      &amp;lt;link id=&amp;quot;html_linkback&amp;quot; rel=&amp;quot;alternate&amp;quot; type=&amp;quot;text/html&amp;quot; href=&amp;quot;http://example.com/full_video.html&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;img id=&amp;quot;stream_thumb&amp;quot; src=&amp;quot;http://example.com/full_video.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Example video&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;profile name=&amp;quot;director's cut&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;partial track=&amp;quot;v&amp;quot; select=&amp;quot;v1&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;partial track=&amp;quot;a&amp;quot; /&amp;gt;			&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
      &amp;lt;track id=&amp;quot;v&amp;quot; provides=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;switch distinction=&amp;quot;angle&amp;quot; default=&amp;quot;v1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;v1&amp;quot; content-type=&amp;quot;video/theora&amp;quot; src=&amp;quot;http://example.com/angle1.ogv?track=v1&amp;amp;amp;t=t1/t2&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;v2&amp;quot; content-type=&amp;quot;video/theora&amp;quot; src=&amp;quot;http://example.com/angle2.ogv&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/switch&amp;gt;&lt;br /&gt;
      &amp;lt;/track&amp;gt;&lt;br /&gt;
      &amp;lt;track id=&amp;quot;a&amp;quot; provides=&amp;quot;audio&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;switch distinction=&amp;quot;Content-Language&amp;quot; default=&amp;quot;a3&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;switch id=&amp;quot;a1&amp;quot; distinction=&amp;quot;bitrate&amp;quot; default=&amp;quot;a1b1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;mediaSource id=&amp;quot;a1b1&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang1b1.oga&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;mediaSource id=&amp;quot;a1b2&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang1b2.oga&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;a2&amp;quot; lang=&amp;quot;de&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang2.oga&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;seq id=&amp;quot;a3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;mediaSource id=&amp;quot;a3a&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang3a.oga&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;mediaSource id=&amp;quot;a3b&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang3b.org&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/seq&amp;gt;&lt;br /&gt;
        &amp;lt;/switch&amp;gt;&lt;br /&gt;
      &amp;lt;/track&amp;gt;&lt;br /&gt;
      &amp;lt;track id=&amp;quot;t&amp;quot; provides=&amp;quot;text overlay&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;switch distinction=&amp;quot;Content-Language&amp;quot; default=&amp;quot;t1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;t1&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;text/cmml&amp;quot; src=&amp;quot;http://example.com/transcript1.cmml&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;t2&amp;quot; lang=&amp;quot;de&amp;quot; content-type=&amp;quot;text/cmml&amp;quot; src=&amp;quot;http://example.com/transcript2.cmml&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;t3&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;text/cmml&amp;quot; src=&amp;quot;http://example.com/transcript3.cmml&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/switch&amp;gt;&lt;br /&gt;
      &amp;lt;/track&amp;gt;&lt;br /&gt;
      &amp;lt;track id=&amp;quot;l&amp;quot; provides=&amp;quot;logo&amp;quot; default=&amp;quot;O1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;seq&amp;gt;&lt;br /&gt;
      	  &amp;lt;mediaSource id=&amp;quot;O1&amp;quot; content-type=&amp;quot;application/ogg&amp;quot; src=&amp;quot;http://example.com/mng.ogx?track=1&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;O2&amp;quot; content-type=&amp;quot;application/ogg&amp;quot; src=&amp;quot;http://example.com/mng.ogx?track=2&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/seq&amp;gt;&lt;br /&gt;
      &amp;lt;/track&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/ROE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Representation in Skeleton =&lt;br /&gt;
&lt;br /&gt;
When the relationships described by ROE are written into an Ogg stream, they are encoded using the message header fields of Ogg Skeleton fisbones for each track. One of the primary design goals for fisbone headers is to minimize the need for global information to be stored in a stream. Each track's fisbone contains headers describing only itself and its relationship to other tracks in the stream. This allows tracks to be inserted or removed at the Ogg level without needing to modify any data in individual headers.&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
Relationships between tracks are given by the following headers:&lt;br /&gt;
&lt;br /&gt;
=== Provides ===&lt;br /&gt;
&lt;br /&gt;
''Provides'' introduces a virtual label such as &amp;quot;commentary&amp;quot;, which this track provides. Many tracks may provide the same such label, and as long as one is present then a dependency on that label can be satisfied.&lt;br /&gt;
&lt;br /&gt;
=== Depends ===&lt;br /&gt;
&lt;br /&gt;
This declares that it is not valid to include this track in a stream unless the track it depends on is present. An example use of this might be the generic captioning of sound effects for the deaf, which may not make sense unless the captioning of speech (in an appropriate language) is also rendered.&lt;br /&gt;
''Depends'' refers to either a virtual label provided by another track, or an explicit track ID.&lt;br /&gt;
&lt;br /&gt;
When removing a track from a file, any other tracks dependent on it must also be removed.&lt;br /&gt;
&lt;br /&gt;
=== Recommends ===&lt;br /&gt;
&lt;br /&gt;
''Recommends'' refers to either a virtual label provided by another track, or an explicit track ID.&lt;br /&gt;
&lt;br /&gt;
=== Suggests ===&lt;br /&gt;
&lt;br /&gt;
''Suggests'' refers to either a virtual label provided by another track, or an explicit track ID.&lt;br /&gt;
&lt;br /&gt;
=== Conflicts ===&lt;br /&gt;
&lt;br /&gt;
''Conflicts'' refers to either a virtual label provided by another track, or an explicit track ID.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Serving Suggestions ==&lt;br /&gt;
&lt;br /&gt;
=== Disposition ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= HTTP-style message headers for client-server negotiation =&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/ROE</id>
		<title>ROE</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/ROE"/>
				<updated>2009-04-13T06:28:14Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Rich Open multitrack media Exposition (ROE) =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
ROE (Rich Open multitrack media Exposition) is a way of describing the relationships between tracks of media in a stream. It is used to group tracks which have similar purpose and to identify alternatives.&lt;br /&gt;
&lt;br /&gt;
= Usage =&lt;br /&gt;
&lt;br /&gt;
== Authoring ==&lt;br /&gt;
One use of ROE is to author a multi-track audio-visual stream from multiple input files. In this document, we present a description of how to use ROE to author multi-track Ogg files.&lt;br /&gt;
&lt;br /&gt;
== Dynamic Web Requests ==&lt;br /&gt;
Another use of ROE is in a Web client-server scenario. The Web server uses ROE as a means of representing the different tracks that are available for a multi-track Web resource. A Web client may not require all available tracks to present the resource to the user. It may decide to request the ROE representation first and then request only a subset of tracks from the server, e.g. only the English soundtrack. Or it may directly request particular tracks only. The server will use the request from the client to dynamically compose a multi-track stream with the requested tracks and mandatory tracks and serve this to satisfy the resource request.&lt;br /&gt;
&lt;br /&gt;
== ROE in Use ==&lt;br /&gt;
A draft version of the spec is in use in the mediaWiki extension [http://metavid.org/w/index.php/MetaVidWiki MetaVidWiki]. This runs on the site [http://metavid.org metavid.org] and is used for remote embeding. In [http://metavid-mike.blogspot.com/ this blog] for example all the clips refrence a single roe file to expose multiple video tracks and text transcripts. [http://metavid.org/w/index.php?title=Special:MvExportStream&amp;amp;feed_format=roe&amp;amp;stream_name=House_proceeding_06-09-08_01&amp;amp;t=0%3A01%3A38%2F0%3A10%3A00 Sample ROE output] from metavid&lt;br /&gt;
&lt;br /&gt;
= The ROE model =&lt;br /&gt;
&lt;br /&gt;
Here we describe two representations of ROE: that of ROE XML, and that of ROE in Ogg Skeleton. Each representation is capable of entirely encoding the relationships of the ROE model, such that it is possible to losslessly convert between them.&lt;br /&gt;
&lt;br /&gt;
= ROE XML =&lt;br /&gt;
&lt;br /&gt;
ROE XML is a XML markup language that describes a hierarchical serialization of the ROE model.&lt;br /&gt;
&lt;br /&gt;
A ROE XML file is an instance document of the [http://svn.annodex.net/standards/roe/roe_1_0.xsd ROE XML schema].&lt;br /&gt;
&lt;br /&gt;
It is composed of a &amp;lt;head&amp;gt; tag followed by a &amp;lt;body&amp;gt; tag. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Head Element ==&lt;br /&gt;
&lt;br /&gt;
=== Head Tags ===&lt;br /&gt;
The &amp;lt;head&amp;gt; tag is optional and may optionally contain:&lt;br /&gt;
&lt;br /&gt;
* a &amp;lt;title&amp;gt; tag to provide a textual description for the multi-track stream,&lt;br /&gt;
* a set of &amp;lt;link&amp;gt; tags that provide an alternative representation of the multi-track stream, e.g. as a html document,&lt;br /&gt;
* a &amp;lt;img&amp;gt; tag to provide a representative thumbnail for the multi-track stream,&lt;br /&gt;
* a set of &amp;lt;meta&amp;gt; tags that provide structured name-value annotations of the multi-track stream,&lt;br /&gt;
* a &amp;lt;base&amp;gt; tag to provide a base URI for resources referred to in the ROE file, and&lt;br /&gt;
* a set of &amp;lt;profile&amp;gt; tags that allows description of so-called track profiles.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;title&amp;gt;, &amp;lt;link&amp;gt;, &amp;lt;meta&amp;gt;, and &amp;lt;base&amp;gt; tags are taken out of [http://www.w3.org/TR/xhtml1-schema/ XHTML] and serve the same purpose as they serve there.&lt;br /&gt;
&lt;br /&gt;
=== Track Profiles ===&lt;br /&gt;
A track profile is a combination of tracks that is pre-defined within the ROE file and can be accessed by Web clients or authoring applications directly. Examples of such profiles are the Director's cut, or the Australian version.&lt;br /&gt;
&lt;br /&gt;
A profile defines a list of references to the tracks of a media resource and possibly a selection from the alternative media sources of the track, to use for a particular pre-defined profile of the resource.&lt;br /&gt;
&lt;br /&gt;
To that end, the profile element has a subelement called &amp;quot;partial&amp;quot; which contains the ID of a selected track and potentially the ID of a selected alternate media source for the track.&lt;br /&gt;
&lt;br /&gt;
An example profile is:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;profile name=&amp;quot;director's cut&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;partial track=&amp;quot;v&amp;quot; select=&amp;quot;v1&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;partial track=&amp;quot;a&amp;quot; /&amp;gt;&lt;br /&gt;
  &amp;lt;/profile&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;head&amp;gt; tag essentially separates the profiles from the core document structure being provided in the &amp;lt;body&amp;gt; element.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Body Element ==&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;body&amp;gt; tag consists of a sequence of &amp;lt;track&amp;gt; elements that each describe a logical media track.&lt;br /&gt;
&lt;br /&gt;
=== The Track Tag ===&lt;br /&gt;
A media track may consist of one of:&lt;br /&gt;
&lt;br /&gt;
* a media source, such as a audio, video, or text stream described in a &amp;lt;mediaSource&amp;gt; tag,&lt;br /&gt;
* a sequence of media sources described in a &amp;lt;seq&amp;gt; tag with start and end times, or&lt;br /&gt;
* a set of alternate media sources described in a &amp;lt;switch&amp;gt; tag, only one of which can be selected.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;track&amp;gt; element contains a mandatory &amp;quot;provides&amp;quot; attribute, which introduces a virtual label such as &amp;quot;commentary&amp;quot;, &amp;quot;video&amp;quot;, &amp;quot;audio&amp;quot;, &amp;quot;textoverlay&amp;quot;, &amp;quot;closedcaption&amp;quot;, &amp;quot;logo&amp;quot;, or &amp;quot;scoreboard&amp;quot;. The track provides that kind of content.&lt;br /&gt;
&lt;br /&gt;
=== The Switch Tag ===&lt;br /&gt;
The &amp;lt;switch&amp;gt; tag provides a choice between alternates, distinguished for a specific reason. The reason is given in the &amp;quot;distinction&amp;quot; attribute of the &amp;lt;switch&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
Inside a &amp;lt;switch&amp;gt; tag, the choices can be specified through the following means:&lt;br /&gt;
&lt;br /&gt;
* directly as a &amp;lt;mediaSource&amp;gt;,&lt;br /&gt;
* as a sequence of media sources in a &amp;lt;seq&amp;gt; element, or&lt;br /&gt;
* as the outcome of another &amp;lt;switch&amp;gt; tag.&lt;br /&gt;
&lt;br /&gt;
Example &amp;lt;switch&amp;gt; element:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;switch distinction=&amp;quot;language&amp;quot; default=&amp;quot;a3&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;switch id=&amp;quot;a1&amp;quot; distinction=&amp;quot;bitrate&amp;quot; default=&amp;quot;a1b1&amp;quot;&amp;gt;&lt;br /&gt;
     &amp;lt;mediaSource id=&amp;quot;a1b1&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang1b1.oga&amp;quot; /&amp;gt;&lt;br /&gt;
     &amp;lt;mediaSource id=&amp;quot;a1b2&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang1b2.oga&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/switch&amp;gt;&lt;br /&gt;
    &amp;lt;mediaSource id=&amp;quot;a2&amp;quot; lang=&amp;quot;de&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang2.oga&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;seq id=&amp;quot;a3&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;mediaSource id=&amp;quot;a3a&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang3a.oga&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;mediaSource id=&amp;quot;a3b&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang3b.oga&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;/seq&amp;gt;&lt;br /&gt;
  &amp;lt;/switch&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example, we have a choice between three languages: en, de and fr.&lt;br /&gt;
The English language track also comes in two different bitrates.&lt;br /&gt;
The French language track comes in two different files that should be played in sequence&lt;br /&gt;
&lt;br /&gt;
=== Inline XML files ===&lt;br /&gt;
Some media source elements are XML documents themselves. These can be represented inline in a ROE file. The purpose of this is to contain all or some the annotation information of a media resource inside one XML file. Thus, the &amp;quot;inline&amp;quot; attribute can have the values &amp;quot;false&amp;quot;, &amp;quot;partial&amp;quot; or &amp;quot;full&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
An example inline XML file is the use of CMML inside a ROE track:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;track id=&amp;quot;t1&amp;quot; provides=&amp;quot;caption&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;mediaSource id=&amp;quot;c&amp;quot; src=&amp;quot;http://example.com/cmml1.cmml&amp;quot; inline=&amp;quot;partial&amp;quot; content-type=&amp;quot;text/cmml&amp;quot; &amp;gt;&lt;br /&gt;
      &amp;lt;cmml role=&amp;quot;caption&amp;quot; xmlns:cmml=&amp;quot;http://www.annodex.org/spec/cmml/cmml40&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;cmml:head&amp;gt;&lt;br /&gt;
          &amp;lt;cmml:title&amp;gt;random 1&amp;lt;/cmml:title&amp;gt;&lt;br /&gt;
        &amp;lt;/cmml:head&amp;gt;&lt;br /&gt;
        &amp;lt;cmml:clip start=&amp;quot;t1&amp;quot; end=&amp;quot;t2&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;cmml:body&amp;gt;&lt;br /&gt;
            &amp;lt;html:p&amp;gt;&amp;lt;html:span&amp;gt;rillian:&amp;lt;/html:span&amp;gt;FOMS rocks&amp;lt;/html:p&amp;gt;&lt;br /&gt;
          &amp;lt;/cmml:body&amp;gt;&lt;br /&gt;
        &amp;lt;/cmml:clip&amp;gt;&lt;br /&gt;
      &amp;lt;/cmml&amp;gt;&lt;br /&gt;
    &amp;lt;/mediaSource&amp;gt;&lt;br /&gt;
  &amp;lt;/track&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== An example ROE XML file ==&lt;br /&gt;
&lt;br /&gt;
Putting it all together, here is an example of a ROE XML file:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;xs:schema targetNamespace=&amp;quot;http://www.xiph.org/roe1.0&amp;quot;&lt;br /&gt;
             xmlns:xs=&amp;quot;http://www.w3.org/2001/XMLS&lt;br /&gt;
             xmlns:html=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;br /&gt;
             elementFormDefault=&amp;quot;qualified&amp;quot;&lt;br /&gt;
             attributeFormDefault=&amp;quot;unqualified&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;ROE&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
      &amp;lt;link id=&amp;quot;html_linkback&amp;quot; rel=&amp;quot;alternate&amp;quot; type=&amp;quot;text/html&amp;quot; href=&amp;quot;http://example.com/full_video.html&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;img id=&amp;quot;stream_thumb&amp;quot; src=&amp;quot;http://example.com/full_video.jpg&amp;quot;/&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Example video&amp;lt;/title&amp;gt;&lt;br /&gt;
      &amp;lt;profile name=&amp;quot;director's cut&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;partial track=&amp;quot;v&amp;quot; select=&amp;quot;v1&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;partial track=&amp;quot;a&amp;quot; /&amp;gt;			&lt;br /&gt;
      &amp;lt;/profile&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
      &amp;lt;track id=&amp;quot;v&amp;quot; provides=&amp;quot;video&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;switch distinction=&amp;quot;angle&amp;quot; default=&amp;quot;v1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;v1&amp;quot; content-type=&amp;quot;video/theora&amp;quot; src=&amp;quot;http://example.com/angle1.ogv?track=v1&amp;amp;amp;t=t1/t2&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;v2&amp;quot; content-type=&amp;quot;video/theora&amp;quot; src=&amp;quot;http://example.com/angle2.ogv&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/switch&amp;gt;&lt;br /&gt;
      &amp;lt;/track&amp;gt;&lt;br /&gt;
      &amp;lt;track id=&amp;quot;a&amp;quot; provides=&amp;quot;audio&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;switch distinction=&amp;quot;Content-Language&amp;quot; default=&amp;quot;a3&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;switch id=&amp;quot;a1&amp;quot; distinction=&amp;quot;bitrate&amp;quot; default=&amp;quot;a1b1&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;mediaSource id=&amp;quot;a1b1&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang1b1.oga&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;mediaSource id=&amp;quot;a1b2&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang1b2.oga&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/switch&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;a2&amp;quot; lang=&amp;quot;de&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang2.oga&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;seq id=&amp;quot;a3&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;mediaSource id=&amp;quot;a3a&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang3a.oga&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;mediaSource id=&amp;quot;a3b&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;audio/vorbis&amp;quot; src=&amp;quot;http://example.com/lang3b.org&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;/seq&amp;gt;&lt;br /&gt;
        &amp;lt;/switch&amp;gt;&lt;br /&gt;
      &amp;lt;/track&amp;gt;&lt;br /&gt;
      &amp;lt;track id=&amp;quot;t&amp;quot; provides=&amp;quot;text overlay&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;switch distinction=&amp;quot;Content-Language&amp;quot; default=&amp;quot;t1&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;t1&amp;quot; lang=&amp;quot;en&amp;quot; content-type=&amp;quot;text/cmml&amp;quot; src=&amp;quot;http://example.com/transcript1.cmml&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;t2&amp;quot; lang=&amp;quot;de&amp;quot; content-type=&amp;quot;text/cmml&amp;quot; src=&amp;quot;http://example.com/transcript2.cmml&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;t3&amp;quot; lang=&amp;quot;fr&amp;quot; content-type=&amp;quot;text/cmml&amp;quot; src=&amp;quot;http://example.com/transcript3.cmml&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/switch&amp;gt;&lt;br /&gt;
      &amp;lt;/track&amp;gt;&lt;br /&gt;
      &amp;lt;track id=&amp;quot;l&amp;quot; provides=&amp;quot;logo&amp;quot; default=&amp;quot;O1&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;seq&amp;gt;&lt;br /&gt;
      	  &amp;lt;mediaSource id=&amp;quot;O1&amp;quot; content-type=&amp;quot;application/ogg&amp;quot; src=&amp;quot;http://example.com/mng.ogx?track=1&amp;quot; /&amp;gt;&lt;br /&gt;
          &amp;lt;mediaSource id=&amp;quot;O2&amp;quot; content-type=&amp;quot;application/ogg&amp;quot; src=&amp;quot;http://example.com/mng.ogx?track=2&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/seq&amp;gt;&lt;br /&gt;
      &amp;lt;/track&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/ROE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Representation in Skeleton =&lt;br /&gt;
&lt;br /&gt;
When the relationships described by ROE are written into an Ogg stream, they are encoded using the message header fields of Ogg Skeleton fisbones for each track. One of the primary design goals for fisbone headers is to minimize the need for global information to be stored in a stream. Each track's fisbone contains headers describing only itself and its relationship to other tracks in the stream. This allows tracks to be inserted or removed at the Ogg level without needing to modify any data in individual headers.&lt;br /&gt;
&lt;br /&gt;
== Relationships ==&lt;br /&gt;
&lt;br /&gt;
Relationships between tracks are given by the following headers:&lt;br /&gt;
&lt;br /&gt;
=== Provides ===&lt;br /&gt;
&lt;br /&gt;
''Provides'' introduces a virtual label such as &amp;quot;commentary&amp;quot;, which this track provides. Many tracks may provide the same such label, and as long as one is present then a dependency on that label can be satisfied.&lt;br /&gt;
&lt;br /&gt;
=== Depends ===&lt;br /&gt;
&lt;br /&gt;
This declares that it is not valid to include this track in a stream unless the track it depends on is present. An example use of this might be the generic captioning of sound effects for the deaf, which may not make sense unless the captioning of speech (in an appropriate language) is also rendered.&lt;br /&gt;
''Depends'' refers to either a virtual label provided by another track, or an explicit track ID.&lt;br /&gt;
&lt;br /&gt;
When removing a track from a file, any other tracks dependent on it must also be removed.&lt;br /&gt;
&lt;br /&gt;
=== Recommends ===&lt;br /&gt;
&lt;br /&gt;
''Recommends'' refers to either a virtual label provided by another track, or an explicit track ID.&lt;br /&gt;
&lt;br /&gt;
=== Suggests ===&lt;br /&gt;
&lt;br /&gt;
''Suggests'' refers to either a virtual label provided by another track, or an explicit track ID.&lt;br /&gt;
&lt;br /&gt;
=== Conflicts ===&lt;br /&gt;
&lt;br /&gt;
''Conflicts'' refers to either a virtual label provided by another track, or an explicit track ID.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Serving Suggestions ==&lt;br /&gt;
&lt;br /&gt;
=== Disposition ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= HTTP-style message headers for client-server negotiation =&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Summer_of_Code_2009</id>
		<title>Summer of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Summer_of_Code_2009"/>
				<updated>2009-03-26T07:58:50Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added a libsydneyaudio project&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is  our ideas page for [http://code.google.com/soc/ Google Summer of Code 2009] projects with [http://xiph.org Xiph.org] and [http://annodex.org/ Annodex]. The two projects participate jointly this year under Xiph's name.&lt;br /&gt;
&lt;br /&gt;
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.&lt;br /&gt;
&lt;br /&gt;
'''Mentors''' please visit [[Summer of Code Mentoring]] and help us prepare our application as a mentoring organization.&lt;br /&gt;
&lt;br /&gt;
== General Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
&lt;br /&gt;
* OpenMAX IL components for Ogg codecs&lt;br /&gt;
* Get skeleton patches upstream so players stop choking on it.&lt;br /&gt;
* Portable listening application for codec MOS/MUSHRA comparisons (Win32, MacOS, Linux; FF3.1 web application?).&lt;br /&gt;
&lt;br /&gt;
=== Web Video ===&lt;br /&gt;
&lt;br /&gt;
* Proof of concept liboggplay-based media patch for Google's Chrome browser.&lt;br /&gt;
* Metavid improvements&lt;br /&gt;
* Kate to HTML &amp;amp; CSS overlay library in javascript.&lt;br /&gt;
* Firefox extension to record locally and stream to icecast.&lt;br /&gt;
* Firefox extension to support RTP for conferencing.&lt;br /&gt;
** also consider applying [https://wiki.mozilla.org/Community:SummerOfCode09#Firefox under Mozilla SOC org].&lt;br /&gt;
* mod_duration apache module to generate X-Content-Duration headers for Ogg files. ''(We should get people to use '''oggz_chop''' instead ... oggz_chop provides this functionality and more, is already relatively lightweight.)'' Perhaps this project could be more focused on packaging oggz_chop for other web servers like lightpd and maybe a fastCGI version and or maybe push for an mod_ogg to be adopted upstream in apache to improve distribution. &lt;br /&gt;
&lt;br /&gt;
== Detailed Project Descriptions ==&lt;br /&gt;
&lt;br /&gt;
These ideas were suggested by various members of the developer community as projects that would be beneficial and which we feel we can mentor. Students should feel free to select one of these, develop a variation, or propose their own ideas. Here, ideally.&lt;br /&gt;
&lt;br /&gt;
=== Proof of Concept liboggplay (html5 video) support in Chromium Browser === &lt;br /&gt;
&lt;br /&gt;
This project would focus on integrating support for liboggplay into chrome. This project would only need to be a proof of concept with the end result being some frames decoded in the browser. We have some direct contacts with people on the Chromium project in Google, but would expect the student mostly to work through the Xiph on Chromium online communities.&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/chromium/ Chromium Home Page]&lt;br /&gt;
&lt;br /&gt;
=== Metavid related projects === &lt;br /&gt;
&lt;br /&gt;
see [http://metavid.org/wiki/Summer_of_Code_2009 full page on metavid.org]&lt;br /&gt;
* Improve transcript import / export system:&lt;br /&gt;
** Wiki to SRT &lt;br /&gt;
** SRT to Wiki &lt;br /&gt;
** CMML to Wiki&lt;br /&gt;
** Extend oggz_chop or other tool for exporting transcript encapsulated in the ogg file.&lt;br /&gt;
&lt;br /&gt;
=== Javascript Library for Subtitles, Captions and other time-aligned text ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the project is on enabling video accessibility for Ogg in Firefox.&lt;br /&gt;
&lt;br /&gt;
==== Problem / Intro ====&lt;br /&gt;
&lt;br /&gt;
Captions, subtitles and other categories of time-aligned text are starting to become relevant to HTML5. In Ogg, we currently encapsulate such data in OggKate and can use SRT or Kate as input formats. Display of OggKate is currently supported in VLC and there are patches for various other media players. We now want to enable Web browsers to also deal with these time-aligned text tracks in those Web Browsers that support the HTML5 video tag.&lt;br /&gt;
&lt;br /&gt;
==== Solution / Task ====&lt;br /&gt;
&lt;br /&gt;
There is a proof of concept patch for Firefox 3.1 (now called 3.5) and liboggplay through which Firefox is capable of decoding Ogg Kate tracks and either overlay them onto the video, or handing the raw text to the browser (eg, for text to speech). However, there is no display of OggKate in Firefox 3.5 using HTML5.  This can be fixed through the creation of a javascript library that can deal with Kate output and convert it to HTML and CSS. Example libraries exists for displaying SRT for HTML5 video, but they will need to be extended to Kate in this project.&lt;br /&gt;
&lt;br /&gt;
This project includes the creation of example files for different types of time-aligned text. These are then encapsulated into Ogg through Kate encoding. Firefox 3.5 with the applied OggKate patch can decode these files and hand the textual data to the Web browser. It will be necessary to extend liboggplay to pass non textual Kate data (eg, styling, etc) to the browser, as currently the only two ways of dealing with a Kate track is to render it, or pass raw text, ignoring extra styling information. This could be part of the project, or done before the GSoC projects begins. The browser receives the text and styling information, and a javascript library implemented by the student will take care of the display. This will include an implementation of default display mechanisms for the different types of time-aligned text that we decide to deal with.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
&lt;br /&gt;
The project requires a student with experience in javascript development, HTML and CSS, but also with some understanding of C for liboggplay and libkate, and of C++ for Firefox. The student will learn how to deal with Ogg and Ogg tracks, including Ogg Kate. He/she will also get some insight into Firefox development. He/she will work with the developer of Ogg Kate and the video accessibility expert of Xiph, as well as having access to the whole Xiph community including the core developer of Ogg support in Firefox.&lt;br /&gt;
&lt;br /&gt;
The project is adaptable to the qualifications of the student - it may consist in simply implementing a tool-chain for handling srt through OggKate, or it may go much further and include richer forms or time-aligned text such as audio annotations, Karaoke, ticker text, clickable text etc.&lt;br /&gt;
&lt;br /&gt;
==== Mentors ====&lt;br /&gt;
&lt;br /&gt;
* Silvia Pfeiffer (nessy / ginger)&lt;br /&gt;
* ogg.k.ogg.k&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== libsydneyaudio  ===&lt;br /&gt;
&lt;br /&gt;
libsydneyaudio is a powerful, but easy to use cross-platform API for PCM audio capture and playback. It abstracts away all hardware-related complexity. It thus sits right on top of other audio device interfaces on the platforms, such as ALSA, pulseaudio, OSS on Linux, etc. libsydneyaudio is in use in conjunction with liboggplay in Firefox to provide cross-platform audio support.&lt;br /&gt;
&lt;br /&gt;
===== Problem/Intro =====&lt;br /&gt;
&lt;br /&gt;
libsydneyaudio has several bugs registered toward itself, see https://trac.annodex.net/report/12 . Much of the challenge comes from an incomplete implementation of win32 support of audio, but other platforms have issues too.&lt;br /&gt;
&lt;br /&gt;
==== Solution / Task ====&lt;br /&gt;
&lt;br /&gt;
The student will attack the bugs and make sure that libsydneyaudio works across all major platforms. There are programs available for testing. Once all bugs are fixed, there may be further new features to implement.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
&lt;br /&gt;
The student should bring along a keen interest in audio decoding. A basic understanding of win32 audio/video interfaces, experience in programming C or C++, and cross-platform development would be very helpful, but not necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX IL components for Ogg codecs ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a set of low-level C APIs for media codecs. It is specified by the Khronos Group (who also co-ordinate standards like OpenGL and OpenAL) and is used by many mobile devices, in platforms like [http://www.maemo.org/ Maemo] and [http://source.android.com/ Android]. As we'd like to encourage the use of free codecs on mobile and embedded devices, we want to develop a set of components using our codec libraries.&lt;br /&gt;
&lt;br /&gt;
==== Project goals ====&lt;br /&gt;
&lt;br /&gt;
This project would implement free codec support for the lowest of the three OpenMAX layers, OpenMAX IL (Integration Layer). This is an interface to multimedia codecs implemented in hardware or software. It does not provide any interfaces for synchronized capture or playback of video and audio -- typically this is handled by higher OpenMAX layers, or by a framework like GStreamer.&lt;br /&gt;
&lt;br /&gt;
Developing software OpenMAX IL components will allow application developers to implement Ogg support ahead of hardware support. It would also give hardware manufacturers a set of specific, well-defined goals for implementing Ogg support, with the understanding that the hardware components, when shipped with these software control APIs, will work in a variety of open source applications with minimal modifications.&lt;br /&gt;
&lt;br /&gt;
==== Implementation ====&lt;br /&gt;
&lt;br /&gt;
Your project proposal should cover a reasonable portion of these steps:&lt;br /&gt;
&lt;br /&gt;
* Implement generic Ogg mux/demux components (instead of single Ogg Vorbis component)&lt;br /&gt;
* Implement IL components for each codec (Theora, Dirac, Speex, CELT, FLAC)&lt;br /&gt;
* Implement GStreamer OpenMAX plugins for each codec&lt;br /&gt;
&lt;br /&gt;
For details, including the motivation for this project and links to related projects, see &lt;br /&gt;
[http://blog.kfish.org/2009/02/is-openmax-important-for-free-software.html Is OpenMAX important for Free Software?]&lt;br /&gt;
&lt;br /&gt;
==== Mentors ====&lt;br /&gt;
&lt;br /&gt;
* Conrad Parker (kfish)&lt;br /&gt;
&lt;br /&gt;
=== XSPF-related projects ===&lt;br /&gt;
&lt;br /&gt;
==== XSPF import and export for Songbird ====&lt;br /&gt;
&lt;br /&gt;
===== Problem/Intro =====&lt;br /&gt;
* Songbird cannot read XSPF playlists&lt;br /&gt;
* Songbird cannot write XSPF playlists&lt;br /&gt;
&lt;br /&gt;
===== Solution/Task =====&lt;br /&gt;
* Extend the development line of Songbird by XSPF read and write support.&lt;br /&gt;
* Read support should be able to tolerate most above-XML-level errors so users don't get frustrated with XSPF. That's the short version :-)&lt;br /&gt;
* Communication with upstream will be needed&lt;br /&gt;
* Solution should use whatever solution upstream is likely to accept as a patch. If you get them to accept a libxspf-based solution it's C++, otherwise probably JavaScript.&lt;br /&gt;
&lt;br /&gt;
===== Mentors =====&lt;br /&gt;
* Sebastian Pipping (sping)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Python library / Online validator refactoring ====&lt;br /&gt;
&lt;br /&gt;
===== Problem/Intro =====&lt;br /&gt;
* The [http://validator.xspf.org/ Online XSPF Validator]'s [https://trac.xiph.org/browser/websites/validator.xspf.org code] (Python &amp;gt;=2.4) is a procedural spaghetti mix of logic and presentation.&lt;br /&gt;
* There is no Python XSPF library around.&lt;br /&gt;
&lt;br /&gt;
===== Solution/Task =====&lt;br /&gt;
* Refactor the current validator code and separate it into a OOP XSPF reading library/API&lt;br /&gt;
* Adapt the validator to use former library&lt;br /&gt;
* Separate presentation and logic in validator code possibly involving a popular light-wight LGPLv3-compatible Python framework of your choice&lt;br /&gt;
&lt;br /&gt;
===== Mentors =====&lt;br /&gt;
* Sebastian Pipping (sping)&lt;br /&gt;
&lt;br /&gt;
=== CELT-related projects ===&lt;br /&gt;
&lt;br /&gt;
==== Conference bridge using CELT ====&lt;br /&gt;
&lt;br /&gt;
When a conference takes place, the voice from all participants is often decoded, mixed together, and re-encoded. The goal of this project is to do better. We would like to have only partial decoding and re-encoding of CELT and reuse as much as possible from the already-encoded streams. This not only decreases the CPU load but also improves quality. The project is specific to the [http://www.celt-codec.org CELT] codec, and during the course of the project, the student will learn the internals of the CELT codec.&lt;br /&gt;
&lt;br /&gt;
==== Reference SIP client for CELT ====&lt;br /&gt;
&lt;br /&gt;
The RTP profile for CELT is currently being written and to ensure that SIP clients with CELT support are really compliant, we would need a reference client that is 100% compliant with the RTP profile. This would provide:&lt;br /&gt;
* A reference to test for compatibility&lt;br /&gt;
* Some reference C code to copy directly&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Summer of Code 2008]]&lt;br /&gt;
*[[Summer of Code 2007]]&lt;br /&gt;
*[[Summer of Code 2006]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Summer_of_Code_2009</id>
		<title>Summer of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Summer_of_Code_2009"/>
				<updated>2009-03-21T13:27:51Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: introduced some structure to the project&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is  our ideas page for [http://code.google.com/soc/ Google Summer of Code 2009] projects with [http://xiph.org Xiph.org] and [http://annodex.org/ Annodex]. The two projects participate jointly this year under Xiph's name.&lt;br /&gt;
&lt;br /&gt;
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.&lt;br /&gt;
&lt;br /&gt;
'''Mentors''' please visit [[Summer of Code Mentoring]] and help us prepare our application as a mentoring organization.&lt;br /&gt;
&lt;br /&gt;
== General Ideas ==&lt;br /&gt;
&lt;br /&gt;
=== Codecs ===&lt;br /&gt;
&lt;br /&gt;
* OpenMAX IL components for Ogg codecs&lt;br /&gt;
* Get skeleton patches upstream so players stop choking on it.&lt;br /&gt;
* Portable listening application for codec MOS/MUSHRA comparisons (Win32, MacOS, Linux; FF3.1 web application?).&lt;br /&gt;
* Conference bridge using CELT.&lt;br /&gt;
* Reference SIP client for CELT.&lt;br /&gt;
&lt;br /&gt;
=== Web Video ===&lt;br /&gt;
&lt;br /&gt;
* Proof of concept liboggplay-based media patch for Google's Chrome browser.&lt;br /&gt;
* Metavid improvements&lt;br /&gt;
* Kate to HTML &amp;amp; CSS overlay library in javascript.&lt;br /&gt;
* Firefox extension to record locally and stream to icecast.&lt;br /&gt;
* Firefox extension to support RTP for conferencing.&lt;br /&gt;
** also consider applying [https://wiki.mozilla.org/Community:SummerOfCode09#Firefox under Mozilla SOC org].&lt;br /&gt;
* mod_duration apache module to generate X-Content-Duration headers for Ogg files. ''(We should get people to use '''oggz_chop''' instead ... oggz_chop provides this functionality and more, is already relatively lightweight.)'' Perhaps this project could be more focused on packaging oggz_chop for other web servers like lightpd and maybe a fastCGI version and or maybe push for an mod_ogg to be adopted upstream in apache to improve distribution. &lt;br /&gt;
&lt;br /&gt;
== Detailed Project Descriptions ==&lt;br /&gt;
&lt;br /&gt;
These ideas were suggested by various members of the developer community as projects that would be beneficial and which we feel we can mentor. Students should feel free to select one of these, develop a variation, or propose their own ideas. Here, ideally.&lt;br /&gt;
&lt;br /&gt;
=== Proof of Concept liboggplay (html5 video) support in Chromium Browser === &lt;br /&gt;
&lt;br /&gt;
This project would focus on integrating support for liboggplay into chrome. This project would only need to be a proof of concept with the end result being some frames decoded in the browser. We have some direct contacts with people on the Chromium project in Google, but would expect the student mostly to work through the Xiph on Chromium online communities.&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/chromium/ Chromium Home Page]&lt;br /&gt;
&lt;br /&gt;
=== Metavid related projects === &lt;br /&gt;
&lt;br /&gt;
see [http://metavid.org/wiki/Summer_of_Code_2009 full page on metavid.org]&lt;br /&gt;
* Improve transcript import / export system:&lt;br /&gt;
** Wiki to SRT &lt;br /&gt;
** SRT to Wiki &lt;br /&gt;
** CMML to Wiki&lt;br /&gt;
** Extend oggz_chop or other tool for exporting transcript encapsulated in the ogg file.&lt;br /&gt;
&lt;br /&gt;
=== Javascript Library for Subtitles, Captions and other time-aligned text ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the project is on enabling video accessibility for Ogg in Firefox.&lt;br /&gt;
&lt;br /&gt;
==== Problem / Intro ====&lt;br /&gt;
&lt;br /&gt;
Captions, subtitles and other categories of time-aligned text are starting to become relevant to HTML5. In Ogg, we currently encapsulate such data in OggKate and can use SRT or Kate as input formats. Display of OggKate is currently supported in VLC and there are patches for various other media players. We now want to enable Web browsers to also deal with these time-aligned text tracks in those Web Browsers that support the HTML5 video tag.&lt;br /&gt;
&lt;br /&gt;
==== Solution / Task ====&lt;br /&gt;
&lt;br /&gt;
There is a proof of concept patch for Firefox 3.1 (now called 3.5) and liboggplay through which Firefox is capable of decoding Ogg Kate tracks and either overlay them onto the video, or handing the raw text to the browser (eg, for text to speech). However, there is no display of OggKate in Firefox 3.5 using HTML5.  This can be fixed through the creation of a javascript library that can deal with Kate output and convert it to HTML and CSS. Example libraries exists for displaying SRT for HTML5 video, but they will need to be extended to Kate in this project.&lt;br /&gt;
&lt;br /&gt;
This project includes the creation of example files for different types of time-aligned text. These are then encapsulated into Ogg through Kate encoding. Firefox 3.5 with the applied OggKate patch can decode these files and hand the textual data to the Web browser. It will be necessary to extend liboggplay to pass non textual Kate data (eg, styling, etc) to the browser, as currently the only two ways of dealing with a Kate track is to render it, or pass raw text, ignoring extra styling information. This could be part of the project, or done before the GSoC projects begins. The browser receives the text and styling information, and a javascript library implemented by the student will take care of the display. This will include an implementation of default display mechanisms for the different types of time-aligned text that we decide to deal with.&lt;br /&gt;
&lt;br /&gt;
==== Requirements ====&lt;br /&gt;
&lt;br /&gt;
The project requires a student with experience in javascript development, HTML and CSS, but also with some understanding of C for liboggplay and libkate, and of C++ for Firefox. The student will learn how to deal with Ogg and Ogg tracks, including Ogg Kate. He/she will also get some insight into Firefox development. He/she will work with the developer of Ogg Kate and the video accessibility expert of Xiph, as well as having access to the whole Xiph community including the core developer of Ogg support in Firefox.&lt;br /&gt;
&lt;br /&gt;
The project is adaptable to the qualifications of the student - it may consist in simply implementing a tool-chain for handling srt through OggKate, or it may go much further and include richer forms or time-aligned text such as audio annotations, Karaoke, ticker text, clickable text etc.&lt;br /&gt;
&lt;br /&gt;
==== Mentors ====&lt;br /&gt;
&lt;br /&gt;
* Silvia Pfeiffer (nessy / ginger)&lt;br /&gt;
* ogg.k.ogg.k&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX IL components for Ogg codecs ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a set of low-level C APIs for media codecs. It is used by many mobile devices, in platforms like [http://www.maemo.org/ Maemo] and [http://source.android.com/ Android]. As we'd like to encourage the use of free codecs on mobile and embedded devices, we want to develop a set of components using our codec libraries.&lt;br /&gt;
&lt;br /&gt;
For details, including the motivation for this project and links to related projects, see &lt;br /&gt;
[http://blog.kfish.org/2009/02/is-openmax-important-for-free-software.html Is OpenMAX important for Free Software?]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== XSPF-related projects ===&lt;br /&gt;
&lt;br /&gt;
==== XSPF import and export for Songbird ====&lt;br /&gt;
&lt;br /&gt;
===== Problem/Intro =====&lt;br /&gt;
* Songbird cannot read XSPF playlists&lt;br /&gt;
* Songbird cannot write XSPF playlists&lt;br /&gt;
&lt;br /&gt;
===== Solution/Task =====&lt;br /&gt;
* Extend the development line of Songbird by XSPF read and write support.&lt;br /&gt;
* Read support should be able to tolerate most above-XML-level errors so users don't get frustrated with XSPF. That's the short version :-)&lt;br /&gt;
* Communication with upstream will be needed&lt;br /&gt;
* Solution should use whatever solution upstream is likely to accept as a patch. If you get them to accept a libxspf-based solution it's C++, otherwise probably JavaScript.&lt;br /&gt;
&lt;br /&gt;
===== Mentors =====&lt;br /&gt;
* Sebastian Pipping (sping)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Python library / Online validator refactoring ====&lt;br /&gt;
&lt;br /&gt;
===== Problem/Intro =====&lt;br /&gt;
* The [http://validator.xspf.org/ Online XSPF Validator]'s [https://trac.xiph.org/browser/websites/validator.xspf.org code] (Python &amp;gt;=2.4) is a procedural spaghetti mix of logic and presentation.&lt;br /&gt;
* There is no Python XSPF library around.&lt;br /&gt;
&lt;br /&gt;
===== Solution/Task =====&lt;br /&gt;
* Refactor the current validator code and separate it into a OOP XSPF reading library/API&lt;br /&gt;
* Adapt the validator to use former library&lt;br /&gt;
* Separate presentation and logic in validator code possibly involving a popular light-wight LGPLv3-compatible Python framework of your choice&lt;br /&gt;
&lt;br /&gt;
===== Mentors =====&lt;br /&gt;
* Sebastian Pipping (sping)&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Summer of Code 2008]]&lt;br /&gt;
*[[Summer of Code 2007]]&lt;br /&gt;
*[[Summer of Code 2006]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Summer_of_Code_2009</id>
		<title>Summer of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Summer_of_Code_2009"/>
				<updated>2009-03-12T09:54:52Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: minor improvements&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is  our ideas page for [http://code.google.com/soc/ Google Summer of Code 2009] projects with [http://xiph.org Xiph.org] and [http://annodex.org/ Annodex]. The two projects participate jointly this year under Xiph's name.&lt;br /&gt;
&lt;br /&gt;
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.&lt;br /&gt;
&lt;br /&gt;
'''Mentors''' please visit [[Summer of Code Mentoring]] and help us prepare our application as a mentoring organization.&lt;br /&gt;
&lt;br /&gt;
== General Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Kate to HTML &amp;amp; CSS overlay library in javascript.&lt;br /&gt;
* Proof of concept liboggplay-based media patch for Google's Chrome browser.&lt;br /&gt;
* mod_duration apache module to generate X-Content-Duration headers for Ogg files.&lt;br /&gt;
* Get skeleton patches upstream so players stop choking on it.&lt;br /&gt;
* Portable listening application for codec MOS/MUSHRA comparisons (Win32, MacOS, Linux; FF3.1 web application?).&lt;br /&gt;
* Conference bridge using CELT.&lt;br /&gt;
* Reference SIP client for CELT.&lt;br /&gt;
* Firefox extension to record locally and stream to icecast.&lt;br /&gt;
* Firefox extension to support RTP for conferencing.&lt;br /&gt;
* OpenMAX IL components for Ogg codecs&lt;br /&gt;
&lt;br /&gt;
== Detailed Project Descriptions ==&lt;br /&gt;
&lt;br /&gt;
These ideas were suggested by various members of the developer community as projects that would be beneficial and which we feel we can mentor. Students should feel free to select one of these, develop a variation, or propose their own ideas. Here, ideally.&lt;br /&gt;
&lt;br /&gt;
=== Proof of Concept liboggplay (html5 video) support in Chromium Browser === &lt;br /&gt;
&lt;br /&gt;
This project would focus on integrating support for liboggplay into chrome. This project would only need to be a proof of concept with the end result being some frames decoded in the browser. We have some direct contacts with people on the Chromium project in Google, but would expect the student mostly to work through the Xiph on Chromium online communities.&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/chromium/ Chromium Home Page]&lt;br /&gt;
&lt;br /&gt;
=== Metavid related projects === &lt;br /&gt;
&lt;br /&gt;
see [http://metavid.org/wiki/Summer_of_Code_2009 full page on metavid.org]&lt;br /&gt;
* Improve transcript import / export system:&lt;br /&gt;
** Wiki to SRT &lt;br /&gt;
** SRT to Wiki &lt;br /&gt;
** CMML to Wiki&lt;br /&gt;
** Extend oggz_chop or other tool for exporting transcript encapsulated in the ogg file.&lt;br /&gt;
&lt;br /&gt;
=== Javascript Library for Subtitles, Captions and other time-aligned text ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the project is around enabling video accessibility for Ogg in Firefox.&lt;br /&gt;
&lt;br /&gt;
Captions, subtitles and other categories of time-aligned text are starting to become relevant to HTML5. In Ogg, we currently encapsulate such data in OggKate and can use SRT or Kate as input formats. Display of OggKate is currently supported in VLC and there are patches for various other media players. We now want to enable Web browsers to also deal with these time-aligned text tracks in those Web Browsers that support the HTML5 video tag.&lt;br /&gt;
&lt;br /&gt;
There is a proof of concept patch for Firefox 3.1 (now called 3.5) and liboggplay through which Firefox is capable of decoding Ogg Kate tracks and either overlay them onto the video, or handing the raw text to the browser (eg, for text to speech). However, there is no display of OggKate in Firefox 3.5 using HTML5.  This can be fixed through the creation of a javascript library that can deal with Kate output and convert it to HTML and CSS. Example libraries exists for displaying SRT for HTML5 video, but they will need to be extended to Kate in this project.&lt;br /&gt;
&lt;br /&gt;
This project includes the creation of example files for different types of time-aligned text. These are then encapsulated into Ogg through Kate encoding. Firefox 3.5 with the applied OggKate patch can decode these files and hand the textual data to the Web browser. It will be necessary to extend liboggplay to pass non textual Kate data (eg, styling, etc) to the browser, as currently the only two ways of dealing with a Kate track is to render it, or pass raw text, ignoring extra styling information. This could be part of the project, or done before the GSoC projects begins. The browser receives the text and styling information, and a javascript library implemented by the student will take care of the display. This will include an implementation of default display mechanisms for the different types of time-aligned text that we decide to deal with.&lt;br /&gt;
&lt;br /&gt;
The project requires a student with experience in javascript development, HTML and CSS, but also with some understanding of C for liboggplay and libkate, and of C++ for Firefox. The student will learn how to deal with Ogg and Ogg tracks, including Ogg Kate. He/she will also get some insight into Firefox development. He/she will work with the developer of Ogg Kate and the video accessibility expert of Xiph, as well as having access to the whole Xiph community including the core developer of Ogg support in Firefox.&lt;br /&gt;
&lt;br /&gt;
The project is adaptable to the qualifications of the student - it may consist in simply implementing a tool-chain for handling srt through OggKate, or it may go much further and include richer forms or time-aligned text such as audio annotations, Karaoke, ticker text, clickable text etc.&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX IL components for Ogg codecs ===&lt;br /&gt;
&lt;br /&gt;
OpenMAX is a set of low-level C APIs for media codecs. It is used by many mobile devices, in platforms like [http://www.maemo.org/ Maemo] and [http://source.android.com/ Android]. As we'd like to encourage the use of free codecs on mobile and embedded devices, we want to develop a set of components using our codec libraries.&lt;br /&gt;
&lt;br /&gt;
For details, including the motivation for this project and links to related projects, see &lt;br /&gt;
[http://blog.kfish.org/2009/02/is-openmax-important-for-free-software.html Is OpenMAX important for Free Software?]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Summer of Code 2008]]&lt;br /&gt;
*[[Summer of Code 2007]]&lt;br /&gt;
*[[Summer of Code 2006]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Summer_of_Code_2009</id>
		<title>Summer of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Summer_of_Code_2009"/>
				<updated>2009-03-12T00:57:41Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: added C++ requirement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is  our ideas page for [http://code.google.com/soc/ Google Summer of Code 2009] projects with [http://xiph.org Xiph.org] and [http://annodex.org/ Annodex]. The two projects participate jointly this year under Xiph's name.&lt;br /&gt;
&lt;br /&gt;
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.&lt;br /&gt;
&lt;br /&gt;
'''Mentors''' please visit [[Summer of Code Mentoring]] and help us prepare our application as a mentoring organization.&lt;br /&gt;
&lt;br /&gt;
== General Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Kate to HTML &amp;amp; CSS overlay library in javascript.&lt;br /&gt;
* Proof of concept liboggplay-based media patch for Google's Chrome browser.&lt;br /&gt;
* mod_duration apache module to generate X-Content-Duration headers for Ogg files.&lt;br /&gt;
* Get skeleton patches upstream so players stop choking on it.&lt;br /&gt;
* Portable listening application for codec MOS/MUSHRA comparisons (Win32, MacOS, Linux; FF3.1 web application?).&lt;br /&gt;
* Conference bridge using CELT.&lt;br /&gt;
* Reference SIP client for CELT.&lt;br /&gt;
* Firefox extension to record locally and stream to icecast.&lt;br /&gt;
* Firefox extension to support RTP for conferencing.&lt;br /&gt;
* OpenMAX IL components for Ogg codecs&lt;br /&gt;
&lt;br /&gt;
== Detailed Project Descriptions ==&lt;br /&gt;
&lt;br /&gt;
These ideas were suggested by various members of the developer community as projects that would be beneficial and which we feel we can mentor. Students should feel free to select one of these, develop a variation, or propose their own ideas. Here, ideally.&lt;br /&gt;
&lt;br /&gt;
=== Proof of Concept liboggplay (html5 video) support in Chromium Browser === &lt;br /&gt;
&lt;br /&gt;
This project would focus on integrating support for liboggplay into chrome. This project would only need to be a proof of concept with the end result being some frames decoded in the browser. We have some direct contacts with people on the Chromium project in Google, but would expect the student mostly to work through the Xiph on Chromium online communities.&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/chromium/ Chromium Home Page]&lt;br /&gt;
&lt;br /&gt;
=== Metavid related projects === &lt;br /&gt;
&lt;br /&gt;
see [http://metavid.org/wiki/Summer_of_Code_2009 full page on metavid.org]&lt;br /&gt;
* Improve transcript import / export system:&lt;br /&gt;
** Wiki to SRT &lt;br /&gt;
** SRT to Wiki &lt;br /&gt;
** CMML to Wiki&lt;br /&gt;
** Extend oggz_chop or other tool for exporting transcript encapsulated in the ogg file.&lt;br /&gt;
&lt;br /&gt;
=== Javascript Library for Subtitles, Captions and other time-aligned text ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the project is around enabling video accessibility for Ogg in Firefox.&lt;br /&gt;
&lt;br /&gt;
Captions, subtitles and other categories of time-aligned text are starting to become relevant to HTML5. In Ogg, we currently encapsulate such data in OggKate and can use SRT or Kate as input formats. Display of OggKate is currently supported in VLC and there is a patch to mplayer. We now want to enable Web browsers to also deal with these time-aligned text tracks in Web Browsers that support the HTML5 video tag.&lt;br /&gt;
&lt;br /&gt;
There is a patch for Firefox 3.5 and liboggplay through which Firefox is capable of decoding Ogg Kate tracks and handing them on into the browser. However, there is no display of OggKate in Firefox 3.1 (now called 3.5) using HTML5.  This can be fixed through the creation of a javascript library that can deal with Kate output and convert it to HTML and CSS. Example libraries exists for SRT, but will need to be extended to Kate in this project.&lt;br /&gt;
&lt;br /&gt;
The project includes the creation of example files for different types of time-aligned text. These are then encapsulated into Ogg through Kate encoding. Firefox 3.5 with the applied OggKate patch can decode these files and hand the textual data together with styling information as available to the Web browser. It may be necessary  to extend the OggKate patch to converting Ogg Kate's representation into something that the Web browser can understand. The, the browser extracts the text and styling information and a javascript library implemented by the student will take care of the display. This will include an implementation of default display mechanisms for the different types of time-aligned text that we decide to deal with.&lt;br /&gt;
&lt;br /&gt;
The project requires a student with experience in javascript development, but also with some understanding of C for liboggplay and libkate, and of C++ for Firefox. The student will learn how to deal with Ogg and Ogg tracks, including Ogg Kate. He/she will also get some insight into Firefox development. He/she will work with the developer of Ogg Kate and the video accessibility expert of Xiph, as well as having access to the whole Xiph community including the core developer of Ogg support in Firefox.&lt;br /&gt;
&lt;br /&gt;
The project is adaptable to the qualifications of the student - it may consist in simply implementing a toolchain for handling srt inside Ogg, or it may go much further and include richer forms or time-aligned text such as audio annotations, Karaoke, ticker text, clickable text etc.&lt;br /&gt;
&lt;br /&gt;
=== OpenMAX IL components for Ogg codecs ===&lt;br /&gt;
&lt;br /&gt;
[http://blog.kfish.org/2009/02/is-openmax-important-for-free-software.html Is OpenMAX important for Free Software?]&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Summer of Code 2008]]&lt;br /&gt;
*[[Summer of Code 2007]]&lt;br /&gt;
*[[Summer of Code 2006]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Summer_of_Code_2009</id>
		<title>Summer of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Summer_of_Code_2009"/>
				<updated>2009-03-12T00:45:27Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: extended the description of the project :)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is  our ideas page for [http://code.google.com/soc/ Google Summer of Code 2009] projects with [http://xiph.org Xiph.org] and [http://annodex.org/ Annodex]. The two projects participate jointly this year under Xiph's name.&lt;br /&gt;
&lt;br /&gt;
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.&lt;br /&gt;
&lt;br /&gt;
'''Mentors''' please visit [[Summer of Code Mentoring]] and help us prepare our application as a mentoring organization.&lt;br /&gt;
&lt;br /&gt;
== General Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Kate to HTML &amp;amp; CSS overlay library in javascript.&lt;br /&gt;
* Proof of concept liboggplay-based media patch for Google's Chrome browser.&lt;br /&gt;
* mod_duration apache module to generate X-Content-Duration headers for Ogg files.&lt;br /&gt;
* Get skeleton patches upstream so players stop choking on it.&lt;br /&gt;
* Portable listening application for codec MOS/MUSHRA comparisons (Win32, MacOS, Linux; FF3.1 web application?).&lt;br /&gt;
* Conference bridge using CELT.&lt;br /&gt;
* Reference SIP client for CELT.&lt;br /&gt;
* Firefox extension to record locally and stream to icecast.&lt;br /&gt;
* Firefox extension to support RTP for conferencing.&lt;br /&gt;
&lt;br /&gt;
== Detailed Project Descriptions ==&lt;br /&gt;
&lt;br /&gt;
These ideas were suggested by various members of the developer community as projects that would be beneficial and which we feel we can mentor. Students should feel free to select one of these, develop a variation, or propose their own ideas. Here, ideally.&lt;br /&gt;
&lt;br /&gt;
=== Proof of Concept liboggplay (html5 video) support in Chromium Browser === &lt;br /&gt;
&lt;br /&gt;
This project would focus on integrating support for liboggplay into chrome. This project would only need to be a proof of concept with the end result being some frames decoded in the browser. We have some direct contacts with people on the Chromium project in Google, but would expect the student mostly to work through the Xiph on Chromium online communities.&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/chromium/ Chromium Home Page]&lt;br /&gt;
&lt;br /&gt;
=== Metavid related projects === &lt;br /&gt;
&lt;br /&gt;
see [http://metavid.org/wiki/Summer_of_Code_2009 full page on metavid.org]&lt;br /&gt;
* Improve transcript import / export system:&lt;br /&gt;
** Wiki to SRT &lt;br /&gt;
** SRT to Wiki &lt;br /&gt;
** CMML to Wiki&lt;br /&gt;
** Extend oggz_chop or other tool for exporting transcript encapsulated in the ogg file.&lt;br /&gt;
&lt;br /&gt;
=== Javascript Library for Subtitles, Captions and other time-aligned text ===&lt;br /&gt;
&lt;br /&gt;
The main focus of the project is around enabling video accessibility for Ogg in Firefox.&lt;br /&gt;
&lt;br /&gt;
Captions, subtitles and other categories of time-aligned text are starting to become relevant to HTML5. In Ogg, we currently encapsulate such data in OggKate and can use SRT or Kate as input formats. Display of OggKate is currently supported in VLC and there is a patch to mplayer. We now want to enable Web browsers to also deal with these time-aligned text tracks in Web Browsers that support the HTML5 video tag.&lt;br /&gt;
&lt;br /&gt;
There is a patch for Firefox 3.5 and liboggplay through which Firefox is capable of decoding Ogg Kate tracks and handing them on into the browser. However, there is no display of OggKate in Firefox 3.1 (now called 3.5) using HTML5.  This can be fixed through the creation of a javascript library that can deal with Kate output and convert it to HTML and CSS. Example libraries exists for SRT, but will need to be extended to Kate in this project.&lt;br /&gt;
&lt;br /&gt;
The project includes the creation of example files for different types of time-aligned text. These are then encapsulated into Ogg through Kate encoding. Firefox 3.5 with the applied OggKate patch can decode these files and hand the textual data together with styling information as available to the Web browser. It may be necessary  to extend the OggKate patch to converting Ogg Kate's representation into something that the Web browser can understand. The, the browser extracts the text and styling information and a javascript library implemented by the student will take care of the display. This will include an implementation of default display mechanisms for the different types of time-aligned text that we decide to deal with.&lt;br /&gt;
&lt;br /&gt;
The project requires a student with experience in javascript development, but also with some understanding of C. The student will learn how to deal with Ogg and Ogg tracks, including Ogg Kate. He/she will also get some insight into Firefox development. He/she will work with the developer of Ogg Kate and the video accessibility expert of Xiph, as well as having access to the whole Xiph community including the core developer of Ogg support in Firefox.&lt;br /&gt;
&lt;br /&gt;
The project is adaptable to the qualifications of the student - it may consist in simply implementing a toolchain for handling srt inside Ogg, or it may go much further and include richer forms or time-aligned text such as audio annotations, Karaoke, ticker text, clickable text etc.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Summer of Code 2008]]&lt;br /&gt;
*[[Summer of Code 2007]]&lt;br /&gt;
*[[Summer of Code 2006]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Summer_of_Code_2009</id>
		<title>Summer of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Summer_of_Code_2009"/>
				<updated>2009-03-12T00:32:03Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* Proof of Concept liboggplay (html5 video) support in Chromium Browser */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is  our ideas page for [http://code.google.com/soc/ Google Summer of Code 2009] projects with [http://xiph.org Xiph.org] and [http://annodex.org/ Annodex]. The two projects participate jointly this year under Xiph's name.&lt;br /&gt;
&lt;br /&gt;
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.&lt;br /&gt;
&lt;br /&gt;
'''Mentors''' please visit [[Summer of Code Mentoring]] and help us prepare our application as a mentoring organization.&lt;br /&gt;
&lt;br /&gt;
== General Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Kate to HTML &amp;amp; CSS overlay library in javascript.&lt;br /&gt;
* Proof of concept liboggplay-based media patch for Google's Chrome browser.&lt;br /&gt;
* mod_duration apache module to generate X-Content-Duration headers for Ogg files.&lt;br /&gt;
* Get skeleton patches upstream so players stop choking on it.&lt;br /&gt;
* Portable listening application for codec MOS/MUSHRA comparisons (Win32, MacOS, Linux; FF3.1 web application?).&lt;br /&gt;
* Conference bridge using CELT.&lt;br /&gt;
* Reference SIP client for CELT.&lt;br /&gt;
* Firefox extension to record locally and stream to icecast.&lt;br /&gt;
* Firefox extension to support RTP for conferencing.&lt;br /&gt;
&lt;br /&gt;
== Detailed Project Descriptions ==&lt;br /&gt;
&lt;br /&gt;
These ideas were suggested by various members of the developer community as projects that would be beneficial and which we feel we can mentor. Students should feel free to select one of these, develop a variation, or propose their own ideas. Here, ideally.&lt;br /&gt;
&lt;br /&gt;
=== Proof of Concept liboggplay (html5 video) support in Chromium Browser === &lt;br /&gt;
&lt;br /&gt;
This project would focus on integrating support for liboggplay into chrome. This project would only need to be a proof of concept with the end result being some frames decoded in the browser. We have some direct contacts with people on the Chromium project in Google, but would expect the student mostly to work through the Xiph on Chromium online communities.&lt;br /&gt;
&lt;br /&gt;
[http://code.google.com/chromium/ Chromium Home Page]&lt;br /&gt;
&lt;br /&gt;
=== Metavid related projects === &lt;br /&gt;
&lt;br /&gt;
see [http://metavid.org/wiki/Summer_of_Code_2009 full page on metavid.org]&lt;br /&gt;
* Improve transcript import / export system:&lt;br /&gt;
** Wiki to SRT &lt;br /&gt;
** SRT to Wiki &lt;br /&gt;
** CMML to Wiki&lt;br /&gt;
** Extend oggz_chop or other tool for exporting transcript encapsulated in the ogg file.&lt;br /&gt;
&lt;br /&gt;
=== Javascript Library for Subtitles, Captions and other time-aligned text ===&lt;br /&gt;
&lt;br /&gt;
Captions, subtitles and other categories of time-aligned text are starting to become relevant to HTML5. In Ogg, we currently encapsulate such data in OggKate and can use SRT or Kate as input formats. Display of OggKate is currently supported in VLC and there is a patch to mplayer. However, there is no display of OggKate in Firefox 3.1 using HTML5. This can be fixed through the creation of a javascript library that can deal with Kate output and convert it to HTML and CSS. Such a library exists for SRT, but will be extended to Kate in this project.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Summer of Code 2008]]&lt;br /&gt;
*[[Summer of Code 2007]]&lt;br /&gt;
*[[Summer of Code 2006]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Summer_of_Code_2009</id>
		<title>Summer of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Summer_of_Code_2009"/>
				<updated>2009-02-28T07:46:23Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* Detailed Project Descriptions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is  our ideas page for [http://code.google.com/soc/ Google Summer of Code 2009] projects with [http://xiph.org Xiph.org] and [http://annodex.org/ Annodex]. The two projects participate jointly this year under Xiph's name.&lt;br /&gt;
&lt;br /&gt;
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.&lt;br /&gt;
&lt;br /&gt;
'''Mentors''' please visit [[Summer of Code Mentoring]] and help us prepare our application as a mentoring organization.&lt;br /&gt;
&lt;br /&gt;
== General Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Kate to HTML &amp;amp; CSS overlay library in javascript.&lt;br /&gt;
* Proof of concept liboggplay-based media patch for Google's Chrome browser.&lt;br /&gt;
* mod_duration apache module to generate X-Content-Duration headers for Ogg files.&lt;br /&gt;
* Get skeleton patches upstream so players stop choking on it.&lt;br /&gt;
&lt;br /&gt;
== Detailed Project Descriptions ==&lt;br /&gt;
&lt;br /&gt;
These ideas were suggested by various members of the developer community as projects that would be beneficial and which we feel we can mentor. Students should feel free to select one of these, develop a variation, or propose their own ideas. Here, ideally.&lt;br /&gt;
&lt;br /&gt;
=== Proof of Concept liboggplay (html5 video) support in Chrome Browser === &lt;br /&gt;
&lt;br /&gt;
This project would focus on creating a patch for basic liboggplay support into chrome. This project would only need to be a proof of concept with the end result being some frames decoded in the browser. Buffering, and full html5 video feature set support would not need to be addressed. &lt;br /&gt;
&lt;br /&gt;
=== Metavid related projects === &lt;br /&gt;
&lt;br /&gt;
see [http://metavid.org/wiki/Summer_of_Code_2009 full page on metavid.org]&lt;br /&gt;
* Improve transcript import export system:&lt;br /&gt;
** [[CMML]] to SRT &lt;br /&gt;
** SRT to Wiki &lt;br /&gt;
** Wiki to oggkate SRT+OGG stream&lt;br /&gt;
&lt;br /&gt;
=== Javascript Library for Subtitles, Captions and other time-aligned text ===&lt;br /&gt;
&lt;br /&gt;
Captions, subtitles and other categories of time-aligned text are starting to become relevant to HTML5. In Ogg, we currently encapsulate such data in OggKate and can use SRT or Kate as input formats. Display of OggKate is currently supported in VLC and there is a patch to mplayer. However, there is no display of OggKate in Firefox 3.1 using HTML5. This can be fixed through the creation of a javascript library that can deal with Kate output and convert it to HTML and CSS. Such a library exists for SRT, but will be extended to Kate in this project.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Summer of Code 2008]]&lt;br /&gt;
*[[Summer of Code 2007]]&lt;br /&gt;
*[[Summer of Code 2006]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	<entry>
		<id>http://wiki.xiph.org/Summer_of_Code_2009</id>
		<title>Summer of Code 2009</title>
		<link rel="alternate" type="text/html" href="http://wiki.xiph.org/Summer_of_Code_2009"/>
				<updated>2009-02-28T07:36:16Z</updated>
		
		<summary type="html">&lt;p&gt;Silvia: /* General Ideas */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is  our ideas page for [http://code.google.com/soc/ Google Summer of Code 2009] projects with [http://xiph.org Xiph.org] and [http://annodex.org/ Annodex]. The two projects participate jointly this year under Xiph's name.&lt;br /&gt;
&lt;br /&gt;
'''Students''' please use the template at [[Summer of Code Applications]] when applying for a GSoC position.&lt;br /&gt;
&lt;br /&gt;
'''Mentors''' please visit [[Summer of Code Mentoring]] and help us prepare our application as a mentoring organization.&lt;br /&gt;
&lt;br /&gt;
== General Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Kate to HTML &amp;amp; CSS overlay library in javascript.&lt;br /&gt;
* Proof of concept liboggplay-based media patch for Google's Chrome browser.&lt;br /&gt;
* mod_duration apache module to generate X-Content-Duration headers for Ogg files.&lt;br /&gt;
* Get skeleton patches upstream so players stop choking on it.&lt;br /&gt;
&lt;br /&gt;
== Detailed Project Descriptions ==&lt;br /&gt;
&lt;br /&gt;
These ideas were suggested by various members of the developer community as projects that would be beneficial and which we feel we can mentor. Students should feel free to select one of these, develop a variation, or propose their own ideas. Here, ideally.&lt;br /&gt;
&lt;br /&gt;
=== Proof of Concept liboggplay (html5 video) support in Chrome Browser === &lt;br /&gt;
&lt;br /&gt;
This project would focus on creating a patch for basic liboggplay support into chrome. This project would only need to be a proof of concept with the end result being some frames decoded in the browser. Buffering, and full html5 video feature set support would not need to be addressed. &lt;br /&gt;
&lt;br /&gt;
=== Metavid related projects === &lt;br /&gt;
&lt;br /&gt;
see [http://metavid.org/wiki/Summer_of_Code_2009 full page on metavid.org]&lt;br /&gt;
* Improve transcript import export system:&lt;br /&gt;
** [[CMML]] to SRT &lt;br /&gt;
** SRT to Wiki &lt;br /&gt;
** Wiki to oggkate SRT+OGG stream&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
*[[Summer of Code 2008]]&lt;br /&gt;
*[[Summer of Code 2007]]&lt;br /&gt;
*[[Summer of Code 2006]]&lt;/div&gt;</summary>
		<author><name>Silvia</name></author>	</entry>

	</feed>