Passa al contenuto principale

13.3 Example of Robust Packet Scheduling (Esempio di pianificazione robusta dei pacchetti)

13.3. Example of Robust Packet Scheduling (Esempio di pianificazione robusta dei pacchetti)

Segue un esempio di pianificazione robusta dei pacchetti. Il sistema di comunicazione usato nell'esempio comprende i seguenti componenti nell'ordine in cui il video è elaborato dalla sorgente alla destinazione:

  • telecamera e acquisizione,
  • buffer pre-codifica,
  • codificatore,
  • buffer delle immagini codificate,
  • trasmettitore,
  • canale di trasmissione,
  • ricevitore,
  • buffer del ricevitore,
  • decodificatore,
  • buffer delle immagini decodificate,
  • visualizzazione.

Il sistema di comunicazione video in questo esempio opera come segue. La elaborazione del flusso video avviene gradualmente e contemporaneamente in tutti i componenti. La sequenza video sorgente viene ripresa e acquisita in un buffer pre-codifica. Il buffer pre-codifica può servire per ordinare le immagini dall'ordine di campionamento a quello di codifica o per analizzare più fotogrammi non compressi per il controllo del bitrate, ad esempio. In alcuni casi il buffer pre-codifica può non esistere; le immagini campionate vengono codificate subito. Il codificatore codifica le immagini dal buffer pre-codifica e memorizza l'uscita (immagini codificate) nel buffer delle immagini codificate. Il trasmettitore incapsula le immagini codificate in pacchetti di trasmissione e li invia al ricevitore tramite un canale. Il ricevitore memorizza i pacchetti ricevuti nel buffer del ricevitore. Il processo di bufferizzazione include tipicamente la compensazione del jitter di ritardo di trasmissione. Il buffer del ricevitore può anche servire a ripristinare l'ordine di decodifica corretto dei dati codificati. Il decodificatore legge i dati codificati dal buffer del ricevitore e produce immagini decodificate nel buffer delle immagini decodificate. Quest'ultimo serve a ripristinare l'ordine di uscita (o di visualizzazione). Infine le immagini vengono mostrate.

Nelle figure seguenti, I indica un'immagine IDR, R un'immagine di riferimento, N un'immagine non di riferimento, e il numero dopo I, R o N indica il tempo di campionamento relativo all'immagine IDR precedente nell'ordine di decodifica. I valori sotto la sequenza di immagini sono timestamp scalati dell'orologio di sistema. L'orologio è inizializzato arbitrariamente in questo esempio e il tempo scorre da sinistra a destra. Ogni immagine I, R e N è mappata sulla stessa linea temporale rispetto al passo di elaborazione precedente, se esiste, assumendo che codifica, trasmissione e decodifica non richiedano tempo. Gli eventi simultanei si trovano nella stessa colonna in tutte le figure.

Un sottoinsieme di una sequenza di immagini codificate è rappresentato sotto in ordine di campionamento.

    ...  N58 N59 I00 N01 N02 R03 N04 N05 R06 ... N58 N59 I00 N01 ...
... --|---|---|---|---|---|---|---|---|- ... -|---|---|---|- ...
... 58 59 60 61 62 63 64 65 66 ... 128 129 130 131 ...

Figura 16. Sequenza di immagini in ordine di campionamento

Le immagini campionate sono bufferizzate nel buffer pre-codifica per ordinarle secondo l'ordine di codifica. In questo esempio assumiamo che le immagini non di riferimento siano predette sia dall'immagine di riferimento precedente sia da quella successiva nell'ordine di uscita, tranne le immagini non di riferimento immediatamente precedenti a un'immagine IDR, predette solo dall'immagine di riferimento precedente nell'ordine di uscita. Il buffer pre-codifica deve quindi contenere almeno due immagini, e la bufferizzazione introduce un ritardo di due intervalli di immagine. L'uscita del processo di buffer pre-codifica e l'ordine di codifica (e decodifica) sono i seguenti:

   ... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
... -|---|---|---|---|---|---|---|---|- ...
... 60 61 62 63 64 65 66 67 68 ...

Figura 17. Immagini riordinate nel buffer pre-codifica

Il codificatore o il trasmettitore possono impostare il DON di ogni immagine al DON dell'immagine precedente nell'ordine di decodifica più uno.

