Additional sub-formats

Background

There is currently only one sub-format defined in addition to the three previously described sub-formats, namely the multi packet sub-format. A multi packet is a simple wrapper of other sub-formats. The multi packet can thus contain one or more single packets. The only two types of single packets that are now defined are the video stream packet sub-format and the audio stream packet sub-format. These two sub-formats are thus also single packet types that can be contained within a multi packet. The video block sub-format is not a single-packet type and thus can not be wrapped into a multi packet. Only one packet of each of the single packet type can be contained in the same multi packet. A multi packet must contain at least one packet. The multi packet sub-format is identified by the header data type being 0xFEF0 and is defined in more detail in the following.

Note:
Currently, multi packet wrapping is not used that much and should only occur for video streams where each video stream packet is send wrapped into a multi packet without any other single packets in the same multi packet and thus only containing one packet.

Multi-packets

The multi packet sub-format header is shown in the related figure below. The header layout is fixed, and so is the length of the header being 16 bytes long. The illustration given in the example below shows the basic principle of the wrapping of several different single packets inside one multi packet.

MultiPacketHeader.png

Illustration of the multi packet sub-format header.

The different header fields of the multi packet sub-format header is briefly described in the following.

'Data type'
The data type for a multi packet header is equal to 0xFEF0, and no other value is used to indicate the multi packet sub-format.
'Total length'
This field contains the total length in bytes of the entire multi packet and thus including the length of all contained packets. The length includes the length of the full multi packet header (and thus including this and the previous header field). The field is an unsigned 32-bit value, which means that no multi packet can be span more than (2^32)-1 bytes, and thus the single packets contained in the multi packet must each be shorter than this maximum.
'Packet count'
This 16-bit unsigned number indicates the actual number of single packets contained within the multi packet. This value must not be equal to 0x0000. The maximum number of packets allowed in a multi packet can not exceed (2^16)-1 single packets but in practice this number will be much lower.
'Time stamp (MultiPacket)'
This field is represented by a 64-bit (unsigned) value that indicates an absolute time stamp associated with the multi packet. The time stamp value is in the same format as that of the time stamps for e.g. video stream packets, i.e. the absolute number of milliseconds since the Unix time epoch in UTC. The time stamp is common for all contained single packets. The interpretation of the time stamp and the contained single packets (and their time stamps) is not defined and is thus reserved.

MultiPacketExample.png

Simple illustration of a multi packet wrapping three different single packet types.