[]
        
(Showing Draft Content)

CSJ2K.j2k.entropy.decoder.StdEntropyDecoder

StdEntropyDecoder Class

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.

       <p>The code-blocks are rectangular and their dimensions must be powers of
       2. Each dimension cannot be smaller than 4 and larger than 256. The product
       of the two dimensions (i.e. area of the code-block) cannot exceed 4096.</p><p>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).</p><p>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.</p>
Inheritance
StdEntropyDecoder
Namespace: CSJ2K.j2k.entropy.decoder
Assembly: C1.WPF.PdfViewer.4.6.2.dll
Syntax
public class StdEntropyDecoder : EntropyDecoder, CBlkQuantDataSrcDec, InvWTData, MultiResImgData

Constructors

Name Description
StdEntropyDecoder(CodedCBlkDataSrcDec, DecoderSpecs, bool, bool, int)

Instantiates a new entropy decoder engine, with the specified source of data, nominal block width and height.

Methods

Name Description
getCodeBlock(int, int, int, SubbandSyn, DataBlk)

Returns the specified code-block in the current tile for the specified component, as a copy (see below).

       <p>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.</p><p>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.</p><p>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.</p>
getInternCodeBlock(int, int, int, SubbandSyn, DataBlk)

Returns the specified code-block in the current tile for the specified component (as a reference or copy).

       <p>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.</p><p>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.</p><p>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.</p>