TV en direct 4K et HDR sur Xbox Series X : à quoi s’attendre

La 4K se lit. Le HDR est aujourd’hui ramené en SDR par tone mapping sur la console, et il y a une raison précise pour laquelle ce n’est pas un réglage que vous pouvez changer.

Une Series X lira une chaîne en direct 4K. C’est la première chose à dire, parce que le reste de cet article porte sur ce qu’elle ne fera pas, et ces lacunes sont faciles à prendre pour un défaut.

En résumé : la 4K se décode et se lit. Le HDR est ramené en SDR par tone mapping. Le passthrough bitstream Dolby et DTS est indisponible. L’AV1 retombe en décodage logiciel. Les quatre découlent d’un seul fait : l’application console lie une bibliothèque de lecture native différente de celle de l’Application Windows.

Deux builds de la même bibliothèque

La tête desktop charge libvlc 3.0.23. La tête console lie un build UWP fait à partir de libvlc 3.0.16 avec le jeu de plugins app-container, qui est ce qu’une application du Store sur console est autorisée à embarquer.

Ce que chaque tête peut demander, côte à côte :

switch                     desktop            console
--------------------------------------------------------------
--avcodec-hw=...           yes                yes
--avcodec-threads=3        no                 yes (memory cap)
--mmdevice-passthrough=N   yes (primary)      no (no mmdevice plugin)
--d3d11-hdr-mode=...       yes (10-bit only)  no (plugin too old)

Les deux builds n’embarquent pas les mêmes modules, et nous ne pouvons pas contourner cela dans notre propre code. Passez à libvlc une option d’un module que le build n’a pas et il ne se dégrade pas. Il fait échouer toute l’instance. La console avait déjà été cassée une fois de cette façon, par une option de tampon de préchargement. Donc les options sont décidées à un seul endroit, par tête, et la console reçoit le sous-ensemble que son build peut honorer. 63 tests tiennent cette ligne, en vérifiant que chaque combinaison de tête, de rôle et de profondeur de surface n’émet que des options autorisées et que la console ne voit jamais les deux qu’elle ne peut pas prendre en charge.

Le HDR

Pas sur la console aujourd’hui. Son plugin Direct3D11 est antérieur à l’option de mode HDR, donc il n’y a rien à activer. La surface reste en 8 bits et VLC ramène un flux HDR en SDR par tone mapping avant que vous ne le voyiez.

Une chaîne HDR se lit, et ressemble à une conversion SDR compétente d’elle-même. Pas fausse. Plus plate que le même flux sur une machine Windows avec un écran HDR.

Sur le desktop, cela a demandé une swapchain gérée par l’application, et la raison explique pourquoi ce n’est pas un petit portage. Le contrôle vidéo standard construit sa swapchain en BGRA 8 bits, et DXGI refuse un espace colorimétrique HDR10 sur un tampon 8 bits, donc la négociation ne pouvait aboutir qu’au sRGB quoi que porte le flux. Posséder la swapchain était le seul levier. Faire de même sur la console exige un build UWP de libvlc plus récent venant de l’amont.

Nous nous étions trompés à la première tentative, d’une manière que seule l’application en cours d’exécution a révélée. Demander 10 bits sans condition change la façon dont le compositeur traite le plan vidéo : le chrome translucide du lecteur se composait plus clair, et les commandes de transport se sont mises à transparaître à travers la vidéo. Donc le desktop demande maintenant 10 bits uniquement quand l’écran sur lequel il se trouve signale un espace colorimétrique HDR, et tout échec de sondage répond SDR, parce que SDR est la réponse qui ne peut rien faire régresser.

L’audio

Le passthrough est désactivé sur la console, pour deux raisons indépendantes. Le build UWP de libvlc n’embarque aucun plugin mmdevice, donc l’option n’a rien à qui parler. Séparément, Xbox ne laisse de toute façon pas les applications tierces envoyer l’audio en bitstream.

