| java.lang.Object jj2000.j2k.wavelet.synthesis.MultiResImgDataAdapter jj2000.j2k.entropy.decoder.EntropyDecoder jj2000.j2k.entropy.decoder.StdEntropyDecoder
StdEntropyDecoder | public class StdEntropyDecoder extends EntropyDecoder implements StdEntropyCoderOptions(Code) | | This class implements the JPEG 2000 entropy decoder, which codes stripes in
code-blocks. This entropy decoding engine decodes one code-block at a time.
The code-block are rectangular, with dimensions which must be powers of
2. Each dimension has to be no smaller than 4 and no larger than 256. The
product of the two dimensions (i.e. area of the code-block) may not exceed
4096.
Context 0 of the MQ-coder is used as the uniform one (uniform, non-adaptive
probability distribution). Context 1 is used for RLC coding. Contexts 2-10
are used for zero-coding (ZC), contexts 11-15 are used for sign-coding (SC)
and contexts 16-18 are used for magnitude-refinement (MR).
This implementation also provides some timing features. They can be
enabled by setting the 'DO_TIMING' constant of this class to true and
recompiling. The timing uses the 'System.currentTimeMillis()' Java API
call, which returns wall clock time, not the actual CPU time used. The
timing results will be printed on the message output. Since the times
reported are wall clock times and not CPU usage times they can not be added
to find the total used time (i.e. some time might be counted in several
places). When timing is disabled ('DO_TIMING' is false) there is no penalty
if the compiler performs some basic optimizations. Even if not the penalty
should be negligeable.
|
Constructor Summary | |
public | StdEntropyDecoder(CodedCBlkDataSrcDec src, DecoderSpecs decSpec, boolean doer, boolean verber, int mQuit) Instantiates a new entropy decoder engine, with the specified source of
data, nominal block width and height.
Parameters: src - The source of data Parameters: opt - The options to use for this encoder. |
Method Summary | |
public void | finalize() Prints the timing information, if collected, and calls 'finalize' on
the super class. | public DataBlk | getCodeBlock(int c, int m, int n, SubbandSyn sb, DataBlk cblk) Returns the specified code-block in the current tile for the specified
component, as a copy (see below).
The returned code-block may be progressive, which is indicated by
the 'progressive' variable of the returned 'DataBlk' object. | public DataBlk | getInternCodeBlock(int c, int m, int n, SubbandSyn sb, DataBlk cblk) Returns the specified code-block in the current tile for the specified
component (as a reference or copy).
The returned code-block may be progressive, which is indicated by
the 'progressive' variable of the returned 'DataBlk'
object. |
StdEntropyDecoder | public StdEntropyDecoder(CodedCBlkDataSrcDec src, DecoderSpecs decSpec, boolean doer, boolean verber, int mQuit)(Code) | | Instantiates a new entropy decoder engine, with the specified source of
data, nominal block width and height.
Parameters: src - The source of data Parameters: opt - The options to use for this encoder. It is a mix of the'OPT_TERM_PASS', 'OPT_RESET_MQ', 'OPT_VERT_STR_CAUSAL', 'OPT_BYPASS' and'OPT_SEG_SYMBOLS' option flags. Parameters: doer - If true error detection will be performed, if any errordetection features have been enabled. Parameters: verber - This flag indicates if the entropy decoder should beverbose about bit stream errors that are detected and concealed. |
finalize | public void finalize() throws Throwable(Code) | | Prints the timing information, if collected, and calls 'finalize' on
the super class.
|
getCodeBlock | public DataBlk getCodeBlock(int c, int m, int n, SubbandSyn sb, DataBlk cblk)(Code) | | Returns the specified code-block in the current tile for the specified
component, as a copy (see below).
The returned code-block may be progressive, which is indicated by
the 'progressive' variable of the returned 'DataBlk' object. If a
code-block is progressive it means that in a later request to this
method for the same code-block it is possible to retrieve data which is
a better approximation, since meanwhile more data to decode for the
code-block could have been received. If the code-block is not
progressive then later calls to this method for the same code-block
will return the exact same data values.
The data returned by this method is always a copy of the internal
data of this object, if any, and it can be modified "in place" without
any problems after being returned. The 'offset' of the returned data is
0, and the 'scanw' is the same as the code-block width. See the
'DataBlk' class.
The 'ulx' and 'uly' members of the returned 'DataBlk' object
contain the coordinates of the top-left corner of the block, with
respect to the tile, not the subband.
Parameters: c - The component for which to return the next code-block. Parameters: m - The vertical index of the code-block to return, in thespecified subband. Parameters: n - The horizontal index of the code-block to return, in thespecified subband. Parameters: sb - The subband in which the code-block to return is. Parameters: cblk - If non-null this object will be used to return the newcode-block. If null a new one will be allocated and returned. If the"data" array of the object is non-null it will be reused, if possible,to return the data. The next code-block in the current tile for component 'n', ornull if all code-blocks for the current tile have been returned. See Also: DataBlk |
getInternCodeBlock | public DataBlk getInternCodeBlock(int c, int m, int n, SubbandSyn sb, DataBlk cblk)(Code) | | Returns the specified code-block in the current tile for the specified
component (as a reference or copy).
The returned code-block may be progressive, which is indicated by
the 'progressive' variable of the returned 'DataBlk'
object. If a code-block is progressive it means that in a later request
to this method for the same code-block it is possible to retrieve data
which is a better approximation, since meanwhile more data to decode
for the code-block could have been received. If the code-block is not
progressive then later calls to this method for the same code-block
will return the exact same data values.
The data returned by this method can be the data in the internal
buffer of this object, if any, and thus can not be modified by the
caller. The 'offset' and 'scanw' of the returned data can be
arbitrary. See the 'DataBlk' class.
The 'ulx' and 'uly' members of the returned 'DataBlk' object
contain the coordinates of the top-left corner of the block, with
respect to the tile, not the subband.
Parameters: c - The component for which to return the next code-block. Parameters: m - The vertical index of the code-block to return, in thespecified subband. Parameters: n - The horizontal index of the code-block to return, in thespecified subband. Parameters: sb - The subband in which the code-block to return is. Parameters: cblk - If non-null this object will be used to return the newcode-block. If null a new one will be allocated and returned. If the"data" array of the object is non-null it will be reused, if possible,to return the data. The next code-block in the current tile for component 'n', ornull if all code-blocks for the current tile have been returned. See Also: DataBlk |
|
|