Grok 12.0.1
Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes | List of all members
grk::CodeStreamCompress Class Reference

#include <CodeStreamCompress.h>

Inheritance diagram for grk::CodeStreamCompress:
grk::CodeStream grk::ICodeStreamCompress

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)
 
- Public Member Functions inherited from grk::CodeStream
 CodeStream (BufferedStream *stream)
 
virtual ~CodeStream ()
 
TileProcessorcurrentProcessor (void)
 
BufferedStreamgetStream ()
 
GrkImagegetHeaderImage (void)
 
grk_plugin_tilegetCurrentPluginTile ()
 
CodingParamsgetCodingParams (void)
 
- Public Member Functions inherited from grk::ICodeStreamCompress
virtual ~ICodeStreamCompress ()=default
 

Static Public Member Functions

static charconvertProgressionOrder (GRK_PROG_ORDER prg_order)
 
static uint16_t getPocSize (uint32_t numComponents, uint32_t l_nb_poc)
 
- Static Public Member Functions inherited from grk::CodeStream
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

- Protected Member Functions inherited from grk::CodeStream
bool exec (std::vector< PROCEDURE_FUNC > &p_procedure_list)
 
- Protected Attributes inherited from grk::CodeStream
CodingParams cp_
 
CodeStreamInfocodeStreamInfo
 
std::vector< PROCEDURE_FUNCprocedure_list_
 
std::vector< PROCEDURE_FUNCvalidation_list_
 
GrkImageheaderImage_
 
TileProcessorcurrentTileProcessor_
 
BufferedStreamstream_
 
std::map< uint32_t, TileProcessor * > processors_
 
grk_plugin_tilecurrent_plugin_tile
 

Constructor & Destructor Documentation

◆ CodeStreamCompress()

grk::CodeStreamCompress::CodeStreamCompress ( BufferedStream * stream)

◆ ~CodeStreamCompress()

grk::CodeStreamCompress::~CodeStreamCompress ( )
virtual

Member Function Documentation

◆ cacheEndOfHeader()

bool grk::CodeStreamCompress::cacheEndOfHeader ( void )
private

◆ compare_coc()

bool grk::CodeStreamCompress::compare_coc ( uint32_t first_comp_no,
uint32_t second_comp_no )
private

Compares 2 COC markers (Coding style component)

Parameters
first_comp_nothe index of the first component to compare.
second_comp_nothe index of the second component to compare.
Returns
true if equals

References compare_SPCod_SPCoc(), grk::CodeStream::cp_, grk::grk_read(), and grk::CodingParams::tcps.

Referenced by write_all_coc().

◆ compare_qcc()

bool grk::CodeStreamCompress::compare_qcc ( uint32_t first_comp_no,
uint32_t second_comp_no )
private

Compare QCC markers (quantization component)

Parameters
first_comp_nothe index of the first component to compare.
second_comp_nothe index of the second component to compare.
Returns
true if equals.

References compare_SQcd_SQcc(), and grk::grk_read().

Referenced by write_all_qcc().

◆ compare_SPCod_SPCoc()

bool grk::CodeStreamCompress::compare_SPCod_SPCoc ( uint32_t first_comp_no,
uint32_t second_comp_no )
private

Compare 2 a SPCod/ SPCoc elements, i.e.

the coding style of a given component of a tile.

Parameters
first_comp_noThe 1st component number to compare.
second_comp_noThe 1st component number to compare.
Returns
true if SPCdod are equals.

References grk::CodeStream::cp_, grk::grk_read(), J2K_CCP_CSTY_PRT, grk::TileCodingParams::tccps, and grk::CodingParams::tcps.

Referenced by compare_coc().

◆ compare_SQcd_SQcc()

bool grk::CodeStreamCompress::compare_SQcd_SQcc ( uint32_t first_comp_no,
uint32_t second_comp_no )
private

Compares 2 SQcd or SQcc element, i.e.

the quantization values of a band in the QCD or QCC.

Parameters
first_comp_nothe first component number to compare.
second_comp_nothe second component number to compare.
Returns
true if equals.

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().

