Update README.md
[openjpeg.git] / README.md
1
2 # OPENJPEG Library and Applications
3
4 ## What is OpenJPEG ?
5
6 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](http://www.jpeg.org/jpeg2000), a still-image compression standard from the Joint Photographic Experts Group ([JPEG](http://www.jpeg.org)).  Since october 2014, it is officially recognized by ISO/IEC and ITU-T as a [JPEG 2000 Reference Software](http://www.itu.int/rec/T-REC-T.804-201504-I!Amd2).
7
8 ## Who can use the code ?
9
10 Anyone. As the OpenJPEG code is released under the [2-clauses BSD license](https://github.com/uclouvain/openjpeg/blob/master/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](https://github.com/uclouvain/openjpeg/pulls) or by filling an [issue](https://github.com/uclouvain/openjpeg/issues)) but this is not a requirement.
11
12 ## How to install and use OpenJPEG ?
13 API Documentation needs a major refactoring. Meanwhile, you can check [installation](https://github.com/uclouvain/openjpeg/wiki/Installation) instructions and [codec documentation](https://github.com/uclouvain/openjpeg/wiki/DocJ2KCodec).
14     
15 ## Who are the developers ?
16
17 The library is developed and maintained by the Image and Signal Processing Group ([ISPGroup](http://sites.uclouvain.be/ispgroup/)), in the Université catholique de Louvain ([UCL](http://www.uclouvain.be/en-index.html), with the support of the [CNES](https://cnes.fr/), the [CS](http://www.c-s.fr/) company and the [intoPIX](http://www.intopix.com) company. The JPWL module has been developed by the Digital Signal Processing Lab ([DSPLab](http://dsplab.diei.unipg.it/)) of the University of Perugia, Italy ([UNIPG](http://www.unipg.it/)).
18
19 ## Details on folders hierarchy
20
21 * src
22   * lib
23     * openjp2: contains the sources of the openjp2 library (Part 1 & 2)
24     * openjpwl: contains the additional sources if you want to build a JPWL-flavoured library.
25     * openjpip: complete client-server architecture for remote browsing of jpeg 2000 images.
26     * openjp3d: JP3D implementation
27     * openmj2: MJ2 implementation
28   * bin: contains all applications that use the openjpeg library
29     * common: common files to all applications
30     * jp2: a basic codec
31     * mj2: motion jpeg 2000 executables
32     * jpip: OpenJPIP applications (server and dec server)
33       * java: a Java client viewer for JPIP
34     * jp3d: JP3D applications
35       * tcltk: a test tool for JP3D
36     * wx
37       * OPJViewer: gui for displaying j2k files (based on wxWidget)
38 * wrapping
39   * java: java jni to use openjpeg in a java program
40 * 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.
41 * doc: doxygen documentation setup file and man pages
42 * tests: configuration files and utilities for the openjpeg test suite. All test images are located in [openjpeg-data](https://github.com/uclouvain/openjpeg-data) repository.
43 * cmake: cmake related files
44
45 See [LICENSE](https://github.com/uclouvain/openjpeg/blob/master/LICENSE) for license and copyright information.
46
47 See [INSTALL](https://github.com/uclouvain/openjpeg/blob/master/INSTALL) for installation procedures.
48
49 See [NEWS](https://github.com/uclouvain/openjpeg/blob/master/NEWS) for user visible changes in successive releases.
50
51 ## API/ABI
52
53 OpenJPEG strives to provide a stable API/ABI for your applications. As such it
54 only exposes a limited subset of its functions.  It uses a mechanism of
55 exporting/hiding functions. If you are unsure which functions you can use in
56 your applications, you should compile OpenJPEG using something similar to gcc:
57 `fvisibility=hidden` compilation flag.
58 See also: http://gcc.gnu.org/wiki/Visibility
59
60 On windows, MSVC directly supports export/hiding function and as such the only
61 API available is the one supported by OpenJPEG.