0
\$\begingroup\$

I'm considering coding a software that would read data sent from a device (game console, computer, ...) via HDMI. The program would then be able to display the shared content inside a window, which would make it possible to use a laptop screen as a monitor. More info on what I'm trying to do here.

I'm aware that an HDMI-out port of a laptop can't be used to retrieve data. I would rather use an USB port, with potentially a HDMI to USB adapter.

My question is : Is there any physical barrier blocking me from retrieving an HDMI output from USB port, manipulating it in my program to somehow display it on screen ?

In my mind, this should just be some transfer of bits. With the right protocol understanding, my program should be able to retrieve the data one way or another. But I must admit my knowledge of HDMI and hardware is really limited. Any redirection to web content, doc, tutorial or blog would be greatly appreciated by the way.

Thank you.

\$\endgroup\$
4
  • 3
    \$\begingroup\$ Sounds like what you want is an HDMI capture card that outputs to USB. They're reasonably common for game streamers, and it shouldn't be too hard to find a place that sells them. There's no need to reinvent the wheel here. On the other hand, if your main goal is to learn more about HDMI and USB, have a look at the HDMI2USB project. \$\endgroup\$
    – tangrs
    Commented Oct 7, 2020 at 10:27
  • \$\begingroup\$ @tangrs Yep, I learnt about it but I wonder why you have to get through such cards instead of just having an appropriate software on your computer... \$\endgroup\$
    – SinLey
    Commented Oct 7, 2020 at 10:42
  • \$\begingroup\$ I'm not sure why you would think that'd be possible. USB isn't GPIO. USB and HDMI aren't remotely compatible (neither electrically or protocol-wise). Say you were to somehow connect an HDMI output to a USB port, almost no USB controller hardware will expose the kind of interface that would even allow you to control it with software at the level you need. \$\endgroup\$
    – tangrs
    Commented Oct 7, 2020 at 12:22
  • \$\begingroup\$ Oh okay, I just came to understand that there are no such things as "HDMI to USB adapters". Those are juste miscalled capture cards... So yeah, it makes sense I have to get through a capture card to retrieve the output. Sorry if my question seemed silly and thanks for your help :) \$\endgroup\$
    – SinLey
    Commented Oct 7, 2020 at 12:54

2 Answers 2

3
\$\begingroup\$

Yep, I learnt about it but I wonder why you have to get through such cards instead of just having an appropriate software on your computer...

USB is a complex bidirectional protocol implementing a bursting bus with host arbitration. HDMI is a complex, multi-lane unidirectional protocol.

They electrically aren't related to each other.

You need special hardware, including buffers, and packetization, to make that work.

Software is exactly that: instructions you run on a processor of sorts one data that has already been acquired by specific hardware. USB is not specific hardware for HDMI signals. They simply aren't compatible in any way.

with potentially a HDMI to USB adapter.

so, yeah, you need one of these commercially available devices.

\$\endgroup\$
1
  • \$\begingroup\$ This does answer my question. Thanks for your help :) \$\endgroup\$
    – SinLey
    Commented Oct 7, 2020 at 12:59
1
\$\begingroup\$

There are few potential problems:

  1. High speed interface - HDMI is a very high speed interface, it requires advanced board design to implement properly.
  2. Encryption - Some HDMI content is protected by HDCP. Few years ago, it was broken, still it is an additional roadblock for your implementation.
  3. Data rate - HDMI 2.1 maximum data rate is 48Gbps, Good luck transferring this over USB without compression.
\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.