Internet Draft                                               R. Gellens
Document: draft-gellens-mime-bucket-01.txt                     Qualcomm
Expires: April 2005                                        October 2004


             The Codecs Parameter for "Bucket" Media Types

Status of this Memo

    By submitting this Internet-Draft, I certify that any applicable
    patent or other IPR claims of which I am aware have been disclosed
    and any of which I become aware will be disclosed, in accordance
    with RFC 3668 (BCP 79).

    By submitting this Internet-Draft, I accept the provisions of
    Section 3 of RFC 3667 (BCP 78).

    Internet-Drafts are working documents of the Internet Engineering
    Task Force (IETF), its areas, and its working groups.  Note that
    other groups may also distribute working documents as Internet-
    Drafts.

    Internet-Drafts are draft documents valid for a maximum of six
    months and may be updated, replaced, or obsoleted by other documents
    at any time.  It is inappropriate to use Internet-Drafts as
    reference material or to cite them other than as "work in progress."

    The list of current Internet-Drafts can be accessed at
    http://www.ietf.org/ietf/1id-abstracts.txt The list of
    Internet-Draft Shadow Directories can be accessed at
    http://www.ietf.org/shadow.html.


Copyright Notice

    Copyright (C) The Internet Society (2004).  All Rights Reserved.


Abstract

    Several MIME type/subtype combinations exist which 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.




Gellens                   [Page 1]                   Expires April 2005

Internet Draft             The Codecs Parameter             October 2004


    This document adds a new parameter, "codecs", to various
    type/subtype combinations to allow for unambiguous specification of
    the codecs required to support the media formats contained within.

    By labelling content with the specific codecs required 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, etc.)









































Gellens                   [Page 2]                   Expires April 2005

Internet Draft             The Codecs Parameter             October 2004


Table of Contents

     1.  Conventions Used in this Document  . . . . . . . . . . . . .  3
     2.  Introduction  . . . . . . . . . . . . . . . . . . . . . . .   3
     3.  The Codecs Parameter . . . . . . . . . . . . . . . . . . . .  5
     4.  Examples  . . . . . . . . . . . . . . . . . . . . . . . . .   7
     5.  Additional Media Feature Details . . . . . . . . . . . . . .  7
     6.  IANA Considerations . . . . . . . . . . . . . . . . . . . .   7
     7.  Security Considerations  . . . . . . . . . . . . . . . . . .  7
     8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . .   8
     9.  Normative References . . . . . . . . . . . . . . . . . . . .  8
    10.  Informative References  . . . . . . . . . . . . . . . . . .   9
    11.  Author's Address . . . . . . . . . . . . . . . . . . . . . .  9
       Intellectual Property Statement . . . . . . . . . . . . . . .   9
       Full Copyright Statement . . . . . . . . . . . . . . . . . . . 10
       Disclaimer  . . . . . . . . . . . . . . . . . . . . . . . . .  10


1.  Conventions Used in this Document

    The key words "REQUIRED", "MUST", "MUST NOT", "SHOULD", "SHOULD
    NOT", and "MAY" in this document are to be interpreted as described
    in "Key words for use in RFCs to Indicate Requirement Levels"
    [KEYWORDS].


2.  Introduction

    One of the original motivations for MIME is the ability to identify
    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
    subtype to know which specific media formats are contained in the
    body part, or which codecs are required in order to display the
    content.

    There are several media type/subtypes (either currently registered
    or deployed with registration pending) which may contain codecs
    chosen from a set.  It is currently necessary to examine each media
    element in order to determine the codecs required to render the
    content.  For example, video/3gpp may contain any of the video
    formats H.263, H.263+, H.264, MPEG-4 SPL0, and/or any of the audio
    formats AMR, AMR-WB, or AAC, as specified in [3GPP-Formats].









Gellens                   [Page 3]                   Expires April 2005

Internet Draft             The Codecs Parameter             October 2004


    In some cases, the specific codecs can be determined by examining
    the header information of the media content.  While this isn't as
    bad as examining the entire content, it still requires specialized
    knowledge of each format and is resource consumptive.

    This ambiguity can be a problem for various clients and servers.  It
    presents a significant burden to Multimedia Messaging (MMS) servers,
    which must examine the media sent in each message in order to
    determine which codecs are required to render the content.  Only
    then can it determine if the content requires transcoding or
    specialized handling prior to being transmitted to the handset.

    Additionally, it presents a challenge to smart clients on devices
    with constrained memory, processing power, or transmission bandwidth
    (such as cellular telephones and PDAs).  Such clients often need to
    determine in advance if they are currently capable of rendering the
    content contained in an MMS or email message.

    Specifically,

    o    audio/3gpp can contain AMR or AAC contents as specified in
    [3GPP-Formats].
    o   audio/3gpp2 can contain AMR, AAC, 13K (as per [13k]), EVRC, or
        SMV, as specified in [3GPP2-Formats] (video/3gpp2 MIME
        registration pending).
    o   video/3gpp can contain H.263, H.263+, H.264, MPEG-4 SPL0, and/or
        AMR, AMR-WB, or AAC, as specified in [3GPP-Formats].
    o   video/3gpp2 can contain H.263, H.263+, H.264, MPEG-4 SPL0,
        and/or AMR, AAC, 13K (as per [13k]), EVRC, or SMV, as specified
        in [3GPP2-Formats] (video/3gpp2 MIME registration pending).

    Note that there are additional media types which are ambiguous, but
    are outside the scope of this document, including:
    o   video/mp4V-ES and video/mpeg4-generic which can contain anything
        allowed by the MPEG-4 specification, or any audio codec
        registered with the MP4 registration authority [MP4-Reg].
    o   video/quicktime which can contain anything for which there is a
        QuickTime codec component; since QuickTime is extensible, this
        is not limited to the codecs that are or have been shipped by
        Apple Computer.

    With each "bucket" type, a receiving agent only knows that it has a
    container format.  It doesn't even know whether content labelled
    video/3GPP or video/3GPP2 contains video; it might be audio only,
    audio and video, or video only.






