Verbessern von VP9 ohne es zu ändern - Teil 3

November 20, 2017
  von Blog-Team
Leistungsvergleich verschiedener Versionen von VP9

In den Teilen eins und zwei dieser Blog-Serie haben wir VP9 und die Implementierung der Skalierbarkeit besprochen. In diesem letzten Teil behandeln wir den Codec selbst und die Vorteile der neuen Implementierung von skalierbarem VP9 von Vidyo.

Lesen Sie mehr - VP9 verbessern, ohne es zu ändern - Teil 1
Lesen Sie mehr - Verbessern von VP9 ohne es zu ändern - Teil 2

Die Asymmetrie zwischen Encoder- und Decoder-Komplexität geht auf die allerersten digitalen Video-Encoder-Designs der späten 1980er Jahre (H.261) zurück und ist ein inhärentes Merkmal der prädiktiven, bewegungskompensierten Hybridstrukturen, die in der Vergangenheit verwendet wurden. Die Raffinesse des Encoders war schon immer ein Unterscheidungsmerkmal zwischen den Codec-Implementierungen, wobei viele Unternehmen ihre eigene "Geheimrezeptur" zur Verbesserung der Qualität und Komprimierungseffizienz entwickelt haben.

Dies ist oft ein Punkt der Verwirrung für Laien. Videokodierungsstandards standardisieren den Dekodierungsprozess und die Bitstromsyntax, nicht den Kodierungsprozess. Die Implementierer haben bei der Optimierung des Kodierungsprozesses enorme Freiheiten. Interessant ist, dass sich beim MPEG-2-Codec, der in DVDs verwendet wird, die Codierleistung innerhalb von 10 Jahren fast verdoppelt hat (d. h. die Hälfte der Bitrate bei gleicher Qualität), ohne dass die zugrunde liegende Bitstromsyntax geändert wurde. Die Encoder waren lediglich in der Lage, intelligentere Entscheidungen darüber zu treffen, wofür sie ihre Bits verwenden. Das liegt zum einen daran, dass die Ingenieure bessere Entwürfe gemacht haben, zum anderen aber auch daran, dass immer mehr Rechenleistung zur Verfügung stand, um diese Berechnungen durchzuführen, sogar in Echtzeit.

Vidyo hat vor kurzem sein eigenes Platform-as-a-Service (PaaS)-Angebot gestartet, in vidyo.io. Als PaaS ist es so konzipiert, dass es für alle leicht zugänglich ist - man muss nur das frei verfügbare SDK für seine Programmiersprache und -umgebung herunterladen und den Code mit seiner eigenen Anwendung verbinden. Der Dienst ist Cloud-basiert und wird nach Verbrauch abgerechnet. Sie können mehr über die Technik hinter vidyo.io lesen in mein Blogbeitrag.

Für uns war es wichtig, einen Codec anbieten zu können, der volle Unterstützung für Skalierbarkeit bietet, frei von derzeit bekannten Lizenzgebühren ist und native Interoperabilität mit WebRTC bietet. Obwohl wir die Open-Source-Version von skalierbarem VP9, die im WebM-Projekt verfügbar ist, hätten verwenden können, haben wir uns entschieden, eine skalierbare VP9-Implementierung von Grund auf zu entwickeln.

Vidyo hat schon immer großen Wert auf ein qualitativ hochwertiges Erlebnis und eine hohe Leistung auf den verschiedensten Plattformen gelegt, von mobilen bis hin zu High-End 5K-Systemen und darüber hinaus. Im Laufe der Jahre haben wir viel Erfahrung in der Konzeption von Video-Encodern und der Entwicklung optimierter Implementierungen auf verschiedenen Plattformen gesammelt, insbesondere im Hinblick auf interaktive Echtzeit-Kommunikation. Wir wollten auch in der Lage sein, die Mechanismen zur Fehlersicherheit und Fehlerverschleierung zu nutzen, die wir in unsere Plattform eingebaut haben, von denen einige patentiert sind und die weit über das hinausgehen, was in Open-Source-Projekten, einschließlich WebRTC, verfügbar ist.

