Hi, I'm close to start this task. As noted on the task summary there are two
possible libraries we can use to implement this filter. So, I wrote a review on
each aspect I considered that was needed.
##
Licence
----------
## OpenJPEG
BSD Licence.
## Jasper
Jasper Licence (based on MIT licence).
Platform
-----------------
## OpenJPEG
Written in C. Tested under:
Red Hat 9.0
OSX 10.3
MS VC++ 6.0
Has source/binaries for GNU/Linux, OSX and win32.
## Jasper
Written in C. It says to compile and work on these (sort of old) platforms:
Red Hat 7.3
SunOS/Sparc 5.7
Windows 2000 professional
Apple macintosh PPC G3
Power macintosh
Solaris 2.7
Compaq/DEC Alpha
IBM POwerPC, AIX 4.2
HP 9000/712 HP-UX
SGI Origin 200, IRIX 6.5
OpenVMS Alpha 7.2-1
Should be no trouble with modern systems.
Dependencies
-----------------
## OpenJPEG
Not specified, though the source tree contains libs/libtiff and libs/freeimage
directories.
## Jasper
For JPEG support needs the IJG library. For jiv (image viewer) needs GLUT.
Installation
-----------------
## OpenJPEG
Makefile (seems they use CMake)
## Jasper
Autoconf and Automake.
Documentation
-----------------
## OpenJPEG
No user-manual, though the API is documented with doxygen.
## Jasper
Has a user-manual, but API is only documented on header files.
Standard compliance
-------------------
## OpenJPEG On the googlecode site it says:
The main part of the project consists in a JPEG 2000 codec compliant with the
Part 1 of the standard (Class-1 Profile-1 compliance). Besides this main codec,
OpenJPEG integrates several other modules: JP2 (JPEG 2000 standard Part 2 -
Handling of JP2 boxes and extended multiple component transforms for
multispectral and hyperspectral imagery) MJ2 (JPEG 2000 standard Part 3) JPWL
(JPEG 2000 standard Part 11) OPJViewer, a GUI viewer for J2K, JP2, JPWL and MJ2
files OPJIndexer, a codestream indexer to view information about the headers and
packets localization, and the rate-distorsion contribution of each packet to the
image.
Tools for dealing with MJ2 and JPWL are documented on the site too. Also I read
on wikipedia:
"Unlike JasPer, another open-source JPEG 2000 implementation, OpenJPEG fully
respects the JPEG 2000 specification and can compress/decompress lossless 16-bit
images."
## Jasper
JPEG-2000 Part-1 standard (i.e., ISO/IEC 15444-1)
Also has been included in the JPEG-2000 Part-5 standard, as an official
reference implementation of the JPEG-2000 Part-1 code.
File formats
------------
## OpenJPEG
Encoder input formats: bmp, tif, raw, tga, pnm/pgm/ppm, pgx. output:
j2k,jp2,j2c.
Decoder input formats: j2k, J2c, jp2, jpt. output: bmp, tif, raw, tga,
pnm/pgm/ppm,pgx
## Jasper
Supported Formats (in/out): bmp, jp2, jpc, jpg, pgx, pnm/pgm/ppm, mif, ras.
###
Evaluating each criteria my conclusion is that, as it seems Open JPEG is more on
the path to support the newer JPEG-2000 parts (besides part-1). OTOH, Jasper
being older is used by many projects (unlike OpenJPEG) and should be more
stable. Also note that Jasper supports the old JPG format with the IJG library.
Comments needed!!
-gerel