Was ist Slice-basiertes Encoding?
Slice-basiertes Encoding teilt einen Videoframe in Bereiche auf, die mit begrenzter Abhängigkeit von anderen Slices desselben Frames decodiert werden können. Diese Struktur kann parallele Verarbeitung unterstützen und die Auswirkungen mancher Übertragungsfehler begrenzen.
So funktioniert Slice-basiertes Encoding
Bei Codecs, die Slices unterstützen, wird jeder Frame in codierte Einheiten aufgeteilt. Deren Grenzen beschränken, auf welche benachbarten Daten bei der Entropiedecodierung und Prädiktion zugegriffen werden darf. Mehrere Slices können Threads oder Paketen zugewiesen werden, und ein Decoder kann bei Verlust eines Slices möglicherweise unbeeinträchtigte Bereiche wiederherstellen. Slices sind nicht mit Frames gleichzusetzen, die unabhängig angesprungen werden können, da sie weiterhin zu einem Bild gehören und von anderen Bildern abhängen können. Encoder wählen ihre Anzahl oder Größe als Teil einer Abwägung zwischen Latenz, Fehlertoleranz, Parallelität und Komprimierung.
Wichtige Fakten
- In H.264/AVC enthält ein Slice eine ganzzahlige Anzahl von Makroblöcken und beginnt mit einem eigenen Header; die grundlegende Slice-Anordnung garantiert keine beliebigen rechteckigen Bildschirmbereiche.
- Der Beginn zusätzlicher Slices setzt einige Codierkontexte zurück oder schränkt sie sowie die Prädiktion über Slice-Grenzen hinweg ein. Das kostet bei vergleichbarer visueller Qualität in der Regel Komprimierungseffizienz.
- Separate Transportpakete für Slices können die sichtbaren Auswirkungen von Paketverlusten begrenzen. Die Wiederherstellung hängt jedoch weiterhin von der Codec-Struktur, der Referenznutzung und der Fehlerverdeckung des Decoders ab.
Wann Slice-basiertes Encoding wichtig ist
Konfigurieren Sie Slices, wenn Latenz, Decodieren auf mehreren Kernen, Paketierung oder Fehlertoleranz wichtiger sind als maximale Komprimierungseffizienz. Zusätzliche Slice-Grenzen verringern die Prädiktionsmöglichkeiten und können die Bitrate bei gleicher Qualität erhöhen.