Netzwerkabstraktionsschicht - Network Abstraction Layer

Die Network Abstraction Layer (NAL) ist Teil der H.264 / AVC- und HEVC -Videokodierungsstandards. Das Hauptziel der NAL ist die Bereitstellung einer "netzwerkfreundlichen" Videodarstellung für "Konversations" -Anwendungen (Videotelefonie) und "Nicht-Konversations" -Anwendungen (Speicherung, Übertragung oder Streaming). NAL hat eine signifikante Verbesserung der Anwendungsflexibilität im Vergleich zu früheren Videokodierungsstandards erzielt.

Einführung

Eine zunehmende Anzahl von Diensten und die wachsende Beliebtheit von hochauflösendem Fernsehen führen zu einem höheren Bedarf an höherer Codierungseffizienz. Darüber hinaus bieten andere Übertragungsmedien wie Kabelmodem , xDSL oder UMTS viel niedrigere Datenraten als Rundfunkkanäle, und eine verbesserte Codierungseffizienz kann die Übertragung von mehr Videokanälen oder Videodarstellungen höherer Qualität innerhalb vorhandener digitaler Übertragungskapazitäten ermöglichen. Die Videokodierung für Telekommunikationsanwendungen wurde vom ISDN- und T1 / E1- Dienst auf PSTN , mobile drahtlose Netzwerke und LAN / Internet-Netzwerkbereitstellung umgestellt. Während dieser Entwicklung wurden weitere Anstrengungen unternommen, um die Codierungseffizienz zu maximieren und gleichzeitig die Diversifizierung der Netzwerktypen und ihre charakteristischen Formatierungs- und Verlust- / Fehler-Robustheitsanforderungen zu berücksichtigen.

Die H.264 / AVC- und HEVC- Standards sind für technische Lösungen konzipiert, einschließlich Bereiche wie Rundfunk (über Kabel , Satellit , Kabelmodem , DSL , terrestrisch usw.), interaktive oder serielle Speicherung auf optischen und magnetischen Geräten, Konversationsdienste und Video-On -nachfrage- oder Multimedia-Streaming, Multimedia-Messaging-Dienste usw. Darüber hinaus können neue Anwendungen über bestehende und zukünftige Netzwerke bereitgestellt werden. Dies wirft die Frage auf, wie mit dieser Vielzahl von Anwendungen und Netzwerken umgegangen werden soll. Um diesem Bedürfnis nach Flexibilität und Anpassbarkeit gerecht zu werden, umfasst das Design eine NAL, die die VCL-Darstellung ( Video Coding Layer ) des Videos formatiert und Header-Informationen auf eine Weise bereitstellt, die für die Übertragung durch eine Vielzahl von Transportschichten oder Speichermedien geeignet ist.

Die NAL wurde entwickelt, um "Netzwerkfreundlichkeit" zu gewährleisten und eine einfache und effektive Anpassung der Verwendung von VCL für eine Vielzahl von Systemen zu ermöglichen. Die NAL erleichtert die Zuordnung von VCL-Daten zu Transportschichten wie:

  • RTP / IP für jede Art von drahtgebundenen und drahtlosen Internetdiensten in Echtzeit.
  • Dateiformate, z. B. ISO MP4 für Speicher und MMS .
  • H.32X für drahtgebundene und drahtlose Konversationsdienste.
  • MPEG-2- Systeme für Rundfunkdienste usw.

Der vollständige Grad der Anpassung des Videoinhalts an die Anforderungen der jeweiligen Anwendung liegt außerhalb des Rahmens der Standardisierungsbemühungen für die Videokodierung. Das Design der NAL sieht jedoch eine Vielzahl solcher Zuordnungen vor. Einige Schlüsselkonzepte der NAL sind NAL-Einheiten, Byte-Streams und Paketformate, die NAL-Einheiten, Parametersätze und Zugriffseinheiten verwenden. Eine kurze Beschreibung dieser Konzepte wird unten gegeben.

NAL-Einheiten

Die codierten Videodaten sind in NAL-Einheiten organisiert, von denen jede effektiv ein Paket ist, das eine ganzzahlige Anzahl von Bytes enthält. Das erste Byte jeder H.264 / AVC- NAL-Einheit ist ein Header-Byte, das eine Angabe des Datentyps in der NAL-Einheit enthält. Für HEVC wurde der Header auf zwei Bytes erweitert. Alle verbleibenden Bytes enthalten Nutzdaten des vom Header angegebenen Typs. Die NAL-Einheitenstrukturdefinition gibt ein generisches Format zur Verwendung in paketorientierten und bitstromorientierten Transportsystemen an, und eine Reihe von NAL-Einheiten, die von einem Codierer erzeugt werden, wird als NAL-Einheitenstrom bezeichnet.

NAL-Einheiten im Byte-Stream-Format verwenden

Einige Systeme erfordern die Lieferung des gesamten oder teilweisen NAL-Einheitsstroms als geordneten Strom von Bytes oder Bits, innerhalb dessen die Positionen der NAL-Einheitsgrenzen anhand von Mustern innerhalb der codierten Daten selbst identifizierbar sein müssen. Für die Verwendung in solchen Systemen definieren die H.264 / AVC- und HEVC- Spezifikationen ein Byte-Stream-Format. Im Byte-Stream-Format wird jeder NAL-Einheit ein bestimmtes Muster von drei Bytes vorangestellt, das als Startcode-Präfix bezeichnet wird. Die Grenzen der NAL-Einheit können dann identifiziert werden, indem die codierten Daten nach dem eindeutigen Startcode-Präfixmuster durchsucht werden. Die Verwendung von Emulationsverhinderungsbytes garantiert, dass Startcodepräfixe eindeutige Kennungen für den Start einer neuen NAL-Einheit sind. Eine kleine Menge zusätzlicher Daten (ein Byte pro Videobild) wird ebenfalls hinzugefügt, damit Decoder, die in Systemen arbeiten, die Bitströme ohne Ausrichtung an Bytegrenzen bereitstellen, die erforderliche Ausrichtung aus den Daten im Datenstrom wiederherstellen können. Zusätzliche Daten können auch in das Byte-Stream-Format eingefügt werden, das eine Erweiterung der zu sendenden Datenmenge ermöglicht und bei Bedarf zu einer schnelleren Wiederherstellung der Byte-Ausrichtung beitragen kann.

NAL-Einheiten im Pakettransportsystem verwenden

In anderen Systemen (z. B. IP / RTP- Systemen) werden die codierten Daten in Paketen übertragen, die vom Systemtransportprotokoll umrahmt werden, und die Identifizierung der Grenzen von NAL-Einheiten innerhalb der Pakete kann ohne Verwendung von Startcode-Präfixmustern hergestellt werden. In solchen Systemen wäre die Aufnahme von Startcode-Präfixen in die Daten eine Verschwendung von Datentragfähigkeit, sodass die NAL-Einheiten stattdessen in Datenpaketen ohne Startcode-Präfixe übertragen werden können.

VCL- und Nicht-VCL-NAL-Einheiten

NAL-Einheiten werden in VCL- und Nicht-VCL-NAL-Einheiten unterteilt. Die VCL-NAL-Einheiten enthalten die Daten, die die Werte der Samples in den Videobildern darstellen, und die Nicht-VCL-NAL-Einheiten enthalten alle zugehörigen zusätzlichen Informationen wie Parametersätze (wichtige Header-Daten, die für eine große Anzahl von VCL-NAL-Einheiten gelten können ) und zusätzliche Verbesserungsinformationen (Zeitinformationen und andere zusätzliche Daten, die die Verwendbarkeit des decodierten Videosignals verbessern können, aber für die Decodierung der Werte der Samples in den Videobildern nicht erforderlich sind).

Parametersätze

Ein Parametersatz soll Informationen enthalten, von denen erwartet wird, dass sie sich selten ändern, und bietet die Dekodierung einer großen Anzahl von VCL-NAL-Einheiten. Es gibt zwei Arten von Parametersätzen:

  • Sequenzparametersätze (SPS), die für eine Reihe aufeinanderfolgender codierter Videobilder gelten, die als codierte Videosequenz bezeichnet werden
  • Bildparametersätze (PPS), die für die Decodierung eines oder mehrerer Einzelbilder innerhalb einer codierten Videosequenz gelten