◆ compress()

uint64_t grk::CodeStreamCompress::compress ( grk_plugin_tile * tile)
virtual

◆ compressValidation()

bool grk::CodeStreamCompress::compressValidation ( void )
private

◆ convertProgressionOrder()

char * grk::CodeStreamCompress::convertProgressionOrder ( GRK_PROG_ORDER prg_order)
static

◆ end()

bool grk::CodeStreamCompress::end ( void )
private

◆ get_SPCod_SPCoc_size()

uint32_t grk::CodeStreamCompress::get_SPCod_SPCoc_size ( uint32_t comp_no)
private

Gets the size taken by writing a SPCod or SPCoc for the given tile and component.

Parameters
comp_nothe component being outputted.
Returns
the number of bytes taken by the SPCod element.

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().

◆ get_SQcd_SQcc_size()

uint32_t grk::CodeStreamCompress::get_SQcd_SQcc_size ( uint32_t comp_no)
private

Gets the size taken by writing SQcd or SQcc element, i.e.

the quantization values of a band in the QCD or QCC.

Parameters
comp_nothe component being output.
Returns
the number of bytes taken by the SPCod element.

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().

◆ getNumTileParts()

bool grk::CodeStreamCompress::getNumTileParts ( uint16_t * p_nb_tile_parts,
GrkImage * image )
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.

Parameters
p_nb_tile_partstotal number of tile parts in whole image.
imageimage to compress.
Returns
true if the function was successful, false else.

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().

◆ getNumTilePartsForProgression()

uint64_t grk::CodeStreamCompress::getNumTilePartsForProgression ( uint32_t pino,
uint16_t tileno )
private

Gets the number of tile parts used for the given change of progression (if any) and the given tile.

Parameters
pinothe offset of the given poc (i.e. its position in the coding parameter).
tilenothe given tile.
Returns
the number of tile parts.

References convertProgressionOrder(), grk::CodeStream::cp_, grk::grk_read(), and grk::maxTilePartsPerTileJ2K.

Referenced by getNumTileParts(), and writeTileParts().

◆ getPocSize()

uint16_t grk::CodeStreamCompress::getPocSize ( uint32_t numComponents,
uint32_t l_nb_poc )
static

◆ init()

bool grk::CodeStreamCompress::init ( grk_cparameters * p_param,
GrkImage * p_image )
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().

◆ init_header_writing()

bool grk::CodeStreamCompress::init_header_writing ( void )
private

◆ init_mct_encoding()

bool grk::CodeStreamCompress::init_mct_encoding ( TileCodingParams * p_tcp,
GrkImage * p_image )
private

◆ mct_validation()

bool grk::CodeStreamCompress::mct_validation ( void )
private

◆ start()

bool grk::CodeStreamCompress::start ( void )
virtual

◆ updateRates()

bool grk::CodeStreamCompress::updateRates ( void )
private

◆ validateProgressionOrders()

bool grk::CodeStreamCompress::validateProgressionOrders ( const grk_progression * progressions,
uint32_t numProgressions,
uint8_t numResolutions,
uint16_t numcomps,
uint16_t numlayers )
private

Validate progression orders.

Parameters
progressionsprogression orders.
numProgressionsnumber of progression orders.
numResolutionsnumber of resolutions.
numcompsnumber of components
numlayersnumber of layers.
Returns
true if the pocs are valid.

References grk::Logger::error(), grk::grk_read(), and grk::Logger::logger_.

Referenced by init().

◆ write_all_coc()

bool grk::CodeStreamCompress::write_all_coc ( )
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().

◆ write_all_qcc()

bool grk::CodeStreamCompress::write_all_qcc ( )
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().

◆ write_cap()

bool grk::CodeStreamCompress::write_cap ( )
private

◆ write_cbd()

bool grk::CodeStreamCompress::write_cbd ( )
private

◆ write_coc() [1/2]

bool grk::CodeStreamCompress::write_coc ( uint32_t comp_no)
private

◆ write_coc() [2/2]

