|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--jj2000.j2k.codestream.reader.BitstreamReaderAgent | +--jj2000.j2k.codestream.reader.FileBitstreamReaderAgent
This class reads the bit stream (with the help of HeaderDecoder for tile headers and PktDecoder for packets header and body) and retrives location of all code-block's codewords.
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
Field Summary | |
private CBlkInfo[][][][][] |
cbI
Array containing info. |
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 RandomAccessIO |
in
The RandomAccessIO where to get data from |
private boolean |
isTruncMode
True if truncation mode is used. |
private int |
mainHeadLen
Length of main header |
private int[] |
nBytes
Number of bytes allocated to each tile. |
private int |
nt
The number of tiles in the image |
PktDecoder |
pktDec
Reference to the PktDecoder instance |
private java.util.Vector |
pktHL
Length of each packet head found in the tile |
private ParameterList |
pl
Reference to the ParameterList instance |
private int |
remainingTileParts
The number of tile-parts that remain to read |
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 |
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 |
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 |
totTilePartsRead
Thetotal number of tile-parts read so far |
Fields inherited from class jj2000.j2k.codestream.reader.BitstreamReaderAgent |
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,
pinfo,
px,
py,
res,
subbTrees,
tnbytes,
trate |
Fields inherited from interface jj2000.j2k.codestream.Markers |
COC,
COD,
COM,
CRG,
EOC,
EPH,
EPH_LENGTH,
ERS_SEG_MARKERS,
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_PRECINCT_PARTITION,
SCOX_USE_EPH,
SCOX_USE_SOP,
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 |
Fields inherited from interface jj2000.j2k.codestream.ProgressionType |
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 |
Fields inherited from interface jj2000.j2k.entropy.StdEntropyCoderOptions |
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_ER_TERM,
OPT_REG_TERM,
OPT_RESET_MQ,
OPT_SEG_MARKERS,
OPT_VERT_STR_CAUSAL,
STRIPE_HEIGHT |
Constructor Summary | |
FileBitstreamReaderAgent(HeaderDecoder hd,
RandomAccessIO ehs,
DecoderSpecs decSpec,
ParameterList pl)
Reads all tiles headers and keep offset of their first packet. |
Method Summary | |
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. |
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. |
private void |
initTile(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 |
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,
int curTilePart)
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,
int curTilePart)
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,
int curTilePart)
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,
int curTilePart)
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,
int curTilePart)
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. |
void |
setTile(int x,
int y)
Changes the current tile, given the new indexes. |
Methods inherited from class jj2000.j2k.codestream.reader.BitstreamReaderAgent |
createInstance,
getActualNbytes,
getActualRate,
getCompHeight,
getCompImgHeight,
getCompImgWidth,
getCompSubsX,
getCompSubsY,
getCompWidth,
getHeight,
getImgHeight,
getImgRes,
getImgULX,
getImgULY,
getImgWidth,
getNumCodeBlocks,
getNumComps,
getNumTiles,
getNumTiles,
getParameterInfo,
getPartitionULX,
getPartitionULY,
getPPX,
getPPY,
getSubbandTree,
getTargetNbytes,
getTargetRate,
getTile,
getTileIdx,
getTileOff,
getULX,
getULY,
getWidth,
initSubbandsFields |
Methods inherited from class java.lang.Object |
|
Field Detail |
public PktDecoder pktDec
private ParameterList pl
private RandomAccessIO in
private int nt
private int[][] firstPackOff
private int[] nBytes
private int[][] tilePartLen
private int[] totTileLen
private int[] totTileHeadLen
private int firstTilePartHeadLen
private double totAllTileLen
private int mainHeadLen
private int[][] tilePartHeadLen
private java.util.Vector pktHL
private boolean isTruncMode
private int remainingTileParts
private int[] tilePartsRead
private int totTilePartsRead
private int[] tileParts
private int curTilePart
private int[][] tilePartNum
private CBlkInfo[][][][][] cbI
Constructor Detail |
public FileBitstreamReaderAgent(HeaderDecoder hd, RandomAccessIO ehs, DecoderSpecs decSpec, ParameterList pl) throws java.io.IOException
hd
- HeaderDecoder of the codestream.ehs
- The input stream where to read bit-stream.decSpec
- The decoder specificationspl
- The ParameterList instance created from the command-line
arguments.allocateRate()
Method Detail |
private void allocateRate() throws java.io.IOException
private int readTilePartHeader() throws java.io.IOException
private boolean readLyResCompPos(int[][] lys, int lye, int ress, int rese, int comps, int compe, int curTilePart) throws java.io.IOException
lys
- Index of the first layer for each component and resolutionlye
- Index of the last layerress
- Index of the first resolution levelrese
- Index of the last resolution levelcomps
- Index of the first componentcompe
- Index of the last componentprivate boolean readResLyCompPos(int[][] lys, int lye, int ress, int rese, int comps, int compe, int curTilePart) throws java.io.IOException
lys
- Index of the first layer for each component and resolutionlye
- Index of the last layerress
- Index of the first resolution levelrese
- Index of the last resolution levelcomps
- Index of the first componentcompe
- Index of the last componentprivate boolean readResPosCompLy(int[][] lys, int lye, int ress, int rese, int comps, int compe, int curTilePart) throws java.io.IOException
lys
- Index of the first layer for each component and resolutionlye
- Index of the last layerress
- Index of the first resolution levelrese
- Index of the last resolution levelcomps
- Index of the first componentcompe
- Index of the last componentprivate boolean readPosCompResLy(int[][] lys, int lye, int ress, int rese, int comps, int compe, int curTilePart) throws java.io.IOException
lys
- Index of the first layer for each component and resolutionlye
- Index of the last layerress
- Index of the first resolution levelrese
- Index of the last resolution levelcomps
- Index of the first componentcompe
- Index of the last componentprivate boolean readCompPosResLy(int[][] lys, int lye, int ress, int rese, int comps, int compe, int curTilePart) throws java.io.IOException
lys
- Index of the first layer for each component and resolutionlye
- Index of the last layerress
- Index of the first resolution levelrese
- Index of the last resolution levelcomps
- Index of the first componentcompe
- Index of the last componentprivate void initTile(int t) throws java.io.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 indexPktDecoder
public void setTile(int x, int y)
x
- The horizontal indexes the tile.y
- The vertical indexes of the new tile.public void nextTile()
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 supplamental 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 subblock.
The compressed code-block is uniquely specified by the current tile, the component (identified by 'c'), the subband (indentified by 'sb') and the code-bock 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.
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.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: INNER | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |