public class HeaderDecoder extends Object implements ProgressionType, Markers, StdEntropyCoderOptions
A marker segment includes a marker and eventually marker segment parameters. It is designed by the three letters code of the marker associated with the marker segment. JPEG 2000 part 1 defines 6 types of markers:
The main header is read when the constructor is called whereas tile-part headers are read when the FileBitstreamReaderAgent instance is created. The reading is done in 2 passes:
Whenever a marker segment is not recognized a warning message is displayed and its length parameter is used to skip it.
DecoderSpecs, 
FileBitstreamReaderAgent| Modifier and Type | Field and Description | 
|---|---|
| private int | cb0xThe horizontal code-block partition origin | 
| private int | cb0yThe vertical code-block partition origin | 
| private static int | COC_FOUNDFlag bit for COC marker segment found | 
| private static int | COD_FOUNDFlag bit for COD marker segment found | 
| private static int | COM_FOUNDFlag bit for COM marker segment found | 
| static int | CRG_FOUNDFlag bit for CRG marker segment found | 
| private DecoderSpecs | decSpecThe decoder specifications | 
| private String | hdStrCurrent header information in a string | 
| private HeaderInfo | hiThe reference to the HeaderInfo instance holding the information found
 in headers | 
| private Hashtable | htHashTable used to store marker segment byte buffers | 
| private J2KImageReadParamJava | j2krparamThe J2KImageReadParamJava instance of the decoder | 
| int | mainHeadOffThe offset of the main header in the input stream | 
| private int | nCOCMarkSegCounts number of COC markers found in the header | 
| private int | nCOMMarkSegCounts number of COM markers found in the header | 
| private int | nCompThe number of components in the image | 
| private int | nfMarkSegUsed to store which markers have been already read, by using flag
 bits. | 
| private int | nPPMMarkSegCounts number of PPM markers found in the header | 
| private int[][] | nPPTMarkSegCounts number of PPT markers found in the header | 
| private int | nQCCMarkSegCounts number of QCC markers found in the header | 
| private int | nRGNMarkSegCounts number of RGN markers found in the header | 
| int[] | nTilePartsThe number of tile parts per tile | 
| private int | nTilesThe number of tiles within the image | 
| static char | OPT_PREFIXThe prefix for header decoder options: 'H' | 
| private static String[][] | pinfoThe list of parameters that is accepted for quantization. | 
| private ByteArrayOutputStream[] | pkdPktHeadersThe packed packet headers if the PPM or PPT markers are used | 
| private static int | PLM_FOUNDFlag bit for PLM marker segment found | 
| private static int | PLT_FOUNDFlag bit for PLT marker segment found | 
| private static int | POC_FOUNDFlag bit for POC marker segment found | 
| static int | PPM_FOUNDFlag bit for SOD marker segment found | 
| private byte[][] | pPMMarkerDataArray containing the Nppm and Ippm fields of the PPM marker segments | 
| static int | PPT_FOUNDFlag bit for SOD marker segment found | 
| (package private) boolean | precinctPartitionIsUsedIs the precinct partition used | 
| private static int | QCC_FOUNDFlag bit for QCC marker segment found | 
| private static int | QCD_FOUNDFlag bit for QCD marker segment found | 
| private static int | RGN_FOUNDFlag bit for RGN marker segment found | 
| private static int | SIZ_FOUNDFlag bit for SIZ marker segment found | 
| static int | SOD_FOUNDFlag bit for SOD marker segment found | 
| private static int | SOT_FOUNDFlag bit for SOT marker segment found | 
| private static int | TILE_RESETThe reset mask for new tiles | 
| Vector | tileOfTilePartsVector containing info as to which tile each tilepart belong | 
| private byte[][][][] | tilePartPkdPktHeadersArray containing the Ippm fields of the PPT marker segments | 
| private static int | TLM_FOUNDFlag bit for TLM marker segment found | 
COMP_POS_RES_LY_PROG, LY_RES_COMP_POS_PROG, POS_COMP_RES_LY_PROG, RES_LY_COMP_POS_PROG, RES_POS_COMP_LY_PROGCOC, COD, COM, CRG, EOC, EPH, EPH_LENGTH, ERS_SEG_SYMBOLS, ERS_SOP, MAX_COMP_BITDEPTH, MAX_LPPM, MAX_LPPT, PLM, PLT, POC, PPM, PPT, PRECINCT_PARTITION_DEF_SIZE, QCC, QCD, RCOM_GEN_USE, RGN, RSIZ_BASELINE, RSIZ_ER_FLAG, RSIZ_ROI, SCOX_HOR_CB_PART, SCOX_PRECINCT_PARTITION, SCOX_USE_EPH, SCOX_USE_SOP, SCOX_VER_CB_PART, SIZ, SOC, SOD, SOP, SOP_LENGTH, SOT, SQCX_EXP_MASK, SQCX_EXP_SHIFT, SQCX_GB_MSK, SQCX_GB_SHIFT, SQCX_NO_QUANTIZATION, SQCX_SCALAR_DERIVED, SQCX_SCALAR_EXPOUNDED, SRGN_IMPLICIT, SSIZ_DEPTH_BITS, TLMFIRST_BYPASS_PASS_IDX, MAX_CB_AREA, MAX_CB_DIM, MIN_CB_DIM, NUM_EMPTY_PASSES_IN_MS_BP, NUM_NON_BYPASS_MS_BP, NUM_PASSES, OPT_BYPASS, OPT_PRED_TERM, OPT_RESET_MQ, OPT_SEG_SYMBOLS, OPT_TERM_PASS, OPT_VERT_STR_CAUSAL, STRIPE_HEIGHT| Constructor and Description | 
|---|
| HeaderDecoder(RandomAccessIO ehs,
             J2KImageReadParamJava j2krparam,
             HeaderInfo hi)Creates a HeaderDecoder instance and read in two passes the main header
 of the codestream. | 