Per semplicità, assumiamo che:

  • il frame rate della sequenza sia costante,
  • ogni immagine consista in una sola slice,
  • ogni slice sia incapsulata in un singolo pacchetto NAL unit,
  • non vi sia ritardo di trasmissione, e
  • le immagini siano trasmesse a intervalli costanti (cioè 1 / (frame rate)).

Quando le immagini sono trasmesse in ordine di decodifica, vengono ricevute come segue:

   ... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
... -|---|---|---|---|---|---|---|---|- ...
... 60 61 62 63 64 65 66 67 68 ...

Figura 18. Immagini ricevute in ordine di decodifica

Il parametro di tipo media OPZIONALE sprop-interleaving-depth è impostato a 0, poiché l'ordine di trasmissione (o ricezione) coincide con l'ordine di decodifica.

Inizialmente il decodificatore deve bufferizzare per un intervallo di immagine nel buffer delle immagini decodificate per passare dall'ordine di decodifica a quello di uscita:

   ... N58 N59 I00 N01 N02 R03 N04 N05 R06 ...
... -|---|---|---|---|---|---|---|---|- ...
... 61 62 63 64 65 66 67 68 69 ...

Figura 19. Ordine di uscita

La quantità di buffer iniziale richiesta nel buffer delle immagini decodificate può essere segnalata nel messaggio SEI del periodo di bufferizzazione o con l'elemento sintattico num_reorder_frames delle informazioni di usabilità video H.264. num_reorder_frames indica il numero massimo di fotogrammi, coppie complementari di campi o campi non accoppiati che nella sequenza precedono un qualsiasi fotogramma, coppia o campo nell'ordine di decodifica e lo seguono nell'ordine di uscita. Per semplicità assumiamo che num_reorder_frames indichi il buffer iniziale nel buffer delle immagini decodificate. In questo esempio num_reorder_frames è uguale a 1.

Si osserva che se l'immagine IDR I00 viene persa durante la trasmissione e viene emessa una richiesta di ritrasmissione quando l'orologio di sistema vale 62, resta un intervallo di immagine (fino a quando l'orologio raggiunge il timestamp 63) per ricevere l'immagine IDR I00 ritrasmessa.

Supponiamo poi che le immagini IDR siano trasmesse due intervalli di fotogramma prima della posizione di decodifica:

   ...  I00 N58 N59 R03 N01 N02 R06 N04 N05 ...
... --|---|---|---|---|---|---|---|---|- ...
... 62 63 64 65 66 67 68 69 70 ...

Figura 20. Interlacciamento: immagini IDR anticipate nell'ordine di invio

Il parametro OPZIONALE sprop-interleaving-depth è impostato a 1 secondo la definizione. (Il valore in questo esempio si ottiene così: I00 è l'unica immagine che precede N58 o N59 nell'ordine di trasmissione e le segue nell'ordine di decodifica. Salvo I00, N58 e N59, l'ordine di trasmissione coincide con l'ordine di decodifica. Poiché un'immagine codificata è incapsulata in esattamente una NAL unit, sprop-interleaving-depth è uguale al numero massimo di immagini che precedono un'immagine in ordine di trasmissione e la seguono in ordine di decodifica.)

Il processo di buffer del ricevitore contiene due immagini alla volta secondo sprop-interleaving-depth e riordina dall'ordine di ricezione a quello di decodifica corretto in base al DON. L'uscita è:

   ... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
... -|---|---|---|---|---|---|---|---|- ...
... 63 64 65 66 67 68 69 70 71 ...

Figura 21. Interlacciamento: buffer del ricevitore

Ancora, serve un ritardo iniziale di un intervallo di immagine per passare dall'ordine di decodifica a quello di uscita:

    ... N58 N59 I00 N01 N02 R03 N04 N05 ...
... -|---|---|---|---|---|---|---|- ...
... 64 65 66 67 68 69 70 71 ...

Figura 22. Interlacciamento: buffer del ricevitore dopo il riordino

Si noti che il ritardo massimo che le immagini IDR possono subire in trasmissione, incluse eventuali ritrasmissioni a livello applicazione, trasporto o collegamento, è pari a tre intervalli di immagine. La resilienza alle perdite delle immagini IDR migliora quindi nei sistemi con ritrasmissione rispetto al caso in cui le immagini siano trasmesse nel loro ordine di decodifica.