Von besonderer Bedeutung ist für uns die mobile Leistung. Da die Kodierung mit Software erfolgt, ist es unerlässlich, so viel Leistung wie möglich aus der verfügbaren CPU und dem Akku herauszuholen. Wie wir weiter unten zeigen (siehe Tabelle 1), lieferte die Open-Source-Version von VP9 (OVP9) in unseren Tests selbst in ihrem einfachsten Betriebsmodus (CPU-Modus 8) keine echtzeittaugliche Leistung für die räumlich skalierbare Codierung von 720p-Inhalten auf typischen mobilen Plattformen. Die Frameraten lagen bei etwa 15 fps, der Hälfte der normalerweise erforderlichen 30 fps. Dies war eine wichtige Motivation für uns, unsere eigene optimierte Version zu entwickeln.

Die Ergebnisse unserer Arbeit sind jetzt auf unserer Website verfügbar vidyo.io PaaS und wird bald für die gesamte Vidyo-Plattform verfügbar sein. Die Leistungsverbesserung ist beeindruckend. Um dies zu demonstrieren, müssen wir die beiden Codecs anhand von drei Parametern vergleichen: Qualität vs. Bitrate vs. Komplexität. Alle drei Parameter beeinflussen sich gegenseitig, so dass wir für einen angemessenen Vergleich mindestens einen von ihnen festlegen müssen. Hier werden wir die Qualität der Codecs über ihren gesamten Betriebsbereich hinweg vergleichen und ihre Komplexität gegenüberstellen. Im Folgenden werden Aspekte unserer internen Tests unter bestimmten Bedingungen dargestellt. Natürlich können andere Tests oder reale Ergebnisse abweichen, aber diese Ergebnisse zeigen, welche Leistungsvorteile unser neuer VP9-Codec bringen kann.

720p 30fps

Abbildung 6: Leistungsvergleich verschiedener Versionen von VP9 für ein 720p-Video mit 2 räumlichen und 3 zeitlichen Ebenen

Abbildung 6 zeigt ein Beispiel für die Codierung einer 720p-Sequenz mit 30 Bildern pro Sekunde mit 2 räumlichen und 3 zeitlichen Ebenen unter Verwendung der beiden Versionen des VP9-Codecs. Das Diagramm zeigt PSNR (Peak Signal-to-Noise Ratio) im Vergleich zur Bitrate. (PSNR ist ein Maß für die Videoqualität, je höher, desto besser.) Die Zahlen beziehen sich auf den PSNR der obersten Ebene und die Gesamtbitrate. Zunächst wird das Video (mit einem festen Quantisierer) an vier verschiedenen Arbeitspunkten mit OVP9 im CPU-Modus 8 kodiert. Wie bereits erwähnt, ist dies der einfachste Betriebsmodus dieser speziellen Software-Implementierung, d. h. er verbraucht die geringste Menge an CPU-Ressourcen und bietet natürlich die geringste Komprimierungseffizienz. Aber selbst in diesem Modus bietet OVP9 keine Echtzeitleistung (d. h. 30 fps) für 2 skalierbare Ebenen bei 720p. Das gleiche Video wurde auch mit der VP9-Implementierung von Vidyo (hier als VVP9 bezeichnet) in zwei verschiedenen Komplexitätsmodi kodiert: niedrig und mittel. Wir sehen, dass VVP9 im niedrigen Modus etwa die gleiche oder eine leicht bessere Leistung als OVP9 bietet, während im mittleren Modus eine zusätzliche Verbesserung erzielt wird.

Abbildung 6 zeigt uns, dass wir in dieser Konfiguration die gleiche Qualitätsleistung wie die beiden Codecs erreicht haben. Der entscheidende Vergleich besteht nun darin, herauszufinden, zu welchen Verarbeitungskosten wir diese Komprimierungseffizienz erreichen. Und genau hier wird es spannend. Tabelle 1 Die folgende Abbildung zeigt die Leistung der beiden Codecs in Form von Bildern pro Sekunde auf zwei gängigen mobilen Plattformen, einem iPhone 6 Plus und einem Samsung Galaxy S6 Edge+ (beide im Single-Thread-Modus).

CPU-Leistung bei iOS- und Android-Plattformen

Tabelle 1: CPU-Leistung auf iOS- und Android-Plattformen

Die Spalten auf der linken Seite zeigen die absoluten fps, während die Spalten auf der rechten Seite den Prozentsatz der OVP9-Encoding- und Decoding-Geschwindigkeit zeigen, die von VVP9 (in den beiden Modi) erreicht wurde. Wir sehen, dass wir im Durchschnitt über beide Geräte und Bitraten hinweg eine 2,7-2,8-fache Beschleunigung beim Enkodieren erreicht haben, während die Videoqualität (PSNR) sogar leicht verbessert wurde. Im Falle des iPhones lieferte VVP9 im niedrigen Modus mehr als die dreifache Geschwindigkeit. Wir sollten betonen, dass sich diese Ergebnisse auf eine skalierbare Kodierung mit zwei räumlichen Ebenen beziehen. Aber auch im Single-Layer-Modus konnten wir Geschwindigkeitssteigerungen von bis zu 1,7x feststellen. Wie oben gezeigt, war die Dekodiergeschwindigkeit ebenfalls höher, wenn auch nicht so deutlich. Dies ist zu erwarten, da der Dekodierungsprozess viel einfacher ist und weniger Raum für Optimierungen besteht.

Vor allem die deutlich höhere Kodierungsgeschwindigkeit wirkt sich direkt auf die Akkulaufzeit von Mobilgeräten aus. Eine höhere Kodierungsgeschwindigkeit, gemessen in fps, bedeutet, dass die CPU des Geräts weniger Zeit für die Kodierung jedes Videobilds benötigt. Wenn die Kodierungsrate unter 30 fps liegt, wie es bei den OVP9-Testergebnissen der Fall war, bedeutet dies, dass die CPU selbst dann nicht mit den 30 fps einer typischen Kamera mithalten kann, wenn sie die gesamte Zeit für die Videokodierung aufwendet. Wenn die Kodierungsrate deutlich über 30 fps liegt, wie es bei unseren VVP9-Ergebnissen der Fall war, bedeutet dies, dass die CPU genügend Zeit hat, ein Video zu kodieren und sich dann mit anderen Anwendungsaufgaben zu beschäftigen oder einfach in den Ruhezustand zu gehen. Dies führt unmittelbar zu einem geringeren Akkuverbrauch. Die geringere Verbesserung der Dekodiergeschwindigkeit hat einen ähnlichen, aber entsprechend geringeren Vorteil für den Stromverbrauch. Die Gesamtverbesserung des Stromverbrauchs hängt auch von den anderen Aufgaben ab, die die Videokommunikationsanwendung zu erledigen hat, z. B. Audiokodierung und -dekodierung, Benutzeroberflächenverwaltung usw. Bei mobilen Geräten, die speziell für die Videokodierung eingesetzt werden (z. B. von Ersthelfern getragene Körperkameras), können die Einsparungen leicht zu einer Verdoppelung der Akkulaufzeit führen.

Einige dieser Verbesserungen sind auch bei Desktop-Anwendungen zu beobachten. In einer 64-Bit-Windows-Umgebung konnten wir beispielsweise bei der Kodierung desselben 720p-Inhalts eine etwa 1,6- bis 1,7-fache Geschwindigkeitssteigerung für VVP9 gegenüber OVP9 feststellen. (In Desktop-Umgebungen sind Vergleiche der Dekodiergeschwindigkeit weniger relevant, da die Dekodiergeschwindigkeit in beiden Codecs bereits um ein Vielfaches schneller ist als in Echtzeit.) Natürlich sind die Batterie- und Prozessorressourcen bei Desktops nicht so begrenzt wie bei mobilen Geräten, aber die Leistungssteigerung bei der Codierung kann dennoch dazu führen, dass Prozessorzeit für andere Aufgaben frei wird und/oder die Batterielaufzeit bei Laptops verlängert wird.

Das Endergebnis für Vidyo-Endkunden ist, dass sie alle Vorteile eines offenen Standards mit voller Kompatibilität zu bestehenden browserbasierten Implementierungen oder wirklich jeder VP9-Implementierung genießen können, während sie gleichzeitig von einer wesentlich besseren Leistung profitieren und die Fähigkeit ihrer mobilen Geräte, Videos zu kodieren, bevor sie angeschlossen werden müssen, erheblich erweitern. Dies ist eine der großen Stärken offener Standards: Sie ermöglichen unterschiedliche Implementierungen, die alle miteinander arbeiten können.

Lesen Sie mehr:

VP9 verbessern, ohne es zu ändern - Teil 1
Verbessern von VP9 ohne es zu ändern - Teil 2

Blog abonnieren

Lassen Sie sich benachrichtigen, wenn neue Blogs in dieser Kategorie veröffentlicht werden: .

Folgen Sie uns

Veröffentlicht in:

Zum Inhalt springen