OSD/Menu overlay on video feed

Thread Starter

strantor

Joined Oct 3, 2010
6,782
I have an analog camera feed (NTSC or PAL) and I want to overlay some interactive menus and graphics on it. It will be displayed on an HDMI monitor, so there be a converter somewhere in the mix. I've ordered a small board with a MAX7456 on it that overlays text on an analog video signal, but I want to do a little more than that. I don't know what to look for. I considered using RPI with a USB video capture dongle but the RPI is quite slow to boot for my application. Is there an inexpensive FPGA-based devboard meant for tinkering with video signals? Or some solution that I don't know enough to ask about?
 

wayneh

Joined Sep 9, 2010
17,496
I have an analog camera feed (NTSC or PAL) and I want to overlay some interactive menus and graphics on it.
I don't have an answer for you but I know enough about video to know that an onscreen interactive menu is a big deal compared to a mere overlay. It's done for disc based media, such as DVD or Blu-ray, by the authoring software. An interface is coded and placed on the disc. The disc player runs the code and responds to inputs from your remote control.

You're on the right track, I think, of using an app on a computer to run the code. The user will interact with that app somehow (remote? keyboard?). It may need to be a custom app to have the buttons or functions you need. I have no idea what might be out there. The app will send the combined signal to the HDMI monitor.

I hope I'm wrong but this sounds likes a very challenging project.
 

MrSalts

Joined Apr 2, 2020
2,767
What interface do you have to control the button presses/menu number selection?

if you can set up your pi for a fast start and auto-run an app, you can get to about 30-35 seconds. After that, there is Python-based video/graphic editing to draw graphics in top of anything in PIL (pillow library) or use something like imagemagick to create/geometric graphic overlays and even edit frames. Then everything will be carried out through the HDMI feed, no need for a second usb based interface unless you have a cap-touch panel to bond to the display (display cover).
Is this the only graphic to be shown or is this an overlay on a video for a training video that is playing below the text at the same time?
 

Thread Starter

strantor

Joined Oct 3, 2010
6,782
There is this, and a MAX7456 library, or maybe this. It appears, though, that analog video isn't a hot topic nowadays.
This was a thought that I didn't complete:
It will be displayed on an HDMI monitor, so there be a converter somewhere in the mix...
...so the solution doesn't have to be specifically an analog video one. The overlay could be on the HDMI signal after the converter. Or maybe the converter and the OSD component could be same device; probably an FPGA-based DSP dev board geared toward this kind of thing.

There's a couple more things on my wish list that would be awesome if the hypothetical device could do it: smooth zoom in/out on the video (not big leaps like 1x-2x-4x etc), and record video to SD card.
 

Thread Starter

strantor

Joined Oct 3, 2010
6,782
An Arduino wouldn't have any boot time. It could load graphics from an SD card and write them to the OSD chip.
Yes I would really like to do this with arduino if possible. There will already be an arduino in the mix and if it could handle the OSD too, that would be great. There is a lot you can do with arduino and an LCD. I wish I could just use the arduino LCD library and write the output to an OSD chip. That would be nearly ideal. That gave me another idea: get a transparent LCD and physically overlay it on the monitor. But the only really transparent LCD I was able to find was <2" diagonal and the monitor I want to use is 3.5" diagonal.
 

Thread Starter

strantor

Joined Oct 3, 2010
6,782
I don't have an answer for you but I know enough about video to know that an onscreen interactive menu is a big deal compared to a mere overlay. It's done for disc based media, such as DVD or Blu-ray, by the authoring software. An interface is coded and placed on the disc. The disc player runs the code and responds to inputs from your remote control.

You're on the right track, I think, of using an app on a computer to run the code. The user will interact with that app somehow (remote? keyboard?). It may need to be a custom app to have the buttons or functions you need. I have no idea what might be out there. The app will send the combined signal to the HDMI monitor.

I hope I'm wrong but this sounds likes a very challenging project.
I want very badly for you to be wrong, as this is not the part of the project I was looking Forward to spending a lot of time on. But, I suspect you are right. Damn.
 

MisterBill2

Joined Jan 23, 2018
18,176
I want very badly for you to be wrong, as this is not the part of the project I was looking Forward to spending a lot of time on. But, I suspect you are right. Damn.
Screen inputs, touch screen of any flavor, are indeed more complex. Also following the curser inputs. Pointing to press an external input with just an on-screen overlay is much simpler.
Post #1 does not mention if the interactive part is with the screen or separate inputs. Separate off-screen inputs from a keyboard are the very easiest.
 

Thread Starter

strantor

Joined Oct 3, 2010
6,782
Screen inputs, touch screen of any flavor, are indeed more complex. Also following the curser inputs. Pointing to press an external input with just an on-screen overlay is much simpler.
Post #1 does not mention if the interactive part is with the screen or separate inputs. Separate off-screen inputs from a keyboard are the very easiest.
Sorry, I should have mentioned that. The inputs will be a rotary encoder and a few buttons. Very similar to this below; just imagine that the 84x48 graphics in the Nokia screen was overlaid in the top corner (or the right side, wherever I want it to be) of a video feed in an 800x480 screen.

 

MisterBill2

Joined Jan 23, 2018
18,176
OK! If there is no need to get input from the screen then the program function, other than the program knowing what the external inputs mean at that moment, adding the menu is just an issue of adding to the video data stream. There could even be added on-screen graphics with arrows pointing at the row of buttons next to the screen.
So now it is simply a matter of the code that delivers the OSD information being compatible with the hardware . That will not be terribly complex.
Unfortunately, the addition of the OSD data is not part of my skill set. I write the description for the programmer as to what happens at each step.
 

Thread Starter

strantor

Joined Oct 3, 2010
6,782
There is this, and a MAX7456 library, or maybe this. It appears, though, that analog video isn't a hot topic nowadays.
It seems the MAX7456 can do more than I thought.


Here is an example of a basic menu that would work for me even if doesn't look as nice as I would like.


My research in the past days suggests that the tiniest step closer to a more appealing OSD UI requires several huge leaps in technology, effort, and cost.

I ended up getting this. It's basically an arduino with MAX7456 OSD chip on it. It is sold as a plug & play drone FPV device and is pre-programmed to retrieve specific data from a specific flight controller and display it in a specific way on the video feed, requiring no programming by the buyer. But I have seen enough to be convinced that I can re-write it according to my own whims with Arduino IDE and the MAX7456 library. I hope to be able to also make it serve my other needs that were planned to be filled by an arduino Nano. The shield you linked to first would have been perfect for bench testing but it's too big for the enclosure I want to cram all this into.
 
Top