00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifndef __JPWL_H
00032 #define __JPWL_H
00033
00034 #ifdef USE_JPWL
00035
00036 #include "crc.h"
00037 #include "rs.h"
00038
00048
00052 #define JPWL_ASSUME OPJ_TRUE
00053
00057 typedef struct jpwl_epb_ms {
00061 opj_bool latest;
00063 opj_bool packed;
00065 int tileno;
00067 unsigned char index;
00069 int hprot;
00071 int k_pre;
00073 int n_pre;
00075 int pre_len;
00077 int k_post;
00079 int n_post;
00081 int post_len;
00086 unsigned short int Lepb;
00088 unsigned char Depb;
00090 unsigned long int LDPepb;
00092 unsigned long int Pepb;
00094 unsigned char *data;
00096 } jpwl_epb_ms_t;
00097
00101 typedef struct jpwl_epc_ms {
00103 opj_bool esd_on;
00105 opj_bool red_on;
00107 opj_bool epb_on;
00109 opj_bool info_on;
00113 unsigned short int Lepc;
00115 unsigned short int Pcrc;
00117 unsigned long int DL;
00119 unsigned char Pepc;
00121 unsigned char *data;
00123 } jpwl_epc_ms_t;
00124
00128 typedef struct jpwl_esd_ms {
00130 unsigned char addrm;
00132 unsigned char ad_size;
00136 unsigned char senst;
00138 unsigned char se_size;
00142 unsigned short int Lesd;
00144 unsigned short int Cesd;
00146 unsigned char Pesd;
00148 unsigned char *data;
00153 int numcomps;
00155 int tileno;
00157 unsigned long int svalnum;
00159 size_t sensval_size;
00161 } jpwl_esd_ms_t;
00162
00166 typedef struct jpwl_red_ms {
00168 unsigned short int Lred;
00170 unsigned char Pred;
00172 unsigned char *data;
00173 } jpwl_red_ms_t;
00174
00178 typedef struct jpwl_marker {
00180 int id;
00182 union jpwl_marks {
00184 jpwl_epb_ms_t *epbmark;
00186 jpwl_epc_ms_t *epcmark;
00188 jpwl_esd_ms_t *esdmark;
00190 jpwl_red_ms_t *redmark;
00191 } m;
00193 unsigned long int pos;
00195 double dpos;
00197 unsigned short int len;
00199 opj_bool len_ready;
00201 opj_bool pos_ready;
00203 opj_bool parms_ready;
00205 opj_bool data_ready;
00206 } jpwl_marker_t;
00207
00214 void jpwl_encode(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image);
00215
00223 void jpwl_prepare_marks(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image);
00224
00231 void jpwl_dump_marks(opj_j2k_t *j2k, opj_cio_t *cio, opj_image_t *image);
00232
00237 void j2k_read_epc(opj_j2k_t *j2k);
00238
00246 void j2k_write_epc(opj_j2k_t *j2k);
00247
00252 void j2k_read_epb(opj_j2k_t *j2k);
00253
00258 void j2k_write_epb(opj_j2k_t *j2k);
00259
00264 void j2k_read_esd(opj_j2k_t *j2k);
00265
00270 void j2k_read_red(opj_j2k_t *j2k);
00271
00283 jpwl_epb_ms_t *jpwl_epb_create(opj_j2k_t *j2k, opj_bool latest, opj_bool packed, int tileno, int idx, int hprot,
00284 unsigned long int pre_len, unsigned long int post_len);
00285
00301 int jpwl_epbs_add(opj_j2k_t *j2k, jpwl_marker_t *jwmarker, int *jwmarker_num,
00302 opj_bool latest, opj_bool packed, opj_bool insideMH, int *idx, int hprot,
00303 double place_pos, int tileno,
00304 unsigned long int pre_len, unsigned long int post_len);
00305
00319 int jpwl_esds_add(opj_j2k_t *j2k, jpwl_marker_t *jwmarker, int *jwmarker_num,
00320 int comps, unsigned char addrm, unsigned char ad_size,
00321 unsigned char senst, unsigned char se_size,
00322 double place_pos, int tileno);
00323
00330 opj_bool jpwl_update_info(opj_j2k_t *j2k, jpwl_marker_t *jwmarker, int jwmarker_num);
00331
00332
00333 opj_bool jpwl_esd_fill(opj_j2k_t *j2k, jpwl_esd_ms_t *esdmark, unsigned char *buf);
00334
00335 opj_bool jpwl_epb_fill(opj_j2k_t *j2k, jpwl_epb_ms_t *epbmark, unsigned char *buf, unsigned char *post_buf);
00336
00337 void j2k_add_marker(opj_codestream_info_t *cstr_info, unsigned short int type, int pos, int len);
00338
00343 opj_bool jpwl_correct(opj_j2k_t *j2k);
00344
00355 opj_bool jpwl_epb_correct(opj_j2k_t *j2k, unsigned char *buffer, int type, int pre_len, int post_len, int *conn,
00356 unsigned char **L4_bufp);
00357
00363 opj_bool jpwl_check_tile(opj_j2k_t *j2k, opj_tcd_t *tcd, int tileno);
00364
00373 #define jpwl_updateCRC16(CRC, DATA) updateCRC16(CRC, DATA)
00374
00381 #define jpwl_updateCRC32(CRC, DATA) updateCRC32(CRC, DATA)
00382
00389 #ifndef min
00390 #define min(a,b) (((a) < (b)) ? (a) : (b))
00391 #endif
00392
00395 #endif
00396
00397 #ifdef USE_JPSEC
00398
00401
00406 void j2k_read_sec(opj_j2k_t *j2k);
00407
00412 void j2k_write_sec(opj_j2k_t *j2k);
00413
00418 void j2k_read_insec(opj_j2k_t *j2k);
00419
00422 #endif
00423
00424 #endif
00425