I'm thinking about building a device that will stream realtime VGA (640x480) compressed video, over a fast serial link (SPI).
The processor will be embedded, so computing power is the major constraint (best if it can be handled by an ARM at 72MHz, but I can potentially use a 400MHz DSP). Bit rate is the second concern, because the data will be piped through lower speed chips, and maybe even wireless.
What encoding algorithm would you recommend?
I've done about an hour of research, and found out that the most common algorithm for things like USB webcams and digital cameras is MJPEG. Basically a stream of independent JPEG images.
That should be computationally cheap, at the expense of size, vs something like MPEG, but I'm pretty sure something like H.264 will be too expensive.
Now my more concrete questions -
How much space saving is there generally between inter-frame compression algorithms like H.264, and MJPEG? (at similar quality) Surprisingly I couldn't find any benchmark on this.
Are there any popular algorithm that's computationally cheaper at the cost of slightly bigger file size?
Can I do my own simple inter-frame encoding? Eg. running binary diff on BMP files of 2 consecutive frames?
Theoretically I can also throw in an FPGA and do some hardware acceleration, but I couldn't find any free video encoding IP.
I know the requirements are really vague, that's because I don't know what I am doing .
The device I'm trying to build will have a cheap camera (cellphone camera style), connected to a processor/microcontroller that will compress the video stream, and send it to the "rest of the system", which will just merge the stream with its own low bandwidth data, and send it over a wireless link.