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éclamation | Preuve | Compté |
|---|---|---|
| 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 = 1 | 23 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 = 1 | 23 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 = 1 | 23 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 = 1 | 23 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 = 1 | 31 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 = 1 | 23 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 = 2 | 1 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 = 1 | 1 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 = 4 | 23 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 = 2 | 1 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 = 3 | 23 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 = 1 | 23 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 = 1 | 23 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 = 1 | 23 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 = 3 | 1 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 = 63 | 23 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 = 2 | 23 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 = 3 | 30 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 = 1 | 23 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 = 1 | 23 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 = 1 | 23 août 2026 |