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
8 changes: 4 additions & 4 deletions include/av2_obu/core/av2_sequence_header.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ struct SequencePartitionConfig {
uint32_t enable_ext_partitions = 0;
uint32_t enable_uneven_4way_partitions = 0;
uint32_t reduce_pb_aspect_ratio = 0;
uint32_t max_pb_aspect_ratio_log2_minus1 = 0;
uint32_t max_pb_aspect_ratio_log2_minus_1 = 0;

// Computed values
uint32_t MaxPbAspectRatio = 8;
Expand Down Expand Up @@ -104,9 +104,9 @@ struct SequenceInterConfig {
uint32_t explicit_ref_frame_map = 0;
uint32_t explicit_num_ref_frames = 0;
uint32_t num_ref_frames_minus_1 = 0;
uint32_t seq_max_drl_bits_minus1 = 0;
uint32_t seq_max_drl_bits_minus_1 = 0;
uint32_t allow_frame_max_drl_bits = 0;
uint32_t seq_max_bvp_drl_bits_minus1 = 0;
uint32_t seq_max_bvp_drl_bits_minus_1 = 0;
uint32_t allow_frame_max_bvp_drl_bits = 0;
uint32_t num_same_ref_compound = 0;
uint32_t enable_tip = 0;
Expand Down Expand Up @@ -197,7 +197,7 @@ struct SequenceFilterConfig {
uint32_t ccso_unit_matches_sb_size = 0;
uint32_t cdef_on_skip_txfm_always_on = 0;
uint32_t cdef_on_skip_txfm_disabled = 0;
uint32_t df_par_bits_minus2 = 0;
uint32_t df_par_bits_minus_2 = 0;

// Computed values
uint32_t CdefOnSkipTxfm = CDEF_ON_SKIP_TXFM_ADAPTIVE;
Expand Down
18 changes: 9 additions & 9 deletions include/av2_obu/obus/atlas_segment_obu.h
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,15 @@ class AtlasSegmentOBU : public BaseOBU {
};

struct EnhancedAtlasInfo {
uint32_t num_region_columns_minus1 = 0;
uint32_t num_region_rows_minus1 = 0;
uint32_t num_region_columns_minus_1 = 0;
uint32_t num_region_rows_minus_1 = 0;
uint32_t uniform_spacing_flag = 0;
std::vector<uint32_t> column_width_minus1;
std::vector<uint32_t> row_height_minus1;
uint32_t region_width_minus1 = 0;
uint32_t region_height_minus1 = 0;
std::vector<uint32_t> column_width_minus_1;
std::vector<uint32_t> row_height_minus_1;
uint32_t region_width_minus_1 = 0;
uint32_t region_height_minus_1 = 0;
uint32_t single_region_per_segment_flag = 0;
uint32_t num_atlas_segments_minus1 = 0;
uint32_t num_atlas_segments_minus_1 = 0;
struct SegmentRegion {
uint32_t top_left_col = 0;
uint32_t top_left_row = 0;
Expand Down Expand Up @@ -81,8 +81,8 @@ class AtlasSegmentOBU : public BaseOBU {
uint32_t basic_height_ = 0;

// Mode 2 — SINGLE_ATLAS
uint32_t nominal_width_minus1_ = 0;
uint32_t nominal_height_minus1_ = 0;
uint32_t nominal_width_minus_1_ = 0;
uint32_t nominal_height_minus_1_ = 0;

// Modes 3 & 4 — MULTISTREAM_ATLAS / MULTISTREAM_ALPHA_ATLAS
uint32_t msi_width_ = 0;
Expand Down
8 changes: 4 additions & 4 deletions include/av2_obu/obus/metadata_unit.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,8 +120,8 @@ class MetadataUnit {
// BANDING_HINTS
struct BandingComponentInfo {
uint8_t banding_in_component_present_flag = 0;
uint8_t max_band_width_minus4 = 0;
uint8_t max_band_step_minus1 = 0;
uint8_t max_band_width_minus_4 = 0;
uint8_t max_band_step_minus_1 = 0;
};

uint8_t coding_banding_present_flag_ = 0;
Expand All @@ -134,8 +134,8 @@ class MetadataUnit {
uint8_t num_band_units_cols_minus_1_ = 0;
uint8_t varying_size_band_units_flag_ = 0;
uint8_t band_block_in_luma_samples_ = 0;
std::vector<uint8_t> vert_size_in_band_blocks_minus1_;
std::vector<uint8_t> horz_size_in_band_blocks_minus1_;
std::vector<uint8_t> vert_size_in_band_blocks_minus_1_;
std::vector<uint8_t> horz_size_in_band_blocks_minus_1_;
std::vector<std::vector<uint8_t>> banding_in_band_unit_present_flags_; // 2D array [rows][cols]
};

Expand Down
18 changes: 9 additions & 9 deletions src/core/av2_sequence_header.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ bool SequencePartitionConfig::parse(BitstreamReader& br, bool single_picture_hea

reduce_pb_aspect_ratio = br.read_bit();
if (reduce_pb_aspect_ratio) {
max_pb_aspect_ratio_log2_minus1 = br.read_bit();
MaxPbAspectRatio = 1 << (max_pb_aspect_ratio_log2_minus1 + 1);
max_pb_aspect_ratio_log2_minus_1 = br.read_bit();
MaxPbAspectRatio = 1 << (max_pb_aspect_ratio_log2_minus_1 + 1);
} else {
MaxPbAspectRatio = 8;
}
Expand Down Expand Up @@ -239,7 +239,7 @@ bool SequenceInterConfig::parse(BitstreamReader& br, bool single_picture_header_
DrlReorder = constrain_drl_reorder ? DRL_REORDER_CONSTRAINT : DRL_REORDER_ALWAYS;
}

seq_max_bvp_drl_bits_minus1 = br.read_ns(MAX_REF_BV_STACK_SIZE - 1);
seq_max_bvp_drl_bits_minus_1 = br.read_ns(MAX_REF_BV_STACK_SIZE - 1);
allow_frame_max_bvp_drl_bits = br.read_bit();

enable_bawp = br.read_bit();
Expand Down Expand Up @@ -303,10 +303,10 @@ bool SequenceInterConfig::parse(BitstreamReader& br, bool single_picture_header_

long_term_frame_id_bits = br.read_bits(3);

seq_max_drl_bits_minus1 = br.read_ns(MAX_REF_MV_STACK_SIZE - 1);
seq_max_drl_bits_minus_1 = br.read_ns(MAX_REF_MV_STACK_SIZE - 1);
allow_frame_max_drl_bits = br.read_bit();

seq_max_bvp_drl_bits_minus1 = br.read_ns(MAX_REF_BV_STACK_SIZE - 1);
seq_max_bvp_drl_bits_minus_1 = br.read_ns(MAX_REF_BV_STACK_SIZE - 1);
allow_frame_max_bvp_drl_bits = br.read_bit();

num_same_ref_compound = br.read_bits(2);
Expand Down Expand Up @@ -373,9 +373,9 @@ json SequenceInterConfig::to_json() const {
{"NumRefFrames", NumRefFrames},
{"ActiveNumRefFrames", ActiveNumRefFrames},
{"long_term_frame_id_bits", long_term_frame_id_bits},
{"seq_max_drl_bits_minus1", seq_max_drl_bits_minus1},
{"seq_max_drl_bits_minus_1", seq_max_drl_bits_minus_1},
{"allow_frame_max_drl_bits", allow_frame_max_drl_bits},
{"seq_max_bvp_drl_bits_minus1", seq_max_bvp_drl_bits_minus1},
{"seq_max_bvp_drl_bits_minus_1", seq_max_bvp_drl_bits_minus_1},
{"allow_frame_max_bvp_drl_bits", allow_frame_max_bvp_drl_bits},
{"num_same_ref_compound", num_same_ref_compound},
{"enable_tip", enable_tip},
Expand Down Expand Up @@ -617,7 +617,7 @@ bool SequenceFilterConfig::parse(BitstreamReader& br, bool single_picture_header
}
}

df_par_bits_minus2 = br.read_bits(2);
df_par_bits_minus_2 = br.read_bits(2);

return true;
}
Expand All @@ -631,7 +631,7 @@ json SequenceFilterConfig::to_json() const {
{"enable_ccso", enable_ccso},
{"ccso_unit_matches_sb_size", ccso_unit_matches_sb_size},
{"CdefOnSkipTxfm", CdefOnSkipTxfm},
{"df_par_bits_minus2", df_par_bits_minus2}};
{"df_par_bits_minus_2", df_par_bits_minus_2}};
}

// ==================== SequenceTileConfig ====================
Expand Down
54 changes: 27 additions & 27 deletions src/obus/atlas_segment_obu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -32,24 +32,24 @@ static const char* mode_name(AtlasSegmentOBU::ModeIdc m) {
// ats_region_info() — returns NumRegionsInAtlas
static uint32_t parse_region_info(BitstreamReader& br,
AtlasSegmentOBU::EnhancedAtlasInfo& info) {
info.num_region_columns_minus1 = br.read_uvlc();
info.num_region_rows_minus1 = br.read_uvlc();
info.num_region_columns_minus_1 = br.read_uvlc();
info.num_region_rows_minus_1 = br.read_uvlc();
info.uniform_spacing_flag = br.read_bit();

if (!info.uniform_spacing_flag) {
uint32_t num_cols = info.num_region_columns_minus1 + 1;
uint32_t num_rows = info.num_region_rows_minus1 + 1;
info.column_width_minus1.resize(num_cols);
info.row_height_minus1.resize(num_rows);
uint32_t num_cols = info.num_region_columns_minus_1 + 1;
uint32_t num_rows = info.num_region_rows_minus_1 + 1;
info.column_width_minus_1.resize(num_cols);
info.row_height_minus_1.resize(num_rows);
for (uint32_t i = 0; i < num_cols; i++)
info.column_width_minus1[i] = br.read_uvlc();
info.column_width_minus_1[i] = br.read_uvlc();
for (uint32_t i = 0; i < num_rows; i++)
info.row_height_minus1[i] = br.read_uvlc();
info.row_height_minus_1[i] = br.read_uvlc();
} else {
info.region_width_minus1 = br.read_uvlc();
info.region_height_minus1 = br.read_uvlc();
info.region_width_minus_1 = br.read_uvlc();
info.region_height_minus_1 = br.read_uvlc();
}
return (info.num_region_columns_minus1 + 1) * (info.num_region_rows_minus1 + 1);
return (info.num_region_columns_minus_1 + 1) * (info.num_region_rows_minus_1 + 1);
}

// ats_region_to_segment_mapping() — returns numSegments
Expand All @@ -58,8 +58,8 @@ static uint32_t parse_region_to_segment_mapping(BitstreamReader& br,
uint32_t num_regions) {
info.single_region_per_segment_flag = br.read_bit();
if (!info.single_region_per_segment_flag) {
info.num_atlas_segments_minus1 = br.read_uvlc();
uint32_t n = info.num_atlas_segments_minus1 + 1;
info.num_atlas_segments_minus_1 = br.read_uvlc();
uint32_t n = info.num_atlas_segments_minus_1 + 1;
info.segment_regions.resize(n);
for (uint32_t i = 0; i < n; i++) {
info.segment_regions[i].top_left_col = br.read_uvlc();
Expand All @@ -69,7 +69,7 @@ static uint32_t parse_region_to_segment_mapping(BitstreamReader& br,
}
return n;
} else {
info.num_atlas_segments_minus1 = num_regions - 1;
info.num_atlas_segments_minus_1 = num_regions - 1;
return num_regions;
}
}
Expand Down Expand Up @@ -114,7 +114,7 @@ bool AtlasSegmentOBU::parse_payload(std::ifstream& ifs) {
basic_stream_id_present_ = br.read_bit();
basic_width_ = br.read_uvlc();
basic_height_ = br.read_uvlc();
uint32_t n = br.read_uvlc() + 1; // ats_num_atlas_segments_minus1 + 1
uint32_t n = br.read_uvlc() + 1; // ats_num_atlas_segments_minus_1 + 1
num_segments = n;
segments_.resize(n);
for (uint32_t i = 0; i < n; i++) {
Expand All @@ -128,8 +128,8 @@ bool AtlasSegmentOBU::parse_payload(std::ifstream& ifs) {
break;
}
case ModeIdc::SINGLE_ATLAS: {
nominal_width_minus1_ = br.read_uvlc();
nominal_height_minus1_ = br.read_uvlc();
nominal_width_minus_1_ = br.read_uvlc();
nominal_height_minus_1_ = br.read_uvlc();
num_segments = 1;
break;
}
Expand All @@ -138,7 +138,7 @@ bool AtlasSegmentOBU::parse_payload(std::ifstream& ifs) {
bool with_alpha = (mode_idc_ == ModeIdc::MULTISTREAM_ALPHA_ATLAS);
msi_width_ = br.read_uvlc();
msi_height_ = br.read_uvlc();
uint32_t n = br.read_uvlc() + 1; // ats_msi_num_atlas_segments_minus1 + 1
uint32_t n = br.read_uvlc() + 1; // ats_msi_num_atlas_segments_minus_1 + 1
num_segments = n;
if (with_alpha)
msi_alpha_segments_present_ = br.read_bit();
Expand Down Expand Up @@ -192,18 +192,18 @@ json AtlasSegmentOBU::to_json() const {
switch (mode_idc_) {
case ModeIdc::ENHANCED_ATLAS: {
json e;
e["ats_num_region_columns_minus_1"] = enhanced_.num_region_columns_minus1;
e["ats_num_region_rows_minus_1"] = enhanced_.num_region_rows_minus1;
e["ats_num_region_columns_minus_1"] = enhanced_.num_region_columns_minus_1;
e["ats_num_region_rows_minus_1"] = enhanced_.num_region_rows_minus_1;
e["ats_uniform_spacing_flag"] = enhanced_.uniform_spacing_flag;
if (!enhanced_.uniform_spacing_flag) {
e["ats_column_width_minus_1"] = enhanced_.column_width_minus1;
e["ats_row_height_minus_1"] = enhanced_.row_height_minus1;
e["ats_column_width_minus_1"] = enhanced_.column_width_minus_1;
e["ats_row_height_minus_1"] = enhanced_.row_height_minus_1;
} else {
e["ats_region_width_minus_1"] = enhanced_.region_width_minus1;
e["ats_region_height_minus_1"] = enhanced_.region_height_minus1;
e["ats_region_width_minus_1"] = enhanced_.region_width_minus_1;
e["ats_region_height_minus_1"] = enhanced_.region_height_minus_1;
}
e["ats_single_region_per_atlas_segment_flag"] = enhanced_.single_region_per_segment_flag;
e["ats_num_atlas_segments_minus_1"] = enhanced_.num_atlas_segments_minus1;
e["ats_num_atlas_segments_minus_1"] = enhanced_.num_atlas_segments_minus_1;
if (!enhanced_.single_region_per_segment_flag) {
json regions = json::array();
for (const auto& r : enhanced_.segment_regions) {
Expand Down Expand Up @@ -237,8 +237,8 @@ json AtlasSegmentOBU::to_json() const {
break;
}
case ModeIdc::SINGLE_ATLAS:
j["ats_nominal_width_minus_1"] = nominal_width_minus1_;
j["ats_nominal_height_minus_1"] = nominal_height_minus1_;
j["ats_nominal_width_minus_1"] = nominal_width_minus_1_;
j["ats_nominal_height_minus_1"] = nominal_height_minus_1_;
break;
case ModeIdc::MULTISTREAM_ATLAS:
case ModeIdc::MULTISTREAM_ALPHA_ATLAS: {
Expand Down
34 changes: 17 additions & 17 deletions src/obus/metadata_unit.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -287,10 +287,10 @@ bool MetadataUnit::parse_payload(BitstreamReader& br) {
comp.banding_in_component_present_flag = static_cast<uint8_t>(br.read_bits(1));

if (comp.banding_in_component_present_flag) {
comp.max_band_width_minus4 = static_cast<uint8_t>(br.read_bits(6));
comp.max_band_step_minus1 = static_cast<uint8_t>(br.read_bits(4));
comp.max_band_width_minus_4 = static_cast<uint8_t>(br.read_bits(6));
comp.max_band_step_minus_1 = static_cast<uint8_t>(br.read_bits(4));
spdlog::debug(" component[{}]: present, width={}, step={}", plane,
comp.max_band_width_minus4, comp.max_band_step_minus1);
comp.max_band_width_minus_4, comp.max_band_step_minus_1);
} else {
spdlog::debug(" component[{}]: not present", plane);
}
Expand Down Expand Up @@ -320,22 +320,22 @@ bool MetadataUnit::parse_payload(BitstreamReader& br) {
int(band_block_in_luma_samples_));

// Read vertical sizes
vert_size_in_band_blocks_minus1_.clear();
vert_size_in_band_blocks_minus_1_.clear();
for (uint32_t r = 0; r <= num_band_units_rows_minus_1_; r++) {
uint8_t vert_size = static_cast<uint8_t>(br.read_bits(5));
vert_size_in_band_blocks_minus1_.push_back(vert_size);
vert_size_in_band_blocks_minus_1_.push_back(vert_size);
}

// Read horizontal sizes
horz_size_in_band_blocks_minus1_.clear();
horz_size_in_band_blocks_minus_1_.clear();
for (uint32_t c = 0; c <= num_band_units_cols_minus_1_; c++) {
uint8_t horz_size = static_cast<uint8_t>(br.read_bits(5));
horz_size_in_band_blocks_minus1_.push_back(horz_size);
horz_size_in_band_blocks_minus_1_.push_back(horz_size);
}

spdlog::debug(" Read {} vertical and {} horizontal band block sizes",
vert_size_in_band_blocks_minus1_.size(),
horz_size_in_band_blocks_minus1_.size());
vert_size_in_band_blocks_minus_1_.size(),
horz_size_in_band_blocks_minus_1_.size());
}

// Read banding flags for each band unit
Expand Down Expand Up @@ -593,17 +593,17 @@ void MetadataUnit::dump() const {
for (size_t i = 0; i < banding_components_.size(); i++) {
const auto& comp = banding_components_[i];
if (comp.banding_in_component_present_flag) {
spdlog::debug(" component[{}]: width={}, step={}", i, comp.max_band_width_minus4,
comp.max_band_step_minus1);
spdlog::debug(" component[{}]: width={}, step={}", i, comp.max_band_width_minus_4,
comp.max_band_step_minus_1);
}
}
if (band_units_information_present_flag_) {
spdlog::debug(" band_units: {} rows x {} cols", num_band_units_rows_minus_1_ + 1,
num_band_units_cols_minus_1_ + 1);
if (varying_size_band_units_flag_) {
spdlog::debug(" varying_size with {} vertical and {} horizontal sizes",
vert_size_in_band_blocks_minus1_.size(),
horz_size_in_band_blocks_minus1_.size());
vert_size_in_band_blocks_minus_1_.size(),
horz_size_in_band_blocks_minus_1_.size());
}
}
}
Expand Down Expand Up @@ -785,8 +785,8 @@ nlohmann::ordered_json MetadataUnit::to_json() const {
comp_json["banding_in_component_present_flag"] =
comp.banding_in_component_present_flag;
if (comp.banding_in_component_present_flag) {
comp_json["max_band_width_minus4"] = comp.max_band_width_minus4;
comp_json["max_band_step_minus1"] = comp.max_band_step_minus1;
comp_json["max_band_width_minus_4"] = comp.max_band_width_minus_4;
comp_json["max_band_step_minus_1"] = comp.max_band_step_minus_1;
}
components.push_back(comp_json);
}
Expand All @@ -801,8 +801,8 @@ nlohmann::ordered_json MetadataUnit::to_json() const {

if (varying_size_band_units_flag_) {
j["band_block_in_luma_samples"] = band_block_in_luma_samples_;
j["vert_size_in_band_blocks_minus1"] = vert_size_in_band_blocks_minus1_;
j["horz_size_in_band_blocks_minus1"] = horz_size_in_band_blocks_minus1_;
j["vert_size_in_band_blocks_minus_1"] = vert_size_in_band_blocks_minus_1_;
j["horz_size_in_band_blocks_minus_1"] = horz_size_in_band_blocks_minus_1_;
}

// Serialize 2D banding flags array
Expand Down
4 changes: 2 additions & 2 deletions src/obus/msdo_obu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ bool MSDOOBU::parse_payload(std::ifstream& ifs) {
BitstreamReader br(raw_payload_);

// multistream_decoder_operation_obu()
uint32_t num_streams_minus2 = br.read_bits(3);
num_streams_ = num_streams_minus2 + 2;
uint32_t num_streams_minus_2 = br.read_bits(3);
num_streams_ = num_streams_minus_2 + 2;
multistream_profile_idc_ = br.read_bits(5);
multistream_level_idx_ = br.read_bits(5);
multistream_tier_ = br.read_bit();
Expand Down
4 changes: 2 additions & 2 deletions src/obus/multi_frame_header_obu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ bool MultiFrameHeaderOBU::parse_payload(std::ifstream& ifs) {

// multi_frame_header_obu() syntax
mfh_seq_header_id_ = br.read_uvlc();
uint32_t mfh_id_minus1 = br.read_uvlc();
mfh_id_ = mfh_id_minus1 + 1;
uint32_t mfh_id_minus_1 = br.read_uvlc();
mfh_id_ = mfh_id_minus_1 + 1;

// Optional frame size override
mfh_frame_size_present_flag_ = br.read_bit();
Expand Down