Ogg Media Types Xiph.Org Foundation
21 College Hill Road Somerville MA 02144 US justivo@gmail.com xmpp:justivo@gmail.com
Xiph.Org Foundation
silvia@annodex.net http://annodex.net/
Xiph.Org Foundation
monty@xiph.org http://xiph.org
Internet I-D Internet-Draft Ogg MIME Video Audio Codecs This document describes the registration of media types for the Ogg container format and conformance requirements for implementations of these types. This document obsoletes .
This document describes media types for Ogg, a data encapsulation format defined by the Xiph.Org Foundation for public use. Refer to "Introduction" in and "Overview" in for background information on this container format. Binary data contained in Ogg, such as Vorbis and Theora, has historically been interchanged using the application/ogg media type as defined by . This document obsoletes and defines three media types for different types of content in Ogg to reflect this usage in the IANA media type registry, to foster interoperability by defining underspecified aspects, and to provide general security considerations. The Ogg container format is known to contain or video, (narrow-band and wide-band) speech, or audio, and timed text/metadata. As Ogg encapsulates binary data, it is possible to include any other type of video, audio, image, text, or, generally speaking, any time-continuously sampled data. While raw packets from these data sources may be used directly by transport mechanisms that provide their own framing and packet-separation mechanisms (such as UDP datagrams or RTP), Ogg is a solution for stream based storage (such as files) and transport (such as TCP streams or pipes). The media types defined in this document are needed to correctly identify such content when it is served over HTTP, included in multi-part documents, or used in other places where media types are used.
The type "application/ogg" is redefined. The types "video/ogg" and "audio/ogg" are defined. New file extensions are defined. New Macintosh file type codes are defined. The codecs parameter is defined for optional use. The Ogg Skeleton extension becomes a recommended addition for content served under the new types.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, and indicate requirement levels for compliant implementations. Requirements apply to all implementations unless otherwise stated. An implementation is a software module that supports one of the media types defined in this document. Software modules may support multiple media types, but conformance is considered individually for each type. Implementations that fail to satisfy one or more "MUST" requirements are considered non-compliant. Implementations that satisfy all "MUST" requirements, but fail to satisfy one or more "SHOULD" requirements, are said to be "conditionally compliant". All other implementations are "unconditionally compliant".
The application/ogg media type has been used in an ad hoc fashion to label and exchange multimedia content in Ogg containers. Use of the "application" top-level type for this kind of content is known to be problematic, in particular since it obfuscates video and audio content. This document thus defines the media types, video/ogg audio/ogg which are intended for common use and SHOULD be used when dealing with video or audio content, respectively. This document also obsoletes the definition of application/ogg and marks it for complex data (e.g., multitrack visual, audio, textual, and other time-continuously sampled data), which is not clearly video or audio data and thus not suited for either the video/ogg or audio/ogg types. Refer to the following section for more details. An Ogg bitstream generally consists of one or more logical bitstreams that each consist of a series of header and data pages packetising time-continuous binary data . The content types of the logical bitstreams may be identified without decoding the header pages of the logical bitstreams through use of a bitstream. Using Ogg Skeleton is REQUIRED for content served under the application/ogg type and RECOMMENDED for video/ogg and audio/ogg, as Skeleton contains identifiers to describe the different encapsulated data. Furthermore, it is RECOMMENDED that implementations that identify a logical bitstream that they cannot decode SHOULD ignore it, while continuing to decode the ones they can. Such precaution ensures backward and forward compatibility with existing and future data. These media types can optionally use the "codecs" parameter described in . Codecs encapsulated in Ogg require a text identifier at the beginning of the first header page, hence a machine-readable method to identify the encapsulated codecs would be through this header. The following table illustrates how those header values map into strings that are used in the "codecs" parameter when dealing with Ogg media types.
An up-to-date version of this table is kept at Xiph.org (see ). Possible examples include: application/ogg; codecs="theora, cmml, ecmascript" video/ogg; codecs="theora, vorbis" audio/ogg; codecs=speex
As stated in the previous section, this document describes three media types that are targeted at different data encapsulated in Ogg. Since Ogg is capable of encapsulating any kind of data, the multiple usage scenarios have revealed interoperability issues between implementations when dealing with content served solely under the application/ogg type. While this document does redefine the earlier definition of application/ogg, this media type will continue to embrace the widest net possible of content with the video/ogg and audio/ogg types being smaller subsets of it. However, the video/ogg and audio/ogg types take precedence in a subset of the usages, specifically when serving multimedia content that is not complex enough to warrant the use of application/ogg. Following this line of thought, the audio/ogg type is an even smaller subset within video/ogg, as it is not intended to refer to visual content. As such, the application/ogg type is the recommended choice to serve content aimed at scientific and other applications that require various multiplexed signals or streams of continuous data, with or without scriptable control of content. For bitstreams containing visual, timed text, and any other type of material that requires a visual interface, but that is not complex enough to warrant serving under application/ogg, the video/ogg type is recommended. In situations where the Ogg bitstream predominantly contains audio data (lyrics, metadata, or cover art notwithstanding), it is recommended to use the audio/ogg type.
Binary: The content consists of an unrestricted sequence of octets. Note: Ogg encapsulated content is binary data and should be transmitted in a suitable encoding without CR/LF conversion, 7-bit stripping, etc.; base64 is generally preferred for binary-to-text encoding. Media types described in this document are used for stream based storage (such as files) and transport (such as TCP streams or pipes); separate types are used to identify codecs such as in real-time applications for the RTP payload formats of Theora video, Vorbis, or Speex audio, as well as for identification of encapsulated data within Ogg through Skeleton.
Refer to for a discussion of terminology used in this section. The Ogg encapsulation format is a container and only a carrier of content (such as audio, video, and displayable text data) with a very rigid definition. This format in itself is not more vulnerable than any other content framing mechanism. Ogg does not provide for any generic encryption or signing of itself or its contained bitstreams. However, it encapsulates any kind of binary content and is thus able to contain encrypted and signed content data. It is also possible to add an external security mechanism that encrypts or signs an Ogg bitstream and thus provides content confidentiality and authenticity. As Ogg encapsulates binary data, it is possible to include executable content in an Ogg bitstream. Implementations SHOULD NOT execute such content without prior validation of its origin by the end-user. Issues may arise on applications that use Ogg for streaming or file transfer in a networking scenario. In such cases, implementations decoding Ogg and its encapsulated bitstreams have to ensure correct handling of manipulated bitstreams, of buffer overflows, and similar issues. It is also possible to author malicious Ogg bitstreams, which attempt to call for an excessively large picture size, high sampling-rate audio, etc. Implementations SHOULD protect themselves against this kind of attack. Ogg has an extensible structure, so that it is theoretically possible that metadata fields or media formats might be defined in the future which might be used to induce particular actions on the part of the recipient, thus presenting additional security risks. However, this type of capability is currently not supported in the referenced specification. Implementations may fail to implement a specific security model or other means to prevent possibly dangerous operations. Such failure might possibly be exploited to gain unauthorized access to a system or sensitive information; such failure constitutes an unknown factor and is thus considered out of the scope of this document.
The Ogg container format is device-, platform-, and vendor-neutral and has proved to be widely implementable across different computing platforms through a wide range of encoders and decoders. A broadly portable reference implementation is available under the revised (3-clause) BSD license, which is a Free Software license. The Xiph.Org Foundation has defined the specification, interoperability, and conformance and conducts regular interoperability testing. The use of the Ogg Skeleton extension has been confirmed to not cause interoperability issues with existing implementations. Third parties are, however, welcome to conduct their own testing.
In accordance with the procedures set forth in , this document registers two new media types and redefines the existing application/ogg as defined in the following section.
Type name: application Subtype name: ogg Required parameters: none Optional parameters: codecs, whose syntax is defined in RFC 4281. See section 4 of RFC &rfc.number; for a list of allowed values. Encoding considerations: See section 6 of RFC &rfc.number;. Security considerations: See section 7 of RFC &rfc.number;. Interoperability considerations: None, as noted in section 8 of RFC &rfc.number;. Published specification: RFC 3533 Applications which use this media type: Scientific and otherwise that require various multiplexed signals or streams of data, with or without scriptable control of content. Additional information: Magic number(s): The first four bytes, 0x4f 0x67 0x67 0x53, correspond to the string "OggS". File extension(s): .ogx RFC 3534 defined the file extension .ogg for application/ogg, which RFC &rfc.number; obsoletes in favor of .ogx due to concerns where, historically, some implementations expect .ogg files to be solely Vorbis-encoded audio. Macintosh File Type Code(s): OggX Person & Email address to contact for further information: See "Authors' Addresses" section. Intended usage: COMMON Restrictions on usage: The type application/ogg SHOULD only be used in situations where it is not appropriate to serve data under the video/ogg or audio/ogg types. Data served under the application/ogg type SHOULD use the .ogx file extension and MUST contain an Ogg Skeleton logical bitstream to identify all other contained logical bitstreams. Author: See "Authors' Addresses" section. Change controller: The Xiph.Org Foundation.
Type name: video Subtype name: ogg Required parameters: none Optional parameters: codecs, whose syntax is defined in RFC 4281. See section 4 of RFC &rfc.number; for a list of allowed values. Encoding considerations: See section 6 of RFC &rfc.number;. Security considerations: See section 7 of RFC &rfc.number;. Interoperability considerations: None, as noted in section 8 of RFC &rfc.number;. Published specification: RFC 3533 Applications which use this media type: Multimedia applications, including embedded, streaming, and conferencing tools. Additional information: Magic number(s): The first four bytes, 0x4f 0x67 0x67 0x53, correspond to the string "OggS". File extension(s): .ogv Macintosh File Type Code(s): OggV Person & Email address to contact for further information: See "Authors' Addresses" section. Intended usage: COMMON Restrictions on usage: The type "video/ogg" SHOULD be used for Ogg bitstreams containing visual, audio, timed text, or any other type of material that requires a visual interface. It is intended for content not complex enough to warrant serving under "application/ogg"; for example, a combination of Theora video, Vorbis audio, Skeleton metadata, and CMML captioning. Data served under the type "video/ogg" SHOULD contain an Ogg Skeleton logical bitstream. Implementations interacting with the type "video/ogg" SHOULD support multiplexed bitstreams. Author: See "Authors' Addresses" section. Change controller: The Xiph.Org Foundation.
Type name: audio Subtype name: ogg Required parameters: none Optional parameters: codecs, whose syntax is defined in RFC 4281. See section 4 of RFC &rfc.number; for a list of allowed values. Encoding considerations: See section 6 of RFC &rfc.number;. Security considerations: See section 7 of RFC &rfc.number;. Interoperability considerations: None, as noted in section 8 of RFC &rfc.number;. Published specification: RFC 3533 Applications which use this media type: Multimedia applications, including embedded, streaming, and conferencing tools. Additional information: Magic number(s): The first four bytes, 0x4f 0x67 0x67 0x53, correspond to the string "OggS". File extension(s): .oga, .ogg, .spx Macintosh File Type Code(s): OggA Person & Email address to contact for further information: See "Authors' Addresses" section. Intended usage: COMMON Restrictions on usage: The type "audio/ogg" SHOULD be used when the Ogg bitstream predominantly contains audio data. Content served under the "audio/ogg" type SHOULD have an Ogg Skeleton logical bitstream when using the default .oga file extension. The .ogg and .spx file extensions indicate a specialization that requires no Skeleton due to backward compatibility concerns with existing implementations. In particular, .ogg is used for Ogg files that contain only a Vorbis bitstream, while .spx is used for Ogg files that contain only a Speex bitstream. Author: See "Authors' Addresses" section. Change controller: The Xiph.Org Foundation.
The authors gratefully acknowledge the contributions of Magnus Westerlund, Alfred Hoenes, and Peter Saint-Andre.
The authors agree to grant third parties the irrevocable right to copy, use and distribute the work, with or without modification, in any medium, without royalty, provided that, unless separate permission is granted, redistributed modified works do not contain misleading author, version, name of work, or endorsement information.
Multipurpose Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies Innosoft International, Inc.
1050 East Garvey Avenue South West Covina CA 91790 US +1 818 919 3600 +1 818 919 3614 ned@innosoft.com
First Virtual Holdings
25 Washington Avenue Morristown NJ 07960 US +1 201 540 8967 +1 201 993 3032 nsb@nsb.fv.com
STD 11, RFC 822, defines a message representation protocol specifying considerable detail about US-ASCII message headers, and leaves the message content, or message body, as flat US-ASCII text. This set of documents, collectively called the Multipurpose Internet Mail Extensions, or MIME, redefines the format of messages to allow for (1) textual message bodies in character sets other than US-ASCII, (2) an extensible set of different formats for non-textual message bodies, (3) multi-part message bodies, and (4) textual header information in character sets other than US-ASCII. These documents are based on earlier work documented in RFC 934, STD 11, and RFC 1049, but extends and revises them. Because RFC 822 said so little about message bodies, these documents are largely orthogonal to (rather than a revision of) RFC 822. This initial document specifies the various headers used to describe the structure of MIME messages. The second document, RFC 2046, defines the general structure of the MIME media typing system and defines an initial set of media types. The third document, RFC 2047, describes extensions to RFC 822 to allow non-US-ASCII text data in Internet mail header fields. The fourth document, RFC 2048, specifies various IANA registration procedures for MIME-related facilities. The fifth and final document, RFC 2049, describes MIME conformance criteria as well as providing some illustrative examples of MIME message formats, acknowledgements, and the bibliography. These documents are revisions of RFCs 1521, 1522, and 1590, which themselves were revisions of RFCs 1341 and 1342. An appendix in RFC 2049 describes differences and changes from previous versions.
Key words for use in RFCs to Indicate Requirement Levels Harvard University
1350 Mass. Ave. Cambridge MA 02138 - +1 617 495 3864 sob@harvard.edu
General keyword In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. Authors who follow these guidelines should incorporate this phrase near the beginning of their document: − The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. Note that the force of these words is modified by the requirement level of the document in which they are used.
The Ogg Encapsulation Format Version 0 This document describes the Ogg bitstream format version 0, which is a general, freely-available encapsulation format for media streams. It is able to encapsulate any kind and number of video and audio encoding formats as well as other data streams in a single bitstream. This memo provides information for the Internet community. This memo provides information for the Internet community. The Codecs Parameter for "Bucket" Media Types Several MIME type/subtype combinations exist that can contain different media formats. A receiving agent thus needs to examine the details of such media content to determine if the specific elements can be rendered given an available set of codecs. Especially when the end system has limited resources, or the connection to the end system has limited bandwidth, it would be helpful to know from the Content-Type alone if the content can be rendered. This document adds a new parameter, "codecs", to various type/subtype combinations to allow for unambiguous specification of the codecs indicated by the media formats contained within. By labeling content with the specific codecs indicated to render the contained media, receiving systems can determine if the codecs are supported by the end system, and if not, can take appropriate action (such as rejecting the content, sending notification of the situation, transcoding the content to a supported type, fetching and installing the required codecs, further inspection to determine if it will be sufficient to support a subset of the indicated codecs, etc.) [STANDARDS TRACK] Media Type Specifications and Registration Procedures This document defines procedures for the specification and registration of media types for use in MIME and other Internet protocols. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.
The Continuous Media Markup Language (CMML) Commonwealth Scientific and Industrial Research Organisation Commonwealth Scientific and Industrial Research Organisation Commonwealth Scientific and Industrial Research Organisation Specification of MIME types and respective codecs parameter Xiph.Org Foundation Xiph.Org Foundation Dirac Specification Dirac Group The FLAC Format Xiph.Org Foundation The libogg API Xiph.Org Foundation Ogg bitstream documentation: Ogg logical and physical bitstream overview, Ogg logical bitstream framing, Ogg multi-stream multiplexing Xiph.Org Foundation The application/ogg Media Type The Ogg Bitstream Format aims at becoming a general, freely-available standard for transporting multimedia content across computing platforms and networks. The intention of this document is to define the MIME media type application/ogg to refer to this kind of content when transported across the Internet. It is the intention of the Ogg Bitstream Format developers that it be usable without intellectual property concerns. [STANDARDS TRACK] Guidelines for Writing RFC Text on Security Considerations All RFCs are required to have a Security Considerations section. Historically, such sections have been relatively weak. This document provides guidelines to RFC authors on how to write a good Security Considerations section. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements. The Base16, Base32, and Base64 Data Encodings This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS TRACK] RTP Payload Format for Vorbis Encoded Audio Xiph.Org Foundation The Ogg Skeleton Metadata Bitstream Xiph.Org Foundation Xiph.Org Foundation The Speex Codec Manual Xiph.Org Foundation RTP Payload Format for the Speex Codec Commonwealth Scientific and Industrial Research Organisation Theora Specification Xiph.Org Foundation RTP Payload Format for Theora Encoded Video Xiph.Org Foundation Vorbis I Specification Xiph.Org Foundation