bool grk::CodeStreamCompress::write_coc ( uint32_t comp_no,
BufferedStream * stream )
private

Writes the COC marker (Coding style component)

Parameters
comp_nothe index of the component to output.
streambuffered stream.

Referenced by write_all_coc().

◆ write_cod()

bool grk::CodeStreamCompress::write_cod ( )
private

◆ write_com()

bool grk::CodeStreamCompress::write_com ( )
private

◆ write_eoc()

bool grk::CodeStreamCompress::write_eoc ( )
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().

◆ write_mcc_record()

bool grk::CodeStreamCompress::write_mcc_record ( grk_simple_mcc_decorrelation_data * p_mcc_record,
BufferedStream * stream )
private

Writes the MCC marker (Multiple Component Collection)

Parameters
p_mcc_recordMCC record
streambuffered 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().

◆ write_mco()

bool grk::CodeStreamCompress::write_mco ( )
private

◆ write_mct_data_group()

bool grk::CodeStreamCompress::write_mct_data_group ( )
private

◆ write_mct_record()

bool grk::CodeStreamCompress::write_mct_record ( grk_mct_data * p_mct_record,
BufferedStream * stream )
private

Writes the MCT marker (Multiple Component Transform)

Parameters
p_mct_recordMCT record
streambuffered stream.

References grk::grk_read(), grk::J2K_MS_MCT, grk::BufferedStream::writeBytes(), and grk::BufferedStream::writeShort().

Referenced by write_mct_data_group().

◆ write_qcc() [1/2]

bool grk::CodeStreamCompress::write_qcc ( uint16_t tileIndex,
uint32_t comp_no,
BufferedStream * stream )
private

Writes the QCC marker (quantization component)

Parameters
tileIndexcurrent tile index
comp_nothe index of the component to output.
streambuffered stream.

Referenced by write_all_qcc().

◆ write_qcc() [2/2]

bool grk::CodeStreamCompress::write_qcc ( uint32_t comp_no)
private

◆ write_qcd()

bool grk::CodeStreamCompress::write_qcd ( )
private

◆ write_regions()

bool grk::CodeStreamCompress::write_regions ( )
private

◆ write_rgn()

bool grk::CodeStreamCompress::write_rgn ( uint16_t tile_no,
uint32_t comp_no,
uint32_t nb_comps )
private

Writes the RGN marker (Region Of Interest)

Parameters
tile_nothe tile to output
comp_nothe component to output
nb_compsthe 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().

◆ write_siz()

bool grk::CodeStreamCompress::write_siz ( )
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().

◆ write_soc()

bool grk::CodeStreamCompress::write_soc ( )
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().

◆ write_SPCod_SPCoc()

bool grk::CodeStreamCompress::write_SPCod_SPCoc ( uint32_t comp_no)
private

Writes a SPCod or SPCoc element, i.e.

the coding style of a given component of a tile.

Parameters
comp_nothe component number to output.
Returns
true if successful

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().

◆ write_SQcd_SQcc()

bool grk::CodeStreamCompress::write_SQcd_SQcc ( uint32_t comp_no)
private

Writes a SQcd or SQcc element, i.e.

the quantization values of a band in the QCD or QCC.

Parameters
comp_nothe 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().

◆ write_tlm_begin()

bool grk::CodeStreamCompress::write_tlm_begin ( )
private

◆ write_tlm_end()

bool grk::CodeStreamCompress::write_tlm_end ( )
private

End writing the updated tlm.

References grk::CodeStream::cp_, grk::CodingParams::tlm_markers, and grk::TileLengthMarkers::writeEnd().

Referenced by end().

◆ writePoc()

bool grk::CodeStreamCompress::writePoc ( )
private

◆ writeTilePart()

bool grk::CodeStreamCompress::writeTilePart ( TileProcessor * tileProcessor)
private

◆ writeTileParts()

bool grk::CodeStreamCompress::writeTileParts ( TileProcessor * tileProcessor)
private

Member Data Documentation

◆ compressorState_

CompressorState grk::CodeStreamCompress::compressorState_
private

The documentation for this class was generated from the following files: