Grok
9.5.0
|
Tile processor for decompression and compression. More...
#include <TileProcessor.h>
Public Attributes | |
uint16_t | m_tileIndex |
index of tile being currently compressed/decompressed More... | |
bool | m_first_poc_tile_part |
Compressing Only true for first POC tile part, otherwise false. More... | |
uint8_t | m_tilePartIndexCounter |
Compressing Only index of tile part being currently coding. More... | |
uint32_t | tilePartDataLength |
uint8_t | numTilePartsTotal |
Compressing Only Total number of tile parts of the tile. More... | |
uint32_t | pino |
Compressing Only Current packet iterator number. More... | |
Tile * | tile |
GrkImage * | headerImage |
grk_plugin_tile * | current_plugin_tile |
bool | wholeTileDecompress |
CodingParams * | m_cp |
PacketLengthCache | packetLengthCache |
Private Member Functions | |
bool | isWholeTileDecompress (uint32_t compno) |
Returns whether a tile component should be fully decompressed, taking into account win_* members. More... | |
bool | needsMctDecompress (uint32_t compno) |
bool | mctDecompress () |
bool | dcLevelShiftDecompress () |
bool | dcLevelShiftCompress () |
bool | mct_encode () |
bool | dwt_encode () |
void | t1_encode () |
bool | encodeT2 (uint32_t *packet_bytes_written) |
bool | rateAllocate (uint32_t *allPacketBytes) |
bool | layerNeedsRateControl (uint32_t layno) |
bool | makeSingleLosslessLayer () |
void | makeLayerFinal (uint32_t layno) |
bool | pcrdBisectSimple (uint32_t *p_data_written) |
void | makeLayerSimple (uint32_t layno, double thresh, bool final) |
bool | pcrdBisectFeasible (uint32_t *p_data_written) |
void | makeLayerFeasible (uint32_t layno, uint16_t thresh, bool final) |
Private Attributes | |
PacketTracker | m_packetTracker |
IBufferedStream * | m_stream |
bool | m_corrupt_packet |
uint32_t | newTilePartProgressionPosition |
position of the tile part flag in progression order More... | |
TileCodingParams * | m_tcp |
bool | truncated |
GrkImage * | m_image |
bool | m_isCompressor |
grkRectU32 | unreducedTileWindow |
uint32_t | preCalculatedTileLen |
Tile processor for decompression and compression.
|
explicit |
grk::TileProcessor::~TileProcessor | ( | ) |
References grk_object_unref(), m_image, _grk_image::obj, and tile.
bool grk::TileProcessor::allocWindowBuffers | ( | const GrkImage * | outputImage | ) |
References _grk_image::comps, grk::Tile::comps, headerImage, grk::grkRect< T >::intersection(), m_isCompressor, grk::Tile::numcomps, grk::grkRect< T >::rectceildiv(), tile, unreducedTileWindow, _grk_image::x0, _grk_image::x1, _grk_image::y0, and _grk_image::y1.
Referenced by decompressT2T1(), and preCompressTile().
bool grk::TileProcessor::canPreCalculateTileLen | ( | void | ) |
bool grk::TileProcessor::canWritePocMarker | ( | void | ) |
References GRK_IS_CINEMA, grk::TileCodingParams::hasPoc(), m_cp, m_tileIndex, m_tilePartIndexCounter, grk::CodingParams::rsiz, and grk::CodingParams::tcps.
Referenced by doCompress(), and grk::CodeStreamCompress::writeTilePart().
|
private |
References _grk_image::comps, grk::Tile::comps, headerImage, grk::TileComponentCodingParams::m_dc_level_shift, m_tcp, needsMctDecompress(), grk::Tile::numcomps, grk::TileCodingParams::tccps, and tile.
Referenced by doCompress().
|
private |
void grk::TileProcessor::deallocBuffers | ( | void | ) |
References grk::Tile::comps, grk::TileComponent::deallocBuffers(), grk::Tile::numcomps, and tile.
Referenced by decompressT2T1().
bool grk::TileProcessor::decompressT1 | ( | void | ) |
References _grk_image::comps, grk::Tile::comps, current_plugin_tile, dcLevelShiftDecompress(), grk::WaveletReverse::decompress(), _grk_plugin_tile::decompress_flags, GRK_DECODE_POST_T1, GRK_DECODE_T1, grk::GRK_ERROR(), GRK_UNUSED, headerImage, m_tcp, mctDecompress(), grk::Tile::numcomps, _grk_image_comp::prec, grk::TileCodingParams::tccps, tile, truncated, and wholeTileDecompress.
Referenced by decompressT2T1().
bool grk::TileProcessor::decompressT2 | ( | SparseBuffer * | srcBuf | ) |
References current_plugin_tile, _grk_plugin_tile::decompress_flags, GRK_DECODE_T2, headerImage, isWholeTileDecompress(), m_cp, m_tcp, m_tileIndex, _grk_image::numcomps, grk::CodingParams::tcps, truncated, and wholeTileDecompress.
Referenced by decompressT2T1().
bool grk::TileProcessor::decompressT2T1 | ( | TileCodingParams * | tcp, |
GrkImage * | outputImage, | ||
bool | multiTile, | ||
bool | doPost | ||
) |
bool grk::TileProcessor::doCompress | ( | void | ) |
References canPreCalculateTileLen(), canWritePocMarker(), grk::PacketTracker::clear(), grk::PacketLengthCache::createMarkers(), current_plugin_tile, dcLevelShiftCompress(), grk::PacketLengthCache::deleteMarkers(), dwt_encode(), grk::PacketLengthCache::getMarkers(), grk::TileCodingParams::getNumProgressions(), grk::CodeStreamCompress::getPocSize(), grk_plugin_get_debug_state(), GRK_PLUGIN_STATE_DEBUG, GRK_PLUGIN_STATE_MCT_ONLY, grk::CodingParams::m_coding_params, m_cp, grk::CodingParams::m_enc, m_packetTracker, m_stream, m_tcp, m_tileIndex, mct_encode(), grk::Tile::numcomps, packetLengthCache, preCalculatedTileLen, rateAllocate(), grk::set_context_stream(), grk::sot_marker_segment_len, t1_encode(), grk::CodingParams::tcps, tile, grk::PacketLengthMarkers::write(), and grk::EncodingParams::writePLT.
|
private |
References grk::WaveletFwdImpl::compress(), grk::Tile::comps, m_tcp, grk::Tile::numcomps, grk::TileCodingParams::tccps, and tile.
Referenced by doCompress().
|
private |
References grk::Precinct::getDecompressedBlockPtr(), m_first_poc_tile_part, m_stream, m_tcp, m_tileIndex, newTilePartProgressionPosition, grk::TileCodingParams::numlayers, grk::TileComponent::numresolutions, pino, grk::TileComponent::tileCompResolution, and grk::grkRect< T >::x0.
Referenced by writeTilePartT2().
References grk::GrkImage::duplicate(), grk_object_unref(), m_image, and _grk_image::obj.
Referenced by decompressT2T1().
GrkImage * grk::TileProcessor::getImage | ( | void | ) |
References m_image.
Referenced by grk::CodeStreamDecompress::getImage().
uint8_t grk::TileProcessor::getMaxNumDecompressResolutions | ( | void | ) |
References grk::CodingParams::m_coding_params, m_cp, grk::CodingParams::m_dec, grk::DecodingParams::m_reduce, m_tileIndex, grk::Tile::numcomps, grk::CodingParams::tcps, and tile.
Referenced by grk::PacketIter::init().
PacketTracker * grk::TileProcessor::getPacketTracker | ( | void | ) |
References m_packetTracker.
Referenced by grk::T2Compress::compressPacket(), grk::T2Compress::compressPacketSimulate(), and grk::T2Compress::compressPacketsSimulate().
uint32_t grk::TileProcessor::getPreCalculatedTileLen | ( | void | ) |
References preCalculatedTileLen.
Referenced by grk::CodeStreamCompress::writeTilePart().
IBufferedStream * grk::TileProcessor::getStream | ( | void | ) |
References m_stream.
Referenced by grk::SOTMarker::write().
TileCodingParams * grk::TileProcessor::getTileCodingParams | ( | void | ) |
References m_cp, m_tileIndex, and grk::CodingParams::tcps.
Referenced by grk::PacketIter::next_lrcp().
grkRectU32 grk::TileProcessor::getUnreducedTileWindow | ( | void | ) |
References unreducedTileWindow.
Referenced by grk::PacketIter::next_pcrl().
void grk::TileProcessor::ingestImage | ( | ) |
References _grk_image::comps, grk::Tile::comps, headerImage, _grk_image::numcomps, tile, _grk_image::x0, and _grk_image::y0.
Referenced by preCompressTile().
bool grk::TileProcessor::ingestUncompressedData | ( | uint8_t * | p_src, |
uint64_t | src_length | ||
) |
References _grk_image::comps, grk::Tile::comps, headerImage, _grk_image::numcomps, _grk_image_comp::stride, and tile.
bool grk::TileProcessor::init | ( | void | ) |
References _grk_image::comps, grk::Tile::comps, current_plugin_tile, grk::CodingParams::getTileBounds(), grk::GRK_ERROR(), grk_plugin_get_debug_state(), GRK_PLUGIN_STATE_DEBUG, grk::GRK_WARN(), headerImage, grk::PacketTracker::init(), m_cp, m_isCompressor, m_packetTracker, m_tileIndex, _grk_image::numcomps, grk::Tile::numcomps, grk::Tile::numProcessedPackets, grk::TileComponent::numresolutions, grk::CodingParams::t_grid_width, grk::CodingParams::tcps, tile, grk::tile_equals(), grk::TileComponent::tileCompResolution, wholeTileDecompress, grk::grkRect< T >::x0, grk::grkRect< T >::x1, grk::grkRect< T >::y0, and grk::grkRect< T >::y1.
Referenced by preCompressTile().
|
private |
Returns whether a tile component should be fully decompressed, taking into account win_* members.
compno | Component number |
References grk::TileComponentWindowBuffer< T >::bounds(), grk::Tile::comps, grk::TileComponent::getBuffer(), grk::grkRect< T >::intersection(), grk::shift, and tile.
Referenced by decompressT2().
|
private |
|
private |
References grk::Tile::comps, grk::Tile::layerDistoration, grk::Tile::numcomps, tile, grk::Resolution::tileBand, and grk::TileComponent::tileCompResolution.
Referenced by pcrdBisectFeasible().
|
private |
|
private |
|
private |
References layerNeedsRateControl(), m_tcp, makeLayerFinal(), and grk::TileCodingParams::numlayers.
Referenced by pcrdBisectFeasible(), and pcrdBisectSimple().
|
private |
References grk::mct::compress_custom(), grk::mct::compress_irrev(), grk::mct::compress_rev(), _grk_image::comps, grk::Tile::comps, grk::TileComponent::getBuffer(), grk::grkBuffer2d< T, A >::getBuffer(), grk::TileComponentWindowBuffer< T >::getResWindowBufferHighestREL(), headerImage, grk::TileCodingParams::m_mct_coding_matrix, m_tcp, grk::TileCodingParams::mct, grk::Tile::numcomps, grk::TileComponentCodingParams::qmfbid, _grk_image_comp::sgnd, grk::TileComponentWindowBuffer< T >::stridedArea(), grk::TileCodingParams::tccps, and tile.
Referenced by doCompress().
|
private |
References _grk_image::comps, grk::Tile::comps, grk::mct::decompress_custom(), grk::mct::decompress_irrev(), grk::mct::decompress_rev(), grk::TileComponent::getBuffer(), grk::grkBuffer2d< T, A >::getBuffer(), grk::TileComponentWindowBuffer< T >::getResWindowBufferHighestREL(), headerImage, grk::TileCodingParams::m_mct_decoding_matrix, m_tcp, grk::TileCodingParams::mct, needsMctDecompress(), grk::Tile::numcomps, grk::TileComponentCodingParams::qmfbid, _grk_image_comp::sgnd, grk::TileComponentWindowBuffer< T >::stridedArea(), grk::TileCodingParams::tccps, and tile.
Referenced by decompressT1().
|
private |
References grk::Tile::comps, grk::TileComponent::getBuffer(), grk::GRK_WARN(), grk::TileCodingParams::m_mct_decoding_matrix, m_tcp, grk::TileCodingParams::mct, grk::Tile::numcomps, grk::TileComponentWindowBuffer< T >::stridedArea(), and tile.
Referenced by dcLevelShiftCompress(), dcLevelShiftDecompress(), and mctDecompress().
bool grk::TileProcessor::needsRateControl | ( | ) |
References layerNeedsRateControl(), m_tcp, and grk::TileCodingParams::numlayers.
Referenced by grk::compress_synch_with_plugin(), and t1_encode().
|
private |
References grk::grkRect< T >::area(), grk::compress_synch_with_plugin(), _grk_image::comps, grk::Tile::comps, grk::RateControl::convexHull(), grk::Tile::distortion, grk::PacketLengthCache::getMarkers(), grk::RateInfo::getMinimumThresh(), grk_plugin_get_debug_state(), GRK_PLUGIN_STATE_PRE_TR1, headerImage, grk::Tile::layerDistoration, layerNeedsRateControl(), grk::EncodingParams::m_allocationByFixedQuality, grk::CodingParams::m_coding_params, m_cp, grk::CodingParams::m_enc, m_tcp, m_tileIndex, makeLayerFeasible(), makeLayerFinal(), makeSingleLosslessLayer(), grk::maxCompressLayersGRK, newTilePartProgressionPosition, grk::Tile::numcomps, grk::TileCodingParams::numlayers, packetLengthCache, _grk_image_comp::prec, grk::RateInfo::synch(), tile, grk::Resolution::tileBand, and grk::TileComponent::tileCompResolution.
Referenced by rateAllocate().
|
private |
References grk::grkRect< T >::area(), grk::compress_synch_with_plugin(), _grk_image::comps, grk::Tile::comps, grk::TileCodingParams::distortion, grk::Tile::distortion, grk::PacketLengthCache::getMarkers(), grk_plugin_get_debug_state(), GRK_PLUGIN_STATE_PRE_TR1, headerImage, grk::Tile::layerDistoration, layerNeedsRateControl(), grk::EncodingParams::m_allocationByFixedQuality, grk::CodingParams::m_coding_params, m_cp, grk::CodingParams::m_enc, m_tcp, m_tileIndex, makeLayerFinal(), makeLayerSimple(), makeSingleLosslessLayer(), grk::maxCompressLayersGRK, newTilePartProgressionPosition, grk::Tile::numcomps, grk::TileCodingParams::numlayers, packetLengthCache, _grk_image_comp::prec, grk::PacketLengthMarkers::pushInit(), grk::TileCodingParams::rates, tile, grk::Resolution::tileBand, and grk::TileComponent::tileCompResolution.
Referenced by rateAllocate().
bool grk::TileProcessor::preCompressTile | ( | void | ) |
References allocWindowBuffers(), _grk_image::comps, grk::Tile::comps, grk::GRK_ERROR(), headerImage, ingestImage(), init(), m_cp, m_first_poc_tile_part, grk::TileCodingParams::m_numTileParts, m_tileIndex, m_tilePartIndexCounter, _grk_image::numcomps, numTilePartsTotal, grk::CodingParams::t_grid_height, grk::CodingParams::t_grid_width, grk::CodingParams::tcps, and tile.
bool grk::TileProcessor::prepareSodDecompress | ( | CodeStreamDecompress * | codeStream | ) |
References grk::TileLengthMarkers::addTileMarkerInfo(), grk::DECOMPRESS_STATE_NO_EOC, grk::DECOMPRESS_STATE_TPH_SOT, grk::CodeStreamDecompress::get_current_decode_tcp(), grk::CodeStreamDecompress::getCodeStreamInfo(), grk::CodeStreamDecompress::getDecompressorState(), grk::IBufferedStream::getZeroCopyPtr(), grk::GRK_ERROR(), GRK_UNUSED, grk::GRK_WARN(), J2K_MS_SOD, grk::DecompressorState::lastTilePartInCodeStream, m_stream, m_tileIndex, grk::IBufferedStream::numBytesLeft(), grk::IBufferedStream::read(), grk::DecompressorState::setState(), grk::IBufferedStream::supportsZeroCopy(), grk::IBufferedStream::tell(), and tilePartDataLength.
|
private |
References grk::CodingParams::m_coding_params, m_cp, grk::CodingParams::m_enc, pcrdBisectFeasible(), pcrdBisectSimple(), and grk::EncodingParams::rateControlAlgorithm.
Referenced by doCompress().
void grk::TileProcessor::setCorruptPacket | ( | void | ) |
References m_corrupt_packet.
Referenced by grk::T2Decompress::readPacketHeader().
|
private |
References grk::mct::get_norms_irrev(), grk::mct::get_norms_rev(), headerImage, m_tcp, needsRateControl(), _grk_image::numcomps, and tile.
Referenced by doCompress().
bool grk::TileProcessor::writeTilePartT2 | ( | uint32_t * | tileBytesWritten | ) |
grk_plugin_tile* grk::TileProcessor::current_plugin_tile |
GrkImage* grk::TileProcessor::headerImage |
Referenced by allocWindowBuffers(), grk::T2Compress::compressPackets(), grk::T2Compress::compressPacketsSimulate(), dcLevelShiftCompress(), dcLevelShiftDecompress(), grk::decompress_synch_plugin_with_host(), grk::T2Decompress::decompressPackets(), decompressT1(), decompressT2(), ingestImage(), ingestUncompressedData(), init(), mct_encode(), mctDecompress(), pcrdBisectFeasible(), pcrdBisectSimple(), preCompressTile(), t1_encode(), and TileProcessor().
|
private |
Referenced by decompressT2T1(), and setCorruptPacket().
CodingParams* grk::TileProcessor::m_cp |
Referenced by canPreCalculateTileLen(), canWritePocMarker(), grk::T2Compress::compressPackets(), grk::T2Compress::compressPacketsSimulate(), grk::T2Decompress::decompressPackets(), decompressT2(), doCompress(), getMaxNumDecompressResolutions(), getTileCodingParams(), init(), layerNeedsRateControl(), pcrdBisectFeasible(), pcrdBisectSimple(), preCompressTile(), rateAllocate(), grk::T2Decompress::readPacketHeader(), TileProcessor(), and grk::SOTMarker::write().
bool grk::TileProcessor::m_first_poc_tile_part |
Compressing Only true for first POC tile part, otherwise false.
Referenced by encodeT2(), preCompressTile(), and grk::CodeStreamCompress::writeTileParts().
|
private |
Referenced by generateImage(), getImage(), and ~TileProcessor().
|
private |
Referenced by allocWindowBuffers(), and init().
|
private |
Referenced by doCompress(), getPacketTracker(), and init().
|
private |
Referenced by doCompress(), encodeT2(), getStream(), prepareSodDecompress(), and writeTilePartT2().
|
private |
Referenced by dcLevelShiftCompress(), dcLevelShiftDecompress(), decompressT1(), decompressT2(), doCompress(), dwt_encode(), encodeT2(), layerNeedsRateControl(), makeSingleLosslessLayer(), mct_encode(), mctDecompress(), needsMctDecompress(), needsRateControl(), pcrdBisectFeasible(), pcrdBisectSimple(), and t1_encode().
uint16_t grk::TileProcessor::m_tileIndex |
index of tile being currently compressed/decompressed
Referenced by canPreCalculateTileLen(), canWritePocMarker(), decompressT2(), decompressT2T1(), grk::CodeStreamDecompress::decompressT2T1(), doCompress(), encodeT2(), grk::CodeStreamDecompress::findNextTile(), getMaxNumDecompressResolutions(), getTileCodingParams(), init(), grk::TileProcessorComparator::operator()(), pcrdBisectFeasible(), pcrdBisectSimple(), preCompressTile(), prepareSodDecompress(), grk::SOTMarker::read(), grk::T2Decompress::readPacketHeader(), grk::SOTMarker::write(), grk::CodeStreamCompress::writeTilePart(), and grk::CodeStreamCompress::writeTileParts().
uint8_t grk::TileProcessor::m_tilePartIndexCounter |
Compressing Only index of tile part being currently coding.
m_tilePartIndexCounter holds the total number of tile parts encoded thus far while the compressor is compressing the current tile part.
Referenced by canWritePocMarker(), preCompressTile(), grk::SOTMarker::write(), grk::CodeStreamCompress::writeTilePart(), grk::CodeStreamCompress::writeTileParts(), and writeTilePartT2().
|
private |
position of the tile part flag in progression order
Referenced by encodeT2(), pcrdBisectFeasible(), pcrdBisectSimple(), and TileProcessor().
uint8_t grk::TileProcessor::numTilePartsTotal |
Compressing Only Total number of tile parts of the tile.
Referenced by preCompressTile().
PacketLengthCache grk::TileProcessor::packetLengthCache |
uint32_t grk::TileProcessor::pino |
Compressing Only Current packet iterator number.
Referenced by encodeT2(), and grk::CodeStreamCompress::writeTileParts().
|
private |
Referenced by doCompress(), and getPreCalculatedTileLen().
Tile* grk::TileProcessor::tile |
Referenced by allocWindowBuffers(), grk::T2Compress::compressPacket(), grk::T2Compress::compressPackets(), grk::T2Compress::compressPacketSimulate(), dcLevelShiftCompress(), dcLevelShiftDecompress(), deallocBuffers(), grk::decompress_synch_plugin_with_host(), grk::T2Decompress::decompressPacket(), grk::T2Decompress::decompressPackets(), decompressT1(), decompressT2T1(), doCompress(), dwt_encode(), getMaxNumDecompressResolutions(), ingestImage(), ingestUncompressedData(), init(), isWholeTileDecompress(), makeLayerFeasible(), makeLayerFinal(), makeLayerSimple(), mct_encode(), mctDecompress(), needsMctDecompress(), pcrdBisectFeasible(), pcrdBisectSimple(), preCompressTile(), grk::T2Decompress::processPacket(), grk::T2Decompress::readPacketHeader(), grk::set_context_stream(), t1_encode(), TileProcessor(), and ~TileProcessor().
uint32_t grk::TileProcessor::tilePartDataLength |
Referenced by prepareSodDecompress(), and grk::SOTMarker::read().
|
private |
Referenced by decompressT1(), and decompressT2().
|
private |
Referenced by allocWindowBuffers(), and getUnreducedTileWindow().
bool grk::TileProcessor::wholeTileDecompress |
Referenced by decompressT1(), decompressT2(), and init().