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


Reply via email to