Since I have nothing better to do (beside some slight NihAV
refactoring) and somebody told me about it, I decided to look at the format. Apparently back in the day The Multimedia Mike also attempted to research some information about it but I don’t think anything substantial came out from it.
Anyway, here’s what I everybody knows about it: as apparent from the name, it was developed by Johnson-Grace company, it combines a lot of different image compression methods and format—so apparently you can have slide show with an accompanying MIDI or speech, and it splits image into tiles and tries to compress them using whatever method fits best.
So, here are some additional details.
Audio codec is a rather common speech codec (LPC plus quality improvement post-filters) with one peculiarity: internally it decodes 16-bit samples yet outputs 8-bit PCM.
Slide show—I had just a cursory glance but it seems to mix various kinds of content with the slide show commands (like displaying next image) in the single file. Of course it’s last in my priorities list.
Image formats—now that’s where the real fun is. It handles about twenty different chunk types (even if most of them are useless and provide some image information at best) and recognizes (and skips) about the same amount too. I’m still struggling with the code but there seem to be three types of compression: LZ77-based lossless compression, lossy compression with the same coding for coefficients that probably uses wavelet coding, and another lossy compression (for palette-based images?). So far the only things I’m sure about is that it employs LZ77-based compression that reminds me of deflate with dynamic codebooks (but differs from it or DCL) and it seem to code signed coefficients while at it; the other thing is there are way too many functions for converting palette formats (usually between 24- and 32-bit RGB but quite often it’s between 32-bit RGB and 32-bit RGB in the same format but as an integer or an array of bytes).
In either case I’m in no hurry and can keep digging into it at my leisure.