| Modifier and Type | Method and Description | 
|---|---|
| void | checkMarkerLength(DataInputStream ehs,
                 String str)Checks that the marker segment length is correct. | 
| Dequantizer | createDequantizer(CBlkQuantDataSrcDec src,
                 int[] rb,
                 DecoderSpecs decSpec2)Returns the dequantizer parameters. | 
| EntropyDecoder | createEntropyDecoder(CodedCBlkDataSrcDec src,
                    J2KImageReadParamJava j2krparam)Creates and returns the entropy decoder corresponding to the
 information read from the codestream header and with the special
 additional parameters from the parameter list. | 
| ROIDeScaler | createROIDeScaler(CBlkQuantDataSrcDec src,
                 J2KImageReadParamJava j2krparam,
                 DecoderSpecs decSpec2)Creates and returns the ROIDeScaler corresponding to the information
 read from the codestream header and with the special additional
 parameters from the parameter list. | 
| private void | extractMainMarkSeg(short marker,
                  RandomAccessIO ehs)This method extract a marker segment from the main header and stores it
 into a byte buffer for the second pass. | 
| void | extractTilePartMarkSeg(short marker,
                      RandomAccessIO ehs,
                      int tileIdx,
                      int tilePartIdx)This method extracts a marker segment in a tile-part header and stores
 it into a byte buffer for the second pass. | 
| int | getCbULX()Returns the horizontal code-block partition origin.Allowable values are
 0 and 1, nothing else. | 
| int | getCbULY()Returns the vertical code-block partition origin. | 
| int | getCompSubsX(int c)Returns the component sub-sampling factor, with respect to the
 reference grid, along the horizontal direction for the specified
 component. | 
| int | getCompSubsY(int c)Returns the component sub-sampling factor, with respect to the
 reference grid, along the vertical direction for the specified
 component. | 
| DecoderSpecs | getDecoderSpecs()Return the DecoderSpecs instance filled when reading the headers | 
| int | getImgHeight()Returns the image height in the reference grid. | 
| int | getImgULX()Return the horizontal upper-left coordinate of the image in the
 reference grid. | 
| int | getImgULY()Return the vertical upper-left coordinate of the image in the reference
 grid. | 
| int | getImgWidth()Returns the image width in the reference grid. | 
| int | getMaxCompImgHeight()Return the maximum height among all components | 
| int | getMaxCompImgWidth()Return the maximum width among all components | 
| int | getNomTileHeight()Returns the nominal width of the tiles in the reference grid. | 
| int | getNomTileWidth()Returns the nominal width of the tiles in the reference grid. | 
| int | getNumComps()Returns the number of components in the image. | 
| int | getNumFoundMarkSeg()Returns the number of found marker segments in the current header. | 
| int | getNumTiles()Return the number of tiles in the image | 
| int | getOriginalBitDepth(int c)Returns the original bitdepth of the specified component. | 
| ByteArrayInputStream | getPackedPktHead(int tile)Return the packed packet headers for a given tile. | 
| static String[][] | getParameterInfo()Returns the parameters that are used in this class. | 
| int | getPPX(int t,
      int c,
      int rl)Returns the precinct partition width for the specified tile-component
 and resolution level. | 
