77 #include "jasper/jas_types.h" 83 #define JP2_SPTOBPC(s, p) \ 84 ((((p) - 1) & 0x7f) | (((s) & 1) << 7)) 90 #define JP2_BOX_HDRLEN(ext) ((ext) ? 16 : 8) 93 #define JP2_BOX_JP 0x6a502020 94 #define JP2_BOX_FTYP 0x66747970 95 #define JP2_BOX_JP2H 0x6a703268 96 #define JP2_BOX_IHDR 0x69686472 97 #define JP2_BOX_BPCC 0x62706363 98 #define JP2_BOX_COLR 0x636f6c72 99 #define JP2_BOX_PCLR 0x70636c72 100 #define JP2_BOX_CMAP 0x636d6170 101 #define JP2_BOX_CDEF 0x63646566 102 #define JP2_BOX_RES 0x72657320 103 #define JP2_BOX_RESC 0x72657363 104 #define JP2_BOX_RESD 0x72657364 105 #define JP2_BOX_JP2C 0x6a703263 106 #define JP2_BOX_JP2I 0x6a703269 107 #define JP2_BOX_XML 0x786d6c20 108 #define JP2_BOX_UUID 0x75756964 109 #define JP2_BOX_UINF 0x75696e66 110 #define JP2_BOX_ULST 0x75637374 111 #define JP2_BOX_URL 0x75726c20 113 #define JP2_BOX_SUPER 0x01 114 #define JP2_BOX_NODATA 0x02 118 #define JP2_JP_MAGIC 0x0d0a870a 119 #define JP2_JP_LEN 12 127 #define JP2_FTYP_MAXCOMPATCODES 32 128 #define JP2_FTYP_MAJVER 0x6a703220 129 #define JP2_FTYP_MINVER 0 130 #define JP2_FTYP_COMPATCODE JP2_FTYP_MAJVER 133 uint_fast32_t majver;
134 uint_fast32_t minver;
135 uint_fast32_t numcompatcodes;
136 uint_fast32_t compatcodes[JP2_FTYP_MAXCOMPATCODES];
141 #define JP2_IHDR_COMPTYPE 7 142 #define JP2_IHDR_BPCNULL 255 146 uint_fast32_t height;
147 uint_fast16_t numcmpts;
149 uint_fast8_t comptype;
157 uint_fast16_t numcmpts;
163 #define JP2_COLR_ENUM 1 164 #define JP2_COLR_ICC 2 165 #define JP2_COLR_PRI 0 167 #define JP2_COLR_SRGB 16 168 #define JP2_COLR_SGRAY 17 169 #define JP2_COLR_SYCC 18 184 uint_fast16_t numlutents;
185 uint_fast8_t numchans;
186 int_fast32_t *lutdata;
192 #define JP2_CDEF_RGB_R 1 193 #define JP2_CDEF_RGB_G 2 194 #define JP2_CDEF_RGB_B 3 196 #define JP2_CDEF_YCBCR_Y 1 197 #define JP2_CDEF_YCBCR_CB 2 198 #define JP2_CDEF_YCBCR_CR 3 200 #define JP2_CDEF_GRAY_Y 1 202 #define JP2_CDEF_TYPE_COLOR 0 203 #define JP2_CDEF_TYPE_OPACITY 1 204 #define JP2_CDEF_TYPE_UNSPEC 65535 205 #define JP2_CDEF_ASOC_ALL 0 206 #define JP2_CDEF_ASOC_NONE 65535 209 uint_fast16_t channo;
217 uint_fast16_t numchans;
218 jp2_cdefchan_t *ents;
222 uint_fast16_t cmptno;
228 uint_fast16_t numchans;
232 #define JP2_CMAP_DIRECT 0 233 #define JP2_CMAP_PALETTE 1 240 struct jp2_boxops_s *ops;
241 struct jp2_boxinfo_s *info;
249 uint_fast32_t datalen;
264 typedef struct jp2_boxops_s {
265 void (*init)(jp2_box_t *box);
266 void (*destroy)(jp2_box_t *box);
267 int (*getdata)(jp2_box_t *box, jas_stream_t *in);
268 int (*putdata)(jp2_box_t *box, jas_stream_t *out);
269 void (*dumpdata)(jp2_box_t *box, FILE *out);
276 typedef struct jp2_boxinfo_s {
287 jp2_box_t *jp2_box_create(
int type);
288 void jp2_box_destroy(jp2_box_t *box);
289 jp2_box_t *jp2_box_get(jas_stream_t *in);
290 int jp2_box_put(jp2_box_t *box, jas_stream_t *out);
292 #define JP2_DTYPETOBPC(dtype) \ 293 ((JAS_IMAGE_CDT_GETSGND(dtype) << 7) | (JAS_IMAGE_CDT_GETPREC(dtype) - 1)) 294 #define JP2_BPCTODTYPE(bpc) \ 295 (JAS_IMAGE_CDT_SETSGND(bpc >> 7) | JAS_IMAGE_CDT_SETPREC((bpc & 0x7f) + 1)) 297 #define ICC_CS_RGB 0x52474220 298 #define ICC_CS_YCBCR 0x59436272 299 #define ICC_CS_GRAY 0x47524159 301 jp2_cdefchan_t *jp2_cdef_lookup(jp2_cdef_t *cdef,
int channo);