4. Format de charge utile de retransmission
Le format d'un paquet de retransmission est illustré ci-dessous :
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OSN | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| Original RTP Packet Payload |
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
L'usage de l'en-tête RTP est le suivant :
En cas de multiplexage par session, la même valeur SSRC MUST être utilisée pour le flux d'origine et le flux de retransmission. En cas de collision SSRC dans la session d'origine ou dans la session de retransmission, la spécification RTP exige qu'un paquet RTCP BYE MUST soit envoyé dans la session où la collision s'est produite. En outre, un paquet RTCP BYE MUST aussi être envoyé pour le flux associé dans sa propre session. Après obtention d'un nouvel identifiant SSRC, le SSRC des deux flux MUST être fixé à cette valeur.
En cas de multiplexage par SSRC, deux valeurs SSRC différentes MUST être utilisées pour le flux d'origine et le flux de retransmission, comme l'exige RTP. Si une collision SSRC est détectée pour le flux d'origine ou le flux de retransmission, la spécification RTP exige qu'un paquet RTCP BYE MUST soit envoyé pour ce flux. Un paquet RTCP BYE MUST NOT être envoyé pour le flux associé. Seul le flux qui a subi la collision SSRC MUST donc choisir une nouvelle valeur SSRC. Se reporter à la section 5.3 pour les implications sur l'association SSRC flux d'origine / flux de retransmission côté récepteur.
Pour l'un ou l'autre schéma de multiplexage, le numéro de séquence a la définition habituelle ; c'est-à-dire qu'il MUST être supérieur d'une unité au numéro de séquence du paquet précédent envoyé dans le flux de retransmission.
L'horodatage du paquet de retransmission MUST être fixé à l'horodatage d'origine, c'est-à-dire à l'horodatage du paquet d'origine. Par conséquent, l'horodatage RTP initial pour le premier paquet du flux de retransmission n'est pas aléatoire mais égal à l'horodatage d'origine du premier paquet retransmis. Voir la section Considérations de sécurité du présent document pour les implications en matière de sécurité.
Les implémentateurs doivent savoir que la valeur de gigue RTCP pour le flux de retransmission ne reflète pas la gigue réelle du réseau, car il peut y avoir peu de corrélation entre l'instant où un paquet est retransmis et son horodatage d'origine.
Le type de charge utile est dynamique. Si plusieurs types de charge utile utilisant la retransmission sont présents dans le flux d'origine, alors pour chacun d'eux un type de charge utile dynamique MUST être mappé au format de charge utile de retransmission. Voir la section 8.1 pour la spécification de la façon dont le mappage entre types de charge utile d'origine et de retransmission est effectué avec le Session Description Protocol (SDP).
Comme l'horodatage du paquet de retransmission porte l'horodatage média d'origine, la fréquence d'horodatage utilisée par le type de charge utile de retransmission MUST être la même que celle utilisée par le type de charge utile d'origine associé. Par conséquent, si un flux RTP transporte des types de charge utile à fréquences d'horodatage différentes, il en ira de même pour le flux de retransmission associé. Noter qu'un flux RTP ne transporte en général pas des types de charge utile à fréquences d'horodatage différentes.
La charge utile du paquet RTP de retransmission comprend l'en-tête de charge utile de retransmission suivi de la charge utile du paquet RTP d'origine. La longueur de l'en-tête de charge utile de retransmission est de 2 octets. Cet en-tête de charge utile ne contient qu'un seul champ, OSN (original sequence number, numéro de séquence d'origine), qui MUST être fixé au numéro de séquence du paquet RTP d'origine associé. La charge utile du paquet RTP d'origine, y compris d'éventuels en-têtes de charge utile propres au type de charge utile d'origine, MUST être placée juste après l'en-tête de charge utile de retransmission.
Pour les formats de charge utile qui prennent en charge l'encodage à plusieurs débits, au lieu de retransmettre la même charge utile que le paquet RTP d'origine, l'émetteur MAY retransmettre les mêmes données encodées à un débit inférieur. Cela vise à limiter l'usage de bande passante du flux de retransmission. Ce faisant, l'émetteur MUST s'assurer que le récepteur pourra toujours décoder la charge utile des paquets d'origine déjà envoyés qui auraient pu être encodés sur la base de la charge utile du paquet d'origine perdu. En outre, si l'émetteur choisit de retransmettre à un débit inférieur, les valeurs dans l'en-tête de charge utile du paquet RTP d'origine peuvent ne plus s'appliquer au paquet de retransmission et peuvent devoir être modifiées dans le paquet de retransmission pour refléter le changement de débit. L'émetteur SHOULD arbitrer la diminution de l'usage de bande passante avec la baisse de qualité causée par un renvoi à débit inférieur.
Si l'en-tête RTP d'origine portait des extensions propres au profil, le paquet de retransmission SHOULD inclure les mêmes extensions immédiatement après l'en-tête RTP fixe, comme attendu par les applications s'exécutant sous ce profil. Dans ce cas, l'en-tête de charge utile de retransmission MUST être placé après les extensions propres au profil.
Si l'en-tête RTP d'origine portait une extension d'en-tête RTP, le paquet de retransmission SHOULD porter la même extension d'en-tête. Cette extension d'en-tête MUST être placée juste après l'en-tête RTP fixe, comme spécifié dans RTP [3]. Dans ce cas, l'en-tête de charge utile de retransmission MUST être placé après l'extension d'en-tête.
Si le paquet RTP d'origine contenait du bourrage RTP, ce bourrage MUST être retiré avant de construire le paquet de retransmission. Si un bourrage du paquet de retransmission est nécessaire, le bourrage MUST être effectué comme pour tout paquet RTP et le bit de bourrage MUST être positionné.
Le bit marqueur (M), le compteur CSRC (CC) et la liste CSRC de l'en-tête RTP d'origine MUST être copiés tels quels dans l'en-tête RTP du paquet de retransmission.