| < draft-gellens-mime-bucket-03.txt | draft-gellens-mime-bucket-04.txt > | |||
|---|---|---|---|---|
| Internet Draft R. Gellens | Internet Draft R. Gellens | |||
| Document: draft-gellens-mime-bucket-03.txt Qualcomm | Document: draft-gellens-mime-bucket-04.txt Qualcomm | |||
| Expires: August 2005 D. Singer | Expires: December 2005 D. Singer | |||
| Apple | Apple | |||
| P. Frojdh | P. Frojdh | |||
| Ericsson | Ericsson | |||
| February 2005 | June 2005 | |||
| The Codecs Parameter for "Bucket" Media Types | The Codecs Parameter for "Bucket" Media Types | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, I certify that any applicable | By submitting this Internet-Draft, each author represents that any | |||
| patent or other IPR claims of which I am aware have been disclosed | applicable patent or other IPR claims of which he or she is aware | |||
| and any of which I become aware will be disclosed, in accordance | have been or will be disclosed, and any of which he or she becomes | |||
| with RFC 3668 (BCP 79). | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| By submitting this Internet-Draft, I accept the provisions of | By submitting this Internet-Draft, I accept the provisions of | |||
| Section 3 of RFC 3667 (BCP 78). | Section 3 of RFC 3667 (BCP 78). | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
| Drafts. | Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six | Internet-Drafts are draft documents valid for a maximum of six | |||
| skipping to change at line 50 ¶ | skipping to change at line 50 ¶ | |||
| Abstract | Abstract | |||
| Several MIME type/subtype combinations exist which can contain | Several MIME type/subtype combinations exist which can contain | |||
| different media formats. A receiving agent thus needs to examine | different media formats. A receiving agent thus needs to examine | |||
| the details of such media content to determine if the specific | the details of such media content to determine if the specific | |||
| elements can be rendered given an available set of codecs. | elements can be rendered given an available set of codecs. | |||
| Especially when the end system has limited resources, or the | Especially when the end system has limited resources, or the | |||
| connection to the end system has limited bandwidth, it would be | connection to the end system has limited bandwidth, it would be | |||
| Gellens [Page 1] Expires August 2005 | Gellens, Singer, Frojdh [Page 1] Expires December 2005 | |||
| helpful to know from the Content-Type alone if the content can be | helpful to know from the Content-Type alone if the content can be | |||
| rendered. | rendered. | |||
| This document adds a new parameter, "codecs", to various | This document adds a new parameter, "codecs", to various | |||
| type/subtype combinations to allow for unambiguous specification of | type/subtype combinations to allow for unambiguous specification of | |||
| the codecs indicated by the media formats contained within. | the codecs indicated by the media formats contained within. | |||
| By labeling content with the specific codecs indicated to render the | By labeling content with the specific codecs indicated to render the | |||
| contained media, receiving systems can determine if the codecs are | contained media, receiving systems can determine if the codecs are | |||
| supported by the end system, and if not, can take appropriate action | supported by the end system, and if not, can take appropriate action | |||
| (such as rejecting the content, sending notification of the | (such as rejecting the content, sending notification of the | |||
| situation, transcoding the content to a supported type, fetching and | situation, transcoding the content to a supported type, fetching and | |||
| installing the required codecs, further inspection to determine if | installing the required codecs, further inspection to determine if | |||
| it will be sufficient to support a subset of the indicated codecs, | it will be sufficient to support a subset of the indicated codecs, | |||
| etc.) | etc.) | |||
| Gellens [Page 2] Expires August 2005 | Gellens, Singer, Frojdh [Page 2] Expires December 2005 | |||
| Table of Contents | Table of Contents | |||
| 1. Conventions Used in this Document . . . . . . . . . . . . . 3 | 1. Conventions Used in this Document . . . . . . . . . . . . . 3 | |||
| 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . 3 | |||
| 3. The Codecs Parameter . . . . . . . . . . . . . . . . . . . . 5 | 3. The Codecs Parameter . . . . . . . . . . . . . . . . . . . . 5 | |||
| 3.1. Generic Syntax . . . . . . . . . . . . . . . . . . . . 6 | 3.1. Generic Syntax . . . . . . . . . . . . . . . . . . . . 6 | |||
| 3.2. ISO File Format Name Space . . . . . . . . . . . . . . . 7 | 3.2. ISO File Format Name Space . . . . . . . . . . . . . . . 7 | |||
| 3.3. ISO Syntax . . . . . . . . . . . . . . . . . . . . . . 7 | 3.3. ISO Syntax . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 4. Use in Additional Media Types . . . . . . . . . . . . . . . 8 | 4. Use in Additional Media Types . . . . . . . . . . . . . . . 9 | |||
| 5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 5. Examples . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 6. Additional Media Feature Details . . . . . . . . . . . . . . 9 | 6. Additional Media Feature Details . . . . . . . . . . . . . . 10 | |||
| 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . 9 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . 10 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . 9 | 8. Security Considerations . . . . . . . . . . . . . . . . . . 10 | |||
| 9. Acknowledgements . . . . . . . . . . . . . . . . . . . . . 10 | 9. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . 11 | |||
| 10. Normative References . . . . . . . . . . . . . . . . . . . . 10 | 10. Normative References . . . . . . . . . . . . . . . . . . . . 11 | |||
| 11. Informative References . . . . . . . . . . . . . . . . . . 10 | 11. Informative References . . . . . . . . . . . . . . . . . . 11 | |||
| 12. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 11 | 12. Authors' Addresses . . . . . . . . . . . . . . . . . . . . . 12 | |||
| Intellectual Property Statement . . . . . . . . . . . . . . . 12 | Intellectual Property Statement . . . . . . . . . . . . . . . 12 | |||
| Full Copyright Statement . . . . . . . . . . . . . . . . . . . 12 | Full Copyright Statement . . . . . . . . . . . . . . . . . . . 13 | |||
| Disclaimer . . . . . . . . . . . . . . . . . . . . . . . . . 12 | ||||
| 1. Conventions Used in this Document | 1. Conventions Used in this Document | |||
| The key words "REQUIRED", "MUST", "MUST NOT", "SHOULD", "SHOULD | The key words "REQUIRED", "MUST", "MUST NOT", "SHOULD", "SHOULD | |||
| NOT", and "MAY" in this document are to be interpreted as described | NOT", and "MAY" in this document are to be interpreted as described | |||
| in "Key words for use in RFCs to Indicate Requirement Levels" | in "Key words for use in RFCs to Indicate Requirement Levels" | |||
| [KEYWORDS]. | [KEYWORDS]. | |||
| Syntax is given using [ABNF], including the Core Rules. | The syntax in this document uses the BNF rules specified in | |||
| [MIME-Format] and [MIME-Coding]. | ||||
| 2. Introduction | 2. Introduction | |||
| One of the original motivations for MIME is the ability to identify | One of the original motivations for MIME is the ability to identify | |||
| the specific media type of a message part. However, due to various | the specific media type of a message part. However, due to various | |||
| factors, it is not always possible from looking at the MIME type and | factors, it is not always possible from looking at the MIME type and | |||
| subtype to know which specific media formats are contained in the | subtype to know which specific media formats are contained in the | |||
| body part, or which codecs are indicated in order to render the | body part, or which codecs are indicated in order to render the | |||
| content. | content. | |||
| There are several media type/subtypes (either currently registered | There are several media type/subtypes (either currently registered | |||
| or deployed with registration pending) which may contain codecs | or deployed with registration pending) which may contain codecs | |||
| chosen from a set. It is currently necessary to examine each media | chosen from a set. It is currently necessary to examine each media | |||
| element in order to determine the codecs required to render the | element in order to determine the codecs required to render the | |||
| content. For example, video/3gpp may contain any of the video | content. For example, video/3gpp may contain any of the video | |||
| formats H.263 Profile 0, H.263 Profile 3, H.264, MPEG-4 Simple | formats H.263 Profile 0, H.263 Profile 3, H.264, MPEG-4 Simple | |||
| Profile, and/or any of the audio formats AMR, AMR-WB, Extended | Profile, and/or any of the audio formats AMR, AMR-WB, Extended | |||
| AMR-WB, AAC, or Enhanced aacPlus, as specified in [3GPP-Formats]. | AMR-WB, AAC, or Enhanced aacPlus, as specified in [3GPP-Formats]. | |||
| Gellens [Page 3] Expires August 2005 | Gellens, Singer, Frojdh [Page 3] Expires December 2005 | |||
| In some cases, the specific codecs can be determined by examining | In some cases, the specific codecs can be determined by examining | |||
| the header information of the media content. While this isn't as | the header information of the media content. While this isn't as | |||
| bad as examining the entire content, it still requires specialized | bad as examining the entire content, it still requires specialized | |||
| knowledge of each format and is resource consumptive. | knowledge of each format and is resource consumptive. | |||
| This ambiguity can be a problem for various clients and servers. It | This ambiguity can be a problem for various clients and servers. It | |||
| presents a significant burden to Multimedia Messaging (MMS) servers, | presents a significant burden to Multimedia Messaging (MMS) servers, | |||
| which must examine the media sent in each message in order to | which must examine the media sent in each message in order to | |||
| determine which codecs are required to render the content. Only | determine which codecs are required to render the content. Only | |||
| then can it determine if the content requires transcoding or | then can such a server determine if the content requires transcoding | |||
| specialized handling prior to being transmitted to the handset. | or specialized handling prior to being transmitted to the handset. | |||
| Additionally, it presents a challenge to smart clients on devices | Additionally, it presents a challenge to smart clients on devices | |||
| with constrained memory, processing power, or transmission bandwidth | with constrained memory, processing power, or transmission bandwidth | |||
| (such as cellular telephones and PDAs). Such clients often need to | (such as cellular telephones and PDAs). Such clients often need to | |||
| determine in advance if they are currently capable of rendering the | determine in advance if they are currently capable of rendering the | |||
| content contained in an MMS or email message. | content contained in an MMS or email message. | |||
| Specifically, | Current ambiguity: | |||
| o audio/3gpp can contain AMR, AAC, AMR-WB, Extended AMR-WB, or | o Audio/3gpp can contain AMR, AAC, AMR-WB, Extended AMR-WB, or | |||
| Enhanced aacPlus contents as specified in [3GPP-Formats]. | Enhanced aacPlus contents as specified in [3GPP-Formats]. | |||
| o audio/3gpp2 can contain AMR, AAC, 13K (as per [13k]), EVRC, SMV, | o Audio/3gpp2 can contain AMR, AAC, 13K (as per [13k]), EVRC, SMV, | |||
| or VMR-WB, as specified in [3GPP2-Formats] (video/3gpp2 MIME | or VMR-WB, as specified in [3GPP2-Formats] (video/3gpp2 MIME | |||
| registration pending). | registration pending). | |||
| o video/3gpp can contain H.263 Profile 0, H.263 Profile 3, H.264, | o Video/3gpp can contain H.263 Profile 0, H.263 Profile 3, H.264, | |||
| MPEG-4 Simple Profile, and/or AMR, AMR-WB, Extended AMR-WB, AAC, | MPEG-4 Simple Profile, and/or AMR, AMR-WB, Extended AMR-WB, AAC, | |||
| or Enhanced aacPlus, as specified in [3GPP-Formats]. | or Enhanced aacPlus, as specified in [3GPP-Formats]. | |||
| o video/3gpp2 can contain H.263 Profile 0, H.263 Profile 3, H.264, | o Video/3gpp2 can contain H.263 Profile 0, H.263 Profile 3, H.264, | |||
| MPEG-4 Simple Profile, and/or AMR, AAC, 13K (as per [13k]), | MPEG-4 Simple Profile, and/or AMR, AAC, 13K (as per [13k]), | |||
| EVRC, SMV, or VMR-WB, as specified in [3GPP2-Formats] | EVRC, SMV, or VMR-WB, as specified in [3GPP2-Formats] | |||
| (video/3gpp2 MIME registration pending). | (video/3gpp2 MIME registration pending). | |||
| Note that there are additional media types which are ambiguous, but | Note that there are additional media types which are ambiguous, but | |||
| are outside the scope of this document, including: | are outside the scope of this document, including: | |||
| o video/mpeg4-generic which can contain anything allowed by the | o video/mpeg4-generic which can contain anything allowed by the | |||
| MPEG-4 specification, or any audio codec registered with the MP4 | MPEG-4 specification, or any audio codec registered with the MP4 | |||
| registration authority [MP4-Reg]. | registration authority [MP4-Reg]; | |||
| o video/quicktime which can contain anything for which there is a | o video/quicktime which can contain anything for which there is a | |||
| QuickTime codec component; since QuickTime is extensible, this | QuickTime codec component; since QuickTime is extensible, this | |||
| is not limited to the codecs that are or have been shipped by | is not limited to the codecs that are or have been shipped by | |||
| Apple Computer. | Apple Computer. | |||
| With each "bucket" type, a receiving agent only knows that it has a | With each "bucket" type, a receiving agent only knows that it has a | |||
| container format. It doesn't even know whether content labeled | container format. It doesn't even know whether content labeled | |||
| video/3GPP or video/3GPP2 contains video; it might be audio only, | video/3GPP or video/3GPP2 contains video; it might be audio only, | |||
| audio and video, or video only. | audio and video, or video only. | |||
| Gellens [Page 4] Expires August 2005 | Gellens, Singer, Frojdh [Page 4] Expires December 2005 | |||
| A solution which permits a receiving agent to determine the specific | A solution which permits a receiving agent to determine the specific | |||
| codecs required to render media content would help provide efficient | codecs required to render media content would help provide efficient | |||
| and scalable servers, especially for Multimedia Messaging (MMS), and | and scalable servers, especially for Multimedia Messaging (MMS), and | |||
| aid the growth of multimedia services in wireless networks. | aid the growth of multimedia services in wireless networks. | |||
| 3. The Codecs Parameter | 3. The Codecs Parameter | |||
| This document adds a parameter to allow unambiguous specification of | This document adds a parameter to allow unambiguous specification of | |||
| all codecs indicated to render the content in the MIME part. This | all codecs indicated to render the content in the MIME part. This | |||
| parameter is optional in all current types to which it is added. | parameter is optional in all current types to which it is added. | |||
| Future types which contain ambiguity are strongly encouraged to | Future types which contain ambiguity are strongly encouraged to | |||
| include this parameter, as mandatory if possible, as optional | include this parameter. | |||
| otherwise. | ||||
| Media types: | Media types: | |||
| audio/3gpp, | audio/3gpp, | |||
| audio/3gpp2*, | audio/3gpp2*, | |||
| video/3gpp, | video/3gpp, | |||
| video/3gpp2*, | video/3gpp2*, | |||
| *registration pending | *registration pending | |||
| Parameter name: | Parameter name: | |||
| Codecs | Codecs | |||
| Parameter value: | Parameter value: | |||
| A single value, or a comma-separated list of values (which must | A single value, or a comma-separated list of values identifying | |||
| be enclosed in quotes to comply with [MIME-Format]) which | the codec(s) indicated to render the content in the body part. | |||
| identifies the codec(s) indicated to render the content in the | ||||
| body part. | ||||
| Each value consists of one or more dot-separated elements. The | Each value consists of one or more dot-separated elements. The | |||
| name space for the first element is determined by the MIME type. | name space for the first element is determined by the MIME type. | |||
| The name space for each subsequent element is determined by the | The name space for each subsequent element is determined by the | |||
| preceding element. | preceding element. | |||
| An element MAY includes characters that (per [MIME-Format]) must | Note that, per [MIME-Format], some characters (including the | |||
| be enclosed in quotes. In this case the entire value MUST be | comma used to separate multiple values) require that the entire | |||
| enclosed in quotes. | parameter value be enclosed in quotes. | |||
| An element MAY include a character that must be encoded in order | An element MAY include an octet that must be encoded in order to | |||
| to comply with [MIME-format] or with additional restrictions in | comply with [MIME-format]. In this case, [MIME-Coding] is used: | |||
| this document. In this case, the character is represented as a | an asterisk ("*") is placed at the end of the parameter name | |||
| percent-sign ("%") followed by two characters which express the | (becoming "codecs*" instead of "codecs"), the parameter value | |||
| character as two hexadecimal digits. Note that due to the use | starts with two single quote ("'") characters (indicating that | |||
| of the percent sign in this way, the percent sign itself must be | neither character set nor language are specified), and each | |||
| so encoded. (See the ABNF below.) | octet which requires encoding is represented as a percent-sign | |||
| ("%") followed by two hexadecimal digits. Note that, when the | ||||
| [MIME-Coding] form is used, the percent sign, asterisk, and | ||||
| single quote characters have special meaning and so must | ||||
| themselves be encoded. | ||||
| Gellens [Page 5] Expires August 2005 | Gellens, Singer, Frojdh [Page 5] Expires December 2005 | |||
| Examples of Generic Syntax: | Examples of Generic Syntax: | |||
| a.bb.ccc.d | codecs=a.bb.ccc.d | |||
| "a.bb, c.dd" | codecs="a.bb.ccc.d, e.fff" | |||
| fo%2e | codecs*=''fo%2e | |||
| "%25%20xz, gork" | codecs*="''%25%20xz, gork" | |||
| When the Codecs parameter is used, it MUST contain all codecs | When the Codecs parameter is used, it MUST contain all codecs | |||
| indicated by the content present in the body part. The Codecs | indicated by the content present in the body part. The Codecs | |||
| parameter MUST NOT include any codecs which are not indicated by any | parameter MUST NOT include any codecs which are not indicated by any | |||
| media elements in the body part. | media elements in the body part. | |||
| In some cases not all indicated codecs are absolutely required in | In some cases not all indicated codecs are absolutely required in | |||
| order to render the content. Therefore, when a receiver does not | order to render the content. Therefore, when a receiver does not | |||
| support all listed codecs, special handling MAY be required. For | support all listed codecs, special handling MAY be required. For | |||
| example, the media element(s) MAY need to be examined in order to | example, the media element(s) MAY need to be examined in order to | |||
| skipping to change at line 242 ¶ | skipping to change at line 243 ¶ | |||
| may be timed text that can be dropped, etc.) | may be timed text that can be dropped, etc.) | |||
| NOTE: Although the parameter value MUST be complete and accurate in | NOTE: Although the parameter value MUST be complete and accurate in | |||
| 'breadth' (that is, it MUST report all four-character codes used in | 'breadth' (that is, it MUST report all four-character codes used in | |||
| all tracks for ISO-family files, for example) systems MUST NOT rely | all tracks for ISO-family files, for example) systems MUST NOT rely | |||
| on it being complete in 'depth'. If the hierarchical rules for a | on it being complete in 'depth'. If the hierarchical rules for a | |||
| given code (e.g., 'qvxy') were written after a server was | given code (e.g., 'qvxy') were written after a server was | |||
| implemented, for example, that server will not know what elements to | implemented, for example, that server will not know what elements to | |||
| place after 'qvxy'. | place after 'qvxy'. | |||
| If a receiver encounters a body part whose Codecs parameter contains | ||||
| codecs which are not indicated by any media elements, then the | ||||
| receiver SHOULD process the body part by discarding the information | ||||
| in the Codecs parameter. | ||||
| If a receiver encounters a body part whose Codecs parameter does not | ||||
| contain all codecs indicated by the media elements, then the | ||||
| receiver MAY process the body part by discarding the information in | ||||
| the Codecs parameter. | ||||
| 3.1. Generic Syntax | 3.1. Generic Syntax | |||
| See [ABNF] Core Rules for ALPHA, DIGIT, HEXDIGIT, DQUOTE, SP | The Codecs parameter takes either of two forms. The first form is | |||
| used when the value does not contain any octets which require | ||||
| encoding. The second form uses [MIME-Coding] to allow arbitrary | ||||
| octets to be encoded. With either form, quotes allow for commas and | ||||
| other characters in <tspecials> (quotes MAY be used even when not | ||||
| required). | ||||
| codecs = "Codecs" *SP "=" *SP value | Gellens, Singer, Frojdh [Page 6] Expires December 2005 | |||
| This BNF uses the rules specified in [MIME-Format] and | ||||
| [MIME-Coding]. | ||||
| value = id / DQUOTE *SP id *(*SP "," SP id) *SP DQUOTE | codecs = cod-simple / cod-fancy | |||
| id = id-gen | cod-simple = "codecs" "=" unencodedv | |||
| id-gen = element *( "." element ) | unencodedv = id-simple / simp-list | |||
| element = 1*(idchar / idchar-spec) | simp-list = DQUOTE id-simple *( "," id-simple ) DQUOTE | |||
| idchar = "!" / "#" / "$" / "&" / | id-simple = element *( "." element ) | |||
| "'" / "*" / "+" / "-" / | ||||
| "^" / "_" / "`" / "/" / | ||||
| "(" / ")" / "<" / ">" / | ||||
| "@" / ";" / ":" / "\" / | ||||
| "{" / "}" / "~" / | ||||
| ALPHA / DIGIT | ||||
| Gellens [Page 6] Expires August 2005 | element = 1*octet-sim | |||
| ; non-ALPHA and non-DIGIT MUST be in quotes | ||||
| idchar-spec = "%" 2HEXDIG ; one character in hex | octet-sim = <any TOKEN character except "."> | |||
| ; token defined in [MIME-Format] | ||||
| cod-fancy = "codecs*" "=" encodedv | ||||
| encodedv = fancy-sing / fancy-list | ||||
| fancy-sing = "''" id-encoded | ||||
| fancy-list = DQUOTE "''" id-list DQUOTE | ||||
| id-list = id-encoded *( "," id-encoded ) | ||||
| id-encoded = encoded-elm *( "." encoded-elm ) | ||||
| encoded-elm = 1*octet-fancy | ||||
| octet-fancy = ext-octet / attribute-char | ||||
| ; ext-octet and attribute-char defined in [MIME-coding] | ||||
| DQUOTE = %x22 ; " (double quote) | ||||
| Initial name space: This document only defines values for files in | Initial name space: This document only defines values for files in | |||
| the ISO Base Media File Format family. Other file formats may also | the ISO Base Media File Format family. Other file formats may also | |||
| define codec naming. | define codec naming. | |||
| 3.2. ISO File Format Name Space | 3.2. ISO File Format Name Space | |||
| Gellens, Singer, Frojdh [Page 7] Expires December 2005 | ||||
| For the ISO Base Media File Format, the first element of a 'Codecs' | For the ISO Base Media File Format, the first element of a 'Codecs' | |||
| parameter value is a sample description entry four-character code as | parameter value is a sample description entry four-character code as | |||
| registered by the MP4 Registration Authority [MP4-Reg]. Values are | registered by the MP4 Registration Authority [MP4-Reg]. Values are | |||
| case-sensitive. | case-sensitive. | |||
| Note that there are potentially multiple tracks in a file, each | Note that there are potentially multiple tracks in a file, each | |||
| potentially carrying multiple sample entries (some but not all uses | potentially carrying multiple sample entries (some but not all uses | |||
| of the ISO File Format restrict the number of sample entries in a | of the ISO File Format restrict the number of sample entries in a | |||
| track to one). | track to one). | |||
| When the first element of a value is 'mp4a' (indicating some kind of | When the first element of a value is 'mp4a' (indicating some kind of | |||
| MPEG-4 audio) or 'mp4v' (indicating some kind of MPEG-4 part-2 | MPEG-4 audio) or 'mp4v' (indicating some kind of MPEG-4 part-2 | |||
| video), the second element is the hexadecimal representation of the | video), the second element is the hexadecimal representation of the | |||
| MP4 Registration Authority ObjectTypeIndication (OTI), as specified | MP4 Registration Authority ObjectTypeIndication (OTI), as specified | |||
| in [MP4-Reg] and [MP41] (including amendments). | in [MP4-Reg] and [MP41] (including amendments). Note that [MP4-Reg] | |||
| uses a leading "0x" with these values, which is omitted here and | ||||
| hence implied. | ||||
| One of the OTI values for 'mp4a' is 0x40 (identifying MPEG-4 audio). | One of the OTI values for 'mp4a' is 40 (identifying MPEG-4 audio). | |||
| For this value, the third element identifies the audio | For this value, the third element identifies the audio | |||
| ObjectTypeIndication (OTI) as defined in [MP4A] (including | ObjectTypeIndication (OTI) as defined in [MP4A] (including | |||
| amendments), expressed as a decimal number. | amendments), expressed as a decimal number. | |||
| For example, AAC low complexity has the value 2, so a complete | For example, AAC low complexity has the value 2, so a complete | |||
| string for AAC-LC would be 'mp4a.0x40.2'. | string for AAC-LC would be "mp4a.40.2". | |||
| One of the OTI values for 'mp4v' is 0x20 (identifying MPEG-4 part-2 | One of the OTI values for 'mp4v' is 20 (identifying MPEG-4 part-2 | |||
| video). For this value, the third element identifies the video | video). For this value, the third element identifies the video | |||
| ProfileLevelIndication as defined in [MP4V] (including amendments), | ProfileLevelIndication as defined in [MP4V] (including amendments), | |||
| expressed as a decimal number. | expressed as a decimal number. | |||
| For example, MPEG-4 Visual Simple Profile Level 0 has the value 9, | For example, MPEG-4 Visual Simple Profile Level 0 has the value 9, | |||
| so a complete string for MPEG-4 Visual Simple Profile Level 0 would | so a complete string for MPEG-4 Visual Simple Profile Level 0 would | |||
| be 'mp4v.0x20.9'. | be "mp4v.20.9". | |||
| Gellens [Page 7] Expires August 2005 | ||||
| 3.3. ISO Syntax | 3.3. ISO Syntax | |||
| id =/ id-iso | id-simple =/ id-iso | |||
| id-encoded =/ id-iso | ||||
| id-iso = iso-gen / iso-mpega / iso-mpegv | id-iso = iso-gen / iso-mpega / iso-mpegv | |||
| iso-gen = cpid *( "." element ) | iso-gen = cpid *( "." 1(element / encoded-elm ) ) | |||
| ; <element> used with <codecs-simple> | ||||
| ; <encoded> used with <codecs-fancy> | ||||
| iso-mpega = mp4a "." oti [ "." aud-oti ] | iso-mpega = mp4a "." oti [ "." aud-oti ] | |||
| Gellens, Singer, Frojdh [Page 8] Expires December 2005 | ||||
| iso-mpegv = mp4v "." oti [ "." vid-pli ] | iso-mpegv = mp4v "." oti [ "." vid-pli ] | |||
| cpid = 4(idchar / idchar-spec) | cpid = 4(octet-simple / octet-fancy) | |||
| ; <octet-simple> used with <codecs-simple> | ||||
| ; <octet-fancy> used with <codecs-fancy> | ||||
| mp4a = %x6d.70.34.61 ;; 'mp4a' | mp4a = %x6d.70.34.61 ; 'mp4a' | |||
| oti = "0x" 2HEXDIG | oti = 2(DIGIT / "A" / "B" / "C" / "D" / "E" / "F") | |||
| ; leading "0x" omitted | ||||
| aud-oti = 1*DIGIT | aud-oti = 1*DIGIT | |||
| mp4v = %x6d.70.34.76 ;; 'mp4v' | mp4v = %x6d.70.34.76 ; 'mp4v' | |||
| vid-pli = 1*DIGIT | vid-pli = 1*DIGIT | |||
| 4. Use in Additional Media Types | 4. Use in Additional Media Types | |||
| This parameter MAY be specified for use with additional MIME media | This parameter MAY be specified for use with additional MIME media | |||
| types. | types. | |||
| For ISO file formats where the name space as defined here is | For ISO file formats where the name space as defined here is | |||
| sufficient, all that needs to be done is to update the media type | sufficient, all that needs to be done is to update the media type | |||
| skipping to change at line 352 ¶ | skipping to change at line 393 ¶ | |||
| for the parameter to be optional; for new media types the parameter | for the parameter to be optional; for new media types the parameter | |||
| MAY be optional or required, as appropriate. | MAY be optional or required, as appropriate. | |||
| For ISO file formats where the name space as defined here needs to | For ISO file formats where the name space as defined here needs to | |||
| be expanded, a new document MAY update this one by specifying the | be expanded, a new document MAY update this one by specifying the | |||
| additional detail. | additional detail. | |||
| For non-ISO formats, a new document MAY update this one by | For non-ISO formats, a new document MAY update this one by | |||
| specifying the name space for the media type(s). | specifying the name space for the media type(s). | |||
| Gellens [Page 8] Expires August 2005 | ||||
| 5. Examples | 5. Examples | |||
| Content-Type: video/3GPP2; Codecs="sevc, s263" | Content-Type: video/3GPP2; Codecs="sevc,s263" | |||
| (EVRC audio plus H.263 video) | (EVRC audio plus H.263 video) | |||
| Content-Type: audio/3gpp; Codecs=samr | Content-Type: audio/3gpp; Codecs=samr | |||
| (AMR audio) | (AMR audio) | |||
| Gellens, Singer, Frojdh [Page 9] Expires December 2005 | ||||
| Content-Type: video/3gpp; Codecs="s263, samr" | Content-Type: video/3gpp; Codecs="s263, samr" | |||
| (H.263 video plus AMR audio) | (H.263 video plus AMR audio) | |||
| Content-Type: audio/3gpp2; Codecs=mp4a.0xE1 | Content-Type: audio/3gpp2; Codecs=mp4a.E1 | |||
| (13k audio) | (13k audio) | |||
| Content-Type: video/3gpp2; Codecs="mp4v.0x20, mp4a.0xE1" | Content-Type: video/3gpp2; Codecs="mp4v.20.9, mp4a.E1" | |||
| (Visual ISO/IEC 14496-2 [MP4V] plus 13K voice) | (MPEG-4 Visual Simple Profile Level 0 plus 13K voice) | |||
| Note: 0x20 OTI value says "Includes associated Amendment(s) and | Note: OTI value 20 ("0x20" in [MP4-Reg]) says "Includes | |||
| Corrigendum(a). The actual object types are defined in [MP4V] | associated Amendment(s) and Corrigendum(a). The actual object | |||
| and are conveyed in the DecoderSpecificInfo as specified in | types are defined in [MP4V] and are conveyed in the | |||
| [MP4V], Annex K. | DecoderSpecificInfo as specified in [MP4V], Annex K." | |||
| (references adjusted). | ||||
| 6. Additional Media Feature Details | 6. Additional Media Feature Details | |||
| For the same reasons that the Codecs parameter is useful, it is | It is sometimes helpful to provide additional details for a media | |||
| sometimes helpful to provide additional details for a media element | element (e.g., the number of X and Y pixels, the color depth, etc.). | |||
| (e.g., the number of X and Y pixels, the color depth, etc.). These | These details are sometimes called "media features" and sometimes | |||
| details are sometimes called "media features" and sometimes "media | "media characteristics". | |||
| characteristics". | ||||
| When such additional features are included, the [Content-Features] | When such additional features are included, the [Content-Features] | |||
| header provides a handy way to do so. | header provides a handy way to do so. | |||
| 7. IANA Considerations | 7. IANA Considerations | |||
| The IANA is kindly requested to add "Codecs" as an optional | The IANA is kindly requested to add "Codecs" as an optional | |||
| parameter to the media types listed in Section 3, with a reference | parameter to the media types listed in Section 3, with a reference | |||
| to this document | to this document | |||
| 8. Security Considerations | 8. Security Considerations | |||
| The codecs parameter itself does not alter the security | The codecs parameter itself does not alter the security | |||
| considerations of any of the media types for which it is available. | considerations of any of the media types for which it is available. | |||
| Each audio and video media type has its own set of security | Each audio and video media type has its own set of security | |||
| considerations which continue to apply, regardless of the use of the | considerations which continue to apply, regardless of the use of the | |||
| codecs parameter. | codecs parameter. | |||
| Gellens [Page 9] Expires August 2005 | ||||
| An incorrect codecs parameter might cause media content to be | An incorrect codecs parameter might cause media content to be | |||
| received by a device which is not capable of rendering it, or might | received by a device which is not capable of rendering it, or might | |||
| cause media content to not be sent to a device which is capable of | cause media content to not be sent to a device which is capable of | |||
| receiving it. An incorrect codecs parameter is therefore capable of | receiving it. An incorrect codecs parameter is therefore capable of | |||
| some types of denial of service attacks. However, this is most | some types of denial of service attacks. However, this is most | |||
| likely to arise by accident, as an attacker capable of altering | likely to arise by accident, as an attacker capable of altering | |||
| media data in transit could cause more harm by altering the media | media data in transit could cause more harm by altering the media | |||
| format itself, or even the content type header, rather than just the | format itself, or even the content type header, rather than just the | |||
| codecs parameter of the content type header. | codecs parameter of the content type header. | |||
| 9. Acknowledgements | Gellens, Singer, Frojdh [Page 10] Expires December 2005 | |||
| 9. Acknowledgments | ||||
| Harinath Garudadri provided a great deal of help, which is very much | Harinath Garudadri provided a great deal of help, which is very much | |||
| appreciated. | appreciated. Mary Barnes and Bruce Lilly provided detailed and | |||
| helpful comments. Reviews and comments by Sam Hartman, Russ | ||||
| Housley, and Bert Wijnen were much appreciated. | ||||
| 10. Normative References | 10. Normative References | |||
| [ABNF] Crocker, Overell, "Augmented BNF for Syntax Specifications: | ||||
| ABNF", RFC 2234, Internet Mail Consortium, Demon Internet Ltd., | ||||
| November 1997. | ||||
| [Content-Features] Kline, G., "Indicating Media Features for MIME | [Content-Features] Kline, G., "Indicating Media Features for MIME | |||
| Content", RFC 2912, September 2000. | Content", RFC 2912, September 2000. | |||
| [KEYWORDS] S. Bradner, "Key words for use in RFCs to Indicate | ||||
| Requirement Levels", March 1997, BCP 14, RFC 2119, | ||||
| <ftp://ftp.isi.edu/in-notes/rfc2119.txt> | ||||
| [MIME-Coding] Freed, N. and K. Moore, "MIME Parameter Value and | ||||
| Encoded Word Extensions: Character Sets, Languages, and | ||||
| Continuations", RFC 2231, November 1997. | ||||
| [MIME-Format] Freed, N. and N. Borenstein, "Multipurpose Internet | [MIME-Format] Freed, N. and N. Borenstein, "Multipurpose Internet | |||
| Mail Extensions (MIME) Part One: Format of Internet Message | Mail Extensions (MIME) Part One: Format of Internet Message | |||
| Bodies", RFC 2045, November 2996. | Bodies", RFC 2045, November 2996. | |||
| [MIME-Types] Freed, N. and N. Borenstein, "Multipurpose Internet | [MIME-Types] Freed, N. and N. Borenstein, "Multipurpose Internet | |||
| Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November | Mail Extensions (MIME) Part Two: Media Types", RFC 2046, November | |||
| 1996. | 1996. | |||
| [Media-Features] Holtman, K., A. Mutz and T. Hardie, "Media Feature | [Media-Features] Holtman, K., A. Mutz and T. Hardie, "Media Feature | |||
| Tag Registration Procedure", RFC 2506, BCP 31, March 1999. | Tag Registration Procedure", RFC 2506, BCP 31, March 1999. | |||
| [MP4-reg] MP4REG, The MPEG-4 Registration Authority, | [MP4-reg] MP4REG, The MPEG-4 Registration Authority, | |||
| <url://www.mp4ra.org> | <url://www.mp4ra.org> | |||
| 11. Informative References | 11. Informative References | |||
| Gellens [Page 10] Expires August 2005 | ||||
| [13k] Gellens, R and H. Garudadri, "The QCP File Format and Media | [13k] Gellens, R and H. Garudadri, "The QCP File Format and Media | |||
| Types for Speech Data", RFC 3625, September 2003. | Types for Speech Data", RFC 3625, September 2003. | |||
| [AMR] Sjoberg, J., M. Westerlund, A. Lakaniemi, Q. Xie, "Real-Time | Gellens, Singer, Frojdh [Page 11] Expires December 2005 | |||
| Transport Protocol (RTP) Payload Format and File Storage Format for | ||||
| the Adaptive Multi-Rate (AMR) and Adaptive Multi-Rate Wideband | ||||
| (AMR-WB) Audio Codecs", RFC 3267, June 2002. | ||||
| [3GPP-Codecs] TS 26.234, Third Generation Partnership Project | ||||
| (3GPP), "Transparent End-to-End Packet-Switched Streaming Service | ||||
| (PSS); 3GPP file format (3GP)", URL: | ||||
| <http://www.3gpp.org/ftp/Specs/html-info/26234.htm> | ||||
| [3GPP-Formats] TS 26.244, Third Generation Partnership Project | [3GPP-Formats] TS 26.244, Third Generation Partnership Project | |||
| (3GPP), "Transparent End-to-End Packet Switched Streaming Service; | (3GPP), "Transparent End-to-End Packet Switched Streaming Service; | |||
| 3GPP file format (3GP)", URL: | 3GPP file format (3GP)", URL: | |||
| <http://www.3gpp.org/ftp/Specs/html-info/26244.htm> | <http://www.3gpp.org/ftp/Specs/html-info/26244.htm> | |||
| [3GPP2-Formats] Third Generation Partnership Project 2, "3GPP2 File | [3GPP2-Formats] Third Generation Partnership Project 2, "3GPP2 File | |||
| Formats for Multimedia Service", URL: | Formats for Multimedia Service", URL: | |||
| <http://www.3gpp2.org/Public_html/specs/C.S0050-0_v1.0_121503.pdf> | <http://www.3gpp2.org/Public_html/specs/C.S0050-0_v1.0_121503.pdf> | |||
| skipping to change at line 487 ¶ | skipping to change at line 525 ¶ | |||
| randy@qualcomm.com | randy@qualcomm.com | |||
| David Singer | David Singer | |||
| Apple Computer, Inc. | Apple Computer, Inc. | |||
| One Infinite Loop, MS:302-3MT | One Infinite Loop, MS:302-3MT | |||
| Cupertino CA 95014 | Cupertino CA 95014 | |||
| USA | USA | |||
| singer@apple.com | singer@apple.com | |||
| +1 408 974 3162 | +1 408 974 3162 | |||
| Gellens [Page 11] Expires August 2005 | ||||
| Per Frojdh | Per Frojdh | |||
| Ericsson Research | Ericsson Research | |||
| Multimedia Technologies | Multimedia Technologies | |||
| SE-164 80 Stockholm, SWEDEN | SE-164 80 Stockholm, SWEDEN | |||
| +46 8 7190000 | +46 8 7190000 | |||
| Per.Frojdh@ericsson.com | Per.Frojdh@ericsson.com | |||
| Gellens, Singer, Frojdh [Page 12] Expires December 2005 | ||||
| Intellectual Property Statement | Intellectual Property Statement | |||
| The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
| intellectual property or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed | |||
| pertain to the implementation or use of the technology described in | to pertain to the implementation or use of the technology described | |||
| this document or the extent to which any license under such rights | in this document or the extent to which any license under such | |||
| might or might not be available; neither does it represent that it | rights might or might not be available; nor does it represent that | |||
| has made any effort to identify any such rights. Information on the | it has made any independent effort to identify any such rights. | |||
| IETF's procedures with respect to rights in standards-track and | Information on the procedures with respect to rights in RFC | |||
| standards-related documentation can be found in BCP-11. Copies of | documents can be found in BCP 78 and BCP 79. | |||
| claims of rights made available for publication and any assurances | ||||
| of licenses to be made available, or the result of an attempt made | Copies of IPR disclosures made to the IETF Secretariat and any | |||
| to obtain a general license or permission for the use of such | assurances of licenses to be made available, or the result of an | |||
| proprietary rights by implementors or users of this specification | attempt made to obtain a general license or permission for the use | |||
| can be obtained from the IETF Secretariat. | of such proprietary rights by implementers or users of this | |||
| specification can be obtained from the IETF on-line IPR repository | ||||
| at http://www.ietf.org/ipr. | ||||
| The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
| copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
| rights which may cover technology that may be required to practice | rights that may cover technology that may be required to implement | |||
| this standard. Please address the information to the IETF Executive | this standard. Please address the information to the IETF at | |||
| Director. | ietf-ipr@ietf.org. | |||
| Full Copyright Statement | Full Copyright Statement | |||
| Copyright (C) The Internet Society (2005). | Copyright (C) The Internet Society (2005). | |||
| This document is subject to the rights, licenses and restrictions | This document is subject to the rights, licenses and restrictions | |||
| contained in BCP 78, and except as set forth therein, the authors | contained in BCP 78, and except as set forth therein, the authors | |||
| retain all their rights. | retain all their rights. | |||
| Disclaimer | ||||
| Gellens [Page 12] Expires August 2005 | ||||
| This document and the information contained herein are provided on | This document and the information contained herein are provided on | |||
| an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE | an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE | |||
| REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE | REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE | |||
| INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR | INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR | |||
| IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | |||
| THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | |||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | |||
| Gellens [Page 13] Expires August 2005 | Gellens, Singer, Frojdh [Page 13] Expires December 2005 | |||
| End of changes. 67 change blocks. | ||||
| 132 lines changed or deleted | 169 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||