| int | getPPY(int t,
      int c,
      int rl)Returns the precinct partition height for the specified component, tile
 and resolution level. | 
| Point | getTilingOrigin(Point co)Returns the tiling origin, referred to as '(Px,Py)' in the 'ImgData'
 interface. | 
| boolean | isOriginalSigned(int c)Returns true if the original data of the specified component was
 signed. | 
| boolean | precinctPartitionUsed()Returns the boolean used to know if the precinct partition is used | 
| private void | readCOC(DataInputStream ehs,
       boolean mainh,
       int tileIdx,
       int tpIdx)Reads the COC marker segment and realigns the codestream where the next
 marker should be found. | 
| private void | readCOD(DataInputStream ehs,
       boolean mainh,
       int tileIdx,
       int tpIdx)Reads a COD marker segment and realigns the codestream where the next
 marker should be found. | 
| private void | readCOM(DataInputStream ehs,
       boolean mainh,
       int tileIdx,
       int comIdx)Reads a COM marker segments and realigns the bit stream at the point
 where the next marker segment should be found. | 
| private void | readCRG(DataInputStream ehs)Reads a CRG marker segment and checks its length. | 
| private SynWTFilter | readFilter(DataInputStream ehs,
          int[] filtIdx)Reads a wavelet filter from the codestream and returns the filter
 object that implements it. | 
| private void | readFoundMainMarkSeg()Retrieves and reads all marker segments found in the main header during
 the first pass. | 
| void | readFoundTilePartMarkSeg(int tileIdx,
                        int tpIdx)Return the DecoderSpecs instance filled when reading the headers
 Retrieves and reads all marker segments previously found in the
 tile-part header. | 
| private void | readPLM(DataInputStream ehs)Reads PLM marker segment and realigns the codestream where the next
 marker should be found. | 
| private void | readPLTFields(DataInputStream ehs)Reads the PLT fields and realigns the codestream where the next marker
 should be found. | 
| private void | readPOC(DataInputStream ehs,
       boolean mainh,
       int t,
       int tpIdx)Reads the POC marker segment and realigns the codestream where the next
 marker should be found. | 
| private void | readPPM(DataInputStream ehs)Reads the PPM marker segment of the main header. | 
| private void | readPPT(DataInputStream ehs,
       int tile,
       int tpIdx)Teads the PPT marker segment of the main header. | 
| private void | readQCC(DataInputStream ehs,
       boolean mainh,
       int tileIdx,
       int tpIdx)Reads a QCC marker segment and realigns the codestream at the point
 where the next marker should be found. | 
| private void | readQCD(DataInputStream ehs,
       boolean mainh,
       int tileIdx,
       int tpIdx)Reads a QCD marker segment and realigns the codestream at the point
 where the next marker should be found. | 
| private void | readRGN(DataInputStream ehs,
       boolean mainh,
       int tileIdx,
       int tpIdx)Reads the RGN marker segment of the codestream header. | 
| private void | readSIZ(DataInputStream ehs)Reads the SIZ marker segment and realigns the codestream at the point
 where the next marker segment should be found. | 
| private void | readTLM(DataInputStream ehs)Reads TLM marker segment and realigns the codestream where the next
 marker should be found. | 
| void | resetHeaderMarkers()Method that resets members indicating which markers have already been
 found | 
