Internet DRAFT - draft-atarius-cmf

draft-atarius-cmf




Internet Draft: Compact Media Format                 R. Atarius, Editor
Document: draft-atarius-cmf-00.txt                             Qualcomm
Expires: January 2005                                         July 2004
    
          The Compact Media Format (CMF) Presentation (Syntax)
    
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
    This document specifies a binary format container for multimedia
    elements with embedded time synchronization information.  This
    syntax is called Compact Media Format (CMF) and can be employed to
    create a multimedia presentation with sound, music, picture,
    animation, etc. in messaging and other applications.
    
    CMF is optimized for small size and efficient use in 3G wireless
    networks and is currently deployed in cdma2000(r) networks.
    







Atarius, Editor              Expires January 2005              [Page 1]

Internet Draft           Compact Media Format (CMF)           July 2004


    CMF media may be received, generated, or stored by
    Internet-connected devices such as cellphones, laptops, PDAs,
    desktops, servers, etc. for various applications.
    
    Typical applications of CMF include
    
* Audio postcard messages with speech and images
* Animated cartoons with MIDI, text and speech
* Advertisements with graphics, text and audio
* Karaoke with graphics
* Multimedia ringers with graphics, text, MIDI and speech 
    
     1.  Conventions Used in this Document  . . . . . . . . . . . . .  2
     2  Introduction . . . . . . . . . . . . . . . . . . . . . . . .   3
     3  Description of CMF Content  . . . . . . . . . . . . . . . . .  3
     4  Formal Syntax of CMF Content . . . . . . . . . . . . . . . .   4
     5  Tables  . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
       5.1  TimeBase . . . . . . . . . . . . . . . . . . . . . . . .  22
       5.2  Pitch Bend  . . . . . . . . . . . . . . . . . . . . . . . 22
       5.3  Fine Pitch Bend  . . . . . . . . . . . . . . . . . . . .  23
     6  CMF Profiles  . . . . . . . . . . . . . . . . . . . . . . . . 24
       6.1  Talking Picture Messaging  . . . . . . . . . . . . . . .  24
       6.2  Audio-only Profile  . . . . . . . . . . . . . . . . . . . 24
       6.3  Picture Ringers  . . . . . . . . . . . . . . . . . . . .  24
     7  CMF Conformance Requirements  . . . . . . . . . . . . . . . . 24
       7.1  Subchunk Requirements  . . . . . . . . . . . . . . . . .  24
       7.2  MIDI Requirements . . . . . . . . . . . . . . . . . . . . 25
       7.3  Wave Packet Requirements . . . . . . . . . . . . . . . .  25
       7.4  Cue- and Jump-points  . . . . . . . . . . . . . . . . . . 25
         7.4.1  Cuepoints  . . . . . . . . . . . . . . . . . . . . .  25
         7.4.2  Jump Points . . . . . . . . . . . . . . . . . . . . . 26
       7.5  Recycle Requirements . . . . . . . . . . . . . . . . . .  26
         7.5.1  Store Command . . . . . . . . . . . . . . . . . . . . 26
         7.5.2  Set Command  . . . . . . . . . . . . . . . . . . . .  26
         7.5.3  Recycle Command . . . . . . . . . . . . . . . . . . . 26
       7.6  Requirements for Default Values  . . . . . . . . . . . .  26
        . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
     8.  IANA Considerations . . . . . . . . . . . . . . . . . . . .  27
       8.1.  Registration of application/cmf  . . . . . . . . . . . . 28
     9.  Security Considerations . . . . . . . . . . . . . . . . . .  28
    10.  Normative References . . . . . . . . . . . . . . . . . . . . 29
    11  Informative References . . . . . . . . . . . . . . . . . . .  29
    12.  Acknowledgments  . . . . . . . . . . . . . . . . . . . . . . 29
    13  Editor's Address . . . . . . . . . . . . . . . . . . . . . .  30
       Intellectual Property Statement  . . . . . . . . . . . . . . . 30
       Intellectual Property Statement . . . . . . . . . . . . . . .  31
       Full Copyright Statement . . . . . . . . . . . . . . . . . . . 31
       Disclaimer  . . . . . . . . . . . . . . . . . . . . . . . . .  -1
    


Atarius, Editor              Expires January 2005              [Page 2]

Internet Draft           Compact Media Format (CMF)           July 2004


    1.  Conventions Used in this 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 "Keywords for use in
    RFCs to Indicate Requirement Levels" [KEYWORDS].
    
    2 Introduction
    
    
    This document specifies the Compact Media Format (CMF).
    
    CMF is a media format combining voice, music, text, pictures slide
    shows, and animation.
    
    CMF files consist of header information and track chunks.  The
    header contains metadata such as title, author, and copyright as
    well as global parameters used to interpret the track chunks.  Each
    track chunk contains a particular media element along with its
    timing information.
    
    CMF uses the application/cmf media type and the .cmf file extension
    as specified in section 8.
    
    
    3 Description of CMF Content
    
    A CMF file is composed of file ID, file length, header information,
    and one or more track chunks which contain the media content.
    
    The file ID and length identify the CMF file and its length.
    
    The header sets up necessary global parameters for interpreting the
    content track chunks.  It contains the number of tracks, content
    type, and detailed information for each track chunk.  Content type
    shows whether the media is text, melody, picture, animations,
    vibration, or LED.  Content type also specifies the format of the
    media such as character set in case of text and so on.
    
    In addition, the CMF header contains metadata such as title,
    copyright, date, source, etc.
    
    The track chunks contain events which specify the media elements and
    how they should be temporally synchronized in relation to each
    other.  The events also contain information on how the media should
    be played back.  For instance, how a picture, text, or animation
    should be positioned on the display, and how a melody should be
    played.
    


Atarius, Editor              Expires January 2005              [Page 3]

