corrade-vassal – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | vero | 1 | =============================================================================== |
2 | JPEG2000 Part 11 (ISO/IEC 15444-11 JPWL) Software |
||
3 | |||
4 | |||
5 | |||
6 | Version 20061213 |
||
7 | =============================================================================== |
||
8 | |||
9 | |||
10 | |||
11 | |||
12 | |||
13 | 1. Scope |
||
14 | ============= |
||
15 | |||
16 | This document describes the installation and use of the JPWL module in the framework of OpenJPEG library. |
||
17 | |||
18 | This implementation has been developed from OpenJPEG implementation of JPEG2000 standard, and for this reason it is written in C language. |
||
19 | |||
20 | If you find some bugs or if you have problems using the encoder/decoder, please send an e-mail to jpwl@diei.unipg.it |
||
21 | |||
22 | |||
23 | 2. Installing the code |
||
24 | ========================== |
||
25 | |||
26 | The JPWL code is integrated with the standard OpenJPEG library and codecs: it is activated by setting the macro USE_JPWL to defined in the preprocessor configuration options of your preferred C compiler. |
||
27 | |||
28 | 2.1. Compiling the source code in Windows |
||
29 | ------------------------------------------- |
||
30 | |||
31 | The "jpwl" directory is already populated with a couple of Visual C++ 6.0 workspaces |
||
32 | |||
33 | * JPWL_image_to_j2k.dsw - Creates the encoder with JPWL functionalities |
||
34 | * JPWL_j2k_to_image.dsw - Creates the decoder with JPWL functionalities |
||
35 | |||
36 | 2.2. Compiling the source code in Unix-like systems |
||
37 | ----------------------------------------------------- |
||
38 | |||
39 | Under linux, enter the jpwl directory and type "make clean" and "make". |
||
40 | |||
41 | |||
42 | 3. Running the JPWL software |
||
43 | ========================= |
||
44 | |||
45 | The options available at the command line are exactly the same of the base OpenJPEG codecs. In addition, there is a "-W" switch that activates JPWL functionalities. |
||
46 | |||
47 | 3.1. JPWL Encoder |
||
48 | ------------------- |
||
49 | |||
50 | -W : adoption of JPWL (Part 11) capabilities (-W params) |
||
51 | The parameters can be written and repeated in any order: |
||
52 | [h<tile><=type>,s<tile><=method>,a=<addr>,z=<size>,g=<range>,... |
||
53 | ...,p<tile:pack><=type>] |
||
54 | |||
55 | h selects the header error protection (EPB): 'type' can be |
||
56 | [0=none 1,absent=predefined 16=CRC-16 32=CRC-32 37-128=RS] |
||
57 | if 'tile' is absent, it applies to main and tile headers |
||
58 | if 'tile' is present, it applies from that tile |
||
59 | onwards, up to the next h<tile> spec, or to the last tile |
||
60 | in the codestream (max. 16 specs) |
||
61 | |||
62 | p selects the packet error protection (EEP/UEP with EPBs) |
||
63 | to be applied to raw data: 'type' can be |
||
64 | [0=none 1,absent=predefined 16=CRC-16 32=CRC-32 37-128=RS] |
||
65 | if 'tile:pack' is absent, it starts from tile 0, packet 0 |
||
66 | if 'tile:pack' is present, it applies from that tile |
||
67 | and that packet onwards, up to the next packet spec |
||
68 | or to the last packet in the last tile in the codestream |
||
69 | (max. 16 specs) |
||
70 | |||
71 | s enables sensitivity data insertion (ESD): 'method' can be |
||
72 | [-1=NO ESD 0=RELATIVE ERROR 1=MSE 2=MSE REDUCTION 3=PSNR |
||
73 | 4=PSNR INCREMENT 5=MAXERR 6=TSE 7=RESERVED] |
||
74 | if 'tile' is absent, it applies to main header only |
||
75 | if 'tile' is present, it applies from that tile |
||
76 | onwards, up to the next s<tile> spec, or to the last tile |
||
77 | in the codestream (max. 16 specs) |
||
78 | |||
79 | g determines the addressing mode: <range> can be |
||
80 | [0=PACKET 1=BYTE RANGE 2=PACKET RANGE] |
||
81 | |||
82 | a determines the size of data addressing: <addr> can be |
||
83 | 2/4 bytes (small/large codestreams). If not set, auto-mode |
||
84 | |||
85 | z determines the size of sensitivity values: <size> can be |
||
86 | 1/2 bytes, for the transformed pseudo-floating point value |
||
87 | |||
88 | ex.: |
||
89 | h,h0=64,h3=16,h5=32,p0=78,p0:24=56,p1,p3:0=0,p3:20=32,s=0,s0=6,s3=-1,a=0,g=1,z=1 |
||
90 | means |
||
91 | predefined EPB in MH, rs(64,32) from TPH 0 to TPH 2, |
||
92 | CRC-16 in TPH 3 and TPH 4, CRC-32 in remaining TPHs, |
||
93 | UEP rs(78,32) for packets 0 to 23 of tile 0, |
||
94 | UEP rs(56,32) for packets 24 to the last of tile 0, |
||
95 | UEP rs default for packets of tile 1, |
||
96 | no UEP for packets 0 to 19 of tile 3, |
||
97 | UEP CRC-32 for packets 20 of tile 3 to last tile, |
||
98 | relative sensitivity ESD for MH, |
||
99 | TSE ESD from TPH 0 to TPH 2, byte range with automatic |
||
100 | size of addresses and 1 byte for each sensitivity value |
||
101 | |||
102 | ex.: |
||
103 | h,s,p |
||
104 | means |
||
105 | default protection to headers (MH and TPHs) as well as |
||
106 | data packets, one ESD in MH |
||
107 | |||
108 | N.B.: use the following recommendations when specifying |
||
109 | the JPWL parameters list |
||
110 | - when you use UEP, always pair the 'p' option with 'h' |
||
111 | |||
112 | 3.2. JPWL Decoder |
||
113 | ------------------- |
||
114 | |||
115 | -W <options> |
||
116 | Activates the JPWL correction capability, if the codestream complies. |
||
117 | Options can be a comma separated list of <param=val> tokens: |
||
118 | c, c=numcomps |
||
119 | numcomps is the number of expected components in the codestream |
||
120 | (search of first EPB rely upon this, default is 3) |
||
121 | |||
122 | |||
123 | 4. Known bugs and limitations |
||
124 | =============================== |
||
125 | |||
126 | 4.1. Bugs |
||
127 | ----------- |
||
128 | |||
129 | * It is not possible to save a JPWL encoded codestream using the wrapped file format (i.e. JP2): only raw file format (i.e. J2K) is working |
||
130 | |||
131 | 4.2. Limitations |
||
132 | ------------------ |
||
133 | |||
134 | * When specifying an UEP protection, you need to activate even TPH protection for those tiles where there is a protection of the packets |
||
135 | * RED insertion is not currently implemented at the decoder |
||
136 | * JPWL at entropy coding level is not implemented |