Subject: [AVT] MPEG-4 RTP payload format

From: [email-masked]
Date: Tue, 25 Sep 2001 17:52:42 +0200

Dear AVTers, MPEG-SYSTEMers

In London I mentionned that the last unfinished point
in the MPEG-4 generic RTP payload format was the
final text for the interleaving section.

Here it is, please comment,

NB: 3.8.1 correspond to the technique described in Jan's draft and used by ISMA 1.0.

********************************************************************************************
********************************************************************************************

3.8 Interleaving

SL Packets MAY be interleaved. Senders MAY perform interleaving.
Receivers MUST support interleaving.

The AUSequenceNumber field of the SL header MUST NOT be used for
interleaving since firstly it may collide with the Scene Description
Carousel usage described in section 5.2 and secondly it is not
visible to non-MPEG-4 system receivers.

When interleaving of SL packets is used it SHALL be implemented
using the IndexDelta fields of MSLH. Senders MUST use
properly large values for IndexDeltaLength,
as required by the interleaving algorithm.

Senders SHALL use non zero values of IndexDeltaLength
only for streams that MAY exhibit interleaving, so that this
CAN be interpreted by receivers as an indication that
interleaving may be present.

There are, based on this, two ways for a receiver to implement
de-interleaving, using either Index or timestamps. This is signaled
using mime parameters as in the following table:

=======================================================================
|                | IndexDeltaLength = 0 |   IndexDeltaLength !=  0    |
-----------------------------------------------------------------------
| IndexLength=0  |    no interleaving   |    TS based interleaving    |
-----------------------------------------------------------------------
| IndexLength!=0 |    no interleaving,  |   Index=0    |  Index!=0    |
|                |    SL.packetSeqNum   |------------------------------
|                |    transport         | TS based     | Index based  |
|                |                      | interleaving | interleaving |
=======================================================================

3.8.1 De-interleaving using time stamps

The conjunction of RTP time stamp, IndexDelta and CTS
may allow a receiver to un-ambiguously re-order SL packets
based on their time stamps (CTS).

This is possible and efficient for streams where SL packets transport complete Access Units
and the CTS of each Access Unit can always be computed by the receiver.

In case of Access Units of constant duration (e.g. audio streams)
the explicit presence of CTS in MSLH is not even required.
Indeed then we have (i being the index of SL packets in one RTP packet):
CTS(0) = RTP-TS
for (i >= 1): CTS(i) = CTS(i-1) + (IndexDelta(i)+1)*AU-duration
AU-duration, when constant, can be either signaled in SLConfig or be
deduced from the decoder configuration (see the config MIME parameter).

Senders MUST use either IndexLength=0 or set all
Index values in all packets to zero so that receivers
CAN detect this as an indication that de-interleaving
SHOULD be performed using time stamps.

In cases where CTS is transported in MSLH
senders MUST use properly large values for SL.timeStampLength
when interleaving (in order to prevent the CTS from rolling over).
Pre-existing SL streams that do not comply with this requirement
cannot be interleaved using this payload format (or by using 3.8.2)

3.8.2 De-interleaving using Index

If the AU duration is not constant  (SLConfigDescriptor.durationFlag = 0)
and CTS is not signaled  (SLConfigDescriptor.useTimeStampsFlag= 0)
or SL packets transport AU fragments, then the timestamp-based
de-interleaving algorithm described in 3.8.1. would not work
because a CTS cannot always be computed for all SL packets
(for example after a packet loss).

When interleaving, senders of such streams MUST use the technique described in this section.

The conjunction of RTP sequence number, Index and IndexDelta can
produce a quasi-unique identifier for each SL packet so that a
receiver can unambiguously reconstruct the original order even in
case of out-of-order packets, packet loss or duplication
(see the pseudo code in 3.4.1 and 5.1).

This requires, however, that  IndexLength is not too small.
For that reason senders MUST use properly large values for IndexLength
when interleaving in this fashion.
Pre-existing SL streams that do not comply with this requirement
(specifically if SL.packetSeqNumLength is too small)
cannot be interleaved using this payload format
(or by using 3.8.1).

Receivers CAN interpret non zero values in the Index field
as an indication that de-interleaving CAN be performed using
Index and IndexDelta and CANNOT be performed using
timestamps.

3.8.3 SL streams that cannot be interleaved

SL streams for which both SL.timeStampLength and SL.packetSeqNumLength are too small
cannot be interleaved with this payload format.

*************************************************************************************

Regards,

Philippe Gentric
Software architect
Philips Digital Networks - MP4Net
51 rue Carnot B.P. 301
92156 Suresnes FRANCE
tel: +33(0)147283740
fax: +33(0)147283725
[email-masked]
http://www.mpeg-4.philips.com

_______________________________________________
Audio/Video Transport Working Group
[email-masked]
http://www1.ietf.org/mailman/listinfo/avt