| void | setTileOfTileParts(int tile)Sets the tile of each tile part in order. | 
| String | toString()Print information about the current header. | 
public static final char OPT_PREFIX
private static final String[][] pinfo
private HeaderInfo hi
private String hdStr
private J2KImageReadParamJava j2krparam
private int nTiles
public int[] nTileParts
private int nfMarkSeg
private int nCOCMarkSeg
private int nQCCMarkSeg
private int nCOMMarkSeg
private int nRGNMarkSeg
private int nPPMMarkSeg
private int[][] nPPTMarkSeg
private static final int SIZ_FOUND
private static final int COD_FOUND
private static final int COC_FOUND
private static final int QCD_FOUND
private static final int TLM_FOUND
private static final int PLM_FOUND
private static final int SOT_FOUND
private static final int PLT_FOUND
private static final int QCC_FOUND
private static final int RGN_FOUND
private static final int POC_FOUND
private static final int COM_FOUND
public static final int SOD_FOUND
public static final int PPM_FOUND
public static final int PPT_FOUND
public static final int CRG_FOUND
private static final int TILE_RESET
private Hashtable ht
private int nComp
private int cb0x
private int cb0y
private DecoderSpecs decSpec
boolean precinctPartitionIsUsed
public int mainHeadOff
public Vector tileOfTileParts
private byte[][] pPMMarkerData
private byte[][][][] tilePartPkdPktHeaders
private ByteArrayOutputStream[] pkdPktHeaders
public HeaderDecoder(RandomAccessIO ehs, J2KImageReadParamJava j2krparam, HeaderInfo hi) throws IOException
ehs - The encoded header stream where marker segment are
 extracted.j2krparam - The parameter list of the decoderhi - The HeaderInfo holding information found in marker segmentsIOException - If an I/O error occurs while reading from the
 encoded header stream.EOFException - If the end of the encoded header stream is
 reached before getting all the data.CorruptedCodestreamException - If invalid data is found in the
 codestream main header.public int getMaxCompImgHeight()
public int getMaxCompImgWidth()
public final int getImgWidth()
public final int getImgHeight()
public final int getImgULX()
public final int getImgULY()
public final int getNomTileWidth()
public final int getNomTileHeight()
public final Point getTilingOrigin(Point co)
co - If not null this object is used to return the information. If
 null a new one is created and returned.ImgDatapublic final boolean isOriginalSigned(int c)
c - The index of the componentpublic final int getOriginalBitDepth(int c)
c - The index of the componentpublic final int getNumComps()
public final int getCompSubsX(int c)
c - The index of the componentpublic final int getCompSubsY(int c)
c - The index of the componentpublic final Dequantizer createDequantizer(CBlkQuantDataSrcDec src, int[] rb, DecoderSpecs decSpec2)
src - The source of data for the dequantizer.rb - The number of range bits for each component. Must be
 the number of range bits of the mixed components.decSpec2 - The DecoderSpecs instance after any image manipulation.public final int getCbULX()
public final int getCbULY()
public final int getPPX(int t,
                        int c,
                        int rl)
c - the component indext - the tile indexrl - the resolution levelpublic final int getPPY(int t,
                        int c,
                        int rl)
c - the componentt - the tile indexrl - the resolution levelpublic final boolean precinctPartitionUsed()
private SynWTFilter readFilter(DataInputStream ehs, int[] filtIdx) throws IOException
ehs - The encoded header stream from where to read the infofiltIdx - Int array of one element to return the type of the
 wavelet filter.IOExceptionpublic void checkMarkerLength(DataInputStream ehs, String str) throws IOException
ehs - The encoded header streamstr - The string identifying the marker, such as "SIZ marker"IOException - If an I/O error occursprivate void readSIZ(DataInputStream ehs) throws IOException
SIZ is a fixed information marker segment containing informations about image and tile sizes. It is required in the main header immediately after SOC.
ehs - The encoded header streamIOException - If an I/O error occurs while reading from the
 encoded header streamprivate void readCRG(DataInputStream ehs) throws IOException
ehs - The encoded header streamIOExceptionprivate void readCOM(DataInputStream ehs, boolean mainh, int tileIdx, int comIdx) throws IOException
ehs - The encoded header streammainh - Flag indicating whether or not this marker segment is read
 from the main header.tileIdx - The index of the current tilecomIdx - Occurence of this COM marker in eith main or tile-part
 headerIOException - If an I/O error occurs while reading from the
 encoded header streamprivate void readQCD(DataInputStream ehs, boolean mainh, int tileIdx, int tpIdx) throws IOException
ehs - The encoded stream.mainh - Flag indicating whether or not this marker segment is read
 from the main header.tileIdx - The index of the current tiletpIdx - Tile-part indexIOException - If an I/O error occurs while reading from the
 encoded header stream.private void readQCC(DataInputStream ehs, boolean mainh, int tileIdx, int tpIdx) throws IOException
ehs - The encoded stream.mainh - Flag indicating whether or not this marker segment is read
 from the main header.tileIdx - The index of the current tiletpIdx - Tile-part indexIOException - If an I/O error occurs while reading from the
 encoded header stream.private void readCOD(DataInputStream ehs, boolean mainh, int tileIdx, int tpIdx) throws IOException
