39#define BufferLen (BufferSize/WordWidth)
40#define CodeBufferLen BufferSize
58#pragma warning( suppress : 4351 )
83 UINT32
ComposeBitplane(UINT32 bufferSize,
DataT planeMask, UINT32* sigBits, UINT32* refBits, UINT32* signBits);
85 UINT32
ComposeBitplaneRLD(UINT32 bufferSize,
DataT planeMask, UINT32* sigBits, UINT32* refBits, UINT32 signPos);
105 PGFPostHeader& postHeader, UINT32*& levelLength, UINT64& userDataPos,
106 bool useOMP,
bool skipUserData) THROW_;
123 void Partition(
CSubband* band,
int quantParam,
int width,
int height,
int startPos,
int pitch) THROW_;
150 void Skip(UINT64 offset) THROW_;
181#ifdef __PGFROISUPPORT__
185 void DecodeTileBuffer() THROW_;
190 void SkipTileBuffer() THROW_;
194 void SetROI() { m_roi =
true; }
215#ifdef __PGFROISUPPORT__
#define CodeBufferLen
number of words in code buffer (CodeBufferLen > BufferLen)
#define BufferSize
must be a multiple of WordWidth
PGF wavelet subband class.
A macro block is a decoding unit of fixed size (uncoded)
bool IsCompletelyRead() const
ROIBlockHeader m_header
block header
UINT32 m_valuePos
current position in m_value
void SetBitAtPos(UINT32 pos, DataT planeMask)
UINT32 ComposeBitplane(UINT32 bufferSize, DataT planeMask, UINT32 *sigBits, UINT32 *refBits, UINT32 *signBits)
DataT m_value[BufferSize]
output buffer of values with index m_valuePos
void SetSign(UINT32 pos, bool sign)
UINT32 ComposeBitplaneRLD(UINT32 bufferSize, DataT planeMask, UINT32 sigPos, UINT32 *refBits)
UINT32 m_codeBuffer[CodeBufferLen]
input buffer for encoded bitstream
bool m_sigFlagVector[BufferSize+1]
void SetStreamPosToData() THROW_
Reset stream position to beginning of data block.
int m_macroBlockLen
array length
int m_currentBlockIndex
index of current macro block
void SetStreamPosToStart() THROW_
Reset stream position to beginning of PGF pre-header.
CPGFStream * m_stream
input PGF stream
UINT32 GetEncodedHeaderLength() const
int m_macroBlocksAvailable
number of decoded macro blocks (including currently used macro block)
void DecodeInterleaved(CWaveletTransform *wtChannel, int level, int quantParam) THROW_
UINT64 m_startPos
stream position at the beginning of the PGF pre-header
void ReadMacroBlock(CMacroBlock *block) THROW_
throws IOException
UINT64 m_streamSizeEstimation
estimation of stream size
void DecodeBuffer() THROW_
CMacroBlock ** m_macroBlocks
array of macroblocks
UINT32 ReadEncodedData(UINT8 *target, UINT32 len) const THROW_
CMacroBlock * m_currentBlock
current macro block (used by main thread)
UINT32 m_encodedHeaderLength
stream offset from startPos to the beginning of the data part (highest level)
void Partition(CSubband *band, int quantParam, int width, int height, int startPos, int pitch) THROW_
void Skip(UINT64 offset) THROW_
bool MacroBlocksAvailable() const
void DequantizeValue(CSubband *band, UINT32 bandPos, int quantParam) THROW_
Abstract stream base class.
virtual void SetPos(short posMode, INT64 posOff)=0