13.3 Example of Robust Packet Scheduling (Beispiel für robuste Paketplanung)
13.3. Example of Robust Packet Scheduling (Beispiel für robuste Paketplanung)
Im Folgenden ein Beispiel für robuste Paketplanung. Das verwendete Kommunikationssystem besteht aus den folgenden Komponenten in der Reihenfolge der Videoverarbeitung von Quelle zu Senke:
- Kamera und Aufnahme,
- Vorcodierpuffer,
- Encoder,
- Puffer für codierte Bilder,
- Sender,
- Übertragungskanal,
- Empfänger,
- Empfangspuffer,
- Decoder,
- Puffer für decodierte Bilder,
- Anzeige.
Das Videokommunikationssystem in diesem Beispiel arbeitet wie folgt. Die Verarbeitung des Videostroms erfolgt schrittweise und gleichzeitig in allen Komponenten. Die Quell-Videosequenz wird aufgenommen und in einen Vorcodierpuffer geschrieben. Der Vorcodierpuffer kann dazu dienen, Bilder von der Abtastreihenfolge in die Codierreihenfolge zu bringen oder mehrere unkomprimierte Frames zur Bitratensteuerung zu analysieren. In manchen Fällen gibt es keinen Vorcodierpuffer; die abgetasteten Bilder werden sofort codiert. Der Encoder codiert Bilder aus dem Vorcodierpuffer und legt die Ausgabe (codierte Bilder) im Puffer für codierte Bilder ab. Der Sender kapselt die codierten Bilder in Übertragungspakete und sendet sie über einen Kanal an den Empfänger. Der Empfänger speichert die empfangenen Pakete im Empfangspuffer. Dazu gehört typisch Puffern für Jitter der Übertragungsverzögerung. Der Empfangspuffer kann auch genutzt werden, um die korrekte Dekodierreihenfolge wiederherzustellen. Der Decoder liest codierte Daten aus dem Empfangspuffer und schreibt decodierte Bilder in den Puffer für decodierte Bilder. Letzterer dient der Wiederherstellung der Ausgabe- (oder Anzeige-) Reihenfolge. Schließlich werden die Bilder angezeigt.
In den folgenden Beispielabbildungen bezeichnet I ein IDR-Bild, R ein Referenzbild, N ein Nicht-Referenzbild, und die Zahl nach I, R oder N die Abtastzeit relativ zum vorhergehenden IDR-Bild in Dekodierreihenfolge. Werte unter der Bildsequenz sind skalierte Systemzeittempel. Die Systemuhr wird in diesem Beispiel willkürlich initialisiert; die Zeit läuft von links nach rechts. Jedes I-, R- und N-Bild wird – sofern es eine vorherige Verarbeitungsstufe gibt – auf dieselbe Zeitachse abgebildet, unter der Annahme, dass Codierung, Übertragung und Dekodierung keine Zeit benötigen. Ereignisse zur gleichen Zeit stehen in allen Abbildungen in derselben Spalte.
Ein Ausschnitt einer Sequenz codierter Bilder ist unten in Abtastreihenfolge dargestellt.
... 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 ...
Abbildung 16. Bildsequenz in Abtastreihenfolge
Die abgetasteten Bilder werden im Vorcodierpuffer für die Codierreihenfolge umgeordnet. Wir nehmen an, dass Nicht-Referenzbilder sowohl vom vorherigen als auch vom nächsten Referenzbild in Ausgabereihenfolge vorhergesagt werden, außer den Nicht-Referenzbildern unmittelbar vor einem IDR-Bild, die nur vom vorherigen Referenzbild in Ausgabereihenfolge vorhergesagt werden. Der Vorcodierpuffer muss also mindestens zwei Bilder enthalten; das Puffern verursacht eine Verzögerung von zwei Bildintervallen. Ausgabe des Vorcodierpuffer-Prozesses und Codier- (bzw. Dekodier-) Reihenfolge:
... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
... -|---|---|---|---|---|---|---|---|- ...
... 60 61 62 63 64 65 66 67 68 ...
Abbildung 17. Umgeordnete Bilder im Vorcodierpuffer
Encoder oder Sender können den DON-Wert jedes Bildes auf den DON des vorherigen Bildes in Dekodierreihenfolge plus eins setzen.
Der Einfachheit halber nehmen wir an:
- die Bildrate der Sequenz ist konstant,
- jedes Bild besteht nur aus einem Slice,
- jeder Slice liegt in einem einzelnen NAL-Unit-Paket,
- es gibt keine Übertragungsverzögerung, und
- Bilder werden in konstanten Abständen übertragen (nämlich 1 / (Bildrate)).
Werden Bilder in Dekodierreihenfolge gesendet, werden sie wie folgt empfangen:
... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
... -|---|---|---|---|---|---|---|---|- ...
... 60 61 62 63 64 65 66 67 68 ...
Abbildung 18. Empfangene Bilder in Dekodierreihenfolge
Der OPTIONALE Medientyp-Parameter sprop-interleaving-depth ist 0, da Übertragungs- (oder Empfangs-) Reihenfolge der Dekodierreihenfolge entspricht.
Anfangs muss der Decoder im Puffer decodierter Bilder ein Bildintervall puffern, um von Dekodier- zu Ausgabereihenfolge zu gelangen:
... N58 N59 I00 N01 N02 R03 N04 N05 R06 ...
... -|---|---|---|---|---|---|---|---|- ...
... 61 62 63 64 65 66 67 68 69 ...
Abbildung 19. Ausgabereihenfolge
Der erforderliche anfängliche Puffer im Puffer decodierter Bilder kann in der SEI-Nachricht zur Pufferperiode oder über das Syntaxelement num_reorder_frames der H.264-Video-Benutzbarkeitsinformation signalisiert werden. num_reorder_frames gibt die maximale Anzahl von Frames, komplementären Feldpaaren oder nicht gepaarten Feldern an, die in der Sequenz in Dekodierreihenfolge vor einem beliebigen Frame, komplementären Feldpaar oder nicht gepaarten Feld stehen und in Ausgabereihenfolge danach folgen. Der Einfachheit halber nehmen wir an, dass num_reorder_frames den Anfangspuffer angibt. In diesem Beispiel ist num_reorder_frames gleich 1.
Wird das IDR-Bild I00 während der Übertragung verloren und eine Retransmissionsanforderung ausgegeben, wenn die Systemuhr 62 anzeigt, bleibt ein Bildintervall Zeit (bis die Uhr den Zeitstempel 63 erreicht), um das erneut übertragene I00 zu empfangen.
Nehmen wir weiter an, IDR-Bilder werden zwei Frame-Intervalle vor ihrer Dekodierposition gesendet:
... I00 N58 N59 R03 N01 N02 R06 N04 N05 ...
... --|---|---|---|---|---|---|---|---|- ...
... 62 63 64 65 66 67 68 69 70 ...
Abbildung 20. Interleaving: frühe IDR-Bilder in Sendereihenfolge
Der OPTIONALE Parameter sprop-interleaving-depth ist gemäß Definition 1. (Der Wert lässt sich so herleiten: I00 ist das einzige Bild, das N58 oder N59 in Übertragungsreihenfolge vorausgeht und in Dekodierreihenfolge folgt. Außer I00, N58 und N59 ist die Übertragungsreihenfolge gleich der Dekodierreihenfolge. Da jedes codierte Bild genau eine NAL Unit hat, ist sprop-interleaving-depth gleich der maximalen Anzahl von Bildern, die ein Bild in Übertragungsreihenfolge vorausgehen und in Dekodierreihenfolge danach kommen.)
Der Empfangspuffer-Prozess hält gemäß sprop-interleaving-depth jeweils zwei Bilder und ordnet anhand des DON von Empfangs- in Dekodierreihenfolge um. Ausgabe:
... N58 N59 I00 R03 N01 N02 R06 N04 N05 ...
... -|---|---|---|---|---|---|---|---|- ...
... 63 64 65 66 67 68 69 70 71 ...
Abbildung 21. Interleaving: Empfangspuffer
Erneut ist eine anfängliche Pufferverzögerung von einem Bildintervall nötig:
... N58 N59 I00 N01 N02 R03 N04 N05 ...
... -|---|---|---|---|---|---|---|- ...
... 64 65 66 67 68 69 70 71 ...
Abbildung 22. Interleaving: Empfangspuffer nach Umordnung
Die maximale Verzögerung für IDR-Bilder während der Übertragung einschließlich möglicher Retransmission auf Anwendungs-, Transport- oder Verbindungsschicht beträgt drei Bildintervalle. Die Verlustresilienz von IDR-Bildern verbessert sich damit in Systemen mit Retransmission gegenüber Übertragung in Dekodierreihenfolge.