• Nigel Tao's avatar
    Basic image/jpeg decoder. · 8bf58725
    Nigel Tao authored
    This is not a complete JPEG implementation (e.g. it does not handle
    progressive JPEGs or restart markers), but I was able to take a photo
    with my phone, and view the resultant JPEG in pure Go.
    
    The decoder is simple, but slow. The Huffman decoder in particular
    should be easily improvable, but optimization is left to future
    changelists. Being able to inline functions in the inner loop should
    also help performance.
    
    The output is not pixel-for-pixel identical to libjpeg, although
    identical behavior isn't necessarily a goal, since JPEG is a lossy
    codec. There are at least two reasons for the discrepancy.
    
    First, the inverse DCT algorithm used is the same as Plan9's
    src/cmd/jpg, which has different rounding errors from libjpeg's
    default IDCT implementation. Note that libjpeg actually has three
    different IDCT implementations: one floating point, and two fixed
    point. Out of those four, Plan9's seemed the simplest to understand,
    partly because it has no #ifdef's or C macros.
    
    Second, fo...
    8bf58725
Makefile 2.04 KB