At the gym I attend, they were using a Tivo to capture a digital camera video feed that was then delayed by ~2-3 minutes so that the students could view their performance afterward. I had no idea the Tivo was even capable of this! Well, the Tivo died some time ago and their review system is sitting unused and collecting dust.
I thought it might be a challenging project to create an equivalent device that would capture and buffer the cameras video feed. A 1 minute delay should be sufficient.
This is me thinking out loud, so bare with me:
I am assuming the video signal is NTSC. I have also made assumptions that if the data is captured at a specific sampling rate and sent back out at that sampling rate, the signal will be a recognizable/usable NTSC signal. If these assumptions are false or misguided, let me know. I believe the highest frequency is the color burst (approx 3.6Mhz), so the capture rate would need to be at least double that which would require a high speed ADC (and DAC on the other end). All of this data would need to be stored somewhere, which would be some type of flash or RAM memory. At 8-bits of resolution and 10M samples per second, I would need at least 600MB of storage space for 60 seconds of video. And of course, there needs to be some type of microcontroller or microprocessor to handle all of the passing of data back and forth. Reading the stored data and spitting it back out at a consistent rate so that the signal looks like a proper NTSC signal seems like it would be a challenge.
At first, I poked around to see if there was any way to use a microcontroller for this solution, but due to the high capture rate this seems like an impractical route to pursue. Even the high end PICs max out around 40MIPS, which isn't near enough to capture the data and write it to memory while also performing the reads from memory and spitting it back out again; all in a very time-sensitive manner. Capturing at 10M samples per second would only allow me 4 instructions to perform all of the above.
So I am curious to see if anyone has any input on a good route to take to solve this problem. Most of my experience has been with PICs and not a whole lot beyond that. I don't expect this to be a simple or quick task. And I know I could just go out and buy an inexpensive device to do this, but that defeats the whole purpose for me... learning new stuff!
I have seen some mention of FPGAs being a good tool for this task. I have had a VERY small amount of exposure to FPGAs and I don't have any FPGA dev tools or hardware, so I'd need to buy something (preferably capable, but not crazy expensive). I have done projects that read/write to/from SD Cards (FAT), but have never interfaced directly to flash/ram, so that would be something totally new for me as well.
Alright, enough rambling. I think you get the idea of what I'm trying to do. Any feedback would be greatly appreciated.