Internet Draft           Compact Media Format (CMF)           July 2004


    Normally, MIDI is divided apart such that MIDI Channels 1-4 are
    described in track chunk 1, MIDI Channels 5-8 are described in track
    chunk 2, MIDI Channels 9-12 are described in track chunk 3, and MIDI
    Channels 13-16 are described in track chunk 4.  Any MIDI event that
    is not channel specific (e.g., master-volume, master-tune) MUST be
    in the first track.  Any MIDI event that is channel specific (e.g.,
    bank-change, program-change) MUST be located in the same track as
    the other events of the same channel.  All non-MIDI events MUST be
    in track 1 except for NOP and end-of-track which can occur in all
    tracks.
    
    4 Formal Syntax of CMF Content
    
    This section describes CMF using [ABNF].
    
    
CMF-file            = cmid file-length CMF-header track-chunk

file-length         = 4OCTET

OCTET               = %x00-FF

cmid		    = %x63 %x6d %x69 %x64

CMF-header          = header-length content-type nTracks *sub-chunk

header-length       = 2OCTET

content-type        = (melody (complete / part) )
                      / (song instruments)

melody              = %x01
		      ; used for ringers

complete            = %x01
                      ; all of the melody

part                = %x02
                      ; part of the melody

song                = %x02
                      ; used for pictures + audio

instruments         = OCTET
                      ; bit field
 	              ; The octet contains bits set with meanings 
		      ; as follows 
                      ; %x01: contains musical event
                      ; %x02: contains wave data


Atarius, Editor              Expires January 2005              [Page 4]

