Official repository of the OpenJPEG project
Go to file
Even Rouault ac375ac9f5 Partial revert BPC related check of #975 (#979)
PR #975 introduced a check that rejects images that have different bit depth/sign
per compoment in SIZ marker if the JP2 IHDR box has BPC != 255
This didn't work properly if decoding a .j2k file since the new bit added in
opj_cp_t wasn't initialized to the right value.
For clarity, tThis new bit has also been renamed to allow_different_bit_depth_sign

But looking closer at the code, it seems we were already tolerant to inconsistencies.
For example we parsed a JP2 BPCC box even if BPC != 255 (just a warning is emitted)
So failing hard in opj_j2k_read_siz() wouldn't be very inconsistent, and that
alone cannot protect against other issues, so just emit a warning if BPC != 255
and the SIZ marker contains different bit depth/sign per component.

Note: we could also check that the content of JP2 BPCC box is consistant with the one
of the SIZ marker.
2017-08-09 11:34:08 +02:00
cmake Use lowercase for cmake commands consistenly 2016-05-02 16:05:41 +02:00
doc Fix Doxygen warnings (patch derived from Winfried's doxygen-dif.txt.zip, #849) 2017-07-30 18:18:59 +02:00
scripts Reformat: apply reformattin on .h files (#128) 2017-05-15 12:21:30 +02:00
src Partial revert BPC related check of #975 (#979) 2017-08-09 11:34:08 +02:00
tests Partial revert BPC related check of #975 (#979) 2017-08-09 11:34:08 +02:00
thirdparty Add mechanisms to reformant and check code style (#128) 2017-05-09 20:46:16 +02:00
tools Update abi-check to take into account new defaults for "add" git command 2017-08-02 17:07:29 +02:00
wrapping Spelling fixes (patch by ka7, #890, rebased on top of master) 2017-07-26 21:06:38 +02:00
.gitignore Add mechanisms to reformant and check code style (#128) 2017-05-09 20:46:16 +02:00
.travis.yml Add tests/fuzzers for OSS Fuzz (#965) 2017-07-03 15:42:35 +02:00
AUTHORS.md Update AUTHORS.md 2016-07-05 16:40:27 +02:00
CHANGELOG.md Update CHANGELOG.md 2016-10-03 23:45:44 +02:00
CMakeLists.txt Add bench_dwt program (compiled only if BUILD_BENCH_DWT=ON) 2017-06-20 17:56:19 +02:00
CTestConfig.cmake fixed CTest configuration files 2011-06-30 13:52:23 +00:00
INSTALL.md INSTALL.md: add section discussing how to enable CPU specific optimizations 2017-06-26 13:13:26 +02:00
LICENSE [trunk] updated copyright and added copyright notice required by ISO, in each file; updated AUTHORS, NEWS 2014-04-03 15:30:57 +00:00
NEWS.md Update NEWS.md for v2.1.2 2016-09-28 20:58:55 +02:00
README.md Add mechanisms to reformant and check code style (#128) 2017-05-09 20:46:16 +02:00
THANKS.md Update THANKS.md 2016-10-03 23:47:10 +02:00
appveyor.yml appveyor.yml: add a /arch:AVX2 config on Windows 2017-07-01 10:00:57 +02:00

README.md

OPENJPEG Library and Applications

What is OpenJPEG ?

OpenJPEG is an open-source JPEG 2000 codec written in C language. It has been developed in order to promote the use of JPEG 2000, a still-image compression standard from the Joint Photographic Experts Group (JPEG). Since April 2015, it is officially recognized by ISO/IEC and ITU-T as a JPEG 2000 Reference Software.

Who can use the code ?

badge-license

Anyone. As the OpenJPEG code is released under the BSD 2-clause "Simplified" License, anyone can use or modify the code, even for commercial applications. The only restriction is to retain the copyright in the sources or in the binaries documentation. Of course, if you modified the code in a way that might be of interest for other users, you are encouraged to share it (through a github pull request or by filling an issue) but this is not a requirement.

How to install and use OpenJPEG ?

API Documentation needs a major refactoring. Meanwhile, you can check installation instructions and codec documentation.

Current Status

badge-build

badge-msvc-build

badge-coverity

Who are the developers ?

The library is developed and maintained by the Image and Signal Processing Group (ISPGroup), in the Université catholique de Louvain (UCL, with the support of the CNES, the CS company and the intoPIX company. The JPWL module has been developed by the Digital Signal Processing Lab (DSPLab) of the University of Perugia, Italy (UNIPG).

Details on folders hierarchy

  • src
    • lib
      • openjp2: contains the sources of the openjp2 library (Part 1 & 2)
      • openjpwl: contains the additional sources if you want to build a JPWL-flavoured library.
      • openjpip: complete client-server architecture for remote browsing of jpeg 2000 images.
      • openjp3d: JP3D implementation
      • openmj2: MJ2 implementation
    • bin: contains all applications that use the openjpeg library
      • common: common files to all applications
      • jp2: a basic codec
      • mj2: motion jpeg 2000 executables
      • jpip: OpenJPIP applications (server and dec server)
        • java: a Java client viewer for JPIP
      • jp3d: JP3D applications
        • tcltk: a test tool for JP3D
      • wx
        • OPJViewer: gui for displaying j2k files (based on wxWidget)
  • wrapping
    • java: java jni to use openjpeg in a java program
  • thirdparty: thirdparty libraries used by some applications. These libraries will be built only if there are not found on the system. Note that libopenjpeg itself does not have any dependency.
  • doc: doxygen documentation setup file and man pages
  • tests: configuration files and utilities for the openjpeg test suite. All test images are located in openjpeg-data repository.
  • cmake: cmake related files
  • scripts: scripts for developers

See LICENSE for license and copyright information.

See INSTALL for installation procedures.

See NEWS for user visible changes in successive releases.

API/ABI

An API/ABI timeline is automatically updated here.

OpenJPEG strives to provide a stable API/ABI for your applications. As such it only exposes a limited subset of its functions. It uses a mechanism of exporting/hiding functions. If you are unsure which functions you can use in your applications, you should compile OpenJPEG using something similar to gcc: -fvisibility=hidden compilation flag. See also: http://gcc.gnu.org/wiki/Visibility

On windows, MSVC directly supports export/hiding function and as such the only API available is the one supported by OpenJPEG.