Der Sequenz- und Bildparametersatzmechanismus entkoppelt die Übertragung selten wechselnder Informationen von der Übertragung codierter Darstellungen der Werte der Abtastwerte in den Videobildern. Jede VCL-NAL-Einheit enthält eine Kennung, die sich auf den Inhalt des relevanten Bildparametersatzes bezieht, und jeder Bildparametersatz enthält eine Kennung, die sich auf den Inhalt des relevanten Sequenzparametersatzes bezieht. Auf diese Weise kann eine kleine Datenmenge (die Kennung) verwendet werden, um auf eine größere Informationsmenge (den Parametersatz) zu verweisen, ohne diese Information in jeder VCL-NAL-Einheit zu wiederholen. Sequenz- und Bildparametersätze können weit vor den VCL-NAL-Einheiten gesendet werden, für die sie gelten, und können wiederholt werden, um Robustheit gegen Datenverlust zu gewährleisten. In einigen Anwendungen können Parametersätze innerhalb des Kanals gesendet werden, der die VCL-NAL-Einheiten trägt (als "In-Band" -Übertragung bezeichnet). In anderen Anwendungen kann es vorteilhaft sein, die Parametersätze "außerhalb des Bandes" unter Verwendung eines zuverlässigeren Transportmechanismus als der Videokanal selbst zu übertragen.

Verwendung des Parametersatzes mit zuverlässigem "Out-of-Band" -Parametersatzaustausch

Zugriff auf Einheiten

Ein Satz von NAL-Einheiten in einer bestimmten Form wird als Zugriffseinheit bezeichnet. Die Decodierung jeder Zugriffseinheit führt zu einem decodierten Bild. Jede Zugriffseinheit enthält einen Satz von VCL-NAL-Einheiten, die zusammen ein primär codiertes Bild bilden . Es kann auch ein Trennzeichen für die Zugriffseinheit vorangestellt werden , um das Auffinden des Starts der Zugriffseinheit zu erleichtern. Einige ergänzende Erweiterungsinformationen, die Daten enthalten, wie z. B. Bildzeitinformationen, können auch dem primär codierten Bild vorangehen. Das primär codierte Bild besteht aus einem Satz von VCL-NAL-Einheiten, die aus Slices oder Slice-Datenpartitionen bestehen , die die Samples des Videobildes darstellen. Dem primären codierten Bild können einige zusätzliche VCL-NAL-Einheiten folgen, die redundante Darstellungen von Bereichen desselben Videobildes enthalten. Diese werden als redundant codierte Bilder bezeichnet und stehen einem Decodierer zur Wiederherstellung nach Verlust oder Beschädigung der Daten in den primär codierten Bildern zur Verfügung. Decoder müssen redundant codierte Bilder nicht decodieren, wenn sie vorhanden sind. Schließlich, wenn das codierte Bild das letzte Bild einer codierten Videosequenz (einer Sequenz von Bildern , die unabhängig dekodierbar und verwendet nur einen Sequenzparametersatz ist), ein Ende der Sequenz NAL - Einheit das Ende der Sequenz anzuzeigen können anwesend sein; und wenn das codierte Bild das letzte codierte Bild in dem gesamten NAL-Einheitsstrom ist, kann ein Ende der Stream- NAL-Einheit vorhanden sein, um anzuzeigen, dass der Stream endet.

Struktur einer NAL Access Unit

Codierte Videosequenzen

Eine codierte Videosequenz besteht aus einer Reihe von Zugriffseinheiten, die im NAL-Einheitenstrom sequentiell sind und nur einen Sequenzparametersatz verwenden. Jede codierte Videosequenz kann unabhängig von jeder anderen codierten Videosequenz dekodiert werden, wenn die erforderlichen Parametersatzinformationen vorliegen, die "in-band" oder "out-of-band" übertragen werden können. Zu Beginn einer codierten Videosequenz befindet sich eine IDR-Zugriffseinheit ( Instantaneous Decoding Refresh ). Eine IDR-Zugriffseinheit enthält ein Intra- Bild, bei dem es sich um ein codiertes Bild handelt, das decodiert werden kann, ohne vorherige Bilder im Stream der NAL-Einheit zu decodieren. Das Vorhandensein einer IDR-Zugriffseinheit zeigt an, dass für kein nachfolgendes Bild im Stream zuvor auf Bilder verwiesen werden muss auf das Intra-Bild, das es enthält, um dekodiert zu werden. Ein NAL-Einheitsstrom kann eine oder mehrere codierte Videosequenzen enthalten.

Verweise

Quellen