Gellens                   [Page 4]                   Expires April 2005

Internet Draft             The Codecs Parameter             October 2004


    A solution which permits a receiving agent to determine the specific
    codecs required to render media content would help provide efficient
    and scalable servers, especially for Multimedia Messaging (MMS), and
    aid the growth of multimedia services in wireless networks.


3.  The Codecs Parameter

    This document adds a parameter to allow unambiguous specification of
    the codecs required to render the content in a media element.  This
    parameter is optional in all current types to which it is added.
    Future types which contain ambiguity are strongly encouraged to
    include this parameter, as mandatory if possible, as optional
    otherwise.

    Media types:
        audio/3gpp,
        audio/3gpp2*,
        video/3gpp,
        video/3gpp2*,

        *registration pending

    Parameter name:
        Codecs

    Parameter value:
        A single value, or a comma-separated list of values (which must
        be enclosed in quotes to comply with MIME rules) which
        identifies the codec(s) required to render the content in the
        body part.

        Each value consists of one or more dot-separated elements.  The
        name space for the first element is determined by the MIME type.
        The name space for each subsequent element is determined by the
        preceding element.

        Examples of Generic Syntax:
            a.bb.c.d
            "a.bb, c.dd"

        Initial name space:  This document only defines values for files
        in the ISO File Format family.  Other file formats may also
        define codec naming.







Gellens                   [Page 5]                   Expires April 2005

Internet Draft             The Codecs Parameter             October 2004


        For the ISO File format, the first element is a sample
        description entry four-character code as registered by the MP4
        Registration Authority [MP4-Reg].  The values are
        case-sensitive.  For the name 'mp4a', indicating some kind of
        MPEG-4 audio, the second element is the hexadecimal
        representation of the MP4 Registration Authority
        ObjectTypeIndication (OTI) [MP4-Reg] (e.g., the element "0x20").


    Syntax:

    codecs      = "Codecs" *SP "=" *SP value

    value       = id / DQUOTE *SP id *(*SP "," *SP id) *SP DQUOTE

    id          = id-ISO / id-gen

    id-gen      = element *( "." element )

    id-ISO      = cpid [ "." oti ]

    cpid        = 4 (idchar / idchar-spec)

    oti         = "0x" 2HEXDIG

    element     = 1*(idchar / idchar-spec)

    idchar      = <any (US-ASCII) CHAR except SPACE, CTLs,
                  "$", or tspecials>

    idchar-spec = "$" 2DIGIT

    tspecials   =  "(" / ")" / "<" / ">" / "@" /
                   "," / ";" / ":" / "\" / <">
                   "/" / "[" / "]" / "?" / "="

    Note that in some cases, the four-character ID registered in
    [MP4-Reg] may still be ambiguous, even when using the OTI.  For
    example, all mpeg-4 audio codecs are under 'mp4a', including HVXC,
    CELP, GA (which can be AAC, twinVQ, or BSAC), SA, TTSI, HILN (see
    MP4A).  However, since audio/3gpp2, video/3gpp2, audio/3gpp, and
    video/3gpp restrict the allowable ISO code points, there is no
    ambiguity in these four cases.








Gellens                   [Page 6]                   Expires April 2005

Internet Draft             The Codecs Parameter             October 2004


    When the Codecs parameter is used, it MUST contain all codecs
    required to render all content present in the body part.  The Codecs
    parameter MUST NOT contain any codecs which are not present in the
    body part.


