Grok 12.0.1
|
#include <CodeStreamCompress.h>
Public Member Functions | |
CodeStreamCompress (BufferedStream *stream) | |
virtual | ~CodeStreamCompress () |
bool | start (void) |
bool | init (grk_cparameters *p_param, GrkImage *p_image) |
uint64_t | compress (grk_plugin_tile *tile) |
![]() | |
CodeStream (BufferedStream *stream) | |
virtual | ~CodeStream () |
TileProcessor * | currentProcessor (void) |
BufferedStream * | getStream () |
GrkImage * | getHeaderImage (void) |
grk_plugin_tile * | getCurrentPluginTile () |
CodingParams * | getCodingParams (void) |
![]() | |
virtual | ~ICodeStreamCompress ()=default |
Static Public Member Functions | |
static char * | convertProgressionOrder (GRK_PROG_ORDER prg_order) |
static uint16_t | getPocSize (uint32_t numComponents, uint32_t l_nb_poc) |
![]() | |
static std::string | markerString (uint16_t marker) |
Private Member Functions | |
bool | init_header_writing (void) |
bool | cacheEndOfHeader (void) |
bool | end (void) |
bool | writeTilePart (TileProcessor *tileProcessor) |
bool | writeTileParts (TileProcessor *tileProcessor) |
bool | updateRates (void) |
bool | compressValidation (void) |
bool | mct_validation (void) |
bool | write_soc () |
Writes the SOC marker (Start Of Codestream) | |
bool | write_siz () |
Writes the SIZ marker (image and tile size) | |
bool | write_cap () |
Writes the CAP marker. | |
bool | write_com () |
Writes the COM marker (comment) | |
bool | write_cod () |
Writes the COD marker (Coding style default) | |
bool | compare_coc (uint32_t first_comp_no, uint32_t second_comp_no) |
Compares 2 COC markers (Coding style component) | |
bool | write_coc (uint32_t comp_no, BufferedStream *stream) |
Writes the COC marker (Coding style component) | |
bool | write_coc (uint32_t comp_no) |
bool | write_qcd () |
Writes the QCD marker (quantization default) | |
bool | compare_qcc (uint32_t first_comp_no, uint32_t second_comp_no) |
Compare QCC markers (quantization component) | |
bool | write_qcc (uint16_t tileIndex, uint32_t comp_no, BufferedStream *stream) |
Writes the QCC marker (quantization component) | |
bool | write_qcc (uint32_t comp_no) |
bool | writePoc () |
Writes the POC marker (Progression Order Change) | |
bool | write_tlm_end () |
End writing the updated tlm. | |
bool | write_tlm_begin () |
Begin writing the TLM marker (Tile Length Marker) | |
bool | compare_SPCod_SPCoc (uint32_t first_comp_no, uint32_t second_comp_no) |
Compare 2 a SPCod/ SPCoc elements, i.e. | |
bool | write_SPCod_SPCoc (uint32_t comp_no) |
Writes a SPCod or SPCoc element, i.e. | |
uint32_t | get_SPCod_SPCoc_size (uint32_t comp_no) |
Gets the size taken by writing a SPCod or SPCoc for the given tile and component. | |
uint32_t | get_SQcd_SQcc_size (uint32_t comp_no) |
Gets the size taken by writing SQcd or SQcc element, i.e. | |
bool | compare_SQcd_SQcc (uint32_t first_comp_no, uint32_t second_comp_no) |
Compares 2 SQcd or SQcc element, i.e. | |
bool | write_SQcd_SQcc (uint32_t comp_no) |
Writes a SQcd or SQcc element, i.e. | |
bool | write_mct_record (grk_mct_data *p_mct_record, BufferedStream *stream) |
Writes the MCT marker (Multiple Component Transform) | |
bool | write_mcc_record (grk_simple_mcc_decorrelation_data *p_mcc_record, BufferedStream *stream) |
Writes the MCC marker (Multiple Component Collection) | |
bool | write_mco () |
Writes the MCO marker (Multiple component transformation ordering) | |
bool | write_cbd () |
Writes the CBD marker (Component bit depth definition) | |
bool | write_all_coc () |
Writes COC marker for each component. | |
bool | write_all_qcc () |
Writes QCC marker for each component. | |
bool | write_regions () |
Writes regions of interests. | |
bool | write_rgn (uint16_t tile_no, uint32_t comp_no, uint32_t nb_comps) |
Writes the RGN marker (Region Of Interest) | |
bool | write_eoc () |
Writes the EOC marker (End of Codestream) | |
bool | write_mct_data_group () |
Writes the CBD-MCT-MCC-MCO markers (Multi components transform) | |
bool | getNumTileParts (uint16_t *p_nb_tile_parts, GrkImage *image) |
Calculates the total number of tile parts needed by the compressor to compress such an image. | |
uint64_t | getNumTilePartsForProgression (uint32_t pino, uint16_t tileno) |
Gets the number of tile parts used for the given change of progression (if any) and the given tile. | |
bool | validateProgressionOrders (const grk_progression *progressions, uint32_t numProgressions, uint8_t numResolutions, uint16_t numcomps, uint16_t numlayers) |
Validate progression orders. | |
bool | init_mct_encoding (TileCodingParams *p_tcp, GrkImage *p_image) |
Private Attributes | |
CompressorState | compressorState_ |
Additional Inherited Members | |
![]() | |
bool | exec (std::vector< PROCEDURE_FUNC > &p_procedure_list) |
![]() | |
CodingParams | cp_ |
CodeStreamInfo * | codeStreamInfo |
std::vector< PROCEDURE_FUNC > | procedure_list_ |
std::vector< PROCEDURE_FUNC > | validation_list_ |
GrkImage * | headerImage_ |
TileProcessor * | currentTileProcessor_ |
BufferedStream * | stream_ |
std::map< uint32_t, TileProcessor * > | processors_ |
grk_plugin_tile * | current_plugin_tile |
grk::CodeStreamCompress::CodeStreamCompress | ( | BufferedStream * | stream | ) |
References grk::CodeStream::cp_, and grk::CodingParams::wholeTileDecompress_.
|
virtual |
References grk::CodeStream::codeStreamInfo, grk::CodeStreamInfo::setMainHeaderEnd(), grk::CodeStream::stream_, and grk::BufferedStream::tell().
Referenced by init_header_writing().
|
private |
Compares 2 COC markers (Coding style component)
first_comp_no | the index of the first component to compare. |
second_comp_no | the index of the second component to compare. |
References compare_SPCod_SPCoc(), grk::CodeStream::cp_, grk::grk_read(), and grk::CodingParams::tcps.
Referenced by write_all_coc().
|
private |
Compare QCC markers (quantization component)
first_comp_no | the index of the first component to compare. |
second_comp_no | the index of the second component to compare. |
References compare_SQcd_SQcc(), and grk::grk_read().
Referenced by write_all_qcc().
|
private |
Compare 2 a SPCod/ SPCoc elements, i.e.
the coding style of a given component of a tile.
first_comp_no | The 1st component number to compare. |
second_comp_no | The 1st component number to compare. |
References grk::CodeStream::cp_, grk::grk_read(), J2K_CCP_CSTY_PRT, grk::TileCodingParams::tccps, and grk::CodingParams::tcps.
Referenced by compare_coc().
|
private |
Compares 2 SQcd or SQcc element, i.e.
the quantization values of a band in the QCD or QCC.
first_comp_no | the first component number to compare. |
second_comp_no | the second component number to compare. |
References grk::CodeStream::cp_, grk::grk_read(), J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, grk::TileComponentCodingParams::numresolutions, grk::TileCodingParams::tccps, and grk::CodingParams::tcps.
Referenced by compare_qcc().
|
virtual |
Implements grk::ICodeStreamCompress.
References grk::CodeStream::cp_, end(), grk::Logger::error(), grk::CodeStream::exec(), ExecSingleton::get(), grk::grk_read(), grk::Logger::logger_, grk::maxNumTilesJ2K, grk::CodeStream::stream_, grk::CodingParams::t_grid_height, grk::CodingParams::t_grid_width, grk::BufferedStream::tell(), and writeTileParts().
Referenced by grk::FileFormatCompress::compress().
|
static |
References grk::j2k_prog_order::enum_prog, grk::grk_read(), grk::j2k_prog_order_list, and grk::j2k_prog_order::str_prog.
Referenced by grk::PacketIter::enableTilePartGeneration(), and getNumTilePartsForProgression().
Gets the size taken by writing a SPCod or SPCoc for the given tile and component.
comp_no | the component being outputted. |
References grk::CodeStream::cp_, grk::CodeStream::getHeaderImage(), grk::grk_read(), J2K_CCP_CSTY_PRT, grk::SPCod_SPCoc_len, grk::TileCodingParams::tccps, and grk::CodingParams::tcps.
Referenced by write_coc(), and write_cod().
Gets the size taken by writing SQcd or SQcc element, i.e.
the quantization values of a band in the QCD or QCC.
comp_no | the component being output. |
References grk::CodeStream::cp_, grk::CodeStream::getHeaderImage(), grk::grk_read(), J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, grk::TileCodingParams::tccps, and grk::CodingParams::tcps.
Referenced by write_qcc(), and write_qcd().
|
private |
Calculates the total number of tile parts needed by the compressor to compress such an image.
If not enough memory is available, then the function return false.
p_nb_tile_parts | total number of tile parts in whole image. |
image | image to compress. |
References grk::CodeStream::cp_, grk::Logger::error(), getNumTilePartsForProgression(), grk::grk_read(), grk::Logger::logger_, grk::maxTilePartsPerTileJ2K, grk::maxTotalTilePartsJ2K, grk::CodingParams::t_grid_height, grk::CodingParams::t_grid_width, grk::CodingParams::tcps, and grk::PacketManager::updateCompressParams().
Referenced by init_header_writing().
|
private |
Gets the number of tile parts used for the given change of progression (if any) and the given tile.
pino | the offset of the given poc (i.e. its position in the coding parameter). |
tileno | the given tile. |
References convertProgressionOrder(), grk::CodeStream::cp_, grk::grk_read(), and grk::maxTilePartsPerTileJ2K.
Referenced by getNumTileParts(), and writeTileParts().
References grk::grk_read().
Referenced by grk::TileProcessor::doCompress(), writePoc(), and writeTilePart().
|
virtual |
Implements grk::ICodeStreamCompress.
References grk::EncodingParams::allocationByFixedQuality_, grk::EncodingParams::allocationByRateDistortion_, grk::GrkImage::applyICC(), grk::mct::calculate_norms(), grk::CodingParams::coding_params_, _grk_image::color_space, grk::CodingParams::comment, grk::CodingParams::comment_len, _grk_image::comps, grk::GrkImage::copyHeader(), grk::CodeStream::cp_, grk::TileComponentCodingParams::csty, _grk_image_comp::data, _grk_image_comp::dx, _grk_image_comp::dy, grk::EncodingParams::enableTilePartGeneration_, grk::CodingParams::enc_, grk::Logger::error(), grk::floorlog2(), GRK_CBLKSTY_HT, GRK_CLRSPC_EYCC, GRK_CLRSPC_SYCC, GRK_EXTENSION_MCT, GRK_EXTENSION_NONE, grk::grk_free(), GRK_IS_BROADCAST, GRK_IS_CINEMA, GRK_IS_IMF, GRK_IS_PART2, GRK_IS_STORAGE, GRK_J2K_MAXRLVLS, GRK_JPH_RSIZ_FLAG, grk::grk_malloc(), GRK_MAX_COMMENT_LENGTH, GRK_PROFILE_CINEMA_S2K, GRK_PROFILE_CINEMA_S4K, GRK_PROFILE_NONE, GRK_PROFILE_PART2, grk::grk_read(), grk_version(), _grk_image_comp::h, grk::CodeStream::headerImage_, init_mct_encoding(), grk::Profile::is_broadcast_compliant(), grk::Profile::is_cinema_compliant(), grk::Profile::is_imf_compliant(), grk::CodingParams::isBinaryComment, J2K_CCP_CSTY_PRT, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SEQNT, J2K_CP_CSTY_PRT, grk::Logger::logger_, grk::EncodingParams::max_comp_size_, grk::maxNumComponentsJ2K, grk::maxNumTilesJ2K, grk::EncodingParams::newTilePartProgressionDivider_, grk::CodingParams::num_comments, _grk_image::numcomps, _grk_image_comp::prec, grk::EncodingParams::rateControlAlgorithm, grk::CodingParams::rsiz, grk::Profile::set_broadcast_parameters(), grk::Profile::set_cinema_parameters(), grk::Profile::set_imf_parameters(), _grk_image_comp::sgnd, grk::CodingParams::t_grid_height, grk::CodingParams::t_grid_width, grk::CodingParams::t_height, grk::CodingParams::t_width, grk::TileCodingParams::tccps, grk::CodingParams::tcps, grk::CodingParams::tx0, grk::CodingParams::ty0, validateProgressionOrders(), _grk_image_comp::w, grk::Logger::warn(), grk::EncodingParams::writePLT, grk::EncodingParams::writeTLM, _grk_image::x0, _grk_image::x1, _grk_image::y0, and _grk_image::y1.
Referenced by grk::FileFormatCompress::init().
References cacheEndOfHeader(), grk::CodeStream::codeStreamInfo, grk::CodingParams::coding_params_, compressorState_, grk::CodeStream::cp_, grk::CodingParams::enc_, grk::CodeStream::getHeaderImage(), getNumTileParts(), GRK_EXTENSION_MCT, GRK_PROFILE_PART2, grk::TileCodingParams::hasPoc(), grk::TileCodingParams::isHT(), grk::CodeStream::procedure_list_, grk::CodingParams::rsiz, grk::CodingParams::tcps, grk::CompressorState::total_tile_parts_, updateRates(), write_all_coc(), write_all_qcc(), write_cap(), write_cod(), write_com(), write_mct_data_group(), write_qcd(), write_regions(), write_siz(), write_soc(), write_tlm_begin(), writePoc(), and grk::EncodingParams::writeTLM.
Referenced by start().
|
private |
Implements grk::ICodeStreamCompress.
References compressValidation(), grk::CodeStream::exec(), init_header_writing(), mct_validation(), grk::CodeStream::procedure_list_, and grk::CodeStream::validation_list_.
Referenced by grk::FileFormatCompress::start().
References grk::CodeStream::cp_, grk::grk_read(), grk::CodeStream::headerImage_, grk::CodeStream::stream_, grk::BufferedStream::tell(), and _grk_image::x1.
Referenced by init_header_writing().
|
private |
Validate progression orders.
progressions | progression orders. |
numProgressions | number of progression orders. |
numResolutions | number of resolutions. |
numcomps | number of components |
numlayers | number of layers. |
References grk::Logger::error(), grk::grk_read(), and grk::Logger::logger_.
Referenced by init().
|
private |
Writes COC marker for each component.
References compare_coc(), grk::CodeStream::getHeaderImage(), grk::grk_read(), _grk_image::numcomps, and write_coc().
Referenced by init_header_writing().
|
private |
Writes QCC marker for each component.
References compare_qcc(), grk::CodeStream::getHeaderImage(), grk::grk_read(), _grk_image::numcomps, and write_qcc().
Referenced by init_header_writing().
|
private |
Writes the CAP marker.
References grk::CodeStream::cp_, grk::TileCodingParams::qcd_, grk::CodeStream::stream_, grk::CodingParams::tcps, and grk::Quantizer::write().
Referenced by init_header_writing().
|
private |
Writes the CBD marker (Component bit depth definition)
References grk::CodeStream::getHeaderImage(), grk::grk_read(), grk::J2K_MS_CBD, _grk_image::numcomps, grk::CodeStream::stream_, grk::BufferedStream::writeByte(), and grk::BufferedStream::writeShort().
Referenced by write_mct_data_group().
|
private |
Writes the COC marker (Coding style component)
comp_no | the index of the component to output. |
stream | buffered stream. |
Referenced by write_all_coc().
|
private |
Writes the COD marker (Coding style default)
References grk::CodeStream::cp_, grk::Logger::error(), get_SPCod_SPCoc_size(), grk::grk_read(), grk::J2K_MS_COD, grk::Logger::logger_, grk::CodeStream::stream_, grk::CodingParams::tcps, write_SPCod_SPCoc(), grk::BufferedStream::writeByte(), and grk::BufferedStream::writeShort().
Referenced by init_header_writing().
|
private |
Writes the COM marker (comment)
References grk::CodingParams::comment, grk::CodingParams::comment_len, grk::CodeStream::cp_, GRK_MAX_COMMENT_LENGTH, grk::grk_read(), grk::CodingParams::isBinaryComment, grk::J2K_MS_COM, grk::Logger::logger_, grk::CodingParams::num_comments, grk::CodeStream::stream_, grk::Logger::warn(), grk::BufferedStream::writeBytes(), and grk::BufferedStream::writeShort().
Referenced by init_header_writing().
|
private |
Writes the EOC marker (End of Codestream)
References grk::BufferedStream::flush(), grk::J2K_MS_EOC, grk::CodeStream::stream_, and grk::BufferedStream::writeShort().
Referenced by end().
|
private |
Writes the MCC marker (Multiple Component Collection)
p_mcc_record | MCC record |
stream | buffered stream. |
References grk::grk_read(), grk::J2K_MS_MCC, grk::BufferedStream::write24(), grk::BufferedStream::writeByte(), and grk::BufferedStream::writeShort().
Referenced by write_mct_data_group().
|
private |
Writes the MCO marker (Multiple component transformation ordering)
References grk::CodeStream::cp_, grk::grk_read(), grk::J2K_MS_MCO, grk::CodeStream::stream_, grk::CodingParams::tcps, grk::BufferedStream::writeByte(), and grk::BufferedStream::writeShort().
Referenced by write_mct_data_group().
|
private |
Writes the CBD-MCT-MCC-MCO markers (Multi components transform)
References grk::CodeStream::cp_, grk::grk_read(), grk::TileCodingParams::mct_records_, grk::CodeStream::stream_, grk::CodingParams::tcps, write_cbd(), write_mcc_record(), write_mco(), and write_mct_record().
Referenced by init_header_writing().
|
private |
Writes the MCT marker (Multiple Component Transform)
p_mct_record | MCT record |
stream | buffered stream. |
References grk::grk_read(), grk::J2K_MS_MCT, grk::BufferedStream::writeBytes(), and grk::BufferedStream::writeShort().
Referenced by write_mct_data_group().
|
private |
Writes the QCC marker (quantization component)
tileIndex | current tile index |
comp_no | the index of the component to output. |
stream | buffered stream. |
Referenced by write_all_qcc().
|
private |
Writes the QCD marker (quantization default)
References grk::Logger::error(), get_SQcd_SQcc_size(), grk::grk_read(), grk::J2K_MS_QCD, grk::Logger::logger_, grk::CodeStream::stream_, write_SQcd_SQcc(), and grk::BufferedStream::writeShort().
Referenced by init_header_writing().
|
private |
Writes regions of interests.
References grk::CodeStream::cp_, grk::CodeStream::getHeaderImage(), grk::grk_read(), _grk_image::numcomps, grk::TileCodingParams::tccps, grk::CodingParams::tcps, and write_rgn().
Referenced by init_header_writing().
|
private |
Writes the RGN marker (Region Of Interest)
tile_no | the tile to output |
comp_no | the component to output |
nb_comps | the number of components |
References grk::CodeStream::cp_, grk::grk_read(), grk::J2K_MS_RGN, grk::CodeStream::stream_, grk::BufferedStream::writeByte(), and grk::BufferedStream::writeShort().
Referenced by write_regions().
|
private |
Writes the SIZ marker (image and tile size)
References grk::grk_read(), grk::CodeStream::stream_, and grk::SIZMarker::write().
Referenced by init_header_writing().
|
private |
Writes the SOC marker (Start Of Codestream)
References grk::J2K_MS_SOC, grk::CodeStream::stream_, and grk::BufferedStream::writeShort().
Referenced by init_header_writing().
Writes a SPCod or SPCoc element, i.e.
the coding style of a given component of a tile.
comp_no | the component number to output. |
References grk::CodeStream::cp_, grk::CodeStream::getHeaderImage(), grk::grk_read(), J2K_CCP_CSTY_PRT, grk::CodeStream::stream_, grk::TileCodingParams::tccps, grk::CodingParams::tcps, and grk::BufferedStream::writeByte().
Referenced by write_coc(), and write_cod().
Writes a SQcd or SQcc element, i.e.
the quantization values of a band in the QCD or QCC.
comp_no | the component number to output. |
References grk::CodeStream::cp_, grk::CodeStream::getHeaderImage(), grk::grk_read(), J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SIQNT, grk::CodeStream::stream_, grk::TileCodingParams::tccps, grk::CodingParams::tcps, grk::BufferedStream::writeByte(), and grk::BufferedStream::writeShort().
Referenced by write_qcc(), and write_qcd().
|
private |
Begin writing the TLM marker (Tile Length Marker)
References compressorState_, grk::CodeStream::cp_, grk::CodeStream::stream_, grk::CodingParams::tlm_markers, grk::CompressorState::total_tile_parts_, and grk::TileLengthMarkers::writeBegin().
Referenced by init_header_writing().
|
private |
End writing the updated tlm.
References grk::CodeStream::cp_, grk::CodingParams::tlm_markers, and grk::TileLengthMarkers::writeEnd().
Referenced by end().
|
private |
Writes the POC marker (Progression Order Change)
References grk::CodeStream::cp_, grk::CodeStream::getHeaderImage(), getPocSize(), grk::grk_read(), grk::J2K_MS_POC, grk::CodeStream::stream_, grk::TileCodingParams::tccps, grk::CodingParams::tcps, grk::BufferedStream::writeByte(), and grk::BufferedStream::writeShort().
Referenced by init_header_writing(), and writeTilePart().
|
private |
References grk::TileProcessor::canPreCalculateTileLen(), grk::TileProcessor::canWritePocMarker(), grk::CodeStream::cp_, grk::Logger::error(), grk::TileProcessor::getIndex(), getPocSize(), grk::TileProcessor::getPreCalculatedTileLen(), grk::grk_read(), grk::CodeStream::headerImage_, grk::Logger::logger_, _grk_image::numcomps, grk::TileLengthMarkers::push(), grk::sot_marker_segment_len_minus_tile_data_len, grk::CodeStream::stream_, grk::CodingParams::tcps, grk::BufferedStream::tell(), grk::TileProcessor::tilePartCounter_, grk::CodingParams::tlm_markers, writePoc(), and grk::TileProcessor::writeTilePartT2().
Referenced by writeTileParts().
|
private |
References grk::CodeStream::cp_, grk::CodeStream::currentTileProcessor_, grk::Logger::error(), grk::TileProcessor::first_poc_tile_part_, grk::TileProcessor::getIndex(), getNumTilePartsForProgression(), grk::grk_read(), grk::TileProcessor::incrementIndex(), grk::Logger::logger_, grk::maxTilePartsPerTileJ2K, grk::TileProcessor::pino, grk::CodingParams::tcps, grk::TileProcessor::tilePartCounter_, and writeTilePart().
Referenced by compress().
|
private |
Referenced by init_header_writing(), and write_tlm_begin().