Grok
9.5.0
|
#include <CodeStreamCompress.h>
Public Member Functions | |
CodeStreamCompress (IBufferedStream *stream) | |
virtual | ~CodeStreamCompress () |
bool | startCompress (void) |
bool | initCompress (grk_cparameters *p_param, GrkImage *p_image) |
bool | compress (grk_plugin_tile *tile) |
bool | compressTile (uint16_t tileIndex, uint8_t *p_data, uint64_t data_size) |
bool | endCompress (void) |
![]() | |
CodeStream (IBufferedStream *stream) | |
virtual | ~CodeStream () |
TileProcessor * | currentProcessor (void) |
IBufferedStream * | 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) |
Private Member Functions | |
bool | init_header_writing (void) |
bool | get_end_header (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) More... | |
bool | write_siz () |
Writes the SIZ marker (image and tile size) More... | |
bool | write_cap () |
Writes the CAP marker. More... | |
bool | write_com () |
Writes the COM marker (comment) More... | |
bool | write_cod () |
Writes the COD marker (Coding style default) More... | |
bool | compare_coc (uint32_t first_comp_no, uint32_t second_comp_no) |
Compares 2 COC markers (Coding style component) More... | |
bool | write_coc (uint32_t comp_no, IBufferedStream *stream) |
Writes the COC marker (Coding style component) More... | |
bool | write_coc (uint32_t comp_no) |
bool | write_qcd () |
Writes the QCD marker (quantization default) More... | |
bool | compare_qcc (uint32_t first_comp_no, uint32_t second_comp_no) |
Compare QCC markers (quantization component) More... | |
bool | write_qcc (uint16_t tileIndex, uint32_t comp_no, IBufferedStream *stream) |
Writes the QCC marker (quantization component) More... | |
bool | write_qcc (uint32_t comp_no) |
bool | writePoc () |
Writes the POC marker (Progression Order Change) More... | |
bool | write_tlm_end () |
End writing the updated tlm. More... | |
bool | write_tlm_begin () |
Begin writing the TLM marker (Tile Length Marker) More... | |
bool | compare_SPCod_SPCoc (uint32_t first_comp_no, uint32_t second_comp_no) |
Compare 2 a SPCod/ SPCoc elements, i.e. More... | |
bool | write_SPCod_SPCoc (uint32_t comp_no) |
Writes a SPCod or SPCoc element, i.e. More... | |
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. More... | |
uint32_t | get_SQcd_SQcc_size (uint32_t comp_no) |
Gets the size taken by writing SQcd or SQcc element, i.e. More... | |
bool | compare_SQcd_SQcc (uint32_t first_comp_no, uint32_t second_comp_no) |
Compares 2 SQcd or SQcc element, i.e. More... | |
bool | write_SQcd_SQcc (uint32_t comp_no) |
Writes a SQcd or SQcc element, i.e. More... | |
bool | write_mct_record (grk_mct_data *p_mct_record, IBufferedStream *stream) |
Writes the MCT marker (Multiple Component Transform) More... | |
bool | write_mcc_record (grk_simple_mcc_decorrelation_data *p_mcc_record, IBufferedStream *stream) |
Writes the MCC marker (Multiple Component Collection) More... | |
bool | write_mco () |
Writes the MCO marker (Multiple component transformation ordering) More... | |
bool | write_cbd () |
Writes the CBD marker (Component bit depth definition) More... | |
bool | write_all_coc () |
Writes COC marker for each component. More... | |
bool | write_all_qcc () |
Writes QCC marker for each component. More... | |
bool | write_regions () |
Writes regions of interests. More... | |
bool | write_rgn (uint16_t tile_no, uint32_t comp_no, uint32_t nb_comps) |
Writes the RGN marker (Region Of Interest) More... | |
bool | write_eoc () |
Writes the EOC marker (End of Codestream) More... | |
bool | write_mct_data_group () |
Writes the CBD-MCT-MCC-MCO markers (Multi components transform) More... | |
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. More... | |
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. More... | |
bool | validateProgressionOrders (const grk_progression *progressions, uint32_t numProgressions, uint8_t numResolutions, uint16_t numcomps, uint16_t numlayers) |
Validate progression orders. More... | |
bool | init_mct_encoding (TileCodingParams *p_tcp, GrkImage *p_image) |
Private Attributes | |
CompressorState | m_compressorState |
Additional Inherited Members | |
![]() | |
bool | exec (std::vector< PROCEDURE_FUNC > &p_procedure_list) |
![]() | |
CodingParams | m_cp |
CodeStreamInfo * | codeStreamInfo |
std::vector< PROCEDURE_FUNC > | m_procedure_list |
std::vector< PROCEDURE_FUNC > | m_validation_list |
GrkImage * | m_headerImage |
TileProcessor * | m_currentTileProcessor |
IBufferedStream * | m_stream |
std::map< uint32_t, TileProcessor * > | m_processors |
bool | m_multiTile |
grk_plugin_tile * | current_plugin_tile |
grk::CodeStreamCompress::CodeStreamCompress | ( | IBufferedStream * | stream | ) |
|
virtual |
|
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. |
|
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. |
|
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 J2K_CCP_CSTY_PRT.
|
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 J2K_CCP_QNTSTY_NOQNT, and J2K_CCP_QNTSTY_SIQNT.
|
virtual |
Implements grk::ICodeStreamCompress.
References ThreadPool::enqueue(), ThreadPool::get(), grk::GRK_ERROR(), grk::CodeStream::m_cp, grk::maxNumTilesJ2K, grk::CodingParams::t_grid_height, and grk::CodingParams::t_grid_width.
Referenced by grk::FileFormatCompress::compress().
|
virtual |
Implements grk::ICodeStreamCompress.
References grk::GRK_ERROR().
Referenced by grk::FileFormatCompress::compressTile().
|
private |
References grk::GRK_ERROR(), and GRK_J2K_MAXRLVLS.
Referenced by startCompress().
|
static |
References grk::j2k_prog_order::enum_prog, grk::j2k_prog_order_list, and grk::j2k_prog_order::str_prog.
Referenced by grk::PacketManager::enableTilePartGeneration().
|
virtual |
Implements grk::ICodeStreamCompress.
Referenced by grk::FileFormatCompress::endCompress().
|
private |
|
private |
Gets the size taken by writing a SPCod or SPCoc for the given tile and component.
comp_no | the component being outputted. |
References J2K_CCP_CSTY_PRT, and grk::SPCod_SPCoc_len.
|
private |
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 J2K_CCP_QNTSTY_NOQNT, and J2K_CCP_QNTSTY_SIQNT.
|
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::GRK_ERROR(), grk::maxTilePartsPerTileJ2K, and grk::maxTotalTilePartsJ2K.
|
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 grk::maxTilePartsPerTileJ2K.
|
static |
Referenced by grk::TileProcessor::doCompress().
|
private |
References GRK_EXTENSION_MCT, and GRK_PROFILE_PART2.
Referenced by startCompress().
|
private |
References grk::default_number_mct_records, grk::grkFree(), grk::grkMalloc(), grk::grkRealloc(), grk::j2k_mct_write_functions_from_float, grk::grk_mct_data::m_array_type, grk::grk_mct_data::m_data, grk::grk_mct_data::m_data_size, grk::TileComponentCodingParams::m_dc_level_shift, grk::grk_simple_mcc_decorrelation_data::m_decorrelation_array, grk::grk_mct_data::m_element_type, grk::grk_mct_data::m_index, grk::grk_simple_mcc_decorrelation_data::m_index, grk::grk_simple_mcc_decorrelation_data::m_is_irreversible, grk::TileCodingParams::m_mcc_records, grk::TileCodingParams::m_mct_decoding_matrix, grk::TileCodingParams::m_mct_records, grk::grk_simple_mcc_decorrelation_data::m_nb_comps, grk::TileCodingParams::m_nb_max_mcc_records, grk::TileCodingParams::m_nb_max_mct_records, grk::TileCodingParams::m_nb_mcc_records, grk::TileCodingParams::m_nb_mct_records, grk::grk_simple_mcc_decorrelation_data::m_offset_array, grk::TileCodingParams::mct, grk::MCT_ELEMENT_SIZE, grk::MCT_TYPE_DECORRELATION, grk::MCT_TYPE_FLOAT, grk::MCT_TYPE_OFFSET, _grk_image::numcomps, and grk::TileCodingParams::tccps.
Referenced by initCompress().
|
virtual |
Implements grk::ICodeStreamCompress.
References _grk_cparameters::allocationByQuality, _grk_cparameters::allocationByRateDistoration, grk::mct::calculate_norms(), _grk_cparameters::cblk_sty, _grk_cparameters::cblockh_init, _grk_cparameters::cblockw_init, _grk_image::color_space, grk::CodingParams::comment, _grk_cparameters::comment, grk::CodingParams::comment_len, _grk_cparameters::comment_len, _grk_progression::compE, _grk_progression::compS, _grk_image::comps, grk::GrkImage::copyHeader(), _grk_cparameters::csty, _grk_image_comp::data, _grk_image_comp::dx, _grk_image_comp::dy, _grk_cparameters::enableTilePartGeneration, grk::floorlog2(), GRK_CLRSPC_EYCC, GRK_CLRSPC_SYCC, grk::GRK_ERROR(), GRK_EXTENSION_MCT, GRK_EXTENSION_NONE, GRK_IS_BROADCAST, GRK_IS_CINEMA, GRK_IS_IMF, GRK_IS_PART2, GRK_IS_STORAGE, GRK_J2K_MAXRLVLS, GRK_JPH_RSIZ_FLAG, GRK_MAX_COMMENT_LENGTH, GRK_PROFILE_CINEMA_S2K, GRK_PROFILE_CINEMA_S4K, GRK_PROFILE_NONE, GRK_PROFILE_PART2, grk_version(), grk::GRK_WARN(), grk::grkFree(), grk::grkMalloc(), _grk_image_comp::h, init_mct_encoding(), _grk_cparameters::irreversible, _grk_cparameters::is_binary_comment, grk::Profile::is_broadcast_compliant(), grk::Profile::is_cinema_compliant(), grk::Profile::is_imf_compliant(), grk::CodingParams::isBinaryComment, _grk_cparameters::isHT, J2K_CCP_CSTY_PRT, J2K_CCP_QNTSTY_NOQNT, J2K_CCP_QNTSTY_SEQNT, J2K_CP_CSTY_PRT, _grk_progression::layE, _grk_cparameters::layer_distortion, _grk_cparameters::layer_rate, grk::EncodingParams::m_allocationByFixedQuality, grk::EncodingParams::m_allocationByRateDistortion, grk::CodingParams::m_coding_params, grk::CodeStream::m_cp, grk::EncodingParams::m_enableTilePartGeneration, grk::CodingParams::m_enc, grk::CodeStream::m_headerImage, grk::EncodingParams::m_max_comp_size, grk::EncodingParams::m_newTilePartProgressionDivider, _grk_cparameters::max_comp_size, _grk_cparameters::max_cs_size, grk::maxNumComponentsJ2K, _grk_cparameters::mct, _grk_cparameters::mct_data, _grk_cparameters::newTilePartProgressionDivider, grk::CodingParams::num_comments, _grk_cparameters::num_comments, _grk_image::numcomps, _grk_cparameters::numgbits, _grk_cparameters::numlayers, _grk_cparameters::numpocs, _grk_cparameters::numresolution, _grk_cparameters::prch_init, _grk_cparameters::prcw_init, _grk_image_comp::prec, _grk_cparameters::prog_order, _grk_cparameters::progression, grk::EncodingParams::rateControlAlgorithm, _grk_cparameters::rateControlAlgorithm, _grk_cparameters::res_spec, _grk_progression::resE, _grk_progression::resS, _grk_cparameters::roi_compno, _grk_cparameters::roi_shift, grk::CodingParams::rsiz, _grk_cparameters::rsiz, grk::Profile::set_broadcast_parameters(), grk::Profile::set_cinema_parameters(), grk::Profile::set_imf_parameters(), _grk_image_comp::sgnd, _grk_progression::specifiedCompressionPocProg, grk::CodingParams::t_grid_height, grk::CodingParams::t_grid_width, grk::CodingParams::t_height, _grk_cparameters::t_height, grk::CodingParams::t_width, _grk_cparameters::t_width, grk::TileCodingParams::tccps, grk::CodingParams::tcps, _grk_cparameters::tile_size_on, _grk_progression::tileno, grk::CodingParams::tx0, _grk_cparameters::tx0, grk::CodingParams::ty0, _grk_cparameters::ty0, validateProgressionOrders(), _grk_image_comp::w, grk::EncodingParams::writePLT, _grk_cparameters::writePLT, grk::EncodingParams::writeTLM, _grk_cparameters::writeTLM, _grk_image::x0, _grk_image::x1, _grk_image::y0, and _grk_image::y1.
Referenced by grk::FileFormatCompress::initCompress().
|
private |
|
virtual |
Implements grk::ICodeStreamCompress.
References compressValidation(), grk::CodeStream::exec(), init_header_writing(), grk::CodeStream::m_procedure_list, grk::CodeStream::m_validation_list, and mct_validation().
Referenced by grk::FileFormatCompress::startCompress().
|
private |
|
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::GRK_ERROR(), and _grk_progression::resS.
Referenced by initCompress().
|
private |
Writes COC marker for each component.
|
private |
Writes QCC marker for each component.
|
private |
Writes the CAP marker.
|
private |
Writes the CBD marker (Component bit depth definition)
References J2K_MS_CBD.
|
private |
References grk::cod_coc_len, and J2K_MS_COC.
|
private |
Writes the COC marker (Coding style component)
comp_no | the index of the component to output. |
stream | buffered stream. |
|
private |
Writes the COD marker (Coding style default)
References grk::GRK_ERROR(), and J2K_MS_COD.
|
private |
Writes the COM marker (comment)
References GRK_MAX_COMMENT_LENGTH, grk::GRK_WARN(), and J2K_MS_COM.
|
private |
Writes the EOC marker (End of Codestream)
References J2K_MS_EOC.
|
private |
Writes the MCC marker (Multiple Component Collection)
p_mcc_record | MCC record |
stream | buffered stream. |
References J2K_MS_MCC, grk::grk_simple_mcc_decorrelation_data::m_decorrelation_array, grk::grk_mct_data::m_index, grk::grk_simple_mcc_decorrelation_data::m_index, grk::grk_simple_mcc_decorrelation_data::m_is_irreversible, grk::grk_simple_mcc_decorrelation_data::m_nb_comps, grk::grk_simple_mcc_decorrelation_data::m_offset_array, grk::IBufferedStream::write24(), grk::IBufferedStream::writeByte(), and grk::IBufferedStream::writeShort().
|
private |
Writes the MCO marker (Multiple component transformation ordering)
References J2K_MS_MCO.
|
private |
Writes the CBD-MCT-MCC-MCO markers (Multi components transform)
|
private |
Writes the MCT marker (Multiple Component Transform)
p_mct_record | MCT record |
stream | buffered stream. |
References J2K_MS_MCT, grk::grk_mct_data::m_array_type, grk::grk_mct_data::m_data, grk::grk_mct_data::m_data_size, grk::grk_mct_data::m_element_type, grk::grk_mct_data::m_index, grk::IBufferedStream::writeBytes(), and grk::IBufferedStream::writeShort().
|
private |
Writes the QCC marker (quantization component)
tileIndex | current tile index |
comp_no | the index of the component to output. |
stream | buffered stream. |
|
private |
References J2K_MS_QCC.
|
private |
Writes the QCD marker (quantization default)
References grk::GRK_ERROR(), and J2K_MS_QCD.
|
private |
Writes regions of interests.
|
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 J2K_MS_RGN.
|
private |
Writes the SIZ marker (image and tile size)
References grk::SIZMarker::write().
|
private |
Writes the SOC marker (Start Of Codestream)
References J2K_MS_SOC.
|
private |
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 J2K_CCP_CSTY_PRT.
|
private |
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 J2K_CCP_QNTSTY_NOQNT, and J2K_CCP_QNTSTY_SIQNT.
|
private |
Begin writing the TLM marker (Tile Length Marker)
|
private |
End writing the updated tlm.
|
private |
Writes the POC marker (Progression Order Change)
References J2K_MS_POC.
|
private |
References grk::TileProcessor::canPreCalculateTileLen(), grk::TileProcessor::canWritePocMarker(), grk::TileProcessor::getPreCalculatedTileLen(), grk::GRK_ERROR(), grk::TileProcessor::m_tileIndex, grk::TileProcessor::m_tilePartIndexCounter, grk::sot_marker_segment_len, grk::SOTMarker::write(), grk::SOTMarker::write_psot(), and grk::TileProcessor::writeTilePartT2().
|
private |
|
private |