Chacune suffirait à trancher. L’audio de la console est décodé en PCM et envoyé ainsi au téléviseur ou à l’ampli. Très bien pour la stéréo et la plupart du surround ; pas ce que vous voulez si vous avez acheté un ampli pour décoder le bitstream lui-même. Même sur le desktop, le passthrough est restreint au lecteur principal, parce qu’il ouvre le périphérique audio en mode exclusif et qu’une instance de secours ou une tuile de mosaïque demandant le même point de terminaison verrait son audio échouer purement et simplement.

Les cartes de réglages pour le HDR et le passthrough sont masquées sur la console plutôt qu’affichées désactivées. Un contrôle qui ne peut rien faire est pire que pas de contrôle du tout.

Les codecs, et celui qui pique

H.264 et HEVC sont les cas normaux et les deux vont bien. L’AV1 est celui à connaître : le FFmpeg du build console n’embarque aucun décodeur matériel AV1, donc un flux qu’un GPU Windows récent gère sans effort retombe en décodage logiciel sur la console.

Décoder de la 4K en logiciel coûte cher, et c’est là que le budget mémoire apparaît. La console plafonne les threads de décodage d’images à 3, et le nombre n’est pas arbitraire. Laissé choisir seul, le décodeur en a pris 6 sur la machine de mesure, ce qui a produit un pool de sortie Direct3D11 de 40 surfaces en 4K : environ 500 Mo de mémoire engagée visible par le GPU contre un budget Xbox de 1 Go. Plafonner à 3 garde cela dans les limites. Le décodage matériel n’utilise pas ces threads, donc le plafond ne coûte rien sur les chemins qui comptent.

La version pratique : si une chaîne saccade sur la console et se lit proprement sur Windows, vérifiez le codec avant votre connexion. Pourquoi certaines chaînes fonctionnent sur Windows mais pas sur Xbox est le pas-à-pas, et H.264 contre HEVC contre AV1 explique ce que coûte la différence.

À quoi ressemble le bon résultat

Pour référence, les chiffres desktop de la même passe de vérification : la 4K en direct se lit, la 4K à la demande se lit avec les moteurs de décodage du GPU à environ 11 pour cent là où c’était auparavant du logiciel pur, et une passe complète couvrant démarrage à froid, plein écran et picture-in-picture a consigné 0 erreur.

La console n’atteint pas tout cela aujourd’hui, et l’écart est en amont plutôt que dans notre code. Ce qu’elle fait bien, c’est ce pour quoi la plupart des gens l’ont achetée : une chaîne 4K en direct sur un grand écran, pilotée depuis le canapé, sans PC dans la pièce. Transformer une Xbox en hub TV du salon est la configuration pour cela.

