For the HTTP server part, libmicrohttpd is used.A simple motion detection algorithm is implemented and runs fast enough to keep up with the frame rate. It works by decoding a sub-sampled version of the image (80x60 for 640x480 JPEG frames) and creating a moving average background image. Image frames can then be compared against the background to detection motion. Right now no action is performed when motion is detected, but depending on the application one could trigger an alarm or suspend the HTTP transmission (sending only keep-alives) until motion is detected.

A very experimental feature is SSL signing of a video frame's hash value. This way one could make sure no one is tampering with the video frames as they are transmitted wirelessly. AFAIR the signing takes a few hundred miliseconds, so that might be a bit too slow.