`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`Internet Draft
`
`draft—heftagaub—rmff—00.txt
`
`March 13, 1998
`
`STATUS OF THIS MEMO
`
`Rahul Agarwal, RealNetworks
`
`Jeff Ayars, RealNetworks
`Brad Hefta—Gaub, RealNetworks
`
`Dale Stammen, RealNetworks
`
`Expires: August I3, 1998
`
`RealMedia File Format
`
`This document is an Internet—Draft.
`
`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.
`
`Interne-—Drajts 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".
`
`To learn the current status of any Internet—Draft, please check the
`
`“lid—abstracts.txt" listing contained in the Internet—Drafts Shadow
`
`(Europe),
`Directories on ftp.is.co.za (Africa), nic.nordu.net
`munnari.oz.au (Pacific Rim), ds.internic.net
`(US East Coast), or
`
`ftp.isi.edu (US West Coast).
`
`Distribution of this document is unlimited.
`
`Abstract:
`
`Introduction
`
`The RealMedia File Format
`
`(RMFF)
`
`is designed to be a generic container
`
`for streaming media data. This data may then be played back locally or
`streamed over a network using protocols such as RTSP and RTP.
`The
`
`format is data—independent, allowing any data type to be recorded,
`
`manipulated and played back.
`
`Note: This document is intended to be informational in nature of what
`
`the file format in use by RealNetworks' Realserver and RealPlayer
`
`implementations.
`
`Though we think that there are a lot of important
`
`concepts embodied in this specification, and that it may even make the
`
`basis of a "standard" file format,
`
`this is intended to eventually end
`
`up as an Informational RFC.
`
`Copyright Notice:
`
`Copyright
`
`(C) RealNetworks
`
`(1998). All Rights Reserved.
`
`too|s.ietf.org/html/draft-heftag aub-rmff-00
`
`1
`
`BTN0005737
`
`1/18
`NEULION 1007
`
`BTN0005737
`
`BTN0005737
`
`1
`
`NEULION 1007
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - Rea|Media File Format
`
`R. Agarwal, J. Ayars, B. Hefta-Gaub, D. Stammen
`
`Page
`
`1
`
`too|s.ietf.org/html/draft-heftag aub-rmff-00
`
`2
`
`BTN0005738
`
`2/18
`
`BTN0005738
`
`BTN0005738
`
`2
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`RealMedia File Format
`
`(RMFF)
`
`1. File Format
`
`2. Header Section
`
`2.1 RealMedia File Header
`
`2.2 Properties Header
`
`2.3 Media Properties Header
`
`2.4 Content Description Header
`3. Data Section
`
`3.1 Data Chunk Header
`
`3.2 Data Packet Header
`
`4.
`
`Index Section
`4.1 Index Section Header
`
`4.2 Index Record
`
`1. File Format
`
`RealMedia File Format is a standard tagged file format that uses
`
`four—character codes to identify file elements. These codes are 32-bit,
`
`represented by a sequence of one to four ASCII alphanumeric characters,
`
`padded on the right with space characters. The data type for
`
`four—character codes is FOURCC. Use the PN_FOURCC macro to convert four
`characters into a four—character code.
`
`The basic building block of a RealMedia File is a chunk, which is a
`
`logical unit of data, such as a stream header or a packet of data. Each
`
`chunk contains the following fields:
`
`* four—character code specifying the chunk identifier
`
`* 32-bit value specifying the size of the data member in the chunk
`
`* blob of opaque chunk data
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page
`
`2
`
`too|s.ietf.orglhtm|/draft-heftag aub-rmff-00
`
`3
`
`BTN0005739
`
`3/18
`
`BTN0005739
`
`BTN0005739
`
`3
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`Depending on its type, a top—level chunk can contain subobjects. This
`document describes the tagged chunks contained in RMFF, as well as the
`
`format of the data stored in each type of tagged chunk.
`
`Tagged Chunk
`
`Tagged Chunk
`
`+ ———————————————————— ——+
`I
`ID
`+ ————————————————————— ——
`
`Size
`I
`+ ————————————————————— ——
`
`|
`
`Data
`
`+ ———————————————————— ——+
`I
`ID
`+ ———————————————————— ——+
`
`Size
`I
`+ ————————————————————— ——
`
`Subchunk
`
`Subchunk
`
`I
`/+ ----------- --+
`
`Data
`
`I
`
`I
`
`|
`
`I
`
`I
`\|
`/+ ----------- --+
`
`Data
`
`I
`
`I
`
`I
`
`I
`
`/
`
`\
`
`/
`
`\
`
`I
`\l
`+ ——————————— ——+
`+ ————————————————————— ——
`
`Figure 1. Tagged File Formats
`
`2. Header Section
`
`Because RMFF is a tagged file format,
`
`the order of the chunks is not
`
`explicit, except that the RealMedia File Header must be the first chunk
`
`in the file. However, most applications write the standard headers into
`
`the file's header section. The following chunks are typically found in
`the header section of RMFF:
`
`>(->(->(->(-
`
`RealMedia File Header
`
`(This must be the first chunk of the file)
`
`Properties Header
`
`Media Properties Header
`
`Content Description Header
`
`After the RealMedia File Header object,
`
`the other headers may appear in
`
`any order. All headers are required except the Index Header. The
`
`following sections describe the individual header objects ,
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page
`
`3
`
`too|s.ietf.org/html/draft-heftag aub-rmff-00
`
`4
`
`BTN0005740
`
`4/18
`
`BTN0005740
`
`BTN0005740
`
`4
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`2.1 RealMedia File Header
`
`Each RealMedia file begins with the RealMedia File Header, which
`
`identifies the file as RMFF. There is only one RealMedia File Header in
`
`a RealMedia file. Because the contents of the RealMedia File Header may
`
`change with different versions of RMFF,
`
`the header structure supports an
`
`object version field for determining what additional fields exists. The
`
`following pseudo—structure describes the RealMedia File Header:
`
`RealMedia_File_Header
`{
`
`UINT32
`UINT32
`
`UINT16
`
`object_id;
`size;
`
`object_version;
`
`if (object_version ==
`
`)
`
`UINT32
`
`UINT32
`
`file_version;
`
`num_headers;
`
`The RealMedia File Header contains the following fields:
`
`object_id; 32 bits
`The unique object ID for a RealMedia File ('.RMF'). All RealMedia
`
`files begin with this identifier.
`
`size: 32 bits
`
`The size of the RealMedia header section in bytes.
`
`object_version: 16 bits
`The version of the RealMedia File Header object. All files created
`
`according to this specification have an object_version number of 0
`(zero).
`
`file_Version: 32 bits
`The version of the RealMedia file in PN Version format. All files
`
`created according to this specification have a major version number
`
`of 1. This member is present on all RealMedia_File_Header objects
`
`with an object_version of 0
`
`(zero).
`
`num_headers: 32 bits
`The number of headers in the header section that follow the
`
`RealMedia File Header. This member is present on all
`
`RealMedia_File_Header objects with an object_version of 0
`
`(zero).
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page
`
`4
`
`too|s.ietf.org/html/draft-heftag aub-rmff-00
`
`5
`
`BTN0005741
`
`5/18
`
`BTN0005741
`
`BTN0005741
`
`5
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`2.2 Properties Header
`
`The Properties Header describes the general media properties of the
`
`RealMedia File. Components of the RealMedia system use this object to
`
`configure themselves for handling the data in the RealMedia file or
`
`stream. There is only one Properties Header in a RealMedia file. The
`
`following pseudo—structure describes the Properties header:
`
`object_id;
`size;
`
`object_version;
`
`max_bit_rate;
`avg_bit_rate;
`
`max_packet_size;
`
`avg_packet_size;
`num_packets;
`duration;
`
`preroll;
`
`index_offset;
`
`data_offset;
`
`num_streams;
`flags;
`
`Properties
`{
`
`UINT32
`UINT32
`
`UINTl6
`
`if (object_version ==
`{
`
`)
`
`UZkT32
`UINT32
`
`UZkT32
`
`UINT32
`UINT32
`UZkT32
`I
`UINT32
`7.H L» N
`U_
`I
`17 I-21 00 l\)
`U_
`
`INTl6
`ZNTl6
`
`U U
`
`The Properties Header contains the following fields:
`
`object_id; 32 bits
`The unique object ID for a Properties Header
`
`(‘PROP’).
`
`size: 32 bits
`
`The size of the Properties Header in bytes.
`
`object_version: 16 bits
`The version of the RealMedia File Header object. All files created
`
`according to this specification have an object_version number of 0
`(zero).
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page
`
`5
`
`too|s.ietf.org/html/draft-heftag aub-rmff-00
`
`6
`
`BTN0005742
`
`6/18
`
`BTN0005742
`
`BTN0005742
`
`6
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - Rea|Media File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`max_bit_rate: 32 bits
`The maximum bit rate required to deliver this file over a network.
`
`This member is present on all Properties objects with an
`
`object_version of 0
`
`(zero).
`
`avg_bit_rate: 32 bits
`The average bit rate required to deliver this file over a network.
`
`This member is present on all Properties objects with an
`
`object_version of 0
`
`(zero).
`
`max_packet_size: 32 bits
`The largest packet size (in bytes)
`
`in the media data. This member is
`
`present on all Properties objects with an object_version of 0
`
`(zero).
`
`avg_packet_size: 32 bits
`The average packet size (in bytes)
`
`in the media data. This member
`
`is present on all Properties objects with an object_version of 0
`(zero).
`
`num;packets: 32 bits
`The number of packets in the media data. This member is present on
`
`all Properties objects with an object_version of 0
`
`(zero).
`
`duration: 32 bits
`
`The duration of the file in milliseconds. This member is present on
`
`all Properties objects with an object_version of 0
`
`(zero).
`
`preroll: 32 bits
`
`The number of milliseconds to pre-buffer before starting playback.
`
`This member is present on all Properties objects with an
`
`object_version of 0
`
`(zero).
`
`index_offset: 32 bits
`The offset in bytes from the start of the file to the start of the
`index header object. This member is present on all Properties
`
`objects with an object_version of 0
`
`(zero).
`
`data_offset: 32 bits
`The offset in bytes from the start of the file to the start of the
`
`Data Section. This member is present on all Properties objects with
`
`an object_version of 0
`
`(zero).
`
`num_streams: 16 bits
`The number of media streams contained in the file. This member is
`
`present on all Properties objects with an object_version of 0
`(zero).
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page
`
`6
`
`too|s.ietf.org/html/draft-heftag aub-rmff-00
`
`7
`
`BTN0005743
`
`7/18
`
`BTN0005743
`
`BTN0005743
`
`7
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`flags: 16 bits
`Flags indicating characteristics of the RealMedia file. The
`
`following flags are defined:
`
`o #de fine PN_SAVE_ENABLED 0x0 0 0 1
`
`Allows clients to save a copy of the RealMedia file to disk.
`
`0 #define PN_PERFECT_PLAY_ENABLED OX0 O 0 2
`
`Allows clients to use extra buffering to ensure Perfect Play.
`
`o #de fine PN_L IVE_BROADCAST 0x0 0 0 4
`
`The RealMedia file is being generated by a live broadcast.
`
`2.3 Media Properties Header
`
`The Media Properties Header describes the specific media properties of
`
`each stream in a RealMedia File. Components of the RealMedia system use
`
`this object to configure themselves for handling the media data in each
`
`stream. There is one Media Properties Header for each media stream in a
`
`RealMedia file. The following pseudo—structure describes the Media
`Properties header:
`
`Media_Properties
`{
`
`UINT32
`UINT32
`
`UINTl6
`
`object_id;
`size;
`
`object_version;
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page
`
`7
`
`too|s.ietf.org/html/draft-heftag aub-rmff-00
`
`BTN0005744
`
`8/18
`
`BTN0005744
`
`BTN0005744
`
`8
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - Rea|Media File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`if (object_version ==
`{
`
`)
`
`UZkTl6
`UI‘T32
`
`UZNT32
`
`UZkT32
`UINT32
`
`UZkT32
`UINT32
`UZNT32
`
`UZRT8
`UINT8[stream_name_size]
`UZNT8
`
`U_kT8[mime_type_size]
`UI‘T32
`
`stream_number;
`max_bit_rate;
`
`avg_bit_rate;
`
`max_packet_size;
`avg_packet_size;
`
`start_time;
`preroll;
`duration;
`
`stream_name_size;
`stream_name;
`mime_type_size;
`
`mime_type;
`type_specific_len;
`
`UZNT8[type specific len]
`
`type_specific_data;
`
`The Media Properties Header contains the following fields:
`
`object_id: 32 bits
`The unique object ID for a Media Properties Header
`
`('MDPR').
`
`size: 32 bits
`
`The size of the Media Properties Header in bytes.
`
`object_version: 16 bits
`The version of the Media Properties Header object.
`
`stream_number: 32 bits
`(synchronization source identifier) is a unique
`The stream_number
`value that identifies a media stream. Every data packet that
`
`belongs to a media stream contains the same STREAM;NUMBER. The
`STREAM_NUMBER enables a receiver of multiple media streams to
`distinguish which packets belong to each media stream. This member
`
`is present on all MediaProperties objects with an object_version of
`0
`(zero).
`
`max_bit_rate: 32 bits
`The maximum bit rate required to deliver this stream over a
`
`network. This member is present on all MediaProperties objects
`
`with an object_version of 0
`
`(zero).
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page
`
`8
`
`too|s.ietf.org/html/draft-heftag aub-rmff-00
`
`9
`
`BTN0005745
`
`9/18
`
`BTN0005745
`
`BTN0005745
`
`9
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - Rea|Media File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`avg_bit_rate: 32 bits
`The average bit rate required to deliver this stream over a
`
`network. This member is present on all MediaProperties objects
`
`with an object_version of 0
`
`(zero).
`
`max_packet_size: 32 bits
`The largest packet size (in bytes)
`
`in the stream of media
`
`data. This member is present on all MediaProperties objects with an
`
`object_version of 0
`
`(zero).
`
`avg_packet_size: 32 bits
`in the stream of media
`The average packet size (in bytes)
`data. This member is present on all MediaProperties objects with an
`
`object_version of 0
`
`(zero).
`
`start_time: 32 bits
`The time offset in milliseconds to add to the timestamp of each
`
`packet in a media stream. This member is present on all
`
`MediaProperties objects with an object_version of 0
`
`(zero).
`
`preroll: 32 bits
`
`The time offset in milliseconds to subtract to the timestamp of
`
`each packet in a media stream. This member is present on all
`
`MediaProperties objects with an object_version of 0
`
`(zero).
`
`duration: 32 bits
`
`The duration of the stream in milliseconds. This member is present
`
`on all MediaProperties objects with an object_version of 0
`
`(zero).
`
`stream_name_size:
`
`8 bits
`
`The length of the following stream_name field in bytes. This member
`is present on all MediaProperties objects with an object_version of
`0
`(zero).
`
`stream_name: variable length
`A non—unique alias or name for the stream. This member is present
`
`on all MediaProperties objects with an object_version of 0
`
`(zero).
`
`8 bits
`mime_type_size:
`The length of the following mime_type field in bytes. This member
`
`is present on all MediaProperties objects with an object_version of
`0
`(zero).
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page
`
`9
`
`too|s.ietf.orglhtm|/draft-heftag aub-rmff-00
`
`1 0
`
`BTN0005746
`
`10/18
`
`BTN0005746
`
`BTN0005746
`
`10
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`mime_type: variable length
`A non—unique MIME style type/subtype string for data associated
`
`with the stream. This member is present on all MediaProperties
`
`objects with an object_version of 0
`
`(zero).
`
`type_specific_len: 32 bits
`The length of the following type_specific_data in bytes. The
`
`type_specific_data is typically used by the data—type renderer to
`initialize itself in order to process the media stream. This member
`
`is present on all MediaProperties objects with an object_version of
`0
`(zero).
`
`type_specific_data: variable length
`
`The type_specific_data is typically used by the data—type renderer
`to initialize itself in order to process the media stream. This
`
`member is present on all MediaProperties objects with an
`
`object_version of 0
`
`(zero).
`
`2.4 Content Description Header
`
`The Content Description Header contains the title, author, copyright,
`and comments information for the RealMedia File. All text data is in
`
`ASCII format. The following pseudo-structure describes the Content
`Description Header:
`
`Content_Description
`{
`
`UZNT32
`UINT32
`
`UINT16
`
`if (object_version == 0)
`{
`
`UINT16
`UINT8[title_len]
`
`UINT16
`UINT8[author_len]
`
`UINT16
`
`UINT8[copyright_len]
`UINT16
`
`UINT8[comment_len]
`
`}
`
`}
`
`object_id;
`size;
`
`object_version;
`
`title_len;
`title;
`
`author_len;
`author;
`
`copyright_len;
`
`copyright;
`comment_len;
`
`comment;
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page 10
`
`too|s.ietf.orglhtm|/draft-heftag aub-rmff-00
`
`1 1
`
`BTN0005747
`
`11/18
`
`BTN0005747
`
`BTN0005747
`
`11
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`The Content Description Header contains the following fields:
`
`object_id: 32 bits
`The unique object ID for the Content Description Header
`
`(‘CONT’).
`
`size: 32 bits
`
`The size of the Content Description Header in bytes.
`
`object_version: 16 bits
`The version of the Content Description Header object.
`
`title_len: 16 bits
`The length of the title data in bytes. Note that the title data is
`
`not null terminated. This member is present on all Content
`
`Description Header objects with an object_version of 0
`
`(zero).
`
`title: variable length
`
`An array of ASCII characters that represents the title information
`
`for the RealMedia file. This member is present on all Content
`
`Description Header objects with an object_version of 0
`
`(zero).
`
`author_len: 16 bits
`The length of the author data in bytes. Note that the author data
`is not null terminated. This member is present on all Content
`
`Description Header objects with an object_version of 0
`
`(zero).
`
`author: variable length
`
`An array of ASCII characters that represents the author information
`
`for the RealMedia file. This member is present on all Content
`
`Description Header objects with an object_version of 0
`
`(zero).
`
`copyright_len: 16 bits
`The length of the copyright data in bytes. Note that the copyright
`
`data is not null terminated. This member is present on all Content
`
`Description Header objects with an object_version of 0
`
`(zero).
`
`copyright: variable length
`
`An array of ASCII characters that represents the copyright
`
`information for the RealMedia file. This member is present on all
`
`Content Description Header objects with an object_version of 0
`(zero).
`
`comment_len: 16 bits
`The length of the comment data in bytes. Note that the comment data
`
`is not null terminated. This member is present on all Content
`
`Description Header objects with an object_version of 0
`
`(zero).
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page 11
`
`too|s.ietf.orglhtm|/draft-heftag aub-rmff-00
`
`1 2
`
`BTN0005748
`
`12/18
`
`BTN0005748
`
`BTN0005748
`
`12
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`comment: variable length
`An array of ASCII characters that represents the comment
`
`information for the RealMedia file. This member is present on all
`
`Content Description Header objects with an object_Version of 0
`(zero).
`
`3. Data Section
`
`The data section of the RealMedia file consists of a Data Section Header
`
`that describes the contents of the data section,
`
`followed by a series of
`
`interleaved media data packets. Note that the size field of the Data
`
`Chunk Header is the size of the entire data chunk,
`data packets.
`
`including the media
`
`3.1 Data Chunk Header
`
`The Data Chunk Header marks the start of the data chunk. There is
`
`usually only one data chunk in a RealMedia file, however for extremely
`
`large files there may be multiple data chunks. The following
`
`pseudo—structure describes the Data chunk header:
`
`Data_Chunk_Header
`{
`
`UINT32
`UINT32
`
`UINT16
`
`if (object_Version == 0)
`{
`
`UINT32
`
`UINT32
`
`object_id;
`size;
`
`object_version;
`
`num;packets;
`
`next_data_header;
`
`The Data Chunk Header contains the following fields:
`
`object_id: 32 bits
`The unique object ID for the Data Chunk Header
`
`(‘DATA’).
`
`size: 32 bits
`
`The size of the Data Chunk in bytes.
`
`object_version: 16 bits
`The version of the Data Chunk Header object.
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page 12
`
`too|s.ietf.orglhtm|/draft-heftag aub-rmff-00
`
`1 3
`
`BTN0005749
`
`13/18
`
`BTN0005749
`
`BTN0005749
`
`13
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`num;packets: 32 bits
`Number of packets in the data chunk. This member is present on all
`
`Data Chunk Header objects with an object_version of 0
`
`(zero).
`
`next_data_header: 32 bits
`Offset from start of file to the next data chunk. This field is not
`
`typically used. This member is present on all Data Chunk Header
`
`objects with an object_version of 0
`
`(zero).
`
`3.2 Data Packet Header
`
`The data section of a RealMedia file consists of a series of interleaved
`
`data objects. Each data object contains a packet of data for a media
`stream. Because a RealMedia file can contain numerous media streams,
`
`data objects for each stream are interleaved. The following
`
`pseudo—structure describes the details of each interleaved packet:
`
`Media_Packet_Header
`{
`
`UINTl6
`
`object_version;
`
`if (object_version ==
`{
`
`)
`
`UINTl6
`
`UINTl6
`UINT32
`UZNT8
`
`length;
`
`stream_number;
`timestamp;
`reserved;
`
`UZNT8
`UINT8[length]
`
`flags;
`data;
`
`The Media Packet Header contains the following fields:
`
`l6 bits
`object_version:
`The version of the Media Packet Header object.
`
`length: 16 bits
`
`The length of the packet in bytes. This member is present on all
`
`Media Packet Header objects with an object_version of 0
`
`(zero).
`
`l6 bits
`stream_number;
`The 16-bit alias used to associate data packets with their
`
`associated Media Properties Header. This member is present on all
`
`Media Packet Header objects with an object_version of 0
`
`(zero).
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page 13
`
`too|s.ietf.org/html/draft-heftagaub-rmff-00
`
`1 4
`
`BTN0005750
`
`14/18
`
`BTN0005750
`
`BTN0005750
`
`14
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`timestamp: 32 bits
`The timestamp of the packet in milliseconds This member is present
`
`on all Media Packet Header objects with an object_version of 0
`(zero).
`
`reserved:
`
`8 bits
`
`This is not used. This member is present on all Media Packet Header
`
`objects with an object_version of 0
`
`(zero).
`
`flags:
`
`l6 bits
`
`Flags describing the properties of the packet. The following flags
`are defined:
`
`o #define PN_RELIABLE_FLAG OxOOOl
`
`If this flag is set,
`
`the packet is delivered reliably.
`
`0 #define PN_KEYFRAME_FLAG OXOOO2
`
`If this flag is set,
`
`the packet is part of a key frame or in
`
`some way marks a boundary in your data stream.
`
`This member is present on all Media Packet Header objects with an
`
`object_version of 0
`
`(zero).
`
`data: variable length
`
`The application—specific media data. This member is present on all
`
`Media Packet Header objects with an object_version of 0
`
`(zero).
`
`4.
`
`Index Section
`
`The index section of the RealMedia file consists of a Index Chunk Header
`
`followed by a series
`that describes the contents of the index section,
`of index records. Note that the size field of the Index Chunk Header is
`
`the size of the entire index chunk,
`
`including the index records.
`
`4.1 Index Section Header
`
`The Index Chunk Header marks the start of the index chunk. There is
`
`usually one index chunk per stream in a RealMedia file. The following
`
`pseudo—structure describes the Index chunk header.
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page 14
`
`too|s.ietf.orglhtm|/draft-heftag aub-rmff-00
`
`1 5
`
`BTN0005751
`
`15/18
`
`BTN0005751
`
`BTN0005751
`
`15
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - RealMedia File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`Index_Chunk_Header
`{
`
`u_int32
`u_int32
`
`u_intl6
`
`if (object_version == 0)
`{
`
`u_int32
`u_int16
`
`u_int32
`
`object_id;
`size;
`
`object_version;
`
`num_indices;
`stream_number;
`
`next_index_header;
`
`The Index Chunk Header contains the following fields:
`
`object_id: 32 bits
`The unique object ID for the Index Chunk Header
`
`('INDX‘).
`
`size: 32 bits
`
`The size of the Index Chunk in bytes.
`
`object_version: 16 bits
`The version of the Index Chunk Header object.
`
`num_indices: 32 bits
`Number of index records in the index chunk. This member is present
`
`on all Index Chunk Header objects with an object_version of 0
`(zero).
`
`stream_number: 16 bits
`The stream number for which the index records in this index chunk
`
`are associated. This member is present on all Index Chunk Header
`
`objects with an object_version of 0
`
`(zero).
`
`next_index_header: 32 bits
`Offset from start of file to the next index chunk. This field lets
`
`RealMedia file format readers find all the index chunks
`
`quickly. This member is present on all Index Chunk Header objects
`
`with an object_version of 0
`
`(zero).
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page 15
`
`too|s.ietf.orglhtm|/draft-heftag aub-rmff-00
`
`1 6
`
`BTN0005752
`
`16/18
`
`BTN0005752
`
`BTN0005752
`
`16
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - Rea|Media File Format
`
`INTERNET-DRAFT
`
`RTSP
`
`March 13, 1998
`
`4.2 Index Record
`
`The index section of a RealMedia file consists of a series of index
`
`record objects. Each index record contains information for quickly
`
`finding a packet of a particular time stamp for a media stream. The
`
`following pseudo—structure describes the details of each index record:
`
`IndexRecord
`
`{
`
`UINTl6
`
`object_version;
`
`if (object_version ==
`{
`
`)
`
`u_int32
`u_int32
`
`u_int32
`
`timestamp;
`offset;
`
`packet_count_for_this_packet;
`
`An Index Record contains the following fields:
`
`object_version: 16 bits
`The version of the Index Record object.
`
`timestamp; 32 bits
`
`The timestamp in milliseconds associated with this record. This
`
`member is present on all Index Record objects with an
`
`object_version of 0
`
`(zero).
`
`offset: 32 bits
`
`The offset from the start of the file at which this packet can be
`
`found. This member is present on all Index Record objects with an
`
`object_version of 0
`
`(zero).
`
`packet_count_for_this_packet: 32 bits
`The packet number of the packet for this record. This is the same
`
`number of packets that would have been seen had the file been
`
`played from the beginning to this point. This member is present on
`
`all Index Record objects with an object_version of 0
`
`(zero).
`
`R. Agarwal, J. Ayars, B. Hefta—Gaub, D. Stammen
`
`Page 16
`
`too|s.ietf.orglhtm|/draft-heftag aub-rmff-00
`
`1 7
`
`BTN0005753
`
`17/18
`
`BTN0005753
`
`BTN0005753
`
`17
`
`
`
`10/2/13
`
`draft-heftag aub-rmff-00 - Rea|Media File Format
`
`too|s.ietf.org/html/draft-heftagaub-rmff-00
`
`1 8
`
`BTN0005754
`
`18/18
`
`BTN0005754
`
`BTN0005754
`
`18