Internet Draft           Compact Media Format (CMF)           July 2004


                      ; %x04: contains text data
                      ; %x08: contains picture data
                      ; %x10: contains female vocal parts
                      ; %x20: contains male vocal parts
                      ; %x40: contains other vocal parts
		      ; %x80: Reserved (SHOULD not be set; SHOULD
                      ;       be ignored if encountered. 
                   
nTracks             = %x01-04 
                      ; number of track chunks. Note that all non-MIDI 
		      ; content (e.g., PNG, animation) must be in track
                      ; chunk 1. Four MIDI channels can go in each track chunk,
                      ; so MIDI channels 1-4 are in track chunk 1, MIDI 
                      ; channels 5-8 are in track chunk 2, etc.
                
sub-chunk           = 1*(required-chunk / optional-chunk / expansion-chunk)

                      ; if more than one sub-chunk of the same type is 
                      ; present, the player MUST ignore all except the last
                      ; such sub-chunk. The player MUST ignore unrecognized
                      ; sub-chunks (expansion-chunk). expansion-chunk MUST 
                      ; NOT be created. Sub-chunks MAY appear in any order.
                      ; All required sub-chunks MUST be present
                      ; (required-chunk).

required-chunk      = vers-chunk 
		      / note-chunk
                      / cnts-chunk
                      ; exactly one of each of these required sub-chunks MUST
                      ; be present.

expansion-chunk     = exp-id length2 exp-data
                      ; for compatibility with future versions of the 
                      ; specification.

exp-id              = 4OCTET
                      ; MUST NOT be an existing sub-chunk.

exp-data            = *OCTET
                      ; number of octets specified in length2 field of 
                      ; expansion-chunk. 

optional-chunk      = code-chunk
                      / titl-chunk
                      / date-chunk
                      / sorc-chunk
                      / copy-chunk
                      / exsn-chunk
                      / exsa-chunk


Atarius, Editor              Expires January 2005              [Page 5]

Internet Draft           Compact Media Format (CMF)           July 2004


                      / exsb-chunk
                      / exsc-chunk
                      / cuep-chunk
                      / pcpi-chunk
                      / prot-chunk
                      / wave-chunk

vers-chunk          = vers %x0004 "0500"  
                
vers                = %x76 %x65 %x72 %x73                
                      ; The value "0500" refers to CMF.
	              ; All players that are compliant to this document MUST
                      ; accept vers-chunk values of %d0200-0599, as these 
                      ; are backward compatible. 

code-chunk          = code %x0001 code-value

code                = %x63 %x6F %x64 %x65

titl-chunk          = titl length2 title

titl                = %x74 %x69 %x74 %x6C

title               = *OCTET
                      ; number of octets specified in length2
                      ; field of titl-chunk

date-chunk          = date length2 date-data

date                = %x64 %x61 %x74 %x65

date-data           = *OCTET
                      ; number of octets specified in length2
                      ; field of date-chunk 
     
copy-chunk          = copy length2 copyright-notice
                      ; Content provider's copyright notice.

copy                = %x63 %x6F %x70 %x79

copyright-notice    = *OCTET
                      ; number of octets specified in length2
                      ; field of copy-chunk

sorc-chunk          = sorc %x0001 source-info 

sorc                = %x73 %x6F %x72 %x63

note-chunk          = note %x0002 note-msg-config


Atarius, Editor              Expires January 2005              [Page 6]

Internet Draft           Compact Media Format (CMF)           July 2004



note                = %x6E %x6F %x74 %x65

note-msg-config     = [%x0000 / %x0001]
                      ; %x0000 : Note message is of length 3 octet
                      ; %x0001 : Note message is of length 4 octet
                      ; In the second case, the extra (fourth) octet
                      ; is used to include velocity and Octave Shift
                      ; information.

exsn-chunk          = exsn %x0002 2data
                      ; exsn-chunk specifies the length of normal 
                      ; extension status-A message

exsn                = %x65 %x78 %x73 %x6E

exsa-chunk          = exsa %x0002 2data
                      ; exsa-chunk specifies the length of extension 
                      ; status-A, class A message

exsa                = %x65 %x78 %x73 %x61

exsb-chunk          = exsb %x0002 2data
                      ; exsb-chunk specifies the length of extension 
                      ; status-A, class B message

exsb                = %x65 %x78 %x73 %x62

exsc-chunk          = exsc %x0002 2data
                      ; exsc-chunk specifies the length of extension 
                      ; status-A, class C message

exsc                = %x65 %x78 %x73 %x63

cuep-chunk          = cuep 4nTracks *OCTET
                      ; cuep-chunk specifies the location of the cue 
                      ; point start point, which is the starting 
                      ; position of the main theme music in the track.
                      ; The length of cuep-chunk MUST be equal to 
                      ; number of tracks multiplied by 4 octets. Every
                      ; 4 octets consists of the location of the cue 
                      ; point start point in the corresponding track 
                      ; chunk.
                      ; Each cue point start point is defined to be an
                      ; offset from the start of the track chunk to 
                      ; the octet which is the beginning of the theme 
                      ; music event in that track chunk. If the cue 
                      ; point start point offset for any track chunk 
                      ; is FFFFFFFF, then that track chunk is inactive


Atarius, Editor              Expires January 2005              [Page 7]

Internet Draft           Compact Media Format (CMF)           July 2004


                      ; during cue point playback. 

cuep                = %x63 %x75 %x65 %x70

pcpi-chunk          = pcpi %x0001 axis-offset

pcpi                = %x70 %x63 %x70 %x69

axis-offset         = %x00-01
                      ; pcpi-chunk describes the picture packet information.
                      ; %0x00 : XY offsets in pcpi are in percent
                      ; %0x01 : XY offsets in pcpi are in pixels

cnts-chunk          = cnts length2 multi-media-type

cnts                = %x63 %x6E %x74 %x73

multi-media-type    = media-type *(";" media-type)
                      ; cnts-chunk describes the various media contents 
                      ; that are present in the file.
                      ; Multiple media are separated by ";" in 
                      ; cnts-chunk.
                      ; Examples: SONG;WAVE;TEXT;PICT 
                      ; length2 specifies the length of multi-media-type
                      ; in cnts-chunk.

prot-chunk          = prot length2 *OCTET
                      ; length2 specifies the length of the data in 
                      ; prot-chunk.
                      ; This string can be used to identify the Content
                      ; Provider.

prot                = %x70 %x72 %x6F %x74

wave-chunk          = wave %x0001 data
                      ; the data value is used to determine whether 
                      ; wav-data in track-chunk is ADPCM or QCELP. The
                      ; values are defined according to the following:
                      ; %x00 : wav-data MUST be ADPCM
                      ; %x01 : wav-data MUST be QCELP
                      ; %x02-FF: reserved
                      ; If the format of wav-data (ADPCM or QCELP) in 
                      ; the CMF file is not the same as the data 
                      ; present in wave-chunk, the wav-data MUST be 
                      ; ignored.

wave                  = %x77 %x61 %x76 %x65

code-value          = %b00000000-10000101


Atarius, Editor              Expires January 2005              [Page 8]

Internet Draft           Compact Media Format (CMF)           July 2004


                      ; %b00000000 :		ANSI CHARSET
		      ; %b00000001 :		ISO8859-1
		      ; %b00000010 :		ISO8859-2
		      ; %b00000011 :		ISO8859-3
		      ; %b00000100 :		ISO8859-4
		      ; %b00000101 :		ISO8859-5
		      ; %b00000110 :		ISO8859-6
		      ; %b00000111 :		ISO8859-7
		      ; %b00001000 :		ISO8859-8
		      ; %b00001001 :		ISO8859-9
		      ; %b00001010 :		ISO8859-10
		      ; %b10000001 :		HANGUL CHARSET
		      ; %b10000010 :		Chinese Simplified
		      ; %b10000011 :		Chinese Traditional
		      ; %b10000100 :		Hindi
		      ; %b10000101 :     	Thai



source-info         = no-copyright / copyright-DL /copyright-MO / copyright-DT

no-copyright        = %b00
                      ; No copyright, downloaded (from the net)

copyright-DL        = %b01 
                      ; Copyrighted,  downloaded (from the net)

copyright-MO        = %b11 
                      ; Copyrighted,  mobile originated

copyright-DT        = %b101 
                      ; Copyrighted, from desktop


data                = OCTET

media-type          = "SONG" 		; Contains MIDI
                      /"WAVE"  		; Contains Wave sounds
                      /"TEXT" 		; Contains text data
                      /"PICT" 		; Contains still image data
                      /"ANIM" 		; Contains animation data
                      /"LED" 		; Contains LED data
		      /"VIB"		; Contains VIB data

track-chunk         = (track-chunk-1  3*midi-track-chunk) / exp-track-chunk
                      ; The player MUST ignore unrecognized track-chunks 
                      ; (exp-track-chunk). exp-track-chunk MUST NOT be created.

track-chunk-1       = trac length4 *event


Atarius, Editor              Expires January 2005              [Page 9]

Internet Draft           Compact Media Format (CMF)           July 2004



trac                = %x74 %x72 %x61 %x63

midi-track-chunk    = trac length4 *midi-event

midi-event          = delta-time midi-event-message

exp-track-chunk     = exp-track length4 *OCTET

exp-track           = 4OCTET
                      ; exp-track  MUST NOT be the same as trac.

event               = delta-time event-message

delta-time          = OCTET
	              ; delta time is described as the elapsed time from 
	              ; a previous event. The delta-time of each event is 
                      ; determined by the relative time from the previous event
                      ; using an adjustable unit of time called a tick. The 
                      ; timebase and tempo MIDI event (timebase-tempo) enable 
                      ; the CMF content author to adjust this unit of time. By 
                      ; default, the timebase is 48 and the tempo is 125. By 
                      ; plugging the default timebase and tempo values into 
                      ; following formula:
                      ; milliseconds per tick = 60000 / (tempo * timebase).
                      ; the default value for each tick which is calculated to 
                      ; be 10ms.
                      ; If a delta-time value of more than 255 is required, NOP
                      ; events should be used to correctly time the event.
                      ; The values for timebase are shown in the table in
                      ; section 5.1.

event-message       = note-message
                      / ext-A-message
                      / ext-B-message
                      / ext-info-message

midi-event-message  = note-message
                      / ext-A-message
                      / midi-ext-B-message

note-message        = note-status gate-time
                      / note-status gate-time vel-oct-shift
                      ; If note-msg-config is %x0000, note-message is 
                      ; (note-status gate-time). If note-msg-config is %x0001, 
                      ; note-message is (note-status gate-time vel-oct-shift).

note-status         = channel-index key-number
		      ; One octet containing channel index and key 


Atarius, Editor              Expires January 2005              [Page 10]

Internet Draft           Compact Media Format (CMF)           July 2004


                      ; number

key-number	    = %b000000-111110
               	      ; key-number is 0 to 62. 
               	      ; key-number 63 is prohibited.
               	      ; key-number 15 is middle C of keyboard

gate-time           = OCTET
                      ; continuation time from note-on to note-off.
                      ; The values of gate-time is calculated  
                      ; in the same way as the values of delta-time. 
                      ; If a gate-time value of more than 255 is 
                      ; required multiple note-messages are used. 

vel-oct-shift       = velocity octave-shift   
                      ; octet containing velocity (6 bits) and 
                      ; octave-shift (2 bits)

velocity            = %b000000-111111 
               	      ; velocity is 0 to 63.

octave-shift        = %b00-11
                      ; %b00 : No change
                      ; %b01 : Increase one octave
                      ; %b10 : decrease two octaves
                      ; %b11 : decrease one octave

ext-A-message       = %xFF A-command-data

ext-B-message       = %xFF B-command-data

midi-ext-B-message  = %xFF midi-B-command-data

ext-info-message    = %xFF ( ( %b11110001 wav-data-length wav-data  ) 
                      /      ( %b11110010 text-data-length text-data )
                      /      ( %b11110011 pict-data-length picture-data )
                      /      ( %b11110100 anim-data-length animation-data ) ) 

wav-data-length     = length2

text-data-length    = length2

pict-data-length    = length2

anim-data-length    = length2

length2             = 2OCTET
    
A-command-data      = assigned-channel fine-pitch-bend


Atarius, Editor              Expires January 2005              [Page 11]

Internet Draft           Compact Media Format (CMF)           July 2004


                      ; two octets containing assigned-channel and 
                      ; fine-pitch-bend.

assigned-channel    = %b000-011
	              ; Assigned channel index (0..3)

fine-pitch-bend     = %b0000000000000-1111111111111	
                      ; range : %x0000 to %x1fff (see table in 
                      ; section 5.3)
                      ; Fine pitchbend message sets the change value 
                      ; of the pitch specified in the note message.
    
B-command-data      = master-volume
		      / master-tune
		      / part-configuration
		      / pause
		      / stop
		      / reset
		      / timebase-tempo
		      / cuepoint
	              / jump
		      / NOP
		      / end-of-track
		      / bank-change
		      / program-change
		      / volume
		      / panpot
		      / pitchbend
		      / channel-assign
		      / pitchbend-range
		      / wave-channel-volume
		      / wave-channel-panpot
		      / text-control
		      / picture-control
		      / vib-control
		      / LED-control
                          
midi-B-command-data = NOP
                      / end-of-track
                      / bank-change
                      / program-change
                      / volume
                      / panpot
                      / pitchbend
                      / pitchbend-range

master-volume       = %b10110000 %x00-7F	
                      ; specifies the volume adjustment 
                      ; for all audio events.  The 


Atarius, Editor              Expires January 2005              [Page 12]

Internet Draft           Compact Media Format (CMF)           July 2004


                      ; default value is 100 (0 dB).  
                      ; Range is from 0 to 127.

master-tune	    = %b10110011 %x34-4C	
		      ; Master Tune for music synthesizer
                      ; %x34 : -(12 x 100 ) [cents]
                      ; ...
                      ; %x3E : -( 2 x 100 ) [cents]
                      ; %x3F : -( 1 x 100 ) [cents]
                      ; %x40 : 0 [cents]
                      ; %x41 : ( 1 x 100 ) [cents]
                      ; %x42 : ( 2 x 100 ) [cents]
                      ; ...
                      ; %x4C : (12 x 100 ) [cents]
                      ; A cent is a change in frequency 
                      ; by 2^(1/1200). So frequencies f1 
                      ; and f2 are one cent apart if 
                      ; f2 = f1 x 2^(1/1200), and three 
                      ; cents apart if 
                      ; f2 = f1 x 2^(3/1200).

part-configuration  = %b10111001 %x00	
	              ; reserved

pause 		    = %b10111101 %x00
		      ; pause player

stop		    = %b10111110 %x00
		      ; all notes off

reset		    = %b10111111 %x00
		      ; reset controllers

timebase-tempo      = timebase tempo

timebase            = %b1100000-11001111
		      ; timebase - the lower nibble (%b0000-1111)is index 
                      ; into table in section 5.1.

tempo               = %x14-FF											
                      ; number of quarter notes in one minute.

cuepoint	    = %b11010000 cuep-start-end

cuep-start-end      = cuep-startpoint / cuep-endpoint 

cuep-startpoint     = %x00
		      ; cuepoint startpoint



Atarius, Editor              Expires January 2005              [Page 13]

Internet Draft           Compact Media Format (CMF)           July 2004


cuep-endpoint       = %x01
        	      ; cuepoint endpoint

jump		    = %b11010001 jump-data

jump-data	    = destination jump-id no-of-jumps
		      ; one octet with following three fields

destination         = dest / jump 

dest                = %b00
		      ; destination point

jump                = %b01
		      ; jump point

jump-id             = %b00-11
		      ; jump ID (0 to 3)

no-of-jumps         = %b0000-1111
        	      ; (15 is infinity)

NOP		    = %b11011110 NOP-data

NOP-data	    = %x00

end-of-track        = %b11011111 %x00
	              ; end of track

bank-change	    = %b11100001 bank-change-attr
                
bank-change-attr    = channel-index bank-change-value
	              ;one octet containing 2 fields

bank-change-value   = %b000000-111111
		      ; bank change value
                      ; %b000010: General CMF Instrument bank with 
                      ; programs from the first 64 patches of the 
                      ; General MIDI Instrument Patch Map.
                      ; %b000011: General CMF Instrument bank with 
                      ; programs from the second 64 patches of the 
                      ; General MIDI Instrument Patch Map.
                      ; %b111111: Drum Bank with identical keys as 
                      ; the General MIDI Percussion Key Map.

program-change      = %b11100000 prog-data

prog-data           = channel-index prog-change
		      ; one octet containing 2 fields


Atarius, Editor              Expires January 2005              [Page 14]

Internet Draft           Compact Media Format (CMF)           July 2004



prog-change         = %b000000-111111
                      ; program change value
                      ; prog-change SHALL be ignored if the bank is 
                      ; a drum bank.

volume	            = %b11100010 volume-attr 

volume-attr         = channel-index volume-change
                      ;one octet containing 2 fields

volume-change       = %b000000-111111
                      ; volume change value

panpot	            = %b11100011 panpot-attr

panpot-attr	    = channel-index panpot-change
                      ; one octet containing two fields

panpot-change       = %b000000-111111
  		      ; panpot change value
	              ; %b000000 : Far Left
        	      ; %b100000 : Center
        	      ; %b111111 : Far Right

pitchbend	    = %b11100100 pitchbend-attr

pitchbend-attr	    = channel-index pitchbend-change
                      ; one octet containing two fields

pitchbend-change    = %b000000-111111
		      ; pitchbend change value (see table in 
                      ; section 5.2)

channel-assign      = %b11100101 channel-data

channel-data        = channel-index channel-value
                      ; one octet containing two fields

channel-value       = %b000000-001111

pitchbend-range     = %b11100111 pitchrange-data

pitchrange-data	    = channel-index pitch-range
                      ; one octet containing two fields

pitch-range         = %b000000-001100
    		      ; pitch bend range



Atarius, Editor              Expires January 2005              [Page 15]

Internet Draft           Compact Media Format (CMF)           July 2004


wave-channel-volume = %b11101000 wave-vol

wave-vol	    = channel-index volume-change
                      ; one octet containing two fields

volume-change       = %b000000-111111	
		      ; volume change value

wave-channel-panpot = %b11101001 wave-panpot

wave-panpot	    = channel-index panpot-change
                      ; one octet containing two fields

panpot-change       = %b000000-111111
   		      ; wave panpot change value
	              ; %b000000 : Far Left
        	      ; %b100000 : Center
        	      ; %b111111 : Far Right

text-control	    = %b11101011 tex-cont

tex-cont            = %x00-05
	              ; %x00 : Text Enable
	              ; %x01 : Text Disable
	              ; %x02 : Clear text
	              ; %x03 : reserved
	              ; %x04 : Increase cursor position by 1 byte
	              ; %x05 : Increase cursor position by 2 bytes

picture-control     = %b11101100 pict-cont

pict-cont           = pict-enable / pict-disable / clear-pict

pict-enable         = %x00
		      ; picture enable

pict-disable        = %x01
		      ; picture disable

clear-pict          = %x02
		      ; clear picture

vib-control	    = %b11101110 vib-data

vib-data            = %b0 off-on vib-pattern
                      ; one octet containing one zero bit and two 
                      ; fields

off-on              = %b0-1


Atarius, Editor              Expires January 2005              [Page 16]

Internet Draft           Compact Media Format (CMF)           July 2004


	              ; enable is %b1 and disable is %b0

vib-pattern         = %b000000-000111
	              ; vibrator pattern

LED-control	    = %b11101101 led-data

led-data            = %b0 off-on color-pattern
                      ; one octet containing one zero bit and two 
                      ; fields

off-on              = %b0-1
	              ; enable is %b1 and disable is %b0

color-pattern       = %b000000-001111
	              ; color pattern

wav-data            = wav-atrb1 wav-atrb2  

wav-atrb1           = channel-index channel-id
                      ; one octet containing two fields

channel-index       = %b00-11
		      ; assigned channel index, defined 
               	      ; with respect to the channel reference index. 

channel-id          = %b000000-111111	
	        
wav-atrb2           = wav-p-mode wav-str
                      ; one octet containing two fields

wav-p-mode          = wav-store / wav-set / wav-recycle

wav-store           = %b00 
                      ; store mode, see section 7.5.1

wav-set             = %b01
                      ; set mode, see section 7.5.2

wav-recycle         = %b10
                      ; recycle mode, see section 7.5.3

wav-str             = wav-other / wav-ima

wav-other           = wav-format packet-offset prev-flag *OCTET

wav-format          = wav-qcp / wav-ext

wav-qcp             = %b000100 


Atarius, Editor              Expires January 2005              [Page 17]

Internet Draft           Compact Media Format (CMF)           July 2004


                      ; QCP 13k

wav-ext             = %b000000-000011 / %b000110-111111
                      ; reserved

wav-ima             = %b000101 packet-offset prev-flag wav-adpcm-info 
                      *OCTET
                      ; IMA ADPCM 

packet-offset       = length4	
	              ; specifies offset in bytes to next wave packet

prev-flag           = prev-flag-en / prev-flag-dis

prev-flag-en        = %x01

prev-flag-dis       = %x00
	              ; specifies if current wave packet is continued
	              ; from previous (for those formats with frame
	              ; history). Implementations SHOULD ignore the 
                      ; seven most significant bits
                      ; If wav-format is wav-qcp then wav-data-cnts is 
                      ; *OCTET. If wav-format is wav-adpcm then 
                      ; wav-data-cnts is wav-adpcm-info *OCTET.
                       
wav-adpcm-info      = wav-adpcm-samp-rate  %b00 wav-adpcm-block-size

wav-adpcm-samp-rate = %b00-11
                      ; it defines the sampling rate of ADPCM.
                      ; %b00 : 8 KHz
                      ; %b01 : 16 KHz
                      ; %b10 : 32 KHz
                      ; %b11 : Reserved
                     
wav-adpcm-block-size= %b000000000000-111111111111
                      ; it defines the size of ADPCM block in bytes. 
                      ; Typical block size for sampling rate 8 and 16 KHz
                      ; is 256 Bytes. While typical block size for 
                      ; sampling rate 32 KHz is 512 Bytes.

text-data           = text-atrb *OCTET

text-atrb           = %b0 set-append x-align y-align	
	       	      ; set/append and XY alignment
                      ; one octet containing a zero bit followed by 
                      ; three fields

set-append          = set-string / append-string



Atarius, Editor              Expires January 2005              [Page 18]

Internet Draft           Compact Media Format (CMF)           July 2004


set-string          = %b0 
                      ; set a string

append-string       = %b1
	              ; append a string

x-align             = txt-x-left / txt-x-center / txt-x-right

txt-x-left          = %b000
                      ; left x-alignment

txt-x-center        = %b001
                      ; center x-alignment

txt-x-right         = %b010
                      ; right x- alignment
	      
y-align             = txt-y-bottom / txt-y-center / txt-y-top

txt-y-bottom        = %b000
                      ; bottom  y-alignment

txt-y-center        = %b001 
                      ; center y-alignment

txt-y-top           = %b010
                      ; top y-alignment	       	

picture-data        = pict-atrb1 pict-atrb2 pict-atrb3 pict-x-off 
                      pict-y-off *OCTET

pict-atrb1          = reserved id

reserved            = %b00-11
                      ; sHOULD set to %b00 on creation
                      ; SHOULD ignore value when reading

id                  = %b000000-111111	
 	       	      ; picture packet ID (0-63)

pict-atrb2          = pic-p-mode pic-format

pic-p-mode          = pict-store / pict-set / pict-recycle

pict-store          = %b00
                      ; store mode, see section 7.5.1

pict-set            = %b01 
                      ; set mode, see section 7.5.2 


Atarius, Editor              Expires January 2005              [Page 19]

Internet Draft           Compact Media Format (CMF)           July 2004



pict-recycle        = %b10
                      ; recycle mode, see section 7.5.3 

pic-format          = BMP-format / JPEG-format / PNG-format 

BMP-format          = %b000001 

JPEG-format         = %b000010  

PNG-format          = %b000011  

pict-atrb3          = %x00	
	              ; draw mode : normal

pict-x-off          = OCTET	
	              ; if subchunk for picture packet = 0
	              ; %b00000000 : X-offset 0%
	              ; %b00000001 : X-offset 1%
	              ;   ...
	              ; %b01100100 : X-offset 100%
	              ; %b01100101 : Left
	              ; %b01100110 : Center
	              ; %b01100111 : Right
	              ; if subchunk for picture packet = 1
	              ; pict-x-off = pixel offset from left (0..255)

pict-y-off          = OCTET
	              ; if subchunk for picture packet = 0
	              ; %b00000000 : Y-offset 0%
	              ; %b00000001 : Y-offset 1%
	              ;   ...
	              ; %b01100100 : Y-offset 100%
	              ; %b01100101 : Top
	              ; %b01100110 : Center
	              ; %b01100111 : Bottom
	              ; if subchunk for picture packet = 1
	              ; pict-y-off = pixel offset from top (0...255)

animation-data      = anim-atrb0 anim-atrb1 anim-atrb2 anim-x-off 
                      anim-y-off *OCTET

anim-atrb0          = length4

length4             = 4OCTET
		      ; four bytes to indicate the length of the 
                      ; animation if length2 in ext-info-message is 
                      ; set to zero.   



Atarius, Editor              Expires January 2005              [Page 20]

Internet Draft           Compact Media Format (CMF)           July 2004


anim-atrb1          = anim-p-mode anim-id
                      ; one octet containing two fields
                      ; note both fields contain fixed (reserved) 
                      ; values	

anim-p-mode         = %b01
	       	      ; Animation packet mode
	       	      ; %b01 : reserved

anim-id             = %b000000
	              ; Animation packet ID
	              ; %b000000 : reserved

anim-atrb2          = anim-p-format anim-code
                      ; one octet containing two fields

anim-p-format       = %b000
	              ; reserved

anim-code           = imag-obj-data / frame-id / frame-cmd

imag-obj-data       = %b00000 
                      ; image object data

frame-id            = %b00001 
                      ; frame ID

frame-cmd           = %b00010 
                      ; frame command

anim-x-off          = OCTET	
	              ; if subchunk for animation packet = 0
	              ; %b00000000 : X-offset 0%
	              ; %b00000001 : X-offset 1%
	              ;   ...
	              ; %b01100100 : X-offset 100%
	              ; %b01100101 : Left
	              ; %b01100110 : Center
	              ; %b01100111 : Right
	              ; if subchunk for animation packet = 1
	              ; anim-x-off = pixel offset from left (0..255)

anim-y-off          = OCTET	
	              ; if subchunk for animation packet = 0
	              ; %b00000000 : Y-offset 0%
	              ; %b00000001 : Y-offset 1%
	              ;    ...
	              ; %b01100100 : Y-offset 100%
	              ; %b01100101 : Top


Atarius, Editor              Expires January 2005              [Page 21]

Internet Draft           Compact Media Format (CMF)           July 2004


	              ; %b01100110 : Center
	              ; %b01100111 : Bottom
	              ; if subchunk for animation packet = 1
	              ; anim-y-off = pixel offset from top (0..255)

    
    5 Tables
    
    5.1 TimeBase
    
    TimeBase is expressed by the lower 4-bits of the status byte.  The
    default value is 48.
    

+-------------------+---------------------------------+
|      %b----0000   | TimeBase = 6                    |
+-------------------+---------------------------------+
|      %b----0001   | TimeBase = 12                   |
+-------------------+---------------------------------+
|      %b----0010   | TimeBase = 24                   |
+-------------------+---------------------------------+
|      %b----0011   | TimeBase = 48                   |
+-------------------+---------------------------------+
|      %b----0100   | TimeBase = 96                   |
+-------------------+---------------------------------+
|      %b----0101   | TimeBase = 192                  |
+-------------------+---------------------------------+
|      %b----0110   | TimeBase = 384                  |
+-------------------+---------------------------------+
|      %b----0111   | Reserved                        |
+-------------------+---------------------------------+
|      %b----1000   | TimeBase = 15                   |
+-------------------+---------------------------------+
|      %b----1001   | TimeBase = 30                   |
+-------------------+---------------------------------+
|      %b----1010   | TimeBase = 60                   |
+-------------------+---------------------------------+
|      %b----1011   | TimeBase = 120                  |
+-------------------+---------------------------------+
|      %b----1100   | TimeBase = 240                  |
+-------------------+---------------------------------+
|      %b----1101   | TimeBase = 480                  |
+-------------------+---------------------------------+
|      %b----1110   | TimeBase = 960                  |
+-------------------+---------------------------------+
|      %b----1111   | Reserved                        |
+-------------------+---------------------------------+

    


Atarius, Editor              Expires January 2005              [Page 22]

Internet Draft           Compact Media Format (CMF)           July 2004


    5.2 Pitch Bend
    
    The following table contains a description of the pitch bend value
    when the pitch bend range is assigned RangeValue.  The default value
    for RangeValue is 2.
    

+------------------+-----------------------------------------+
|    %b000000      | -( 32 x RangeValue x 100 / 32 ) [cents] |
+------------------+-----------------------------------------+
|        ...       |         ...                             |
+------------------+-----------------------------------------+
|    %b011110      | -(  2 x RangeValue x 100 / 32 ) [cents] |
+------------------+-----------------------------------------+
|    %b011111      | -(  1 x RangeValue x 100 / 32 ) [cents] |
+------------------+-----------------------------------------+
|    %b100000      | 0 [cent]                                |
+------------------+-----------------------------------------+
|    %b100001      | (  1 x RangeValue x 100 / 32 ) [cents]  |
+------------------+-----------------------------------------+
|    %b100010      | (  2 x RangeValue x 100 / 32 ) [cents]  |
+------------------+-----------------------------------------+
|        ...       |         ...                             |
+------------------+-----------------------------------------+
|    %b111111      | ( 31 x RangeValue x 100 / 32 ) [cents]  |
+------------------+-----------------------------------------+

    
    5.3 Fine Pitch Bend
    
    The following table contains a description of the fine pitch bend
    value.
    

+--------------------+-----------------------------------------------+
|  %b0000000000000   |  -( 4096 x RangeValue x 100 / 4096 ) [cents]  |
+--------------------+-----------------------------------------------+
|         ...        |                    ...                        |
+--------------------+-----------------------------------------------+
|  %b0111111111110   |  -(  2 x RangeValue x 100 / 4096) [cents]     |
+--------------------+-----------------------------------------------+
|  %b0111111111111   |  -(  1 x RangeValue x 100 / 4096) [cents]     |
+--------------------+-----------------------------------------------+
|  %b1000000000000   |  0 [cent]                                     |
+--------------------+-----------------------------------------------+
|  %b1000000000001   |   (  1 x RangeValue x 100 / 4096) [cents]     |
+--------------------+-----------------------------------------------+
|  %b1000000000010   |   (  2 x RangeValue x 100 / 4096) [cents]     |
+--------------------+-----------------------------------------------+


Atarius, Editor              Expires January 2005              [Page 23]

Internet Draft           Compact Media Format (CMF)           July 2004


|         ...        |                    ...                        |
+--------------------+-----------------------------------------------+
|  %b1111111111111   |  ( 4095 x RangeValue x 100 / 4096) [cents]    |
+--------------------+-----------------------------------------------+

    6 CMF Profiles
    
    A CMF profile identifies a set of media combinations.
    
    Players MUST be capable of rendering at least the profiles listed in
    section 6.  For maximum interoperability, content generators MAY be
    restricted to the profiles listed in section 6.  Note that
    additional profiles MAY be defined in the future.
    
    6.1 Talking Picture Messaging
    
    cnts = WAV;PICT
    
    This profile is primarily used for messaging applications.  PICT can
    either be JPEG or PNG for graphics/image data.
    
    6.2 Audio-only Profile
    
    cnts = SONG;WAV
    
    This profile is primarily used for ringers and other audio only
    applications such as the audio portion of a game application.  SONG
    is used for MIDI and WAV is used to provide QCP or ADPCM sound
    effects.
    
    
    6.3 Picture Ringers
    
    cnts = SONG;WAV;PICT
    
    This profile is an enhancement on 6.2 that adds graphics capability
    for picture or audio postcards.  PICT can be either PNG or JPEG
    format.
    
    
    7 CMF Conformance Requirements
    
    In order to interoperate with existing deployments, the requirements
    in this section MUST be followed.
    
    





Atarius, Editor              Expires January 2005              [Page 24]

Internet Draft           Compact Media Format (CMF)           July 2004


    7.1 Subchunk Requirements
    
    There are 3 required subchunks: note, vers, and cnts.  All encoders
    are REQUIRED to include these subchunks and all decoders are
    REQUIRED to verify the existence of these subchunks before playing
    the content.
    
    
    7.2 MIDI Requirements
    
    All MIDI related parameters SHOULD be interpreted according to
    General MIDI Level 2 requirements, [MMASpec1] and [MMASpec2].  In
    those instances where parameters have different precisions than the
    equivalent General MIDI Level 2 parameters, those parameters SHOULD
    be mapped to the equivalent dynamic range.
    
    
    7.3 Wave Packet Requirements
    
    CMF encoders SHOULD break wave packets into subchunks with
    reasonable durations.  These subchunks represent events and are time
    stamped by delta-time which is the elapsed time from one event to
    the previous one.  The recommendation for subchunking allows CMF
    players to implement effective fast-forward and rewind operations
    without affecting the ability to properly handle wave packets.  A
    typical implementation breaks wave packets into 0.5 second.  Using
    0.5 second chunks allows a typical CMF player to achieve 0.5 second
    resolution in forward and rewind increments.  The subchunks also
    contains prev-flag parameter so that CMF player is able to correctly
    implement a continuous bit-stream interface to the wave decoder when
    wave packets are provided with prev-flag set to %x01.  When
    prev-flag is %x00, the CMF player SHOULD reset the wave decoder.
    The information in prev-flag is to ensure continuous decoding of
    audio packets.
    
    
    
    7.4 Cue- and Jump-points
    
    7.4.1 Cuepoints
    
    Cuepoints are used to provide an alternative play mode for CMF
    files.  When in cue-point play mode, the decoder SHOULD jump to the
    cue start point when starting playback.  All rules for setup that
    are observed for normal playback at the beginning of the file SHOULD
    be observed.  For example, an encoder is required to insert all
    configuration events in between cuepoint boundaries even if those
    events are redundant with configuration events outside cue-point
    boundaries.


Atarius, Editor              Expires January 2005              [Page 25]

Internet Draft           Compact Media Format (CMF)           July 2004


    7.4.2 Jump Points
    
    Jump points are used to reuse portions of the playback using loops
    to reduce file size.  The decoder is required to parse a jump
    destination point and save a pointer to the file.  Up to 4 JUMP IDs
    can be saved for later reference.  When a jump command is received
    for a given destination ID, the decoder SHOULD continue playback
    from the destination point.  The loop number specifies the number of
    times the jump SHOULD be taken.  After the final jump, decoding
    SHOULD continue as normal ignoring the final jump command.
    
    
    7.5 Recycle Requirements
    
    Recycling is supported in Picture, Wave, and Animation packets.  The
    use of recycle is RECOMMENDED to optimize file sizes for data
    transmission.  Each packet group allows for up to 64 individual IDs
    to be used for recycle.
    
    
    7.5.1 Store Command
    
    The "store" operation specifies that the decoder SHOULD not display
    the data, but instead cache the data for displaying in the future.
    
    
    7.5.2 Set Command
    
    The "set" operation specifies that the decoder SHOULD both cache the
    data and display it.
    
    
    7.5.3 Recycle Command
    
    The "recycle" operation specifies that the decoder SHOULD redisplay
    image data previously cached by a "store" or "set" operation that
    used the same packet ID value specified in the "Attributes 1" field.
    
    7.6 Requirements for Default Values
    
    Following table shows the default values of the events if the events
    are omitted in CMF file.
    

+----------------------+------------------------------+
|      Event:          | Field and Default Value:     |
+----------------------+------------------------------+
| Timebase-tempo       | 48 (Timebase) and 125 (Tempo)|
+----------------------+------------------------------+


Atarius, Editor              Expires January 2005              [Page 26]

Internet Draft           Compact Media Format (CMF)           July 2004


| Master-Volume        | 100                          |
+----------------------+------------------------------+
| Master-tune          | 128                          |
+----------------------+------------------------------+
| Program-change       | 0                            |
+----------------------+------------------------------+
| Bank-change          | 0                            |
+----------------------+------------------------------+
| Volume               | 50                           |
+----------------------+------------------------------+
| Panpot               | 32                           |
+----------------------+------------------------------+
| Pitchbend            | 32                           |
+----------------------+------------------------------+
| Wave-channel-volume  | 50                           |
+----------------------+------------------------------+
| Wave-channel-panpot  | 32                           |
+----------------------+------------------------------+

    
    
    
    
    8.  IANA Considerations
    
    IANA is requested to register the application/cmf media type as
    specified here.
    
    8.1.  Registration of application/cmf
    
    Media Type Name:
        application
        
    Media Subtype Name:
        CMF
        
    Required Parameter:
        "codecs".  Values of the codecs parameters as specified in
        [mp4-reg] per [Codecs].  If present it MUST contain a value for
        each media element which exists in the CMF file.  It MUST NOT
        contain values for any media element which does not exist in the
        CMF file.
        
    Optional parameters:







Atarius, Editor              Expires January 2005              [Page 27]

Internet Draft           Compact Media Format (CMF)           July 2004


        None
        
    Encoding considerations:
        As a binary format, CMF requires suitable content transfer
        encoding when transported over non-8-bit-clean protocols.  For
        example, base64 encoding SHOULD be used over unextended SMTP.
        
    Security considerations:
        See Section 9, "Security Considerations", of this document.
        
    Public specification:
        This document
        
    Additional information:
        None
        
    Magic number:
        First four octets; cmid
        
    File extensions:
        cmf, CMF
        
    Macintosh file type code:
        CMFf
        
    Object identifier or OID:
        None
        
    Intended usage:
        COMMON.  This file format is already in wide use in multimedia
        authoring, playing software, and cdma2000 handsets.
        
    Person & email address to contact for further information:
        Roozbeh Atarius, ratarius@qualcomm.com
        
    Change controller:
        Roozbeh Atarius
        

9.  Security Considerations

This document specifies a file format only, not a streaming protocol
payload format nor a transfer method.  As such, it introduces no
security risks aside from those associated with any codec or media file
format (for example, denial of service by transmitting a file larger
than the receiver can handle).  Note that those security concerns SHOULD
be understood before using the file format specified here.




Atarius, Editor              Expires January 2005              [Page 28]

Internet Draft           Compact Media Format (CMF)           July 2004


10.  Normative References

[ABNF] Crocker, Overell, "Augmented BNF for Syntax Specifications:
ABNF", RFC 2234, Internet Mail Consortium, Demon Internet Ltd., November
1997.

[KEYWORDS] Bradner, "Key words for use in RFCs to Indicate Requirement
Levels", RFC 2119, Harvard University, March 1997.

[MMASpec1] "Complete MIDI 1.0 Detailed Specification", v96.1 (second
edition), MIDI Manufacturers Association (MMA), 2001.

[MMASpec2] "General MIDI 2 Specification", v1.1, MIDI Manufacturer
Association (MMA), Septemner 2003.

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

[Codecs] "The Codecs Parameter for 'Bucket' Media Types",
draft-gellens-mime-bucket, work in progress.

11 Informative References

12.  Acknowledgments

The CMF presentation file format was originally created by Faith Inc.
and others at QUALCOMM.  The editor would like to thank them for their
contributions.

This draft could not be completed without the contributions of Randall
Gellens, Harinath Garudardi, Samir Gupta, Viktor Nikolic, and Sun Tam.
These individuals contributed with detailed text, ideas, technical
advices, and ABNF syntax to complete this draft.  Hence, this draft is a
product of their valuable contributions.  The editor would like to thank
them for their contributions and advices.

13 Editor's Address

Roozbeh Atarius

ratarius@qualcomm.com


QUALCOMM Incorporated








Atarius, Editor              Expires January 2005              [Page 29]

Internet Draft           Compact Media Format (CMF)           July 2004


5775 Morehouse Drive


San Diego, CA 92121


USA


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.


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.




Atarius, Editor              Expires January 2005              [Page 30]

Internet Draft           Compact Media Format (CMF)           July 2004


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.


























Atarius, Editor              Expires January 2005              [Page 31]