ehs - The encoder header stream.mainh - Flag indicating whether or not this marker segment is read
 from the main header.tileIdx - The index of the current tiletpIdx - Tile-part indexIOException - If an I/O error occurs while reading from the
 encoder header streamprivate void readCOC(DataInputStream ehs, boolean mainh, int tileIdx, int tpIdx) throws IOException
ehs - The encoder header stream.mainh - Flag indicating whether or not this marker segment is read
 from the main header.tileIdx - The index of the current tiletpIdx - Tile-part indexIOException - If an I/O error occurs while reading from the
 encoder header streamprivate void readPOC(DataInputStream ehs, boolean mainh, int t, int tpIdx) throws IOException
ehs - The encoder header stream.mainh - Flag indicating whether or not this marker segment is read
 from the main header.t - The index of the current tiletpIdx - Tile-part indexIOException - If an I/O error occurs while reading from the
 encoder header streamprivate void readTLM(DataInputStream ehs) throws IOException
ehs - The encoder header stream.IOException - If an I/O error occurs while reading from the
 encoder header streamprivate void readPLM(DataInputStream ehs) throws IOException
ehs - The encoder header stream.IOException - If an I/O error occurs while reading from the
 encoder header streamprivate void readPLTFields(DataInputStream ehs) throws IOException
ehs - The encoder header stream.IOException - If an I/O error occurs while reading from the
 encoder header streamprivate void readRGN(DataInputStream ehs, boolean mainh, int tileIdx, int tpIdx) throws IOException
May be used in tile or main header. If used in main header, it refers to the maxshift value of a component in all tiles. When used in tile header, only the particular tile-component is affected.
ehs - The encoder header stream.mainh - Flag indicating whether or not this marker segment is read
 from the main header.tileIdx - The index of the current tiletpIdx - Tile-part indexIOException - If an I/O error occurs while reading from the
 encoder header streamprivate void readPPM(DataInputStream ehs) throws IOException
ehs - The encoder header stream.IOException - If an I/O error occurs while reading from the
 encoder header streamprivate void readPPT(DataInputStream ehs, int tile, int tpIdx) throws IOException
ehs - The encoder header stream.tile - The tile to which the current tile part belongstpIdx - Tile-part indexIOException - If an I/O error occurs while reading from the
 encoder header streamprivate void extractMainMarkSeg(short marker,
                                RandomAccessIO ehs)
                         throws IOException
If the marker is not recognized, it prints a warning and skips it according to its length.
SIZ marker segment shall be the first encountered marker segment.
marker - The marker segment to processehs - The encoded header streamIOExceptionpublic void extractTilePartMarkSeg(short marker,
                                   RandomAccessIO ehs,
                                   int tileIdx,
                                   int tilePartIdx)
                            throws IOException
marker - The marker to processehs - The encoded header streamtileIdx - The index of the current tiletilePartIdx - The index of the current tile partIOExceptionprivate void readFoundMainMarkSeg()
                           throws IOException
IOExceptionpublic void readFoundTilePartMarkSeg(int tileIdx,
                                     int tpIdx)
                              throws IOException
tileIdx - The index of the current tiletpIdx - Index of the current tile-partIOExceptionpublic DecoderSpecs getDecoderSpecs()
public EntropyDecoder createEntropyDecoder(CodedCBlkDataSrcDec src, J2KImageReadParamJava j2krparam)
src - The bit stream reader agent where to get code-block data
 from.j2krparam - The parameter list containing parameters applicable to the
 entropy decoder (other parameters can also be present).public ROIDeScaler createROIDeScaler(CBlkQuantDataSrcDec src, J2KImageReadParamJava j2krparam, DecoderSpecs decSpec2)
src - The bit stream reader agent where to get code-block data
 from.j2krparam - The parameters applicable to the entropy decoder.public void resetHeaderMarkers()
public String toString()
public static String[][] getParameterInfo()
public int getNumTiles()
public ByteArrayInputStream getPackedPktHead(int tile) throws IOException
IOException - If an I/O error occurs while reading from the
 encoder header streampublic void setTileOfTileParts(int tile)
tile - The tile number that the present tile part belongs to.public int getNumFoundMarkSeg()
Copyright © 2017 Open Microscopy Environment