Passa al contenuto principale

4. Formato di payload per la ritrasmissione

Il formato di un pacchetto di ritrasmissione è illustrato di seguito:

 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'uso dell'intestazione RTP è il seguente:

Nel caso di session-multiplexing, MUST essere usato lo stesso valore SSRC per il flusso originale e il flusso di ritrasmissione. In caso di collisione SSRC nella sessione originale o in quella di ritrasmissione, la specifica RTP richiede che un pacchetto RTCP BYE MUST sia inviato nella sessione in cui si è verificata la collisione. Inoltre, un pacchetto RTCP BYE MUST essere inviato anche per il flusso associato nella propria sessione. Dopo aver ottenuto un nuovo identificatore SSRC, lo SSRC di entrambi i flussi MUST essere impostato a questo valore.

Nel caso di SSRC-multiplexing, MUST essere usati due valori SSRC diversi per il flusso originale e il flusso di ritrasmissione, come richiesto da RTP. Se si rileva una collisione SSRC per il flusso originale o per quello di ritrasmissione, la specifica RTP richiede che un pacchetto RTCP BYE MUST sia inviato per questo flusso. Un pacchetto RTCP BYE MUST NOT essere inviato per il flusso associato. Pertanto, solo il flusso che ha subito la collisione SSRC MUST scegliere un nuovo valore SSRC. Si rimanda alla sezione 5.3 per le implicazioni sull'associazione SSRC tra flusso originale e flusso di ritrasmissione al ricevente.

Per entrambi gli schemi di multiplexing, il numero di sequenza ha la definizione standard; cioè, MUST essere di uno superiore al numero di sequenza del pacchetto precedente inviato nel flusso di ritrasmissione.

Il timestamp del pacchetto di ritrasmissione MUST essere impostato al timestamp originale, cioè al timestamp del pacchetto originale. Di conseguenza, il timestamp RTP iniziale per il primo pacchetto del flusso di ritrasmissione non è casuale ma uguale al timestamp originale del primo pacchetto che viene ritrasmesso. Si veda la sezione Considerazioni di sicurezza in questo documento per le implicazioni di sicurezza.

Chi implementa deve essere consapevole che il valore di jitter RTCP per il flusso di ritrasmissione non riflette il jitter effettivo della rete, poiché può esserci poca correlazione tra il momento in cui un pacchetto è ritrasmesso e il suo timestamp originale.

Il tipo di payload è dinamico. Se nel flusso originale sono presenti più tipi di payload che usano la ritrasmissione, per ciascuno di essi un tipo di payload dinamico MUST essere mappato sul formato di payload per la ritrasmissione. Si veda la sezione 8.1 per la specifica di come la mappatura tra tipi di payload originali e di ritrasmissione viene effettuata con Session Description Protocol (SDP).

Poiché il timestamp del pacchetto di ritrasmissione porta il timestamp del media originale, la frequenza di clock del timestamp usata dal tipo di payload di ritrasmissione MUST essere la stessa usata dal tipo di payload originale associato. Pertanto, se un flusso RTP trasporta tipi di payload con frequenze di clock diverse, lo stesso varrà per il flusso di ritrasmissione associato. Si noti che di solito un flusso RTP non trasporta tipi di payload con frequenze di clock diverse.

Il payload del pacchetto RTP di ritrasmissione comprende l'intestazione di payload per la ritrasmissione seguita dal payload del pacchetto RTP originale. La lunghezza dell'intestazione di payload per la ritrasmissione è di 2 ottetti. Questa intestazione di payload contiene un solo campo, OSN (original sequence number, numero di sequenza originale), che MUST essere impostato al numero di sequenza del pacchetto RTP originale associato. Il payload del pacchetto RTP originale, incluse eventuali intestazioni di payload specifiche del tipo di payload originale, MUST essere posto subito dopo l'intestazione di payload per la ritrasmissione.

Per formati di payload che supportano la codifica a più bitrate, invece di ritrasmettere lo stesso payload del pacchetto RTP originale il mittente MAY ritrasmettere gli stessi dati codificati a bitrate inferiore. Ciò mira a limitare l'uso di banda del flusso di ritrasmissione. In tal caso, il mittente MUST garantire che il ricevente sia ancora in grado di decodificare il payload dei pacchetti originali già inviati che potrebbero essere stati codificati in base al payload del pacchetto originale perso. Inoltre, se il mittente sceglie di ritrasmettere a bitrate inferiore, i valori nell'intestazione di payload del pacchetto RTP originale potrebbero non essere più applicabili al pacchetto di ritrasmissione e potrebbero dover essere modificati nel pacchetto di ritrasmissione per riflettere il cambio di bitrate. Il mittente SHOULD bilanciare la riduzione dell'uso di banda con la riduzione di qualità causata dal reinvio a bitrate inferiore.

Se l'intestazione RTP originale portava estensioni specifiche del profilo, il pacchetto di ritrasmissione SHOULD includere le stesse estensioni subito dopo l'intestazione RTP fissa, come atteso dalle applicazioni che operano sotto questo profilo. In questo caso, l'intestazione di payload per la ritrasmissione MUST essere posta dopo le estensioni specifiche del profilo.

Se l'intestazione RTP originale portava un'estensione dell'intestazione RTP, il pacchetto di ritrasmissione SHOULD portare la stessa estensione dell'intestazione. Questa estensione dell'intestazione MUST essere posta subito dopo l'intestazione RTP fissa, come specificato in RTP [3]. In questo caso, l'intestazione di payload per la ritrasmissione MUST essere posta dopo l'estensione dell'intestazione.

Se il pacchetto RTP originale conteneva padding RTP, tale padding MUST essere rimosso prima di costruire il pacchetto di ritrasmissione. Se è necessario padding del pacchetto di ritrasmissione, il padding MUST essere effettuato come per qualsiasi pacchetto RTP e il bit di padding MUST essere impostato.

Il bit marker (M), il conteggio CSRC (CC) e l'elenco CSRC dell'intestazione RTP originale MUST essere copiati così come sono nell'intestazione RTP del pacchetto di ritrasmissione.