It’s no secret that I have a bunch of issues with H.264, so what are the alternatives? I like wavelet, I like it a lot actually, but why?
But let’s take a little detour, and look at delta compression (what I sometimes refer to as removing the temporal redundancy).
Now, consider that the biggest problem with H.264 is random access to frames. Instead of referencing the one or more of the previous frames (like any MPEG variant), we always reference the I-frame (first frame in the GOP). That would allow GOPs of very long lengths, minutes if need be. And to decode the last frame we’d only need the first I-frame, and the last P-frame (if there are ANY camera manufacturers that support this, please let me know). As a lot of surveillance video is recording very static scenes, this system would be very efficient in a lot of situations. Not all situations of course, but I am not suggesting an outright ban on MPEG variants, I merely suggesting an alternative.
Now, why wavelet then?
Wavelet has a very neat property. You don’t have to send everything to the client for the client to display the frame. If a client is on a low bandwidth connection, they only get the top left corner of the image. There is no need to transcode or scale anything, you simply skip bytes. There might be situations where a megapixel stream is being shown in a 320×240 window, so why send a giant JPEG across the wire, only to throw away 70% of the pixels?
If we also use the tweaked I/P-frame relation, we can even skip frames if the client cannot keep up, or prefers to get ALL pixels rather than a higher framerate.