Implement JPEG decoding operation
The goal is to be able to upload a JPEG compressed image into ZZ9000 address space, then call a decode_jpeg() function via a ZZ9000 register giving source and dest (uint32_t*) pointers, plus a clipping bounds and stride specification (see below). ZZ9000 should decode the specified rectangular portion (up to its full size) of the image in the background. We should also implement status register(s) for the function where Amiga can poll the result (OK/error/busy).
The target decoded format should be RGBX with 8 bits per color channel (one 32 bit integer per pixel). The following parameters need to be supplied to the function:
- x offset into the image (for scrolling/panning)
- y offset into the image
- width (the max amounts of pixels of the image that will be displayed)
- height (the max amounts of pixels of the image that will be displayed)
- stride (pixels per output line, i.e. the window or screen width of the target display)
To achieve this, we need a new .c/.h file implementing the function and all its dependencies (self contained) except for the C standard library. I already tried nanojpeg in the past, but it had too many problems with different JPEG formats.
For HW-independent development/testing, create a main.c harness for Linux that instruments the function. Later, we integrate the jpeg decoder into the firmware.