Raspberry Pi HDMI input & HDMI output for image processing

cyber101 picture cyber101 · Aug 29, 2015 · Viewed 16.7k times · Source

My goal is to send HDMI input video to the Raspberry Pi, then alter the input HDMI (image processing via C/C++ or Java) and send it back out a HDMI output port.

The issue is Raspberry Pi has only HDMI output port ,so there is no way to send in HDMI without using an expansion board.

1) I found a kick starter project that attempts to provide an expansion board that, however this is NOT funded yet

(https://www.kickstarter.com/projects/1419380698/connect-your-hd-camcorder-to-your-raspberry-pi?ref=discovery).

2) I ran into this Raspberry Pi x100 expansion board that has HDMI input

(http://www.cnx-software.com/2013/12/21/x100-raspberry-pi-expansion-board-adds-vga-output-rtc-and-more/)

The question is, can I programmatically detect & intercept the HDMI input port on x100, then send the altered data to regular HDMI output on the actual PI?

Please be kind enough to provide a detailed approach.

Thanks

Answer

Joe the Coder picture Joe the Coder · Feb 23, 2016

I've done similar projects for video editing (tried building a professional-level character generator.) Here's my 2 cents:

If you're just looking for something simple to overlay on top of an HDMI Signal, look at the Chumby NeTV. It's an 800mhz Marvel processor combined with a Spartan-6 FPGA that does all the heavy lifting with the signal, and it's $150 at Adafruit. You won't be able to process the input signal, since the signal could be HDCP encrypted, and even though the master key was found, it's still illegal to decrypt unless you have a license. The NeTV does some fancy stuff to inject it's signal into the existing stream.

If you're looking to do signal processing (i.e. add effects, adjust levels, chroma key, etc.) go with something more powerful than a Raspberry Pi 1/2. The BlackMagic ATEM Television Studio can do simple processing on multiple unencrypted HDMI signals, and has an API you can tie into (not easily, but doable.)

You could also use a strong computer with an HDMI capture card. I was using a computer to generate chroma-keyed overlays, and plugged the graphics card's output into a BlackMagic Intensity Shuttle connected to a second computer, which would then be processed by XSplit and dumped out a secondary video card.

As for processing video from an ethernet extender, there's people who have done it (see the Hack a Day link below), but it's along the same lines as using a capture card. The video stream is generally MJPEG, and the adapters send multicast packets (so your computer and the receiver would need to be on a segregated network.) The audio stream is separate, and you'd run the risk of things becoming out of sync. Personally, I was never able to get it working, as I was trying to send video out the transmitter, and couldn't get the initialization right.

http://hackaday.com/2014/01/25/reverse-engineering-an-hdmi-extender/