simple NTSC video "decoding" on Mega

So I have NTSC video on a composite cable. Is there anyway I can accept that as input to the Arduino Mega and then calculate the average color? I'd like to do it realtime, like at least a few times a second. I'm a total newb, but I have a feeling this is probably impossible with the Arduino's memory limitations. If it is impossible, does anyone have suggestions on what kind of hardware could do this and then I would just send the data over to my Arduino.

Any ideas would be appreciated :)

Colour from analogue NTSC? Very very unlikely. Average luminance maybe, but not chroma. Not so much a limitation of the memory, but of the A/D converter - the colour sub-carrier is up at 3.57MHz, far faster than the Arduino's A/D is capable of.

Happy to be proved wrong.

Okay, I was thinking a composite video signal would be easier to work with, but would getting pixel information or average color from HDMI be easier because it's digital? I really would only need to "proccess" like every 100 pixel or something when calculating the average color.

I think you'd have problems with HDMI too - something like a 25MHz for standard definition - much higher for HD.

Possible, with external hardware.


Thanks for taking the time to reply AWOL

It is an ambilight project (its such a stereotypical project, but it was a great learning experience :D).

Right now the 'duino accepts 9 bytes from the computer over usb (the RGB values for left,top and right). It works great for watching movies on my computer, but I'd love to have ambilight for XBOX 360 and DVDs, etc

My thoughts so far:

  • My TV has a composite video out that I could tap into and get color information there.
  • Looks like color would be hard to get*
  • Getting color information from the hdmi at the source
  • Looks like it would just be data overload*
  • Using composite video out going to a tuner card to the computer then getting color information.
  • Tuner cards usually have a second delay, so I'm not thrilled about this option either*

So thats where I'm at right now.

You could do it if you had an analogue VGA signal (D-sub). Or with component video (slightly more complicated)

Or just get 3 light sensitive resistors and put red green and blue colour filters on them and point them at the screen. That would even work with cine films! ;D

If you can get the video in RGB,

It is a big IF from an NTSC composite video signal. You will need some decoder chips to do this.

Have you had a look at the Arduino Eye Shield [1] for PAL / NTSC video decoding? Only low-res b/w though, which probably makes it completely unsuitable for you. Unless you want a monochrome ambilight, I guess.


Have you had a look at the Arduino Eye Shield [1] for PAL / NTSC video decoding?

More correctly, CCIR / RS170