Ce que cet article a mesuré21 affirmations, chacune avec les preuves derrière elles
RéclamationPreuveCompté
La tête console lie un build UWP de libvlc issu de libvlc 3.0.16 avec le jeu de plugins app-container, qui est une bibliothèque native différente de la 3.0.23 que charge le desktop.n = 123 août 2026
La sortie HDR n’est pas émise sur la tête console. Son plugin direct3d11 est antérieur à l’option de mode HDR, donc la surface reste en 8 bits et VLC ramène le HDR en SDR par tone mapping.n = 123 août 2026
Le passthrough audio bitstream n’est pas disponible sur la console pour deux raisons indépendantes : le build UWP de libvlc n’embarque aucun plugin mmdevice, et Xbox ne laisse pas les applications tierces envoyer l’audio en bitstream.n = 123 août 2026
Le FFmpeg du build console n’embarque aucun décodeur matériel AV1, donc un flux AV1 décodé en matériel sur un GPU Windows récent retombe en logiciel sur la console.n = 123 août 2026
La console plafonne les threads d’images avcodec à 3. La sélection automatique en a choisi 6 sur la machine de mesure et a produit un pool de sortie Direct3D11 de 40 surfaces en 4K, environ 500 Mo de mémoire engagée visible par le GPU contre un budget Xbox de 1 Go.n = 131 août 2026
Sur la tête desktop, la 4K en direct et la 4K à la demande se lisent toutes deux avec les moteurs de décodage vidéo du GPU actifs à environ 11 pour cent, sans aucune erreur consignée sur une passe complète de démarrage à froid, plein écran et picture-in-picture.n = 123 août 2026
Les deux têtes lient des paquets natifs aux noms différents, et la différence est documentée comme non cosmétique : le jeu de plugins de la console est celui de l’app-container, qui omet des modules que le desktop possède.n = 21 sept. 2026
Une option appartenant à un module absent du build fait échouer toute l’instance du lecteur plutôt que d’être ignorée, et la console avait déjà été cassée une fois de cette façon par une option de tampon de préchargement.n = 11 sept. 2026
Quatre conditions doivent toutes être réunies avant que l’option HDR soit émise : la tête desktop, un rôle non mosaïque, une surface effectivement montée en 10 bits, et une version de bibliothèque sondée à l’exécution de 3.0.21 ou plus récente.n = 423 août 2026
Le modèle de surface a exactement deux précisions : 8 bits, documentée comme SDR uniquement avec les sources HDR ramenées par tone mapping, et 10 bits, qui est la condition préalable pour qu’un espace colorimétrique HDR soit accepté.n = 21 sept. 2026
La surface essaie trois configurations dans l’ordre et son dernier échelon est identique à l’octet à celui livré précédemment, donc une machine qui ne peut pas composer en 10 bits se comporte exactement comme avant plutôt que d’entrer dans un état non testé.n = 323 août 2026
Une surface qui ne peut pas être créée du tout consigne l’erreur et se laisse non chargée plutôt que de lever une exception depuis un rappel de mise en page, ce qui ferait tomber l’application.n = 123 août 2026
Remplacer le contrôle vidéo standard a impliqué de reproduire exactement son contrat, jusqu’à décaler la largeur de 2 pixels pour provoquer une reconstruction, parce que les chemins de reparentage, de picture-in-picture et de transfert sont tous bâtis sur cette sémantique.n = 123 août 2026
Sur la tête qui le possède, le passthrough est restreint au lecteur principal parce qu’il ouvre le périphérique audio en mode exclusif, si bien qu’une instance de secours ou une tuile demandant le même point de terminaison verrait son audio échouer purement et simplement.n = 123 août 2026
Trois rôles de lecteur existent et tous ne peuvent pas réclamer le périphérique audio : un principal que le spectateur regarde, une instance de secours pour le transfert, et des tuiles de mosaïque dont plusieurs tournent en même temps.n = 31 sept. 2026
La matrice d’options est couverte par 63 tests vérifiant que chaque combinaison de tête, de rôle, de réglage et de profondeur de surface n’émet que des options autorisées, et que la console ne voit jamais les deux qu’elle ne peut pas prendre en charge.n = 6323 août 2026
Les deux vraies chaînes de version de la bibliothèque sont figées dans les tests, avec le plancher pris en charge, et une version illisible est traitée comme non prise en charge plutôt que présumée bonne.n = 223 août 2026
Le budget d’environ 1 Go de la console est la contrainte déterminante pour la lecture haute résolution : une session de navigation desktop de 12 minutes a culminé à 1080 Mo, ce qui sur ce budget équivaut à une terminaison.n = 330 août 2026
Sur la console, les réglages HDR et passthrough sont masqués plutôt qu’affichés désactivés, parce qu’il n’existe de version partielle d’aucun des deux vers laquelle se dégrader.n = 123 août 2026
Aucune des lacunes de la console ne peut être comblée dans le code de l’application : l’exigence énoncée est un build de bibliothèque console plus récent venant du projet amont.n = 123 août 2026
Sur le desktop, HDR Auto ne demande une surface 10 bits que lorsque la sortie sur laquelle se trouve la fenêtre signale un espace colorimétrique HDR, en correspondance avec le moniteur de la fenêtre. Tout échec de sondage répond SDR.n = 123 août 2026