Grok
9.7.5
|
Tile processor for decompression and compression. More...
#include <TileProcessor.h>
Public Attributes | |
bool | first_poc_tile_part_ |
Compression Only true for first POC tile part, otherwise false. More... | |
uint8_t | tilePartCounter_ |
Compressing Only index of tile part being currently coding. More... | |
uint32_t | pino |
Compression Only Current packet iterator number. More... | |
GrkImage * | headerImage |
grk_plugin_tile * | current_plugin_tile |
bool | wholeTileDecompress |
CodingParams * | cp_ |
PLCache | packetLengthCache |
Private Member Functions | |
bool | isWholeTileDecompress (uint16_t compno) |
Returns whether a tile component should be fully decompressed, taking into account win_* members. More... | |
bool | needsMctDecompress (uint16_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 finalAttempt) |
bool | pcrdBisectFeasible (uint32_t *p_data_written) |
void | makeLayerFeasible (uint32_t layno, uint16_t thresh, bool finalAttempt) |
Private Attributes | |
Tile * | tile |
Scheduler * | scheduler_ |
uint64_t | numProcessedPackets |
uint64_t | numDecompressedPackets |
uint64_t | tilePartDataLength |
uint16_t | tileIndex_ |
index of tile being currently compressed/decompressed More... | |
PacketTracker | packetTracker_ |
IBufferedStream * | stream_ |
bool | corrupt_packet_ |
uint32_t | newTilePartProgressionPosition |
position of the tile part flag in progression order More... | |
TileCodingParams * | tcp_ |
bool | truncated |
GrkImage * | image_ |
bool | isCompressor_ |
grk_rect32 | unreducedImageWindow |
uint32_t | preCalculatedTileLen |
Tile processor for decompression and compression.
|
explicit |
grk::TileProcessor::~TileProcessor | ( | ) |
References GRK_TILE_CACHE_NONE, release(), and scheduler_.
bool grk::TileProcessor::allocWindowBuffers | ( | const GrkImage * | outputImage | ) |
References _grk_image::comps, grk::Tile::comps, headerImage, isCompressor_, grk::Tile::numcomps_, grk::grk_rect< T >::scaleDownCeil(), tile, unreducedImageWindow, _grk_image::x0, _grk_image::x1, _grk_image::y0, and _grk_image::y1.
Referenced by decompressT2T1(), and preCompressTile().
bool grk::TileProcessor::canPreCalculateTileLen | ( | void | ) |
References grk::CodingParams::coding_params_, cp_, grk::EncodingParams::enableTilePartGeneration_, grk::CodingParams::enc_, grk::CodingParams::tcps, and tileIndex_.
Referenced by doCompress(), and grk::CodeStreamCompress::writeTilePart().
bool grk::TileProcessor::canWritePocMarker | ( | void | ) |
References cp_, GRK_IS_CINEMA, grk::TileCodingParams::hasPoc(), grk::CodingParams::rsiz, grk::CodingParams::tcps, tileIndex_, and tilePartCounter_.
Referenced by doCompress(), and grk::CodeStreamCompress::writeTilePart().
|
private |
References _grk_image::comps, grk::Tile::comps, grk::TileComponentCodingParams::dc_level_shift_, headerImage, needsMctDecompress(), grk::Tile::numcomps_, grk::TileCodingParams::tccps, tcp_, 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::decompressT2 | ( | SparseBuffer * | srcBuf | ) |
References corrupt_packet_, cp_, current_plugin_tile, _grk_plugin_tile::decompress_flags, GRK_DECODE_T2, headerImage, isWholeTileDecompress(), _grk_image::numcomps, tcp_, grk::CodingParams::tcps, tileIndex_, truncated, and wholeTileDecompress.
Referenced by decompressT2T1().
bool grk::TileProcessor::decompressT2T1 | ( | TileCodingParams * | tcp, |
GrkImage * | outputImage, | ||
bool | doPost | ||
) |
References grk::TileComponent::allocSparseCanvas(), allocWindowBuffers(), grk::TileCodingParams::compressedTileData_, _grk_image::comps, grk::Tile::comps, current_plugin_tile, dcLevelShiftDecompress(), deallocBuffers(), _grk_plugin_tile::decompress_flags, decompressT2(), generateImage(), GRK_DECODE_POST_T1, GRK_DECODE_T1, grk::GRK_ERROR(), GRK_UNUSED, grk::GRK_WARN(), headerImage, mctDecompress(), _grk_image::multiTile, grk::Tile::numcomps_, _grk_image_comp::prec, grk::Scheduler::run(), grk::Scheduler::schedule(), scheduler_, tcp_, tile, tileIndex_, grk::GrkImage::transferDataFrom(), truncated, and wholeTileDecompress.
Referenced by grk::CodeStreamDecompress::decompressT2T1().
bool grk::TileProcessor::doCompress | ( | void | ) |
References canPreCalculateTileLen(), canWritePocMarker(), grk::PacketTracker::clear(), grk::CodingParams::coding_params_, cp_, grk::PLCache::createMarkers(), current_plugin_tile, dcLevelShiftCompress(), grk::PLCache::deleteMarkers(), dwt_encode(), grk::CodingParams::enc_, grk::PLCache::getMarkers(), grk::TileCodingParams::getNumProgressions(), grk::CodeStreamCompress::getPocSize(), grk::PLMarkerMgr::getTotalBytesWritten(), grk_plugin_get_debug_state(), GRK_PLUGIN_STATE_DEBUG, GRK_PLUGIN_STATE_MCT_ONLY, mct_encode(), grk::Tile::numcomps_, packetLengthCache, packetTracker_, preCalculatedTileLen, rateAllocate(), grk::set_context_stream(), grk::sot_marker_segment_len, stream_, t1_encode(), tcp_, grk::CodingParams::tcps, tile, tileIndex_, and grk::EncodingParams::writePLT.
|
private |
References grk::WaveletFwdImpl::compress(), grk::Tile::comps, grk::Tile::numcomps_, grk::TileCodingParams::tccps, tcp_, and tile.
Referenced by doCompress().
|
private |
References first_poc_tile_part_, grk::Precinct::getDecompressedBlockPtr(), newTilePartProgressionPosition, grk::TileCodingParams::numlayers, grk::TileComponent::numresolutions, pino, stream_, tcp_, grk::TileComponent::tileCompResolution, tileIndex_, and grk::grk_rect< T >::x0.
Referenced by writeTilePartT2().
References grk::GrkImage::duplicate(), grk_object_unref(), image_, and _grk_image::obj.
Referenced by decompressT2T1().
GrkImage * grk::TileProcessor::getImage | ( | void | ) |
References image_.
Referenced by grk::CodeStreamDecompress::getImage().
uint16_t grk::TileProcessor::getIndex | ( | void | ) | const |
References tileIndex_.
Referenced by grk::PacketIter::checkForRemainingValidProgression(), grk::CodeStreamDecompress::decompressT2T1(), grk::PacketIter::enableTilePartGeneration(), grk::CodeStreamDecompress::findNextTile(), grk::CodeStreamDecompress::parseTileHeaderMarkers(), grk::T2Decompress::readPacketHeader(), grk::SOTMarker::write(), grk::CodeStreamCompress::writeTilePart(), and grk::CodeStreamCompress::writeTileParts().
uint8_t grk::TileProcessor::getMaxNumDecompressResolutions | ( | void | ) |
References grk::CodingParams::coding_params_, cp_, grk::CodingParams::dec_, grk::Tile::numcomps_, grk::DecodingParams::reduce_, grk::CodingParams::tcps, tile, and tileIndex_.
Referenced by grk::PacketIter::init().
uint64_t grk::TileProcessor::getNumDecompressedPackets | ( | void | ) |
References numDecompressedPackets.
Referenced by grk::T2Decompress::decompressPackets().
uint64_t grk::TileProcessor::getNumProcessedPackets | ( | void | ) |
References numProcessedPackets.
Referenced by grk::T2Compress::compressPacket(), and grk::T2Decompress::readPacketHeader().
PacketTracker * grk::TileProcessor::getPacketTracker | ( | void | ) |
References 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().
Scheduler * grk::TileProcessor::getScheduler | ( | void | ) |
References scheduler_.
IBufferedStream * grk::TileProcessor::getStream | ( | void | ) |
References stream_.
Referenced by grk::SOTMarker::write().
Tile * grk::TileProcessor::getTile | ( | void | ) |
TileCodingParams * grk::TileProcessor::getTileCodingParams | ( | void | ) |
References cp_, grk::CodingParams::tcps, and tileIndex_.
Referenced by grk::PacketIter::init().
uint64_t grk::TileProcessor::getTilePartDataLength | ( | void | ) |
References tilePartDataLength.
Referenced by grk::CodeStreamDecompress::parseTileHeaderMarkers().
grk_rect32 grk::TileProcessor::getUnreducedTileWindow | ( | void | ) |
References grk::grk_rect< T >::clip(), tile, and unreducedImageWindow.
Referenced by grk::PacketIter::generatePrecinctIndex(), grk::PacketIter::genPrecinctInfo(), and grk::PacketIter::next_pcrl().
void grk::TileProcessor::incNumDecompressedPackets | ( | uint64_t | numPackets | ) |
References numDecompressedPackets.
Referenced by grk::T2Decompress::processPacket().
void grk::TileProcessor::incNumProcessedPackets | ( | uint64_t | numPackets | ) |
References numProcessedPackets.
Referenced by grk::T2Compress::compressPackets(), and grk::T2Decompress::processPacket().
void grk::TileProcessor::incrementIndex | ( | void | ) |
References tileIndex_.
Referenced by grk::CodeStreamCompress::writeTileParts().
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, cp_, 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(), isCompressor_, _grk_image::numcomps, grk::Tile::numcomps_, numProcessedPackets, grk::TileComponent::numresolutions, packetTracker_, grk::CodingParams::t_grid_width, grk::CodingParams::tcps, tile, grk::tile_equals(), grk::TileComponent::tileCompResolution, tileIndex_, wholeTileDecompress, grk::grk_rect< T >::x0, grk::grk_rect< T >::x1, grk::grk_rect< T >::y0, and grk::grk_rect< T >::y1.
Referenced by grk::CodeStreamDecompress::parseTileHeaderMarkers(), and 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::grk_rect< T >::intersection(), grk::shift, and tile.
Referenced by decompressT2().
|
private |
References grk::CodingParams::coding_params_, cp_, grk::TileCodingParams::distortion, grk::CodingParams::enc_, grk::TileCodingParams::rates, and tcp_.
Referenced by makeSingleLosslessLayer(), needsRateControl(), pcrdBisectFeasible(), and pcrdBisectSimple().
|
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(), makeLayerFinal(), grk::TileCodingParams::numlayers, and tcp_.
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::grk_buf2d< T, A >::getBuffer(), grk::TileComponentWindowBuffer< T >::getResWindowBufferHighestREL(), headerImage, grk::TileCodingParams::mct, grk::TileCodingParams::mct_coding_matrix_, grk::Tile::numcomps_, grk::TileComponentCodingParams::qmfbid, _grk_image_comp::sgnd, grk::TileComponentWindowBuffer< T >::stridedArea(), grk::TileCodingParams::tccps, tcp_, 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::grk_buf2d< T, A >::getBuffer(), grk::TileComponentWindowBuffer< T >::getResWindowBufferHighestREL(), headerImage, grk::TileCodingParams::mct, grk::TileCodingParams::mct_decoding_matrix_, needsMctDecompress(), grk::Tile::numcomps_, grk::TileComponentCodingParams::qmfbid, _grk_image_comp::sgnd, grk::TileComponentWindowBuffer< T >::stridedArea(), grk::TileCodingParams::tccps, tcp_, and tile.
Referenced by decompressT2T1().
|
private |
References grk::Tile::comps, grk::TileComponent::getBuffer(), grk::GRK_WARN(), grk::TileCodingParams::mct, grk::TileCodingParams::mct_decoding_matrix_, grk::Tile::numcomps_, grk::TileComponentWindowBuffer< T >::stridedArea(), tcp_, and tile.
Referenced by dcLevelShiftCompress(), dcLevelShiftDecompress(), and mctDecompress().
bool grk::TileProcessor::needsRateControl | ( | ) |
References layerNeedsRateControl(), grk::TileCodingParams::numlayers, and tcp_.
Referenced by grk::compress_synch_with_plugin(), and t1_encode().
|
private |
References grk::EncodingParams::allocationByFixedQuality_, grk::grk_rect< T >::area(), grk::CodingParams::coding_params_, grk::compress_synch_with_plugin(), _grk_image::comps, grk::Tile::comps, grk::RateControl::convexHull(), cp_, grk::Tile::distortion, grk::CodingParams::enc_, grk::PLCache::getMarkers(), grk::RateInfo::getMinimumThresh(), grk_plugin_get_debug_state(), GRK_PLUGIN_STATE_PRE_TR1, headerImage, grk::Tile::layerDistoration, layerNeedsRateControl(), makeLayerFeasible(), makeLayerFinal(), makeSingleLosslessLayer(), grk::maxCompressLayersGRK, newTilePartProgressionPosition, grk::Tile::numcomps_, grk::TileCodingParams::numlayers, packetLengthCache, _grk_image_comp::prec, grk::RateInfo::synch(), tcp_, tile, grk::Resolution::tileBand, grk::TileComponent::tileCompResolution, and tileIndex_.
Referenced by rateAllocate().
|
private |
References grk::EncodingParams::allocationByFixedQuality_, grk::grk_rect< T >::area(), grk::CodingParams::coding_params_, grk::compress_synch_with_plugin(), _grk_image::comps, grk::Tile::comps, cp_, grk::TileCodingParams::distortion, grk::Tile::distortion, grk::CodingParams::enc_, grk::PLCache::getMarkers(), grk_plugin_get_debug_state(), GRK_PLUGIN_STATE_PRE_TR1, headerImage, grk::Tile::layerDistoration, layerNeedsRateControl(), makeLayerFinal(), makeLayerSimple(), makeSingleLosslessLayer(), grk::maxCompressLayersGRK, newTilePartProgressionPosition, grk::Tile::numcomps_, grk::TileCodingParams::numlayers, packetLengthCache, _grk_image_comp::prec, grk::TileCodingParams::rates, tcp_, tile, grk::Resolution::tileBand, grk::TileComponent::tileCompResolution, and tileIndex_.
Referenced by rateAllocate().
bool grk::TileProcessor::preCompressTile | ( | void | ) |
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::IBufferedStream::numBytesLeft(), grk::IBufferedStream::read(), grk::DecompressorState::setState(), stream_, grk::IBufferedStream::supportsZeroCopy(), grk::IBufferedStream::tell(), tileIndex_, tilePartDataLength, and truncated.
Referenced by grk::CodeStreamDecompress::parseTileHeaderMarkers().
|
private |
References grk::CodingParams::coding_params_, cp_, grk::CodingParams::enc_, pcrdBisectFeasible(), pcrdBisectSimple(), and grk::EncodingParams::rateControlAlgorithm.
Referenced by doCompress().
void grk::TileProcessor::release | ( | GRK_TILE_CACHE_STRATEGY | strategy | ) |
References grk_object_unref(), GRK_TILE_CACHE_NONE, image_, _grk_image::obj, and tile.
Referenced by ~TileProcessor().
void grk::TileProcessor::setCorruptPacket | ( | void | ) |
References corrupt_packet_.
Referenced by grk::T2Decompress::readPacketHeader().
bool grk::TileProcessor::setTilePartDataLength | ( | uint32_t | tilePartLength, |
bool | lastTilePartInCodeStream | ||
) |
References grk::GRK_ERROR(), grk::IBufferedStream::numBytesLeft(), grk::sot_marker_segment_len, stream_, and tilePartDataLength.
Referenced by grk::SOTMarker::read().
bool grk::TileProcessor::subtractMarkerLength | ( | uint16_t | markerLen | ) |
References grk::GRK_ERROR(), and tilePartDataLength.
Referenced by grk::CodeStreamDecompress::parseTileHeaderMarkers().
|
private |
References grk::mct::get_norms_irrev(), grk::mct::get_norms_rev(), headerImage, needsRateControl(), _grk_image::numcomps, grk::Scheduler::schedule(), scheduler_, tcp_, and tile.
Referenced by doCompress().
bool grk::TileProcessor::writeTilePartT2 | ( | uint32_t * | tileBytesWritten | ) |
|
private |
Referenced by decompressT2(), and setCorruptPacket().
CodingParams* grk::TileProcessor::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(), and grk::SOTMarker::write().
grk_plugin_tile* grk::TileProcessor::current_plugin_tile |
bool grk::TileProcessor::first_poc_tile_part_ |
Compression Only true for first POC tile part, otherwise false.
Referenced by encodeT2(), preCompressTile(), and grk::CodeStreamCompress::writeTileParts().
GrkImage* grk::TileProcessor::headerImage |
Referenced by allocWindowBuffers(), grk::T2Compress::compressPackets(), grk::T2Compress::compressPacketsSimulate(), dcLevelShiftCompress(), dcLevelShiftDecompress(), grk::decompress_synch_plugin_with_host(), grk::T2Decompress::decompressPackets(), decompressT2(), decompressT2T1(), ingestImage(), ingestUncompressedData(), init(), mct_encode(), mctDecompress(), pcrdBisectFeasible(), pcrdBisectSimple(), preCompressTile(), and t1_encode().
|
private |
Referenced by generateImage(), getImage(), and release().
|
private |
Referenced by allocWindowBuffers(), and init().
|
private |
position of the tile part flag in progression order
Referenced by encodeT2(), pcrdBisectFeasible(), and pcrdBisectSimple().
|
private |
Referenced by getNumDecompressedPackets(), and incNumDecompressedPackets().
|
private |
Referenced by getNumProcessedPackets(), incNumProcessedPackets(), and init().
PLCache grk::TileProcessor::packetLengthCache |
|
private |
Referenced by doCompress(), getPacketTracker(), and init().
uint32_t grk::TileProcessor::pino |
Compression Only Current packet iterator number.
Referenced by encodeT2(), and grk::CodeStreamCompress::writeTileParts().
|
private |
Referenced by doCompress(), and getPreCalculatedTileLen().
|
private |
Referenced by decompressT2T1(), getScheduler(), t1_encode(), and ~TileProcessor().
|
private |
Referenced by doCompress(), encodeT2(), getStream(), prepareSodDecompress(), setTilePartDataLength(), and writeTilePartT2().
|
private |
Referenced by dcLevelShiftCompress(), dcLevelShiftDecompress(), decompressT2(), decompressT2T1(), doCompress(), dwt_encode(), encodeT2(), layerNeedsRateControl(), makeSingleLosslessLayer(), mct_encode(), mctDecompress(), needsMctDecompress(), needsRateControl(), pcrdBisectFeasible(), pcrdBisectSimple(), and t1_encode().
|
private |
Referenced by allocWindowBuffers(), dcLevelShiftCompress(), dcLevelShiftDecompress(), deallocBuffers(), decompressT2T1(), doCompress(), dwt_encode(), getMaxNumDecompressResolutions(), getTile(), getUnreducedTileWindow(), ingestImage(), ingestUncompressedData(), init(), isWholeTileDecompress(), makeLayerFeasible(), makeLayerFinal(), makeLayerSimple(), mct_encode(), mctDecompress(), needsMctDecompress(), pcrdBisectFeasible(), pcrdBisectSimple(), preCompressTile(), release(), and t1_encode().
|
private |
index of tile being currently compressed/decompressed
Referenced by canPreCalculateTileLen(), canWritePocMarker(), decompressT2(), decompressT2T1(), doCompress(), encodeT2(), getIndex(), getMaxNumDecompressResolutions(), getTileCodingParams(), incrementIndex(), init(), pcrdBisectFeasible(), pcrdBisectSimple(), and prepareSodDecompress().
uint8_t grk::TileProcessor::tilePartCounter_ |
Compressing Only index of tile part being currently coding.
tilePartCounter_ 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 |
Referenced by getTilePartDataLength(), prepareSodDecompress(), setTilePartDataLength(), and subtractMarkerLength().
|
private |
Referenced by decompressT2(), decompressT2T1(), and prepareSodDecompress().
|
private |
Referenced by allocWindowBuffers(), and getUnreducedTileWindow().
bool grk::TileProcessor::wholeTileDecompress |
Referenced by decompressT2(), decompressT2T1(), init(), and grk::PacketIter::isWholeTile().