Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 49 additions & 43 deletions src/core/codestream/ojph_params.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -253,12 +253,32 @@ namespace ojph {
}

////////////////////////////////////////////////////////////////////////////
param_coc param_cod::get_coc(ui32 component_idx)
void param_cod::set_num_decomposition(ui32 comp_idx, ui32 num_decompositions)
{
local::param_cod *p = state->get_coc(component_idx);
if (p == state) // no COC segment marker for this component
p = state->add_coc_object(component_idx);
return param_coc(p);
local::param_cod* cdp = state->get_or_add_coc(comp_idx);
ojph::param_cod(cdp).set_num_decomposition(num_decompositions);
}

////////////////////////////////////////////////////////////////////////////
void param_cod::set_block_dims(ui32 comp_idx, ui32 width, ui32 height)
{
local::param_cod* cdp = state->get_or_add_coc(comp_idx);
ojph::param_cod(cdp).set_block_dims(width, height);
}

////////////////////////////////////////////////////////////////////////////
void param_cod::set_precinct_size(ui32 comp_idx, int num_levels,
size* precinct_size)
{
local::param_cod* cdp = state->get_or_add_coc(comp_idx);
ojph::param_cod(cdp).set_precinct_size(num_levels, precinct_size);
}

////////////////////////////////////////////////////////////////////////////
void param_cod::set_reversible(ui32 comp_idx, bool reversible)
{
local::param_cod* cdp = state->get_or_add_coc(comp_idx);
ojph::param_cod(cdp).set_reversible(reversible);
}

////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -352,56 +372,32 @@ namespace ojph {
}

////////////////////////////////////////////////////////////////////////////
//
//
//
//
//
////////////////////////////////////////////////////////////////////////////
ui32 param_cod::get_num_decompositions(ui32 comp_idx) const
{ return state->get_coc(comp_idx)->get_num_decompositions(); }

////////////////////////////////////////////////////////////////////////////
void param_coc::set_num_decomposition(ui32 num_decompositions)
{ ojph::param_cod(state).set_num_decomposition(num_decompositions); }
size param_cod::get_block_dims(ui32 comp_idx) const
{ return state->get_coc(comp_idx)->get_block_dims(); }

////////////////////////////////////////////////////////////////////////////
void param_coc::set_block_dims(ui32 width, ui32 height)
{ ojph::param_cod(state).set_block_dims(width, height); }
size param_cod::get_log_block_dims(ui32 comp_idx) const
{ return state->get_coc(comp_idx)->get_log_block_dims(); }

////////////////////////////////////////////////////////////////////////////
void param_coc::set_precinct_size(int num_levels, size* precinct_size)
{ ojph::param_cod(state).set_precinct_size(num_levels, precinct_size); }
bool param_cod::is_reversible(ui32 comp_idx) const
{ return state->get_coc(comp_idx)->is_reversible(); }

////////////////////////////////////////////////////////////////////////////
void param_coc::set_reversible(bool reversible)
{ ojph::param_cod(state).set_reversible(reversible); }
size param_cod::get_precinct_size(ui32 comp_idx, ui32 level_num) const
{ return state->get_coc(comp_idx)->get_precinct_size(level_num); }

////////////////////////////////////////////////////////////////////////////
ui32 param_coc::get_num_decompositions() const
{ return ojph::param_cod(state).get_num_decompositions(); }
size param_cod::get_log_precinct_size(ui32 comp_idx, ui32 level_num) const
{ return state->get_coc(comp_idx)->get_log_precinct_size(level_num); }

////////////////////////////////////////////////////////////////////////////
size param_coc::get_block_dims() const
{ return ojph::param_cod(state).get_block_dims(); }

////////////////////////////////////////////////////////////////////////////
size param_coc::get_log_block_dims() const
{ return ojph::param_cod(state).get_log_block_dims(); }

////////////////////////////////////////////////////////////////////////////
bool param_coc::is_reversible() const
{ return ojph::param_cod(state).is_reversible(); }

////////////////////////////////////////////////////////////////////////////
size param_coc::get_precinct_size(ui32 level_num) const
{ return ojph::param_cod(state).get_precinct_size(level_num); }

////////////////////////////////////////////////////////////////////////////
size param_coc::get_log_precinct_size(ui32 level_num) const
{ return ojph::param_cod(state).get_log_precinct_size(level_num); }

////////////////////////////////////////////////////////////////////////////
bool param_coc::get_block_vertical_causality() const
{ return ojph::param_cod(state).get_block_vertical_causality(); }
bool param_cod::get_block_vertical_causality(ui32 comp_idx) const
{ return state->get_coc(comp_idx)->get_block_vertical_causality(); }


////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -1139,6 +1135,16 @@ namespace ojph {
return p->next;
}

//////////////////////////////////////////////////////////////////////////
param_cod* param_cod::get_or_add_coc(ui32 comp_idx)
{
assert(type == COD_MAIN);
local::param_cod *p = get_coc(comp_idx);
if (p == this)
p = add_coc_object(comp_idx);
return p;
}

//////////////////////////////////////////////////////////////////////////
//
//
Expand Down
10 changes: 10 additions & 0 deletions src/core/codestream/ojph_params_local.h
Original file line number Diff line number Diff line change
Expand Up @@ -602,6 +602,9 @@ namespace ojph {
////////////////////////////////////////
param_cod* add_coc_object(ui32 comp_idx);

///////////////////////////////////////
param_cod* get_or_add_coc(ui32 comp_idx);

////////////////////////////////////////
const param_atk* access_atk() const { return atk; }

Expand Down Expand Up @@ -629,8 +632,15 @@ namespace ojph {
type = top_cod ? COC_MAIN : COD_MAIN;
Lcod = 0;
Scod = 0;
SPcod = cod_SPcod(); // SPcod is initialized to default values
next = NULL;
atk = NULL;
// For COC marker segment:
// Lcod will be initialized on writing the marker segment to disk
// Scod is initialized to 0
// SGcod does not exist in COC
// SPcoc is initialized to default values
// atk is initialized to NULL
this->top_cod = top_cod;
this->comp_idx = comp_idx;
}
Expand Down
Loading
Loading