public class FileBitstreamReaderAgent extends BitstreamReaderAgent implements Markers, ProgressionType, StdEntropyCoderOptions
Note: All tile-parts headers are read by the constructor whereas packets are processed when decoding related tile (when setTile method is called).
In parsing mode, the reader simulates a virtual layer-resolution progressive bit stream with the same truncation points in each code-block, whereas in truncation mode, only the first bytes are taken into account (it behaves like if it is a real truncated codestream).
HeaderDecoder
,
PktDecoder
Modifier and Type | Field and Description |
---|---|
private int[] |
baknBytes
Backup of the number of bytes allocated to each tile.
|
private CBlkInfo[][][][][] |
cbI
Array containing info.
|
(package private) int |
cdstreamStart |
private int |
curTilePart
The current tile part being used
|
private int[][] |
firstPackOff
Offset of the first packet in each tile-part in each tile
|
private int |
firstTilePartHeadLen
First tile part header length
|
private int |
headLen
Length of main and tile-parts headers
|
private HeaderInfo |
hi
Reference to the HeaderInfo instance (used when reading SOT marker
segments)
|
private RandomAccessIO |
in
The RandomAccessIO where to get data from
|
private boolean |
isEOCFound
Whether or not a EOC marker has been found instead of a SOT
|
private boolean |
isPsotEqualsZero
Whether or not the last read Psot value was zero.
|
private boolean |
isTruncMode
True if truncation mode is used.
|
private J2KImageReadParamJava |
j2krparam
Reference to the J2KImageReadParamJava instance
|
(package private) int |
lastPos |
private int |
lQuit
The maximum number of layers to decode for any code-block
|
private int |
mainHeadLen
Length of main header
|
(package private) int |
maxPos |
(package private) int |
maxTP |
private int[] |
nBytes
Number of bytes allocated to each tile.
|
private int |
nt
The number of tiles in the image
|
(package private) int |
numtp |
PktDecoder |
pktDec
Reference to the PktDecoder instance
|
private Vector |
pktHL
Length of each packet head found in the tile
|
(package private) int |
pos |
private boolean |
printInfo
Whether or not to print information found in codestream
|
(package private) boolean |
rateReached |
private int |
remainingTileParts
The number of tile-parts that remain to read
|
(package private) int |
t |
private int[][] |
tilePartHeadLen
Length of all tile-part headers
|
private int[][] |
tilePartLen
Length of each tile-part (written in Psot)
|
private int[][] |
tilePartNum
The number of the tile-part in the codestream
|
(package private) long[][] |
tilePartPositions |
private int[] |
tileParts
The number of tile-parts in each tile
|
private int[] |
tilePartsRead
The number of tile-parts read so far for each tile
|
(package private) int |
tilePartStart |
private double |
totAllTileLen
Total length of all tile parts in all tiles
|
private int[] |
totTileHeadLen
Total length of tiles' header
|
private int[] |
totTileLen
Total length of each tile
|
private int[] |
totTileParts
The total number of tile-parts in each tile
|
private int |
totTilePartsRead
Thetotal number of tile-parts read so far
|
(package private) int |
tp |
(package private) int |
tptot |
private boolean |
usePOCQuit
Whether or not to use only first progression order
|
anbytes, arate, ax, ay, ctX, ctY, culx, culy, decSpec, derived, gb, hd, imgH, imgW, mdl, nc, ntH, ntW, ntX, ntY, offX, offY, OPT_PREFIX, params, px, py, subbTrees, targetRes, tnbytes, trate
COC, 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, TLM
COMP_POS_RES_LY_PROG, LY_RES_COMP_POS_PROG, POS_COMP_RES_LY_PROG, RES_LY_COMP_POS_PROG, RES_POS_COMP_LY_PROG
FIRST_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 |
---|
FileBitstreamReaderAgent(HeaderDecoder hd,
RandomAccessIO ehs,
DecoderSpecs decSpec,
J2KImageReadParamJava j2krparam,
boolean cdstrInfo,
HeaderInfo hi)
Reads all tiles headers and keep offset of their first
packet.
|
Modifier and Type | Method and Description |
---|---|
private void |
allocateRate()
Allocates output bit-rate for each tile in parsing mode: The allocator
simulates the truncation of a virtual layer-resolution progressive
codestream.
|
CBlkInfo[][][][][] |
getCBlkInfo()
Gets the reference to the CBlkInfo array
|
DecLyrdCBlk |
getCodeBlock(int c,
int m,
int n,
SubbandSyn sb,
int fl,
int nl,
DecLyrdCBlk ccb)
Returns the specified coded code-block, for the specified component, in
the current tile.
|
int |
getNumTileParts(int t)
Returns the number of tile-part found for a given tile
|
private void |
initTile(int tileNum)
Read all tile-part headers of the requested tile.
|
private void |
initTLM() |
void |
nextTile()
Advances to the next tile, in standard scan-line order (by rows
then columns).
|
private boolean |
readCompPosResLy(int[][] lys,
int lye,
int ress,
int rese,
int comps,
int compe)
Reads packets of the current tile according to the
component-position-resolution-layer progressiveness.
|
private boolean |
readLyResCompPos(int[][] lys,
int lye,
int ress,
int rese,
int comps,
int compe)
Reads packets of the current tile according to the
layer-resolution-component-position progressiveness.
|
private boolean |
readPosCompResLy(int[][] lys,
int lye,
int ress,
int rese,
int comps,
int compe)
Reads packets of the current tile according to the
position-component-resolution-layer progressiveness.
|
private boolean |
readResLyCompPos(int[][] lys,
int lye,
int ress,
int rese,
int comps,
int compe)
Reads packets of the current tile according to the
resolution-layer-component-position progressiveness.
|
private boolean |
readResPosCompLy(int[][] lys,
int lye,
int ress,
int rese,
int comps,
int compe)
Reads packets of the current tile according to the
resolution-position-component-layer progressiveness.
|
private int |
readTilePartHeader()
Reads SOT marker segment of the tile-part header and calls related
methods of the HeaderDecoder to read other markers segments.
|
private void |
readTilePkts(int t)
Finish initialization of members for specified tile, reads packets head
of each tile and keeps location of each code-block's codewords.
|
void |
setTile(int x,
int y)
Changes the current tile, given the new indexes.
|
createInstance, getActualNbytes, getActualRate, getCbULX, getCbULY, getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getImgHeight, getImgRes, getImgULX, getImgULY, getImgWidth, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getParameterInfo, getPPX, getPPY, getResULX, getResULY, getSynSubbandTree, getTargetNbytes, getTargetRate, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidth, initSubbandsFields
private boolean isPsotEqualsZero
public PktDecoder pktDec
private J2KImageReadParamJava j2krparam
private RandomAccessIO in
private int nt
private int[][] firstPackOff
private int[] nBytes
private boolean printInfo
private int[] baknBytes
private int[][] tilePartLen
private int[] totTileLen
private int[] totTileHeadLen
private int firstTilePartHeadLen
private double totAllTileLen
private int mainHeadLen
private int headLen
private int[][] tilePartHeadLen
private Vector pktHL
private boolean isTruncMode
private int remainingTileParts
private int[] tilePartsRead
private int totTilePartsRead
private int[] tileParts
private int[] totTileParts
private int curTilePart
private int[][] tilePartNum
private boolean isEOCFound
private HeaderInfo hi
private CBlkInfo[][][][][] cbI
private int lQuit
private boolean usePOCQuit
long[][] tilePartPositions
int cdstreamStart
int t
int pos
int tp
int tptot
int tilePartStart
boolean rateReached
int numtp
int maxTP
int lastPos
int maxPos
public FileBitstreamReaderAgent(HeaderDecoder hd, RandomAccessIO ehs, DecoderSpecs decSpec, J2KImageReadParamJava j2krparam, boolean cdstrInfo, HeaderInfo hi) throws IOException
hd
- HeaderDecoder of the codestream.ehs
- The input stream where to read bit-stream.decSpec
- The decoder specificationsj2krparam
- The J2KImageReadParam instance created from the
command-line arguments.cdstrInfo
- Whether or not to print information found in
codestream.IOException
allocateRate()
public int getNumTileParts(int t)
t
- Tile indexpublic CBlkInfo[][][][][] getCBlkInfo()
private void initTLM() throws IOException
IOException
private void initTile(int tileNum) throws IOException
tileNum
- The index of the tile for which to read tile-part
headers.IOException
private void allocateRate() throws IOException
IOException
private int readTilePartHeader() throws IOException
IOException
private boolean readLyResCompPos(int[][] lys, int lye, int ress, int rese, int comps, int compe) throws IOException
lys
- Index of the first layer for each component and resolution.lye
- Index of the last layer.ress
- Index of the first resolution level.rese
- Index of the last resolution level.comps
- Index of the first component.compe
- Index of the last component.IOException
private boolean readResLyCompPos(int[][] lys, int lye, int ress, int rese, int comps, int compe) throws IOException
lys
- Index of the first layer for each component and resolution.lye
- Index of the last layer.ress
- Index of the first resolution level.rese
- Index of the last resolution level.comps
- Index of the first component.compe
- Index of the last component.IOException
private boolean readResPosCompLy(int[][] lys, int lye, int ress, int rese, int comps, int compe) throws IOException
lys
- Index of the first layer for each component and resolution.lye
- Index of the last layer.ress
- Index of the first resolution level.rese
- Index of the last resolution level.comps
- Index of the first component.compe
- Index of the last component.IOException
private boolean readPosCompResLy(int[][] lys, int lye, int ress, int rese, int comps, int compe) throws IOException
lys
- Index of the first layer for each component and resolution.lye
- Index of the last layer.ress
- Index of the first resolution level.rese
- Index of the last resolution level.comps
- Index of the first component.compe
- Index of the last component.IOException
private boolean readCompPosResLy(int[][] lys, int lye, int ress, int rese, int comps, int compe) throws IOException
lys
- Index of the first layer for each component and resolution.lye
- Index of the last layer.ress
- Index of the first resolution level.rese
- Index of the last resolution level.comps
- Index of the first component.compe
- Index of the last component.IOException
private void readTilePkts(int t) throws IOException
Then, if a parsing output rate is defined, it keeps information of first layers only. This operation simulates a creation of a layer-resolution-component progressive bit-stream which will be next truncated and decoded.
t
- Tile indexIOException
PktDecoder
public void setTile(int x, int y)
setTile
in interface MultiResImgData
setTile
in class BitstreamReaderAgent
x
- The horizontal indexes the tile.y
- The vertical indexes of the new tile.public void nextTile()
nextTile
in interface MultiResImgData
nextTile
in class BitstreamReaderAgent
public DecLyrdCBlk getCodeBlock(int c, int m, int n, SubbandSyn sb, int fl, int nl, DecLyrdCBlk ccb)
The argument 'fl' is to be used by subsequent calls to this method for the same code-block. In this way supplemental data can be retrieved at a later time. The fact that data from more than one layer can be returned means that several packets from the same code-block, of the same component, and the same tile, have been concatenated.
The returned compressed code-block can have its progressive attribute set. If this attribute is set it means that more data can be obtained by subsequent calls to this method (subject to transmission delays, etc). If the progressive attribute is not set it means that the returned data is all the data that can be obtained for the specified code-block.
The compressed code-block is uniquely specified by the current tile, the component (identified by 'c'), the subband (indentified by 'sb') and the code-block vertical and horizontal indexes 'n' and 'm'.
The 'ulx' and 'uly' members of the returned 'DecLyrdCBlk' object contain the coordinates of the top-left corner of the block, with respect to the tile, not the subband.
getCodeBlock
in interface CodedCBlkDataSrcDec
c
- The index of the component, from 0 to N-1.m
- The vertical index of the code-block to return, in the
specified subband.n
- The horizontal index of the code-block to return, in the
specified subband.sb
- The subband in whic the requested code-block is.fl
- The first layer to return.nl
- The number of layers to return, if negative all available
layers are returned, starting at 'fl'.ccb
- If not null this object is used to return the compressed
code-block. If null a new object is created and returned. If the data
array in ccb is not null then it can be reused to return the compressed
data.Copyright © 2017 Open Microscopy Environment