4K and HDR live TV on Xbox Series X: what to expect
4K plays. HDR is tone-mapped to SDR on the console today, and there is a specific reason that is not a setting you can change.
Founder and engineer, My TV Player
Kais Chebbi builds My TV Player: the Windows and Xbox clients, the web console, and the services behind them. The notes published here come out of that work rather than out of a content calendar, which is why they carry counts from real files instead of round numbers.
Every article states how each of its claims was arrived at. A claim taken from a specification names the section; a claim taken from a measurement names the sample and the day it was counted. Nothing is published until a reviewer has signed it off, and the reviewer is named on the article.
The M3U and Xtream import path: the parser that reads extended M3U attributes, the portal probe, and the de-duplication that keeps two providers offering the same channel from becoming two channels.
XMLTV ingestion and curation, including the per-region grabbers, the parser repairs that keep a malformed feed from taking a household's whole guide down, and the channel-id normalization that joins a provider's ids to a guide's.
The libVLC-backed player in the Windows and Xbox clients: the stream watchdog, source failover, and the recording scheduler that books from the guide.
The identity, catalog and metadata services, the household sync model that keeps favorites and resume points consistent across devices, and the operator console that runs them.
4K plays. HDR is tone-mapped to SDR on the console today, and there is a specific reason that is not a setting you can change.
The playlist never touches the console's on-screen keyboard, because it is never entered on the console at all. You add it once in the browser and the Xbox finds it there.
There is no audio delay slider in the app, and this article says so up front rather than sending you looking for one.
The CPU matters less than you think and the RAM matters more. We have the measurements to say why.
A provider advertising a seven day archive and a client showing two days are usually both telling the truth. The limit is the guide, not the archive.
Catch-up shipped on the desktop first and the console page is still outstanding. Here is the accurate picture, because a wrong one costs you an evening of looking for a button.
The cable is the easy part. What decides whether it looks right is which display Windows thinks is primary and what the app asks that display for.
Bandwidth is rarely the problem. Route length, the extra hop's stability, and whether your player can even use the tunnel are.
Every button that appears in the hint bar does something, and every button that does something appears in the hint bar. That rule is the whole map.
The app already classifies nine distinct playback faults. Knowing which one you have turns a vague problem into a short list.
Three generations of the same idea, each about half the bitrate of the last for the same picture, each costing more to decode. Where your hardware stops is where your channels stop.
One is a fixed circuit that either exists for your codec or does not. The other is your CPU doing the same job with general-purpose instructions. There is no middle setting.
There are two install channels and they exist for different reasons. One of them keeps working if the other disappears.
The console never asks you to type a playlist URL with a thumbstick. It asks for one eight-character code, and everything else arrives over sync.
They are the standard media-player keys, with one rule about live TV that catches everybody once.
A media centre that can do IPTV and an IPTV player are different tools. The question is not which is better but how much you want to assemble.
The list is short because the platform is hard, and we make one of the entries. Both of those facts are stated here rather than buried.
The same provider will give you both, and they are not two formats for the same data. One is a photograph and the other is a conversation.
Six layouts, from two tiles to nine. The interesting part is not the grid, it is that the app counts your provider connections before it starts a single stream.
They solve the same problem on the same two platforms and disagree about one thing: where a playlist is supposed to live.
They do not compete for the same device, so this is not a purchase decision. It is worth reading for what TiviMate got right and what we took from it.
The gates are set in the browser and enforced on the console. When the console cannot reach the server to check, they close rather than open.
One of them is a security product on your own machine blocking the login while every stream keeps playing. That one takes the longest to find.
A guide URL is often 200 characters of query string. There is exactly one place you should be entering that, and it is not a games console.
Xtream credentials buy you three things a flat playlist cannot express. You enter them once in a browser, and the console inherits all three.
Three different faults produce this symptom and the player tells them apart. Two are not yours to fix, and knowing which is which saves the evening.
There is no toggle for this in the app. There is a good way to do it in Windows, and one detail about packaged apps that makes the obvious method fail.
An empty guide is almost never a setting you got wrong. It is usually the join between two identifiers that do not match.
The console is already under the TV, already on the network, and already has a remote. What it needs is a setup pass done somewhere with a keyboard.
A media remote reaches most of the app and cannot reach all of it. The gap is the two triggers, and on a large catalogue that is the gap you will feel.
Two ways to do it, and one detail about HDR on a mixed-monitor desk that explains a picture nobody could otherwise account for.
The field splits three ways, and the split is about how much of the work you want the application to do rather than about features.
It is a 1990s XML format with two elements that matter. Everything hard about it comes from the fact that anyone can generate one and nobody validates it.
The two apps share every screen and load two different native player libraries. Almost every difference you will hit comes from that one fact.
One of the three files we keep for parser work is named .m3u8 and holds 1,895 channel rows. Another is named .m3u, and on 303 of its 308 rows the URL path ends .m3u8.
The cap is counted on the source. Your device can read the number, spend against it, and never once check whether it moved.
A portal live URL is one HTTP GET that never ends. An HLS URL is a text file that lists the next few seconds. Almost everything else follows from that.
A gzip member cut short mid-download inflates into a short, valid, plausible document. Nothing raises, and if your pipeline gates on a hash, nothing ever will again.
No standard defines this attribute. One measured playlist carries 1,355 of them over 263 distinct values, and no two of the applications that read it agree.
There is no M3U+ specification. There is a convention, a corpus, and a parser that has to survive both.
A frozen picture is not an error condition. The engine keeps reporting Playing, and the only thing that changes is a counter delta going to zero.
A guide that is out by a whole number of hours is almost never a mystery. It is a suffix that was present in the file and not honored.