| The Smoke Codec |
| --------------- |
| |
| This is a very simple compression algorithm I was toying with when doing a |
| Java based player. Decoding a JPEG in Java has acceptable speed so this codec |
| tries to exploit that feature. The algorithm first compares the last and the |
| new image and finds all 16x16 blocks that have a squared difference bigger than |
| a configurable threshold. Then all these blocks are compressed into an NxM JPEG. |
| The quality of the JPEG is inversely proportional to the number of blocks, this |
| way, the picture quality degrades with heavy motion scenes but the bitrate stays |
| more or less constant. |
| Decoding decompresses the JPEG and then updates the old picture with the new |
| blocks. |
| |
| |
| TODO: |
| ---- |
| - make format extensible |
| - motion vectors |
| - do some real bitrate control |