vx32

Local 9vx git repository for patches.
git clone git://r-36.net/vx32
Log | Files | Refs

jpc_dec.h (17919B)


      1 /*
      2  * Copyright (c) 1999-2000 Image Power, Inc. and the University of
      3  *   British Columbia.
      4  * Copyright (c) 2001-2002 Michael David Adams.
      5  * All rights reserved.
      6  */
      7 
      8 /* __START_OF_JASPER_LICENSE__
      9  * 
     10  * JasPer License Version 2.0
     11  * 
     12  * Copyright (c) 1999-2000 Image Power, Inc.
     13  * Copyright (c) 1999-2000 The University of British Columbia
     14  * Copyright (c) 2001-2003 Michael David Adams
     15  * 
     16  * All rights reserved.
     17  * 
     18  * Permission is hereby granted, free of charge, to any person (the
     19  * "User") obtaining a copy of this software and associated documentation
     20  * files (the "Software"), to deal in the Software without restriction,
     21  * including without limitation the rights to use, copy, modify, merge,
     22  * publish, distribute, and/or sell copies of the Software, and to permit
     23  * persons to whom the Software is furnished to do so, subject to the
     24  * following conditions:
     25  * 
     26  * 1.  The above copyright notices and this permission notice (which
     27  * includes the disclaimer below) shall be included in all copies or
     28  * substantial portions of the Software.
     29  * 
     30  * 2.  The name of a copyright holder shall not be used to endorse or
     31  * promote products derived from the Software without specific prior
     32  * written permission.
     33  * 
     34  * THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS
     35  * LICENSE.  NO USE OF THE SOFTWARE IS AUTHORIZED HEREUNDER EXCEPT UNDER
     36  * THIS DISCLAIMER.  THE SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS
     37  * "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
     38  * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
     39  * PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS.  IN NO
     40  * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL
     41  * INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING
     42  * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
     43  * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
     44  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.  NO ASSURANCES ARE
     45  * PROVIDED BY THE COPYRIGHT HOLDERS THAT THE SOFTWARE DOES NOT INFRINGE
     46  * THE PATENT OR OTHER INTELLECTUAL PROPERTY RIGHTS OF ANY OTHER ENTITY.
     47  * EACH COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY TO THE USER FOR CLAIMS
     48  * BROUGHT BY ANY OTHER ENTITY BASED ON INFRINGEMENT OF INTELLECTUAL
     49  * PROPERTY RIGHTS OR OTHERWISE.  AS A CONDITION TO EXERCISING THE RIGHTS
     50  * GRANTED HEREUNDER, EACH USER HEREBY ASSUMES SOLE RESPONSIBILITY TO SECURE
     51  * ANY OTHER INTELLECTUAL PROPERTY RIGHTS NEEDED, IF ANY.  THE SOFTWARE
     52  * IS NOT FAULT-TOLERANT AND IS NOT INTENDED FOR USE IN MISSION-CRITICAL
     53  * SYSTEMS, SUCH AS THOSE USED IN THE OPERATION OF NUCLEAR FACILITIES,
     54  * AIRCRAFT NAVIGATION OR COMMUNICATION SYSTEMS, AIR TRAFFIC CONTROL
     55  * SYSTEMS, DIRECT LIFE SUPPORT MACHINES, OR WEAPONS SYSTEMS, IN WHICH
     56  * THE FAILURE OF THE SOFTWARE OR SYSTEM COULD LEAD DIRECTLY TO DEATH,
     57  * PERSONAL INJURY, OR SEVERE PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH
     58  * RISK ACTIVITIES").  THE COPYRIGHT HOLDERS SPECIFICALLY DISCLAIM ANY
     59  * EXPRESS OR IMPLIED WARRANTY OF FITNESS FOR HIGH RISK ACTIVITIES.
     60  * 
     61  * __END_OF_JASPER_LICENSE__
     62  */
     63 
     64 /*
     65  * JPEG-2000 Decoder
     66  *
     67  * $Id: jpc_dec.h 1918 2005-07-24 14:12:08Z baford $
     68  */
     69 
     70 #ifndef JPC_DEC_H
     71 #define JPC_DEC_H
     72 
     73 /******************************************************************************\
     74 * Includes.
     75 \******************************************************************************/
     76 
     77 #include "jasper/jas_stream.h"
     78 
     79 #include "jpc_tsfb.h"
     80 #include "jpc_bs.h"
     81 #include "jpc_tagtree.h"
     82 #include "jpc_cs.h"
     83 #include "jpc_cod.h"
     84 #include "jpc_mqdec.h"
     85 #include "jpc_t2cod.h"
     86 
     87 /******************************************************************************\
     88 * Below are some ugly warts necessary to support packed packet headers.
     89 \******************************************************************************/
     90 
     91 /* PPM/PPT marker segment table entry. */
     92 
     93 typedef struct {
     94 
     95 	/* The index for this entry. */
     96 	uint_fast16_t ind;
     97 
     98 	/* The data length. */
     99 	uint_fast32_t len;
    100 
    101 	/* The data. */
    102 	uchar *data;
    103 
    104 } jpc_ppxstabent_t;
    105 
    106 /* PPM/PPT marker segment table. */
    107 
    108 typedef struct {
    109 
    110 	/* The number of entries. */
    111 	int numents;
    112 
    113 	/* The maximum number of entries (i.e., the allocated size of the array
    114 	  below). */
    115 	int maxents;
    116 
    117 	/* The table entries. */
    118 	jpc_ppxstabent_t **ents;
    119 
    120 } jpc_ppxstab_t;
    121 
    122 /* Stream list class. */
    123 
    124 typedef struct {
    125 
    126 	/* The number of streams in this list. */
    127 	int numstreams;
    128 
    129 	/* The maximum number of streams that can be accomodated without
    130 	  growing the streams array. */
    131 	int maxstreams;
    132 
    133 	/* The streams. */
    134 	jas_stream_t **streams;
    135 
    136 } jpc_streamlist_t;
    137 
    138 /******************************************************************************\
    139 * Coding parameters class.
    140 \******************************************************************************/
    141 
    142 /* Per-component coding parameters. */
    143 
    144 typedef struct {
    145 
    146 	/* How were various coding parameters set? */
    147 	int flags;
    148 
    149 	/* Per-component coding style parameters (e.g., explicit precinct sizes) */
    150 	uint_fast8_t csty;
    151 
    152 	/* The number of resolution levels. */
    153 	uint_fast8_t numrlvls;
    154 
    155 	/* The code block width exponent. */
    156 	uint_fast8_t cblkwidthexpn;
    157 
    158 	/* The code block height exponent. */
    159 	uint_fast8_t cblkheightexpn;
    160 
    161 	/* The QMFB ID. */
    162 	uint_fast8_t qmfbid;
    163 
    164 	/* The quantization style. */
    165 	uint_fast8_t qsty;
    166 
    167 	/* The number of quantizer step sizes. */
    168 	uint_fast16_t numstepsizes;
    169 
    170 	/* The step sizes. */
    171 	uint_fast16_t stepsizes[3 * JPC_MAXRLVLS + 1];
    172 
    173 	/* The number of guard bits. */
    174 	uint_fast8_t numguardbits;
    175 
    176 	/* The ROI shift value. */
    177 	uint_fast8_t roishift;
    178 
    179 	/* The code block parameters. */
    180 	uint_fast8_t cblkctx;
    181 
    182 	/* The precinct width exponents. */
    183 	uint_fast8_t prcwidthexpns[JPC_MAXRLVLS];
    184 
    185 	/* The precinct height exponents. */
    186 	uint_fast8_t prcheightexpns[JPC_MAXRLVLS];
    187 
    188 } jpc_dec_ccp_t;
    189 
    190 /* Coding paramters. */
    191 
    192 typedef struct {
    193 
    194 	/* How were these coding parameters set? */
    195 	int flags;
    196 
    197 	/* Progression change list. */
    198 	jpc_pchglist_t *pchglist;
    199 
    200 	/* Progression order. */
    201 	uint_fast8_t prgord;
    202 
    203 	/* The number of layers. */
    204 	uint_fast16_t numlyrs;
    205 
    206 	/* The MCT ID. */
    207 	uint_fast8_t mctid;
    208 
    209 	/* The coding style parameters (e.g., SOP, EPH). */
    210 	uint_fast8_t csty;
    211 
    212 	/* The number of components. */
    213 	int numcomps;
    214 
    215 	/* The per-component coding parameters. */
    216 	jpc_dec_ccp_t *ccps;
    217 
    218 } jpc_dec_cp_t;
    219 
    220 /******************************************************************************\
    221 * Decoder class.
    222 \******************************************************************************/
    223 
    224 /* Decoder per-segment state information. */
    225 
    226 typedef struct jpc_dec_seg_s {
    227 
    228 	/* The next segment in the list. */
    229 	struct jpc_dec_seg_s *next;
    230 
    231 	/* The previous segment in the list. */
    232 	struct jpc_dec_seg_s *prev;
    233 
    234 	/* The starting pass number for this segment. */
    235 	int passno;
    236 
    237 	/* The number of passes in this segment. */
    238 	int numpasses;
    239 
    240 	/* The maximum number of passes in this segment. */
    241 	int maxpasses;
    242 
    243 	/* The type of data in this segment (i.e., MQ or raw). */
    244 	int type;
    245 
    246 	/* A stream containing the data for this segment. */
    247 	jas_stream_t *stream;
    248 
    249 	/* The number of bytes destined for this segment from the packet
    250 	  currently being decoded. */
    251 	int cnt;
    252 
    253 	/* A flag indicating if this segment has been terminated. */
    254 	int complete;
    255 
    256 	/* The layer number to which this segment belongs. */
    257 	/* If the segment spans multiple layers, then the largest layer number
    258 	  spanned by the segment is used. */
    259 	int lyrno;
    260 
    261 } jpc_dec_seg_t;
    262 
    263 /* Decoder segment list. */
    264 
    265 typedef struct {
    266 
    267 	/* The first entry in the list. */
    268 	jpc_dec_seg_t *head;
    269 
    270 	/* The last entry in the list. */
    271 	jpc_dec_seg_t *tail;
    272 
    273 } jpc_dec_seglist_t;
    274 
    275 /* Decoder per-code-block state information. */
    276 
    277 typedef struct {
    278 
    279 	/* The number of passes. */
    280 	int numpasses;
    281 
    282 	/* A list of segments that still need to be decoded. */
    283 	jpc_dec_seglist_t segs;
    284 
    285 	/* The first incomplete/partial segment. */
    286 	jpc_dec_seg_t *curseg;
    287 
    288 	/* The number of leading insignificant bit planes for this code block. */
    289 	int numimsbs;
    290 
    291 	/* The number of bits used to encode pass data lengths. */
    292 	int numlenbits;
    293 
    294 	/* The first pass number containing data for this code block. */
    295 	int firstpassno;
    296 
    297 	/* The MQ decoder. */
    298 	jpc_mqdec_t *mqdec;
    299 
    300 	/* The raw bit stream decoder. */
    301 	jpc_bitstream_t *nulldec;
    302 
    303 	/* The per-sample state information for this code block. */
    304 	jas_matrix_t *flags;
    305 
    306 	/* The sample data associated with this code block. */
    307 	jas_matrix_t *data;
    308 
    309 } jpc_dec_cblk_t;
    310 
    311 /* Decoder per-code-block-group state information. */
    312 
    313 typedef struct {
    314 
    315 	/* The x-coordinate of the top-left corner of the precinct. */
    316 	uint_fast32_t xstart;
    317 
    318 	/* The y-coordinate of the top-left corner of the precinct. */
    319 	uint_fast32_t ystart;
    320 
    321 	/* The x-coordinate of the bottom-right corner of the precinct
    322 	  (plus one). */
    323 	uint_fast32_t xend;
    324 
    325 	/* The y-coordinate of the bottom-right corner of the precinct
    326 	  (plus one). */
    327 	uint_fast32_t yend;
    328 
    329 	/* The number of code blocks spanning this precinct in the horizontal
    330 	  direction. */
    331 	int numhcblks;
    332 
    333 	/* The number of code blocks spanning this precinct in the vertical
    334 	  direction. */
    335 	int numvcblks;
    336 
    337 	/* The total number of code blocks in this precinct. */
    338 	int numcblks;
    339 
    340 	/* The per code block information. */
    341 	jpc_dec_cblk_t *cblks;
    342 
    343 	/* The inclusion tag tree. */
    344 	jpc_tagtree_t *incltagtree;
    345 
    346 	/* The insignificant MSBs tag tree. */
    347 	jpc_tagtree_t *numimsbstagtree;
    348 
    349 } jpc_dec_prc_t;
    350 
    351 /* Decoder per-band state information. */
    352 
    353 typedef struct {
    354 
    355 	/* The per-code-block-group state information. */
    356 	jpc_dec_prc_t *prcs;
    357 
    358 	/* The sample data associated with this band. */
    359 	jas_matrix_t *data;
    360 
    361 	/* The orientation of this band (i.e., LL, LH, HL, or HH). */
    362 	int orient;
    363 
    364 	/* The encoded quantizer step size. */
    365 	int stepsize;
    366 
    367 	/* The absolute quantizer step size. */
    368 	jpc_fix_t absstepsize;
    369 
    370 	/* The number of bit planes for this band. */
    371 	int numbps;
    372 
    373 	/* The analysis gain associated with this band. */
    374 	int analgain;
    375 
    376 	/* The ROI shift value for this band. */
    377 	int roishift;
    378 
    379 } jpc_dec_band_t;
    380 
    381 /* Decoder per-resolution-level state information. */
    382 
    383 typedef struct {
    384 
    385 	/* The number of bands associated with this resolution level. */
    386 	int numbands;
    387 
    388 	/* The per-band information. */
    389 	jpc_dec_band_t *bands;
    390 
    391 	/* The x-coordinate of the top-left corner of the tile-component
    392 	  at this resolution. */
    393 	uint_fast32_t xstart;
    394 
    395 	/* The y-coordinate of the top-left corner of the tile-component
    396 	  at this resolution. */
    397 	uint_fast32_t ystart;
    398 
    399 	/* The x-coordinate of the bottom-right corner of the tile-component
    400 	  at this resolution (plus one). */
    401 	uint_fast32_t xend;
    402 
    403 	/* The y-coordinate of the bottom-right corner of the tile-component
    404 	  at this resolution (plus one). */
    405 	uint_fast32_t yend;
    406 
    407 	/* The exponent value for the nominal precinct width measured
    408 	  relative to the associated LL band. */
    409 	int prcwidthexpn;
    410 
    411 	/* The exponent value for the nominal precinct height measured
    412 	  relative to the associated LL band. */
    413 	int prcheightexpn;
    414 
    415 	/* The number of precincts in the horizontal direction. */
    416 	int numhprcs;
    417 
    418 	/* The number of precincts in the vertical direction. */
    419 	int numvprcs;
    420 
    421 	/* The total number of precincts. */
    422 	int numprcs;
    423 
    424 	/* The exponent value for the nominal code block group width.
    425 	  This quantity is associated with the next lower resolution level
    426 	  (assuming that there is one). */
    427 	int cbgwidthexpn;
    428 
    429 	/* The exponent value for the nominal code block group height
    430 	  This quantity is associated with the next lower resolution level
    431 	  (assuming that there is one). */
    432 	int cbgheightexpn;
    433 
    434 	/* The exponent value for the code block width. */
    435 	uint_fast16_t cblkwidthexpn;
    436 
    437 	/* The exponent value for the code block height. */
    438 	uint_fast16_t cblkheightexpn;
    439 
    440 } jpc_dec_rlvl_t;
    441 
    442 /* Decoder per-tile-component state information. */
    443 
    444 typedef struct {
    445 
    446 	/* The x-coordinate of the top-left corner of the tile-component
    447 	  in the coordinate system of the tile-component. */
    448 	uint_fast32_t xstart;
    449 
    450 	/* The y-coordinate of the top-left corner of the tile-component
    451 	  in the coordinate system of the tile-component. */
    452 	uint_fast32_t ystart;
    453 
    454 	/* The x-coordinate of the bottom-right corner of the tile-component
    455 	  in the coordinate system of the tile-component (plus one). */
    456 	uint_fast32_t xend;
    457 
    458 	/* The y-coordinate of the bottom-right corner of the tile-component
    459 	  in the coordinate system of the tile-component (plus one). */
    460 	uint_fast32_t yend;
    461 
    462 	/* The component data for the current tile. */
    463 	jas_matrix_t *data;
    464 
    465 	/* The number of resolution levels. */
    466 	int numrlvls;
    467 
    468 	/* The per resolution level information. */
    469 	jpc_dec_rlvl_t *rlvls;
    470 
    471 	/* The TSFB. */
    472 	jpc_tsfb_t *tsfb;
    473 
    474 } jpc_dec_tcomp_t;
    475 
    476 /*
    477  * Tile states.
    478  */
    479 
    480 #define	JPC_TILE_INIT	0
    481 #define	JPC_TILE_ACTIVE	1
    482 #define	JPC_TILE_ACTIVELAST	2
    483 #define	JPC_TILE_DONE	3
    484 
    485 /* Decoder per-tile state information. */
    486 
    487 typedef struct {
    488 
    489 	/* The processing state for this tile. */
    490 	int state;
    491 
    492 	/* The x-coordinate of the top-left corner of the tile on the reference
    493 	  grid. */
    494 	uint_fast32_t xstart;
    495 
    496 	/* The y-coordinate of the top-left corner of the tile on the reference
    497 	  grid. */
    498 	uint_fast32_t ystart;
    499 
    500 	/* The x-coordinate of the bottom-right corner of the tile on the
    501 	  reference grid (plus one). */
    502 	uint_fast32_t xend;
    503 
    504 	/* The y-coordinate of the bottom-right corner of the tile on the
    505 	  reference grid (plus one). */
    506 	uint_fast32_t yend;
    507 
    508 	/* The packed packet header data for this tile. */
    509 	jpc_ppxstab_t *pptstab;
    510 
    511 	/* A stream containing the packed packet header data for this tile. */
    512 	jas_stream_t *pkthdrstream;
    513 
    514 	/* The current position within the packed packet header stream. */
    515 	long pkthdrstreampos;
    516 
    517 	/* The coding parameters for this tile. */
    518 	jpc_dec_cp_t *cp;
    519 
    520 	/* The per tile-component information. */
    521 	jpc_dec_tcomp_t *tcomps;
    522 
    523 	/* The next expected tile-part number. */
    524 	int partno;
    525 
    526 	/* The number of tile-parts. */
    527 	int numparts;
    528 
    529 	/* The coding mode. */
    530 	int realmode;
    531 
    532 	/* The packet iterator for this tile. */
    533 	jpc_pi_t *pi;
    534 
    535 } jpc_dec_tile_t;
    536 
    537 /* Decoder per-component state information. */
    538 
    539 typedef struct {
    540 
    541 	/* The horizontal sampling period. */
    542 	uint_fast32_t hstep;
    543 
    544 	/* The vertical sampling period. */
    545 	uint_fast32_t vstep;
    546 
    547 	/* The number of samples in the horizontal direction. */
    548 	uint_fast32_t width;
    549 
    550 	/* The number of samples in the vertical direction. */
    551 	uint_fast32_t height;
    552 
    553 	/* The precision of the sample data. */
    554 	uint_fast16_t prec;
    555 
    556 	/* The signedness of the sample data. */
    557 	bool sgnd;
    558 
    559 	/* The sample alignment horizontal offset. */
    560 	uint_fast32_t hsubstep;
    561 	
    562 	/* The sample alignment vertical offset. */
    563 	uint_fast32_t vsubstep;
    564 
    565 } jpc_dec_cmpt_t;
    566 
    567 /* Decoder state information. */
    568 
    569 typedef struct {
    570 
    571 	/* The decoded image. */
    572 	jas_image_t *image;
    573 
    574 	/* The x-coordinate of the top-left corner of the image area on
    575 	  the reference grid. */
    576 	uint_fast32_t xstart;
    577 
    578 	/* The y-coordinate of the top-left corner of the image area on
    579 	  the reference grid. */
    580 	uint_fast32_t ystart;
    581 
    582 	/* The x-coordinate of the bottom-right corner of the image area on
    583 	  the reference grid (plus one). */
    584 	uint_fast32_t xend;
    585 
    586 	/* The y-coordinate of the bottom-right corner of the image area on
    587 	  the reference grid (plus one). */
    588 	uint_fast32_t yend;
    589 
    590 	/* The nominal tile width in units of the image reference grid. */
    591 	uint_fast32_t tilewidth;
    592 
    593 	/* The nominal tile height in units of the image reference grid. */
    594 	uint_fast32_t tileheight;
    595 
    596 	/* The horizontal offset from the origin of the reference grid to the
    597 	  left side of the first tile. */
    598 	uint_fast32_t tilexoff;
    599 
    600 	/* The vertical offset from the origin of the reference grid to the
    601 	  top side of the first tile. */
    602 	uint_fast32_t tileyoff;
    603 
    604 	/* The number of tiles spanning the image area in the vertical
    605 	  direction. */
    606 	int numhtiles;
    607 
    608 	/* The number of tiles spanning the image area in the horizontal
    609 	  direction. */
    610 	int numvtiles;
    611 
    612 	/* The total number of tiles. */
    613 	int numtiles;
    614 
    615 	/* The per-tile information. */
    616 	jpc_dec_tile_t *tiles;
    617 
    618 	/* The tile currently being processed. */
    619 	jpc_dec_tile_t *curtile;
    620 
    621 	/* The number of components. */
    622 	int numcomps;
    623 
    624 	/* The stream containing the input JPEG-2000 code stream data. */
    625 	jas_stream_t *in;
    626 
    627 	/* The default coding parameters for all tiles. */
    628 	jpc_dec_cp_t *cp;
    629 
    630 	/* The maximum number of layers that may be decoded. */
    631 	int maxlyrs;
    632 
    633 	/* The maximum number of packets that may be decoded. */
    634 	int maxpkts;
    635 
    636 	/* The number of packets decoded so far in the processing of the entire
    637 	  code stream. */
    638 	int numpkts;
    639 
    640 	/* The next expected PPM marker segment sequence number. */
    641 	int ppmseqno;
    642 
    643 	/* The current state for code stream processing. */
    644 	int state;
    645 
    646 	/* The per-component information. */
    647 	jpc_dec_cmpt_t *cmpts;
    648 
    649 	/* The information from PPM marker segments. */
    650 	jpc_ppxstab_t *ppmstab;
    651 
    652 	/* A list of streams containing packet header data from PPM marker
    653 	  segments. */
    654 	jpc_streamlist_t *pkthdrstreams;
    655 
    656 	/* The expected ending offset for a tile-part. */
    657 	long curtileendoff;
    658 
    659 	/* This is required by the tier-2 decoder. */
    660 	jpc_cstate_t *cstate;
    661 
    662 } jpc_dec_t;
    663 
    664 /* Decoder options. */
    665 
    666 typedef struct {
    667 
    668 	/* The debug level for the decoder. */
    669 	int debug;
    670 
    671 	/* The maximum number of layers to decode. */
    672 	int maxlyrs;
    673 
    674 	/* The maximum number of packets to decode. */
    675 	int maxpkts;
    676 
    677 } jpc_dec_importopts_t;
    678 
    679 /******************************************************************************\
    680 * Functions.
    681 \******************************************************************************/
    682 
    683 /* Create a decoder segment object. */
    684 jpc_dec_seg_t *jpc_seg_alloc(void);
    685 
    686 /* Destroy a decoder segment object. */
    687 void jpc_seg_destroy(jpc_dec_seg_t *seg);
    688 
    689 /* Remove a segment from a segment list. */
    690 void jpc_seglist_remove(jpc_dec_seglist_t *list, jpc_dec_seg_t *node);
    691 
    692 /* Insert a segment into a segment list. */
    693 void jpc_seglist_insert(jpc_dec_seglist_t *list, jpc_dec_seg_t *ins,
    694   jpc_dec_seg_t *node);
    695 
    696 #endif