A customer of mine is being quite successful at selling interactive video artworks like this :
http://cinimodstudio.com/project/flutter/ (which I designed, using playback from NAND flash via a small FPGA)
and this
http://cinimodstudio.com/project/baby-flutter/ (based on a beagleboard)
and also large-scale stuff like this
http://cinimodstudio.com/project/deep-blue-interactive-aquarium/ (uses very high-end PCs for realtime rendering)
We're looking at scaling up the smaller units up to HD type resolutions, and are drawing a blank on suitable hardware platforms. Most video playback slutions are unsuitable as we need minimal latency displaying randomly selected frames at 60fps, so anything with pipeline delays or keyframe+difference compression isn't responsive enough, and high image quality is important, so can't use much compression.
In addition to fast interaction, another requirement is fanless operation and reasonable power efficency, so we can;t just throw a turbo-nutter PC at it.
My thinking is that instead of looking at mid-high end processors, a better approach is probably to just store uncompressed images and fire them out to HDMI as required with an FPGA.
Either a few pages of frame buffer plus a fast SSD, or enough RAM to cache a substantial amount of content (a few Gbytes) and a slower mass storage solution.
Or maybe use an SSD with minmal buffer and rely on the SSD buffer/cache for frame refresh.
It's not a problem if it takes a while (a minute or two) at startup to load up the RAM.
The actual processing will be very low-effort - taking inputs from sensors and deciding which pre-rendered frames to display when.
the content would be written once and rarely changed, so the playback system would not need to worry about any writing, and teh media can be formatted to make it easy - e.g. absolute block addressing.
The volumes could get into the low hundreds, so a custom solution may be viable - I've had a quick look at various boards but can't immediately find anything with a lot of RAM (or DIMM socket).
The hardware I'd envsage would look something like:
FPGA (guessing Spartan-6 sort of level), DIMM socket(s) for expandability, SATA or high speed SD card. Low-speed interface (SPI/UART) to a seperate host processor (Raspberry Pi or something comparable) and HDMI/DVI out.
Passive cooling - the board could be arranged to suit cooling via a large heatsink and/or heatpipe, but no fan - it must be silent.
Looking at RAM bandwidth, we're nowhere near bleediong-edge. at about 250MBytes/sec (1024x1280x24bppx60fps).
A build cost in 100x of up to, say £300-ish would be OK.
Although it could in principle drive LVDS panels direct, a concern is supporting different connectors etc. on different panels. We're currently thinking that HDMI may be a more useful output as it gives a lot of flexibility, and allows for driving projctors etc.
I'd be interested in opinions on :
Any off-the-shelf solution that might come close (or be adaptable)
As a relative FPGA Newbie, how hard is it likely to be to get an FPGA+memory+DDR+HDMI solution working?
I know most FPGA vendors have some solutions to help with memory, HDMI etc., but how easy are these to use in practice? I have managed to get HDMI in/out working on an
Atlys board with ready-rolled modules, but only at medium resolution.
What might it cost to contract out the hardware and FPGA design to do something like this. I know enough to be able to produce a very well-defined detailed spec, and we can leave all the stuff like filesystem management to the host processor that we would be in charge of implementing - the custom part would simply be a display engine that displays specified blocks on command.