Hacker News new | ask | show | jobs
by rbanffy 1523 days ago
The other day I was reading the HDMI spec. I realised, in almost full horror, it’s stupidly streaming pixels instead of image deltas. When every TV has memory enough for several full frame images, this is just crazy.
7 comments

You're thinking of bandwidth savings?

Rethink that. If HDMI were delta-compressed, then what happens if you exceed the bandwidth limit for several frames in a row? To be reliable, it needs to have as much bandwidth allocated as is needed for bitmap streaming. And in that case, why not just stream the bitmaps...

And when gaming latency is a big issue, so buffering a few frames to have margin for a complex one would be unacceptable.
In this case the console would just stream full frames.

It could also send deltas and achieve much higher variable frame rates.

The need to stream pixels at a constant rate feels like scanning a CRT and makes generating video signals a lot more complicated than it needs to be.

> what happens if you exceed the bandwidth limit for several frames in a row?

There's no way deltas would exceed deltas that are just full frames. If you can't send a full frame over the wire, then you are trying to push too many pixels and need to downsample on any of the 3 dimensions you have to play with.

The assumption that a target (or source) device has a buffer and encoding hardware capable of delta pixel encoding is would drive costs up to the point where HDMI would not be an accepted industry standard. If you see any of popular video standards (both connectivity and formats like H.264) they avoid framebuffer and memory requirements like the plague.

Having said that, DSC exists and has been adopted by both HDMI and DisplayPort standards. But only on the highest end of capability because it costs a lot to implement on both sides.

> The assumption that a target (or source) device has a buffer

A full-frame 8K image with 32 bits per pixel takes up 128MB of RAM. An FHD one is 16 times less, 8MB. This is not a lot of memory for an appliance in 2002, when HDMI was introduced.

This was an absolutely huge amount of memory for an appliance component that costs a few cents. It still is.
What appliance that can generate or display FHD video costs a few cents?

You only need a frame buffer if you are holding a frame.

I've recently came to despise HDMI too. When I realized how many OFFICIAL standard revisions are there and how many fakes are on the market... With DisplayPort you have one cable serving you for a DECADE of HW revisions, supporting all framerates and resolutions. With HDMI you have to buy a new cable for each upgrade and when, for example, HDMI 2.0 says "Supports 4K" it only means 60Hz, and you have to buy a "8K" cable to connect a 4K gaming display. Not to mention varieties of "ethernet-enabled", "ARC-capable" and other bullshit out there on the market. And some rare proprietary HDMI cables too! Not to mention some 2.1 cables are actually optical...
How much more complex would that make each end? How long would it take to compress each frame?
For a late '90s/early '00s digital spec, that doesn't strike me as terribly surprising. Especially since it was a replacement for analog signals. Also means way fewer components and much simpler firmware.
Encoding would add latency and it is not free. A single frame in 4k UHD 10-bits takes more than 10Mb (1/3 of the L3 cache on modern CPUS).
And you are already paying enough because of HDCP.
Sounds clever but it’s pointless because you have to guarantee that you have enough bandwidth for the worst case, in your scheme when every pixel is changing every frame, anyway.
Agreed; it's the "constant work" principle https://aws.amazon.com/builders-library/reliability-and-cons...
Sure, but if you are not on the worst case (as in a desktop or anything where you don’t need every pixel changing on every frame) you can get higher spatial and temporal resolutions than you’d get from the dumb pipe as designed.