Class StdEntropyDecoder
- All Implemented Interfaces:
StdEntropyCoderOptions,CBlkQuantDataSrcDec,InvWTData,MultiResImgData
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.
-
Field Summary
Fields inherited from class jj2000.j2k.entropy.decoder.EntropyDecoder
OPT_PREFIX, srcFields inherited from class jj2000.j2k.wavelet.synthesis.MultiResImgDataAdapter
mressrc, tIdxFields 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
ConstructorsConstructorDescriptionStdEntropyDecoder(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. -
Method Summary
Modifier and TypeMethodDescriptionvoidfinalize()Prints the timing information, if collected, and calls 'finalize' on the super class.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).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).Methods inherited from class jj2000.j2k.entropy.decoder.EntropyDecoder
getCbULX, getCbULY, getParameterInfo, getSynSubbandTreeMethods inherited from class jj2000.j2k.wavelet.synthesis.MultiResImgDataAdapter
getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getImgHeight, getImgULX, getImgULY, getImgWidth, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getResULX, getResULY, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidth, nextTile, setTileMethods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface jj2000.j2k.wavelet.synthesis.MultiResImgData
getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getImgHeight, getImgULX, getImgULY, getImgWidth, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getResULX, getResULY, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidth, nextTile, setTile
-
Constructor Details
-
StdEntropyDecoder
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 datadecSpec- The decoder specificationsdoer- If true error detection will be performed, if any error detection features have been enabled.verber- This flag indicates if the entropy decoder should be verbose about bit stream errors that are detected and concealed.
-
-
Method Details
-
finalize
Prints the timing information, if collected, and calls 'finalize' on the super class. -
getCodeBlock
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.
- Specified by:
getCodeBlockin interfaceCBlkQuantDataSrcDec- Parameters:
c- The component for which to return the next code-block.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 which the code-block to return is.cblk- If non-null this object will be used to return the new code-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.- Returns:
- The next code-block in the current tile for component 'n', or null if all code-blocks for the current tile have been returned.
- See Also:
-
getInternCodeBlock
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.
- Specified by:
getInternCodeBlockin interfaceCBlkQuantDataSrcDec- Parameters:
c- The component for which to return the next code-block.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 which the code-block to return is.cblk- If non-null this object will be used to return the new code-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.- Returns:
- The next code-block in the current tile for component 'n', or null if all code-blocks for the current tile have been returned.
- See Also:
-