Hardware- gegen Software-Dekodierung: warum Ihr Lüfter hochdreht
Das eine ist eine feste Schaltung, die es für Ihren Codec entweder gibt oder nicht. Das andere ist Ihr Prozessor, der dieselbe Arbeit mit allgemeinen Befehlen erledigt. Dazwischen gibt es keine Einstellung.
Zwei Wege, einen komprimierten Videostrom in Bilder zu verwandeln. Sie erzeugen dieselbe Ausgabe, und fast nichts sonst an ihnen ist gleich.
Was jedes davon ist
Die Hardware-Dekodierung übergibt den komprimierten Strom einem festen Funktionsblock auf Ihrer GPU. Dieser Block setzt einen bestimmten Codec in Silizium um. Er ist keine schnellere Fassung des Software-Dekoders; er ist eigens dafür gebaute Schaltung, die zufällig dieselben Bilder erzeugt, mit fast keiner Prozessorlast und sehr wenig Strom.
Die Software-Dekodierung führt den Dekoder als gewöhnlichen Code auf Ihrem Prozessor aus, über mehrere Kerne verteilt. Sie funktioniert für jeden Codec, den die Software unterstützt, also für fast alle, und sie kostet echte Rechenzeit.
Der Unterschied, auf den es am meisten ankommt: die Hardwareunterstützung ist je Codec binär. Ihre GPU hat entweder einen Dekoder für AV1 oder nicht. Es gibt keine teilweise Beschleunigung, keinen abgeschwächten Modus, kein "größtenteils Hardware". Fehlt der Block, fällt die Arbeit vollständig an die Software.
Die Einstellung, und was sie tatsächlich setzt
Drei Zustände, die auf drei Dekoderwahlen abbilden, die dem Player mit jedem Medium übergeben werden:
Auto avcodec-hw=d3d11va ask for the Direct3D 11 video decoder
On avcodec-hw=any take any hardware decoder available
Off avcodec-hw=none software only
Automatisch ist für fast alle richtig. Aus ist ein Werkzeug zur Fehlersuche: wenn ein Sender Störungen zeigt oder sich nicht öffnet, sagt Ihnen die erzwungene Software-Dekodierung innerhalb eines Versuchs, ob Sie ein Treiberproblem oder ein Stream-Problem vor sich haben.
Ein struktureller Punkt, denn er hat einen echten Fehler verursacht. Das ist eine Option je Medium, die bei jedem Öffnen eines Mediums angewendet wird, und kein Schalter auf Instanzebene, der einmal beim Start gesetzt wird. Das ist der richtige Entwurf. Es bedeutet aber auch, dass jeder Wiedergabepfad daran denken muss, sie anzuwenden.
Der Fehler, der sich genau in dieser Lücke versteckte
Bis zum 2026-08-23 beachtete das Live-TV die Beschleunigungseinstellung und der Abrufpfad hatte sie fest auf aus verdrahtet. Jeder Film und jede Episode wurde in Software dekodiert, unabhängig davon, was die Einstellung sagte, auf jedem Rechner.
Wir haben das falsch gemacht, und von der Oberfläche aus war nichts davon sichtbar. Die Einstellung war da, sie blieb erhalten, sie sagte Automatisch, und Filme wurden trotzdem in Software dekodiert. Es zeigte sich als "bei Filmen dreht der Lüfter hoch und bei Live-TV nicht", ein Symptom, das man leicht der Dateigröße oder der Datenrate anlastet.
Nach der Korrektur lief derselbe 4K-Titel mit den GPU-Videodekodier-Einheiten bei rund 11 Prozent. Dieselbe Datei, derselbe Rechner, dieselbe Einstellung.
Der Grund, das aufzuschreiben, statt es still zu beheben: es ist die klarste Veranschaulichung dafür, warum man nachprüft, dass die Hardware-Dekodierung greift, statt einer Einstellung zu vertrauen. Öffnen Sie das Feld mit den Stream-Informationen und sehen Sie sich im Task-Manager die Videodekodier-Einheit Ihrer GPU an, während etwas läuft. Ein 4K-Stream mit einer Videodekodier-Einheit nahe null und ausgelasteten Prozessorkernen wird in Software dekodiert, ganz gleich was die Einstellung sagt.
Threads, und Kosten, die Sie nicht vorhersehen würden
Wenn die Software-Dekodierung tatsächlich stattfindet, teilt der Dekoder Bilder auf Threads auf. Wie viele er wählt, ist aus Gründen wichtig, die nichts mit Rechenzeit zu tun haben.
Sich selbst überlassen nahm der Dekoder auf dem Messrechner 6 Threads. Das erzeugte bei 4K einen Direct3D-11-Ausgabepool mit 40 Oberflächen, rund 500 MB GPU-sichtbare Belegung. Gegen ein Xbox-Budget von etwa 1 GB ist das die Hälfte des Speichers, den die ganze Anwendung haben darf, ausgegeben für Dekoderpuffer. Dass eine Thread-Zahl eine Speicherentscheidung ist, hatte ich nicht erwartet.
Die Konsole begrenzt sie also auf 3.
Das Elegante an dieser Grenze ist, was sie kostet, nämlich nichts auf jedem Pfad, der funktioniert. Die Hardware-Dekodierung nutzt diese Threads überhaupt nicht. Die Grenze gilt nur für den Software-Rückfall, und auf der Konsole landet dort AV1, weil der Player-Build der Konsole keinen AV1-Hardware-Dekoder hat.
Der andere Hebel, der keine Dekodereinstellung ist
Wenn die Dekodierkosten Ihr Problem sind, ist die Auflösung ein größerer Hebel als die Wahl des Dekoders.
Multiview-Kacheln sind stummgeschaltet auf 640 mal 360 und mit Ton auf 1280 mal 720 begrenzt, und diese Grenze ist der Grund, warum ein Raster mit 9 Kacheln überhaupt möglich ist. Das ist weniger ein Qualitätskompromiss als das Eingeständnis, dass eine Kachel von 4 Zoll Breite von 1080p nicht profitiert.
Dieselbe Überlegung gilt für einen Sender, mit dem sich Ihr Rechner abmüht. Wenn Ihr Anbieter denselben Sender in einer niedrigeren Fassung anbietet, ist das oft eine bessere Antwort als jede Einstellung, denn es verringert die Arbeit, statt sie umzuverteilen.
Wie Sie es tatsächlich prüfen, in 2 Minuten
Die Einstellung ist kein Beleg. Das hier schon.
Öffnen Sie den Task-Manager, gehen Sie zu Leistung, wählen Sie Ihre GPU und stellen Sie eines der Diagramme auf Videodekodierung um. Starten Sie dann einen Sender.
Video Decode busy, CPU cores quiet hardware decoding
Video Decode flat, several cores busy software decoding
Das ist der ganze Test, und er ist eindeutig auf eine Weise, wie es der Einstellungsbildschirm nicht ist. Auf dem Rechner in unserem eigenen Überprüfungsdurchlauf brachte ein 4K-Titel dieses Diagramm auf rund 11 Prozent, wo es zuvor bei null gelegen hatte und der Prozessor die Arbeit trug.
Zwei Fehlablesungen sollten Sie kennen. Ein Rechner mit 2 GPUs dekodiert möglicherweise auf der, die Sie nicht ansehen, was bei Notebooks mit umschaltbarer Grafik häufig ist. Und ein sehr kleines Fenster kann billig genug sein, um ohne auffällige Prozessorlast in Software dekodiert zu werden, prüfen Sie also in einer Größe, in der Sie tatsächlich zusehen würden.
Das Feld mit den Stream-Informationen ist die andere Hälfte der Prüfung, denn es sagt Ihnen, welchen Codec Sie den Rechner dekodieren lassen. Seine Felder für Protokoll und Behälter werden aus der Adresse abgeleitet und nicht vom Demuxer; das Feld für den Video-Codec ist das, was diese Frage beantwortet.
Die Speicherkosten, und das ist der überraschende Teil
Über die Dekodierung wird meist als Abwägung zwischen Prozessor und GPU gesprochen. Auf einem speicherbeschränkten Gerät ist sie ebenso sehr eine Speicherentscheidung wie eine Frage der Rechenleistung, und die Zahlen sind nicht eingängig.
Das Threading auf Bildebene belegt Bildpuffer. Mehr Threads heißt mehr Puffer im Umlauf, und bei 4K ist jeder Puffer groß. Das ist die ganze Geschichte hinter dem Pool von 500 MB oben, und es ist der Grund, warum die Grenze bei 3 liegt und nicht bei einer Zahl, die aus Prozessorgründen gewählt wurde. Es ist auch der Grund, warum die Grenze dort nichts kostet, wo die Hardware-Dekodierung funktioniert: der Hardwareweg belegt diese Puffer überhaupt nicht.
Der weitere Zusammenhang schärft das. Unsere eigene Profilierung einer 12 Minuten langen Stöbersitzung auf dem Desktop endete bei 918 MB Arbeitsspeicher und erreichte einen Spitzenwert von 1.080 MB, gegen ein internes Budget von 400 MB, wobei der verwaltete Heap über dieselben Zyklen flach bei etwa 62 MB lag. Das Wachstum ist nativ, und Dekoderpuffer sind nativ. Auf einer Konsole mit rund 1 GB nutzbarem Speicher ist ein Software-Dekodierweg, der 500 MB Pools will, kein Leistungsproblem. Es ist eine Beendigung.
Warum "einfach zurückfallen" kein Entwurf ist
Ein vernünftig klingender Vorschlag: Hardware versuchen, und wenn es scheitert, still und automatisch auf Software umschalten.
Was das schwerer macht, als es klingt, ist die Fehlerart der darunterliegenden Schicht. Dem Player einen Schalter zu geben, der zu einem Modul gehört, das sein Build nicht trägt, erzeugt keinen behebbaren Fehler. Es lässt die gesamte Player-Instanz scheitern, und das Scheitern nennt die verursachende Option nicht. Der Stream öffnet sich nicht.
Der gesetzte Schaltersatz wird deshalb im Voraus berechnet, je Kopf, aus einer Positivliste, mit Tests, die prüfen, dass jede Kombination aus Kopf, Rolle, Einstellung und Oberflächentiefe nur erlaubte Schalter setzt. Die Alternative, Unterstützung durch Ausprobieren herauszufinden, bedeutet, dass ein gescheiterter Versuch eine ganze Instanz kostet und einen Fehler erzeugt, der nirgendwohin zeigt.
Das ist auch der Grund, warum Fähigkeiten, die die Konsole nicht unterstützen kann, ausgeblendet statt gezeigt und ausgegraut werden. Es gibt keine Teilfassung, auf die man zurückfallen könnte, und ein Bedienelement, das den Player scheitern lassen würde, ist schlimmer als gar keines.
Es gibt eine echte Rückfallleiter, und sie zeigt, wie eine gutmütige aussieht. Die Videooberfläche probiert 3 Konfigurationen der Reihe nach:
1 R10G10B10A2 + Ignore preferred, 10-bit
2 R10G10B10A2 + Unspecified 10-bit, different alpha handling
3 B8G8R8A8 + Unspecified 8-bit, identical to the previous behaviour
Was diese Leiter sicher macht, ist die letzte Stufe: sie ist Byte für Byte identisch mit der Konfiguration, die ausgeliefert wurde, bevor es all das gab, ein Rechner, der 10 Bit nicht zusammensetzen kann, verhält sich also genau wie immer, statt in einen ungetesteten Zustand zu geraten. Ein vollständiges Scheitern wird protokolliert und lässt die Oberfläche ungeladen, statt aus einem Layout-Rückruf heraus eine Ausnahme zu werfen, die die Anwendung mitreißen würde.
Ein Rückfall ist nur dann ein Rückfall, wenn die unterste Stufe als gut bekannt ist.
Was Sie prüfen sollten, der Reihe nach
Greift die Hardware-Dekodierung tatsächlich? Sehen Sie sich die Videodekodier-Einheit der GPU an, nicht die Einstellung.
Wenn nicht: gibt es auf diesem Rechner einen Hardware-Dekoder für diesen Codec? H.264, HEVC und AV1 behandelt, wo die Grenzen liegen, und bei AV1 liegen die meisten davon.
Wenn ja: sind Ihre GPU-Treiber aktuell? Ein langweiliger Rat, und gelegentlich die ganze Antwort, denn die Dekoderunterstützung kommt mit den Treibern.
Und wenn dieser Rechner diesen Codec nie in Hardware dekodieren wird, bleiben eine niedrigere Fassung, ein anderer Codec vom Anbieter, oder andere Hardware. Keine Einstellung ersetzt eine Schaltung, die nicht da ist.
Was dieser Artikel gemessen hat21 Behauptungen, jeweils mit den Beweisen dahinter
| Anspruch | Beweise | Gezählt |
|---|---|---|
| Die Beschleunigungseinstellung hat drei Zustände, die auf drei Dekoderwahlen abbilden, die je Medium übergeben werden: einen Dekoder mit Direct3D-11-Videobeschleunigung, einen beliebigen verfügbaren Dekoder, oder keinen. | n = 3 | 20.08.2026 |
| Die Dekoderwahl wird als Option je Medium auf jedem Wiedergabepfad angewendet und ist kein Schalter auf Instanzebene, und genau das erlaubte es einem Pfad, der Einstellung zu widersprechen. | n = 1 | 23.08.2026 |
| Der Abrufpfad hatte die Beschleunigung bis zum 2026-08-23 fest auf aus verdrahtet, jeder Film und jede Episode wurde also in Software dekodiert, ganz gleich was die Einstellung sagte, während Live-TV sie korrekt beachtete. | n = 1 | 23.08.2026 |
| Nach der Korrektur lief ein 4K-Titel mit aktiven GPU-Videodekodier-Einheiten bei rund 11 Prozent, wo derselbe Pfad zuvor rein in Software gelaufen war. | n = 1 | 23.08.2026 |
| Die Bild-Threads werden nur vom Software-Dekoder genutzt. Sie zu begrenzen kostet auf hardwaredekodierter Wiedergabe nichts und gilt nur für den Rückfall. | n = 1 | 31.08.2026 |
| Die automatische Thread-Wahl nahm auf dem Messrechner 6 und erzeugte bei 4K einen Direct3D-11-Ausgabepool mit 40 Oberflächen, rund 500 MB GPU-sichtbare Belegung gegen ein Xbox-Budget von etwa 1 GB. Die Grenze liegt bei 3. | n = 1 | 31.08.2026 |
| Der Player-Build der Konsole trägt keinen AV1-Hardware-Dekoder, AV1 nimmt dort also unabhängig von der Einstellung immer den Softwareweg. | n = 1 | 23.08.2026 |
| Ein Schalter, der zu einem Modul gehört, das der Player-Build nicht trägt, lässt die gesamte Instanz scheitern, statt ignoriert zu werden, und deshalb wird der gesetzte Satz je Kopf aus einer Positivliste entschieden. | n = 1 | 23.08.2026 |
| Die Videooberfläche probiert drei Konfigurationen der Reihe nach, und ihre unterste Stufe ist Byte für Byte identisch mit der zuvor ausgelieferten Standardkonfiguration, ein Rechner, der 10 Bit nicht zusammensetzen kann, verhält sich also genau wie zuvor. | n = 3 | 23.08.2026 |
| Eine 12 Minuten lange Stöbersitzung auf dem Desktop endete bei 918 MB Arbeitsspeicher und erreichte einen Spitzenwert von 1.080 MB gegen ein internes Budget von 400 MB, wobei der verwaltete Heap über dieselben Zyklen flach bei etwa 62 MB lag, das Wachstum ist also nativer Speicher. | n = 3 | 30.08.2026 |
| Die beiden Köpfe binden unterschiedlich benannte native Pakete ein, und das der Konsole ist aus einem älteren libvlc mit einem App-Container-Modulsatz gebaut, dem Module fehlen, die der Desktop hat. | n = 2 | 01.09.2026 |
| Der Konsolen-Kopf war schon einmal durch eine Option lahmgelegt worden, die zu einem Modul gehörte, das er nicht trug, und das ist der Grund, warum der Schaltersatz heute je Kopf aus einer Positivliste berechnet wird. | n = 1 | 01.09.2026 |
| Ob die geladene Bibliothek den HDR-Schalter unterstützt, wird aus der Laufzeitversion gelesen statt aus dem Kopf abgeleitet, ein zurückgestuftes natives Paket verliert also HDR, statt beim Anlegen eines Players zu scheitern. | n = 1 | 01.09.2026 |
| Dem Bauer wird die Genauigkeit übergeben, mit der die Oberfläche tatsächlich hochgekommen ist, und nicht die angeforderte, eine gescheiterte 10-Bit-Zuteilung kann also keinen unpassenden Schalter zurücklassen. | n = 1 | 01.09.2026 |
| Im Modell gibt es nur zwei Oberflächengenauigkeiten: 8 Bit, das reines SDR ist und HDR-Quellen heruntergerechnet lässt, und 10 Bit, die Voraussetzung dafür, dass die Grafikschicht einen HDR-Farbraum überhaupt annimmt. | n = 2 | 01.09.2026 |
| Jede Multiview-Kachel ist eine eigene Player-Instanz und keine zweite Ansicht auf eine gemeinsame, und deshalb vervielfachen sich die Dekodierkosten eines Rasters, statt geteilt zu werden. | n = 1 | 01.09.2026 |
| Kacheln werden aus einem anderen Grundsatz an Optionen gebaut als der Hauptplayer: sie lassen die Unterdrückung von Schnappschüssen und Bildschirmanzeigen weg, die die Hauptinstanz trägt, und ergänzen die Unterdrückung der Titelüberlagerung, die die Hauptinstanz nicht braucht. | n = 2 | 01.09.2026 |
| Jede Hauptinstanz des Players wird mit einem Netzwerk-Zwischenspeicher von 400 Millisekunden konstruiert, bevor darüber eine pfadabhängige Zwischenspeicherung angewendet wird. | n = 1 | 01.09.2026 |
| Das Durchschleifen des Tons wird als numerischer Modus gesetzt und nicht als Wahrheitswert, und nur dann, wenn der Kopf der Desktop ist, die Instanz die Hauptinstanz und die Einstellung nicht aus. | n = 3 | 01.09.2026 |
| Die moderne Tonwertkurve ist in der von uns ausgelieferten Player-Generation überhaupt nicht verfügbar: die mitgelieferte Bibliothek ist älter, das zuständige Modul lebt nur in einer Videoausgabe, die wir von unserer Oberfläche aus nicht nutzen können, und der Direct3D-Shader-Tonwertumsetzer ist eine feste Kurve. | n = 1 | 23.08.2026 |
| Multiview-Kacheln sind stummgeschaltet auf 640 mal 360 und mit Ton auf 1280 mal 720 begrenzt, was die Dekodierarbeit unabhängig davon verringert, welcher Dekoder sie erledigt. | n = 1 | 23.08.2026 |