4.  Examples

    Content-Type:  Video/3GPP2; Codecs="sevc, s263"
        (EVRC audio plus H.263 video)
    Content-Type:  Audio/3gp; Codecs=samr
        (AMR audio)
    Content-Type: video/3gpp; Codecs="s263, samr"
        (H.263 video plus AMR audio)
    Content-Type: audio/3gpp2; Codecs=mp4a.0xE1
        (13k audio)
    Content-Type: video/3gpp2; Codecs="mp4v.0x20, mp4a.0xE1"
        (Visual ISO/IEC 14496-2 [MP4V] plus 13K voice)

        Note: 0x20 OTI value says "Includes associated Amendment(s) and
        Corrigendum(a).  The actual object types are defined in ISO/IEC
        14496-2 and are conveyed in the DecoderSpecificInfo as specified
        in ISO/IEC 14496-2, Annex K."


    5.  Additional Media Feature Details

        For the same reasons that the Codecs parameter is useful, it is
        sometimes helpful to provide additional details for a media
        element (e.g., the number of X and Y pixels, the color depth,
        etc.).  These details are sometimes called "media features" and
        sometimes "media characteristics".

        When such additional features are included, the
        [Content-Features] header provides a handy way to do so.


    6.  IANA Considerations

        The hard-working IANA staff is kindly requested to add "Codecs"
        as an optional parameter to the media types listed in Section
        3, with a reference to this document









Gellens                   [Page 7]                   Expires April 2005

Internet Draft             The Codecs Parameter             October 2004


    7.  Security Considerations

        The codecs parameter itself does not alter the security
        considerations of any of the media types for which it is
        available.  Each audio and video media type has its own set of
        security considerations which continue to apply, regardless of
        the use of the codecs parameter.

        An incorrect codecs parameter might cause media content to be
        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 receiving it.  An incorrect codecs parameter is
        therefore capable of some types of denial of service attacks.
        However, this is most likely to arise by accident, as an
        attacker capable of altering media data in transit could cause
        more harm by altering the media format itself, or even the
        content type header, rather than just the codecs parameter of
        the content type header.


    8.  Acknowledgements

        David Singer and Harinath Garudadri provided significant help,
        which is very much appreciated.


    9.  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", RFC 2912, September 2000.

        [MIME-Types] Freed, N. and N. Borenstein, "Multipurpose Internet
        Mail Extensions (MIME) Part Two:  Media Types", RFC 2046,
        November 1996.

        [Media-Features] Holtman, K., A. Mutz and T. Hardie, "Media
        Feature Tag Registration Procedure", RFC 2506, BCP 31, March
        1999.









Gellens                   [Page 8]                   Expires April 2005

Internet Draft             The Codecs Parameter             October 2004


        [MP4-reg] MP4REG, The MPEG-4 Registration Authority,
        <url://www.mp4ra.org>


    10.  Informative References

        [13k] Gellens, R and H. Garudadri, "The QCP File Format and
        Media Types for Speech Data", RFC 3625, September 2003.

        [AMR] Sjoberg, J., M. Westerlund, A. Lakaniemi, Q. Xie,
        "Real-Time 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 streaming service; Protocols and
        codecs", URL:
        <http://www.3gpp.org/ftp/Specs/html-info/26234.htm>

        [3GPP-Formats] TS 26.244, Third Generation Partnership Project
        (3GPP), "Transparent end-to-end streaming service; 3GPP file
        format (3GP)", URL:
        <http://www.3gpp.org/ftp/Specs/html-info/26244.htm>

        [3GPP2-Formats] Third Generation Partnership Project 2, "3GPP2
        File Formats for Multimedia Service", URL:
        <http://www.3gpp2.org/Public_html/specs/C.S0050-0_v1.0_121503.pdf>

        [MP4A] ISO/IEC 14496-3:2001, "Information Technology--Coding of
        Audio/Visual Object--Part 3:  Audio".

        [MP4V] ISO/IEC 14496-2:2001, "Information Technology--Coding of
        Audio/Visual Object--Part 2:  Video".


    11.  Author's Address

    Randall Gellens
    QUALCOMM Incorporated
    5775 Morehouse Drive
    San Diego, CA  92121
    USA
    randy@qualcomm.com








Gellens                   [Page 9]                   Expires April 2005

Internet Draft             The Codecs Parameter             October 2004


    Intellectual Property Statement

        The IETF takes no position regarding the validity or scope of
        any intellectual property or other rights that might be claimed
        to pertain to the implementation or use of the technology
        described in this document or the extent to which any license
        under such rights might or might not be available; neither does
        it represent that it has made any effort to identify any such
        rights.  Information on the IETF's procedures with respect to
        rights in standards-track and standards-related documentation
        can be found in BCP-11.  Copies of claims of rights made
        available for publication and any assurances of licenses to be
        made available, or the result of an attempt made to obtain a
        general license or permission for the use of such proprietary
        rights by implementors or users of this specification can be
        obtained from the IETF Secretariat.

        The IETF invites any interested party to bring to its attention
        any copyrights, patents or patent applications, or other
        proprietary rights which may cover technology that may be
        required to practice this standard.  Please address the
        information to the IETF Executive Director.


    Full Copyright Statement

        Copyright (C) The Internet Society (2004).

        This document is subject to the rights, licenses and
        restrictions contained in BCP 78, and except as set forth
        therein, the authors retain all their rights.


    Disclaimer

        This document and the information contained herein are provided
        on an "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE
        REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND
        THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES,
        EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY
        THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY
        RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS
        FOR A PARTICULAR PURPOSE.








Gellens                   [Page 10]                   Expires April 2005