Internet Draft: The Audio/QCP Media Type and File Format H. Garudadri Document: draft-garudadri-qcp-00.txt R. Gellens Expires: August 2003 Qualcomm 23 February 2003 The Audio/QCP Media Type and File Format Status of this Memo This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. 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 The list of Internet-Draft Shadow Directories can be accessed at . Copyright Notice Copyright (C) The Internet Society (2003). All Rights Reserved. Abstract RFC 2658 specifies the streaming format for QCELP 13K vocoder, but did not specify the storage format for QCELP 13K vocoder. Many implementations have been using the qcp file format for exchanging QCELP 13K data and EVRC data. (For example, Eudora, QuickTime and CDMA 2000 handsets). This document specifies the qcp fileformat and registers the audio/qcp MIME media type. This format has parameters to support QCELP 13K and EVRC data. Note that this is different from the EVRC storage format specified in draft-ietf-avt-evrc-smv-03.txt (for EVRC and SMV vocoders). Garudadri [Page 1] Expires August 2003 Internet Draft The Audio/QCP Media Type and File Format February 2003 1. Conventions Used in this Document . . . . . . . . . . . . . . 2 2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 3. QCP FILE FORMAT . . . . . . . . . . . . . . . . . . . . . . . 2 3.1. RIFF subchunks . . . . . . . . . . . . . . . . . . . . . 2 3.2. General view of qcp subchunks . . . . . . . . . . . . . . 3 3.3. Detailed view of qcp subchunks . . . . . . . . . . . . . 4 3.4. Optional Chunks . . . . . . . . . . . . . . . . . . . . . 6 4. READING A QCP FILE . . . . . . . . . . . . . . . . . . . . . 7 5. WRITING A QCP FILE . . . . . . . . . . . . . . . . . . . . . 8 6. Registration of Media Type Audio/qcp . . . . . . . . . . . . 8 7. Security Considerations . . . . . . . . . . . . . . . . . . . 9 8. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . 9 9. Normative References . . . . . . . . . . . . . . . . . . . . 10 10. Authors Address . . . . . . . . . . . . . . . . . . . . . 10 Intellectual Property Statement . . . . . . . . . . . . . . . . 10 Full Copyright Statement . . . . . . . . . . . . . . . . . . . 11 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 This document specifies a format for storage of [QCELP] 13K and [EVRC] vocoder packets in files which may residing on network elements (e.g., media servers, Mulimedia Messaging System (MMS) centers, etc.) and third-generation (3G) handsets or be transmitted via email or other mechanisms. The vocoder packets read from a file may be streamed using [QCELP] or delivered to an [EVRC] or [QCELP] 13K decoder. 3. QCP FILE FORMAT The QCP file format uses the RIFF (Resource Interchange File Format) specification. It contains: o RIFF chunk with the identifying code QLCM o Chunks within the RIFF chunk: o Three required chunks fmt, vrat, and data o Four optional chunks labl, offs, cnfg, and text The RIFF (Resource Interchange File Format) specification is published in [TBD]. Garudadri [Page 2] Expires August 2003 Internet Draft The Audio/QCP Media Type and File Format February 2003 3.1. RIFF subchunks In this section, various RIFF subchunks are described. fmt: This subchunk is of type "Format". It defines which speech codec is being used. Both QCELP 13K and EVRC are supported. This is a required chunk. vrat: This subchunk is of type "variable-rate". It is used to determine whether the data chunk is comprised of variable-rate or fixed-rate packets, and to determine the size of the data chunk in numbers of packets. This information can be used to determine the length of the data chunk in seconds without reading the whole file in the case of variable-rate packets. This is a required chunk. data: This subchunk contains the packetized speech data, generatd by the speech codec. This is a required chunk. Note: The size of the data chunk MUST be word (16-bits) aligned. If the data chunk happens to be of an odd size, then a zero pad byte MUST be added at the end to make it word aligned. labl: This subchunk is of type "Label". It is used for generic storage for applications use. This is an optional chunk. Offs: This subchunk contains byte offsets into data chunk in (t * 100 ms) increments. This is useful for fast-forward and rewind features for files containing variable rate packets. This is an optional chunk. cnfg: This is of type "File configuration". It contains configuration information about the file that an application may need to know. This is an optional chunk. text: This subchunk is used to for any generic storage for applications use. This is an optional chunk. All data is in little-endian format, and all structs are padding neutral, that is, they have no padding. The chunks are word (16 bits) aligned. 3.2. General view of qcp subchunks RIFF( 'QLCM' // required [] // required [