uvgVPCCenc 1.0.0
uvgVPCCenc is an open-source real-time V-PCC encoder library written in C++ from scratch.
Loading...
Searching...
No Matches
atlas_frame.hpp
Go to the documentation of this file.
1/*****************************************************************************
2 * This file is part of uvgVPCCenc V-PCC encoder.
3 *
4 * Copyright (c) 2024, Tampere University, ITU/ISO/IEC, project contributors
5 * All rights reserved.
6 *
7 * Redistribution and use in source and binary forms, with or without modification,
8 * are permitted provided that the following conditions are met:
9 *
10 * * Redistributions of source code must retain the above copyright notice, this
11 * list of conditions and the following disclaimer.
12 *
13 * * Redistributions in binary form must reproduce the above copyright notice, this
14 * list of conditions and the following disclaimer in the documentation and/or
15 * other materials provided with the distribution.
16 *
17 * * Neither the name of the Tampere University or ITU/ISO/IEC nor the names of its
18 * contributors may be used to endorse or promote products derived from
19 * this software without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
23 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
24 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
25 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
26 * INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND ON
28 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
29 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30 * INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS
31 ****************************************************************************/
32
33#pragma once
34
35#include <cmath>
36
37#include "bitstream_common.hpp"
38#include "uvgvpcc/uvgvpcc.hpp"
39
41 uint8_t num_ref_entries = 0;
42 std::vector<bool> st_ref_atlas_frame_flag = {};
43 std::vector<uint8_t> abs_delta_afoc_st = {};
44 std::vector<bool> straf_entry_sign_flag = {};
45 std::vector<uint8_t> afoc_lsb_lt = {};
46};
47
70
71struct plr_data {};
72
74 // from spec
75 size_t pdu_2d_pos_x = 0;
76 size_t pdu_2d_pos_y = 0;
79 size_t pdu_3d_offset_u = 0;
80 size_t pdu_3d_offset_v = 0;
81 size_t pdu_3d_offset_d = 0;
82 size_t pdu_3d_range_d = 0;
89};
95
108
110 // from specification
111 std::vector<patch_information_data> patch_information_data_;
112};
113
118
140
155
158 uint16_t asps_frame_width = 0;
159 uint16_t asps_frame_height = 0;
166
167 std::vector<ref_list_struct> ref_lists;
168
190
193};
ATH_TYPE
Definition bitstream_common.hpp:78
Definition atlas_frame.hpp:141
bool afps_miv_extension_present_flag
Definition atlas_frame.hpp:151
atlas_frame_tile_information afti
Definition atlas_frame.hpp:144
bool afps_raw_3d_offset_bit_count_explicit_mode_flag
Definition atlas_frame.hpp:149
uint8_t afps_atlas_sequence_parameter_set_id
Definition atlas_frame.hpp:143
uint8_t afps_atlas_frame_parameter_set_id
Definition atlas_frame.hpp:142
uint8_t afps_extension_7bits
Definition atlas_frame.hpp:152
uint8_t afps_additional_lt_afoc_lsb_len
Definition atlas_frame.hpp:147
bool afps_output_flag_present_flag
Definition atlas_frame.hpp:145
uint8_t afps_num_ref_idx_default_active_minus1
Definition atlas_frame.hpp:146
bool afps_extension_data_flag
Definition atlas_frame.hpp:153
bool afps_lod_mode_enabled_flag
Definition atlas_frame.hpp:148
bool afps_extension_present_flag
Definition atlas_frame.hpp:150
Definition atlas_frame.hpp:119
std::vector< uint32_t > afti_partition_column_width_minus1
Definition atlas_frame.hpp:126
bool afti_single_tile_in_atlas_frame_flag
Definition atlas_frame.hpp:120
uint32_t afti_signalled_tile_id_length_minus1
Definition atlas_frame.hpp:137
uint32_t afti_partition_cols_width_minus1
Definition atlas_frame.hpp:122
uint32_t afti_auxiliary_video_tile_row_width_minus1
Definition atlas_frame.hpp:134
std::vector< uint32_t > afti_partition_row_height_minus1
Definition atlas_frame.hpp:127
std::vector< uint32_t > afti_tile_id
Definition atlas_frame.hpp:138
std::vector< uint32_t > afti_auxiliary_video_tile_row_height
Definition atlas_frame.hpp:135
std::vector< uint32_t > afti_bottom_right_partition_row_offset
Definition atlas_frame.hpp:133
uint32_t afti_num_tiles_in_atlas_frame_minus1
Definition atlas_frame.hpp:129
bool afti_uniform_partition_spacing_flag
Definition atlas_frame.hpp:121
std::vector< uint32_t > afti_bottom_right_partition_column_offset
Definition atlas_frame.hpp:132
uint32_t afti_num_partition_rows_minus1
Definition atlas_frame.hpp:125
std::vector< uint32_t > afti_top_left_partition_idx
Definition atlas_frame.hpp:131
bool afti_signalled_tile_id_flag
Definition atlas_frame.hpp:136
bool afti_single_partition_per_tile_flag
Definition atlas_frame.hpp:128
uint32_t afti_num_partition_columns_minus1
Definition atlas_frame.hpp:124
uint32_t afti_partition_rows_height_minus1
Definition atlas_frame.hpp:123
Definition atlas_frame.hpp:156
bool asps_vpcc_extension_present_flag
Definition atlas_frame.hpp:187
uint8_t asps_eom_fix_bit_count_minus1
Definition atlas_frame.hpp:182
uint8_t asps_max_dec_atlas_frame_buffering_minus1
Definition atlas_frame.hpp:163
bool asps_pixel_deinterleaving_enabled_flag
Definition atlas_frame.hpp:178
uint8_t asps_log2_max_atlas_frame_order_cnt_lsb_minus4
Definition atlas_frame.hpp:162
bool asps_normal_axis_max_delta_value_enabled_flag
Definition atlas_frame.hpp:173
bool asps_vpcc_remove_duplicate_point_enabled_flag
Definition atlas_frame.hpp:191
uint8_t asps_map_count_minus1
Definition atlas_frame.hpp:177
bool asps_use_eight_orientations_flag
Definition atlas_frame.hpp:169
uint8_t asps_log2_patch_packing_block_size
Definition atlas_frame.hpp:175
uint16_t asps_frame_height
Definition atlas_frame.hpp:159
bool asps_vui_parameters_present_flag
Definition atlas_frame.hpp:185
std::vector< ref_list_struct > ref_lists
Definition atlas_frame.hpp:167
bool asps_miv_extension_present_flag
Definition atlas_frame.hpp:188
uint8_t asps_geometry_2d_bit_depth_minus1
Definition atlas_frame.hpp:161
bool asps_auxiliary_video_enabled_flag
Definition atlas_frame.hpp:183
bool asps_patch_size_quantizer_present_flag
Definition atlas_frame.hpp:176
uint8_t asps_num_ref_atlas_frame_lists_in_asps
Definition atlas_frame.hpp:165
bool asps_normal_axis_limits_quantization_enabled_flag
Definition atlas_frame.hpp:172
std::vector< bool > asps_map_pixel_deinterleaving_flag
Definition atlas_frame.hpp:179
uint16_t asps_vpcc_surface_thickness_minus1
Definition atlas_frame.hpp:192
size_t asps_max_number_projections_minus1
Definition atlas_frame.hpp:171
uint8_t asps_atlas_sequence_parameter_set_id
Definition atlas_frame.hpp:157
bool asps_plr_enabled_flag
Definition atlas_frame.hpp:184
uint8_t asps_extension_6bits
Definition atlas_frame.hpp:189
bool asps_patch_precedence_order_flag
Definition atlas_frame.hpp:174
bool asps_eom_patch_enabled_flag
Definition atlas_frame.hpp:181
uint16_t asps_frame_width
Definition atlas_frame.hpp:158
bool asps_long_term_ref_atlas_frames_flag
Definition atlas_frame.hpp:164
bool asps_extension_present_flag
Definition atlas_frame.hpp:186
uint8_t asps_geometry_3d_bit_depth_minus1
Definition atlas_frame.hpp:160
bool asps_raw_patch_enabled_flag
Definition atlas_frame.hpp:180
bool asps_extended_projection_enabled_flag
Definition atlas_frame.hpp:170
Definition atlas_frame.hpp:109
std::vector< patch_information_data > patch_information_data_
Definition atlas_frame.hpp:111
Definition atlas_frame.hpp:48
std::vector< uint8_t > ath_additional_afoc_lsb_val
Definition atlas_frame.hpp:61
ref_list_struct refs
Definition atlas_frame.hpp:58
uint16_t ath_atlas_frame_parameter_set_id
Definition atlas_frame.hpp:51
uint8_t ath_patch_size_y_info_quantizer
Definition atlas_frame.hpp:65
uint16_t ath_atlas_adaptation_parameter_set_id
Definition atlas_frame.hpp:52
bool ath_num_ref_idx_active_override_flag
Definition atlas_frame.hpp:67
uint8_t ath_pos_min_d_quantizer
Definition atlas_frame.hpp:62
bool ath_ref_atlas_frame_list_asps_flag
Definition atlas_frame.hpp:57
uint8_t ath_patch_size_x_info_quantizer
Definition atlas_frame.hpp:64
std::vector< bool > ath_additional_afoc_lsb_present_flag
Definition atlas_frame.hpp:60
uint16_t ath_id
Definition atlas_frame.hpp:53
bool ath_atlas_output_flag
Definition atlas_frame.hpp:55
ATH_TYPE ath_type
Definition atlas_frame.hpp:54
uint8_t ath_pos_delta_max_d_quantizer
Definition atlas_frame.hpp:63
size_t ath_atlas_frm_order_cnt_lsb
Definition atlas_frame.hpp:56
uint8_t ath_ref_atlas_frame_list_idx
Definition atlas_frame.hpp:59
uint8_t ath_num_ref_idx_active_minus1
Definition atlas_frame.hpp:68
uint8_t ath_raw_3d_offset_axis_bit_count_minus1
Definition atlas_frame.hpp:66
bool ath_no_output_of_prior_atlas_frames_flag
Definition atlas_frame.hpp:50
Definition atlas_frame.hpp:114
atlas_tile_header ath_
Definition atlas_frame.hpp:115
atlas_tile_data_unit atdu_
Definition atlas_frame.hpp:116
Definition atlas_frame.hpp:94
Definition atlas_frame.hpp:90
Definition atlas_frame.hpp:91
Definition atlas_frame.hpp:73
uint8_t pdu_lod_scale_x_minus1
Definition atlas_frame.hpp:86
size_t pdu_projection_id
Definition atlas_frame.hpp:83
bool pdu_lod_enabled_flag
Definition atlas_frame.hpp:85
plr_data plr_data_
Definition atlas_frame.hpp:88
uint64_t pdu_2d_size_y_minus1
Definition atlas_frame.hpp:78
size_t pdu_2d_pos_y
Definition atlas_frame.hpp:76
uint64_t pdu_2d_size_x_minus1
Definition atlas_frame.hpp:77
size_t pdu_3d_range_d
Definition atlas_frame.hpp:82
size_t pdu_3d_offset_v
Definition atlas_frame.hpp:80
uint8_t pdu_lod_scale_y_idc
Definition atlas_frame.hpp:87
size_t pdu_orientation_index
Definition atlas_frame.hpp:84
size_t pdu_3d_offset_u
Definition atlas_frame.hpp:79
size_t pdu_3d_offset_d
Definition atlas_frame.hpp:81
size_t pdu_2d_pos_x
Definition atlas_frame.hpp:75
Definition atlas_frame.hpp:96
skip_patch_data_unit skip_patch_data_unit_
Definition atlas_frame.hpp:104
eom_patch_data_unit eom_patch_data_unit_
Definition atlas_frame.hpp:106
merge_patch_data_unit merge_patch_data_unit_
Definition atlas_frame.hpp:103
raw_patch_data_unit raw_patch_data_unit_
Definition atlas_frame.hpp:105
uint8_t patchMode
Definition atlas_frame.hpp:98
patch_data_unit patch_data_unit_
Definition atlas_frame.hpp:101
inter_patch_data_unit inter_patch_data_unit_
Definition atlas_frame.hpp:102
Definition atlas_frame.hpp:71
Definition atlas_frame.hpp:93
Definition atlas_frame.hpp:40
std::vector< bool > straf_entry_sign_flag
Definition atlas_frame.hpp:44
std::vector< bool > st_ref_atlas_frame_flag
Definition atlas_frame.hpp:42
uint8_t num_ref_entries
Definition atlas_frame.hpp:41
std::vector< uint8_t > abs_delta_afoc_st
Definition atlas_frame.hpp:43
std::vector< uint8_t > afoc_lsb_lt
Definition atlas_frame.hpp:45
Definition atlas_frame.hpp:92