|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object | +--jj2000.j2k.codestream.reader.PktDecoder
This class is used to read packet's head and body. All the members must be re-initialized at the beginning of each tile thanks to the restart() method.
Field Summary | |
private PktHeaderBitReader |
bin
The wrapper to read bits for the packet heads |
private java.util.Vector[] |
cblks
List of code-blocks found in last read packet head (one list per subband) |
private int |
cQuit
The component in which the ncb quit condition was reached |
private DecoderSpecs |
decSpec
Reference to decoder specifications |
private RandomAccessIO |
ehs
Reference to the stream where to read from |
private boolean |
ephUsed
Whether or not EPH marker are used |
private HeaderDecoder |
hd
Reference to the HeaderDecoder |
private int |
INIT_LBLOCK
Initial value of the state variable associated with code-block length. |
private boolean |
isTruncMode
True if truncation mode is used. |
private int[][][][][] |
lblock
Lblock value used to read code size information in each packet head: 1st dim: component index. 2nd dim: resolution level index. 3rd dim: subband index. 4th/5th dim: code-block index (vert. |
private int |
maxCB
Maximum number of codeblocks to read before ncb quit condition is reached |
private int |
nc
The number of components |
private int |
ncb
Number of codeblocks encountered. |
private boolean |
ncbQuit
Flag indicating whether ncb quit condition has been reached |
private int |
nl
Number of layers in t he current tile |
private Coord[][] |
numPrec
Maximum number of precincts : 1st dim: component index. 2nd dim: resolution level index. |
private int |
pktIdx
Index of the current packet in the tile. |
private boolean |
pph
Flag indicating whether packed packet header was used for this tile |
private java.io.ByteArrayInputStream |
pphbais
The packed packet header if it was used |
private PrecInfo[][][] |
ppinfo
Array containing the coordinates, width, height, indexes, ... |
private int |
rQuit
The resolution in which the ncb quit condition was reached |
private boolean |
sopUsed
Whether or not SOP marker segment are used |
private int |
sQuit
The subband in which the ncb quit condition was reached |
private BitstreamReaderAgent |
src
Reference to the codestream reader agent |
private int |
tIdx
Index of the current tile |
private int |
tQuit
The tile in which the ncb quit condition was reached |
private TagTreeDecoder[][][][] |
ttIncl
Tag tree used to read inclusion informations in packet's head: 1st dim: component index. 2nd dim: resolution level index. 3rd dim: precinct index. 4th dim: subband index. |
private TagTreeDecoder[][][][] |
ttMaxBP
Tag tree used to read bit-depth information in packet's head: 1st dim: component index. 2nd dim: resolution level index. 3rd dim: precinct index. 4th dim: subband index. |
private int |
xQuit
The x position of the last code block before ncb quit reached |
private int |
yQuit
The y position of the last code block before ncb quit reached |
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_PRED_TERM, OPT_RESET_MQ, OPT_SEG_SYMBOLS, OPT_TERM_PASS, OPT_VERT_STR_CAUSAL, STRIPE_HEIGHT |
Constructor Summary | |
PktDecoder(DecoderSpecs decSpec,
HeaderDecoder hd,
RandomAccessIO ehs,
BitstreamReaderAgent src,
boolean isTruncMode,
int maxCB)
Creates an empty PktDecoder object associated with given decoder specifications and HeaderDecoder. |
Method Summary | |
private void |
fillPrecInfo(int c,
int r,
int mdl)
Retrives precincts and code-blocks coordinates in the given resolution, level and component. |
int |
getNumPrecinct(int c,
int r)
Gets the number of precincts in a given component and resolution level. |
int |
getPPX(int t,
int c,
int r)
Returns the precinct partition width for the specified component, resolution level and tile. |
int |
getPPY(int t,
int c,
int rl)
Returns the precinct partition height for the specified component, resolution level and tile. |
PrecInfo |
getPrecInfo(int c,
int r,
int p)
Get PrecInfo instance of the specified resolution level, component and precinct. |
void |
readEPHMarker(PktHeaderBitReader bin)
Try to read an EPH marker. |
boolean |
readPktBody(int l,
int r,
int c,
int p,
CBlkInfo[][][] cbI,
int[] nb)
Reads specificied packet body in order to find offset of each code-block's piece of codeword. |
boolean |
readPktHead(int l,
int r,
int c,
int p,
CBlkInfo[][][] cbI,
int[] nb)
Read specified packet head and found length of each code-block's piece of codewords as well as number of skipped most significant bit-planes. |
boolean |
readSOPMarker(int[] nBytes,
int p,
int c,
int r)
Try to read a SOP marker and check that its sequence number if not out of sequence. |
CBlkInfo[][][][][] |
restart(int nc,
int[] mdl,
int nl,
CBlkInfo[][][][][] cbI,
boolean pph,
java.io.ByteArrayInputStream pphbais)
Re-initialize the PktDecoder instance at the beginning of a new tile. |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
private BitstreamReaderAgent src
private boolean pph
private java.io.ByteArrayInputStream pphbais
private DecoderSpecs decSpec
private HeaderDecoder hd
private final int INIT_LBLOCK
private PktHeaderBitReader bin
private RandomAccessIO ehs
private Coord[][] numPrec
private int tIdx
private PrecInfo[][][] ppinfo
private int[][][][][] lblock
private TagTreeDecoder[][][][] ttIncl
private TagTreeDecoder[][][][] ttMaxBP
private int nl
private int nc
private boolean sopUsed
private boolean ephUsed
private int pktIdx
private java.util.Vector[] cblks
private int ncb
private int maxCB
private boolean ncbQuit
private int tQuit
private int cQuit
private int sQuit
private int rQuit
private int xQuit
private int yQuit
private boolean isTruncMode
Constructor Detail |
public PktDecoder(DecoderSpecs decSpec, HeaderDecoder hd, RandomAccessIO ehs, BitstreamReaderAgent src, boolean isTruncMode, int maxCB)
decSpec
- The decoder specifications.hd
- The HeaderDecoder instance.ehs
- The stream where to read data from.src
- The bit stream reader agent.isTruncMode
- Whether or not truncation mode is required.maxCB
- The maximum number of code-blocks to read before ncbquitMethod Detail |
public CBlkInfo[][][][][] restart(int nc, int[] mdl, int nl, CBlkInfo[][][][][] cbI, boolean pph, java.io.ByteArrayInputStream pphbais)
nc
- The number of components in this tilemdl
- The maximum number of decomposition level in each component
of this tilenl
- The number of layers in this tilecbI
- The code-blocks arraypph
- Flag indicating whether packed packet headers was usedpphbais
- Stream containing the packed packet headersprivate void fillPrecInfo(int c, int r, int mdl)
c
- Component index.r
- Resolution level index.mdl
- Number of decomposition level in component c.public int getNumPrecinct(int c, int r)
c
- Component indexr
- Resolution indexpublic boolean readPktHead(int l, int r, int c, int p, CBlkInfo[][][] cbI, int[] nb) throws java.io.IOException
l
- layer indexr
- Resolution level indexc
- Component indexp
- Precinct indexcbI
- CBlkInfo array of relevant component and resolution
level.nb
- The number of bytes to read in each tile before reaching
output rate (used by truncation mode)
java.io.IOException
public boolean readPktBody(int l, int r, int c, int p, CBlkInfo[][][] cbI, int[] nb) throws java.io.IOException
l
- layer indexr
- Resolution level indexc
- Component indexp
- Precinct indexcbI
- CBlkInfo array of relevant component and resolution
level.nb
- The remainding number of bytes to read from the bit stream in
each tile before reaching the decoding rate (in truncation mode)
java.io.IOException
public final int getPPX(int t, int c, int r)
t
- the tile indexc
- The index of the component (between 0 and C-1)r
- The resolution level, from 0 to L.
public final int getPPY(int t, int c, int rl)
t
- the tile indexc
- The index of the component (between 0 and C-1)rl
- The resolution level, from 0 to L.
public boolean readSOPMarker(int[] nBytes, int p, int c, int r) throws java.io.IOException
nBytes
- The number of bytes left to read from each tilep
- Precinct indexr
- Resolution level indexc
- Component index
java.io.IOException
public void readEPHMarker(PktHeaderBitReader bin) throws java.io.IOException
bin
- The packet header reader to read the EPH marker from
java.io.IOException
public PrecInfo getPrecInfo(int c, int r, int p)
c
- Component index.r
- Resolution level index.p
- Precinct index.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |