uvgVPCCenc 1.2.0
uvgVPCCenc is an open-source real-time V-PCC encoder library written in C++ from scratch.
Loading...
Searching...
No Matches
Classes | Typedefs | Enumerations | Functions | Variables
uvgv3cbitstream Namespace Reference

Classes

struct  atlas_frame_parameter_set
 
struct  atlas_frame_tile_information
 
struct  atlas_sequence_parameter_set
 
struct  atlas_tile_data_unit
 
struct  atlas_tile_header
 
struct  atlas_tile_layer_rbsp
 
struct  AtlasContext
 
struct  attribute_information
 
struct  bitstream_t
 
struct  eom_patch_data_unit
 
struct  geometry_information
 
struct  inter_patch_data_unit
 
struct  merge_patch_data_unit
 
struct  nal_info
 
struct  occupancy_information
 
struct  patch_data_unit
 
struct  patch_information_data
 
struct  plr_data
 
struct  profile_tier_level
 
struct  profile_toolset_constraints_information
 
struct  raw_patch_data_unit
 
struct  ref_list_struct
 
struct  SerializedUnit
 
struct  skip_patch_data_unit
 
struct  uvg_data_chunk
 
struct  v3c_unit
 One complete V3C unit, including the V3C unit header. More...
 
struct  v3c_unit_batch
 One GOF-worth of ordered V3C units emitted by the encoder. More...
 
struct  v3c_unit_stream
 
struct  V3cGof
 
struct  Vps
 

Typedefs

typedef struct uvgv3cbitstream::uvg_data_chunk uvg_data_chunk
 
typedef struct uvgv3cbitstream::bitstream_t bitstream_t
 

Enumerations

enum  APM {
  I_INTRA = 0 , P_SKIP = 0 , I_RAW = 1 , P_MERGE = 1 ,
  I_EOM = 2 , P_INTER = 2 , P_INTRA = 3 , P_RAW = 4 ,
  P_EOM = 5 , I_END = 14 , P_END = 14
}
 
enum  ATH { P_TILE = 0 , I_TILE = 1 , SKIP_TILE = 2 }
 
enum  ATI {
  ATTR_TEXTURE = 0 , ATTR_MATERIAL_ID = 1 , ATTR_TRANSPARENCY = 2 , ATTR_REFLECTANCE = 3 ,
  ATTR_NORMAL = 4 , ATTR_UNSPECIFIED = 15
}
 
enum  CGI {
  AVC_Progressive_High = 0 , HEVC_Main_10 = 1 , HEVC_Main_4_4_4_10 = 2 , VVC_Main_10 = 3 ,
  HEVC_Main = 4 , MP4RA = 127
}
 
enum  FPO {
  FPO_NULL = 0 , FPO_MROT270 = 1 , FPO_SWAP = 1 , FPO_ROT90 = 2 ,
  FPO_ROT180 = 3 , FPO_ROT270 = 4 , FPO_MIRROR = 5 , FPO_MROT90 = 6 ,
  FPO_MROT180 = 7
}
 
enum  LI {
  Level_1_0 = 30 , Level_1_1 = 33 , Level_1_5 = 45 , Level_2_0 = 60 ,
  Level_2_1 = 63 , Level_2_2 = 66 , Level_2_5 = 75 , Level_3_0 = 90 ,
  Level_3_1 = 93 , Level_3_2 = 96 , Level_3_5 = 105 , Level_4_0 = 120 ,
  Level_4_1 = 123 , Level_4_2 = 126 , Level_4_5 = 135 , Level_8_5 = 255
}
 
enum  MDI {
  max_1 = 0 , max_2 = 1 , max_3 = 2 , max_4 = 3 ,
  max_6 = 4 , max_12 = 5 , max_16 = 6 , max_24 = 7 ,
  max_32 = 8 , unconstrained = 15
}
 
enum  NAL {
  NAL_TRAIL_N = 0 , NAL_TRAIL_R = 1 , NAL_TSA_N = 2 , NAL_TSA_R = 3 ,
  NAL_STSA_N = 4 , NAL_STSA_R = 5 , NAL_RADL_N = 6 , NAL_RADL_R = 7 ,
  NAL_RASL_N = 8 , NAL_RASL_R = 9 , NAL_SKIP_N = 10 , NAL_SKIP_R = 11 ,
  NAL_RSV_ACL_N12 = 12 , NAL_RSV_ACL_R13 = 13 , NAL_RSV_ACL_N14 = 14 , NAL_RSV_ACL_R15 = 15 ,
  NAL_BLA_W_LP = 16 , NAL_BLA_W_RADL = 17 , NAL_BLA_N_LP = 18 , NAL_GBLA_W_LP = 19 ,
  NAL_GBLA_W_RADL = 20 , NAL_GBLA_N_LP = 21 , NAL_IDR_W_RADL = 22 , NAL_IDR_N_LP = 23 ,
  NAL_GIDR_W_RADL = 24 , NAL_GIDR_N_LP = 25 , NAL_CRA = 26 , NAL_GCRA = 27 ,
  NAL_RSV_IRAP_ACL_28 = 28 , NAL_RSV_IRAP_ACL_29 = 29 , NAL_RSV_ACL_30 = 30 , NAL_RSV_ACL_31 = 31 ,
  NAL_RSV_ACL_32 = 32 , NAL_RSV_ACL_33 = 33 , NAL_RSV_ACL_34 = 34 , NAL_RSV_ACL_35 = 35 ,
  NAL_ASPS = 36 , NAL_AFPS = 37 , NAL_AUD = 38 , NAL_V3C_AUD = 39 ,
  NAL_EOS = 40 , NAL_EOB = 41 , NAL_FD = 42 , NAL_PREFIX_NSEI = 43 ,
  NAL_SUFFIX_NSEI = 44 , NAL_PREFIX_ESEI = 45 , NAL_SUFFIX_ESEI = 46 , NAL_AAPS = 47 ,
  NAL_CASPS = 48 , NAL_CAF_IDR = 49 , NAL_CAF_TRAIL = 50 , NAL_RSV_NACL_51 = 51 ,
  NAL_RSV_NACL_52 = 52 , NAL_RSV_NACL_53 = 53 , NAL_RSV_NACL_54 = 54 , NAL_RSV_NACL_55 = 55 ,
  NAL_UNSPEC_56 = 56 , NAL_UNSPEC_57 = 57 , NAL_UNSPEC_58 = 58 , NAL_UNSPEC_59 = 59 ,
  NAL_UNSPEC_60 = 60 , NAL_UNSPEC_61 = 61 , NAL_UNSPEC_62 = 62 , NAL_UNSPEC_63 = 63
}
 
enum  TSI {
  V_PCC_Basic = 0 , V_PCC_Extended = 1 , MIV_Main = 64 , MIV_Extended = 65 ,
  MIV_Geometry_Absent = 66 , MIV_2 = 67 , MIV_Simple_MPI = 68
}
 
enum  VUT {
  V3C_VPS = 0 , V3C_AD = 1 , V3C_OVD = 2 , V3C_GVD = 3 ,
  V3C_AVD = 4 , V3C_PVD = 5 , V3C_CAD = 6 , V3C_BMD = 7 ,
  V3C_ADD = 8
}
 

Functions

void uvg_bitstream_init (bitstream_t *stream)
 
uvg_data_chunkuvg_bitstream_alloc_chunk ()
 
void uvg_bitstream_free_chunks (uvg_data_chunk *chunk)
 
void uvg_bitstream_writebyte (bitstream_t *stream, uint8_t byte)
 
void uvg_bitstream_put (bitstream_t *stream, uint32_t data, uint8_t bits)
 
uvg_data_chunkuvg_bitstream_take_chunks (bitstream_t *stream)
 
void uvg_bitstream_finalize (bitstream_t *stream)
 
void uvg_bitstream_clear (bitstream_t *stream)
 
uint64_t uvg_bitstream_tell (const bitstream_t *stream)
 
void uvg_bitstream_put_ue (bitstream_t *stream, uint32_t code_num)
 
size_t uvg_calculate_ue_len (uint32_t number)
 
void uvg_bitstream_add_rbsp_trailing_bits (bitstream_t *stream)
 
void uvg_bitstream_align (bitstream_t *stream)
 
void uvg_bitstream_move (bitstream_t *dst, bitstream_t *src)
 
void uvg_bitstream_copy_bytes (bitstream_t *stream, const uint8_t *bytes, uint32_t len)
 
uint32_t uvg_bitstream_peek_last_byte (bitstream_t *stream)
 
void prepareAtlasContext (AtlasContext &atlas)
 
bool writeVps (bitstream_t *stream, const Vps &vps)
 
void writeAtlasSubBitstream (bitstream_t *stream, const AtlasContext &atlas)
 
void writeAtlasParameterSetNals (bitstream_t *stream, const AtlasContext &atlas)
 
void writeAtlasNal (bitstream_t *stream, const AtlasContext &atlas, size_t index)
 
void writeAtlasEob (bitstream_t *stream, const AtlasContext &atlas)
 
std::vector< SerializedUnitwriteV3cUnits (const V3cGof &gof)
 
std::vector< SerializedUnitwriteV3cLdUnits (const V3cGof &gof, const std::vector< nal_info > &ovd_nals, const std::vector< nal_info > &gvd_nals, const std::vector< nal_info > &avd_nals, bool double_layer)
 

Variables

constexpr int64_t VPS_EXT_MIV = 2
 
constexpr int64_t VPS_EXT_MIV_2 = 3
 
constexpr int64_t VPS_EXT_PACKED = 1
 
constexpr int64_t VPS_EXT_VDMC = 4
 

Typedef Documentation

◆ bitstream_t

◆ uvg_data_chunk

Enumeration Type Documentation

◆ APM

Enumerator
I_INTRA 
P_SKIP 
I_RAW 
P_MERGE 
I_EOM 
P_INTER 
P_INTRA 
P_RAW 
P_EOM 
I_END 
P_END 

◆ ATH

Enumerator
P_TILE 
I_TILE 
SKIP_TILE 

◆ ATI

Enumerator
ATTR_TEXTURE 
ATTR_MATERIAL_ID 
ATTR_TRANSPARENCY 
ATTR_REFLECTANCE 
ATTR_NORMAL 
ATTR_UNSPECIFIED 

◆ CGI

Enumerator
AVC_Progressive_High 
HEVC_Main_10 
HEVC_Main_4_4_4_10 
VVC_Main_10 
HEVC_Main 
MP4RA 

◆ FPO

Enumerator
FPO_NULL 
FPO_MROT270 
FPO_SWAP 
FPO_ROT90 
FPO_ROT180 
FPO_ROT270 
FPO_MIRROR 
FPO_MROT90 
FPO_MROT180 

◆ LI

Enumerator
Level_1_0 
Level_1_1 
Level_1_5 
Level_2_0 
Level_2_1 
Level_2_2 
Level_2_5 
Level_3_0 
Level_3_1 
Level_3_2 
Level_3_5 
Level_4_0 
Level_4_1 
Level_4_2 
Level_4_5 
Level_8_5 

◆ MDI

Enumerator
max_1 
max_2 
max_3 
max_4 
max_6 
max_12 
max_16 
max_24 
max_32 
unconstrained 

◆ NAL

Enumerator
NAL_TRAIL_N 
NAL_TRAIL_R 
NAL_TSA_N 
NAL_TSA_R 
NAL_STSA_N 
NAL_STSA_R 
NAL_RADL_N 
NAL_RADL_R 
NAL_RASL_N 
NAL_RASL_R 
NAL_SKIP_N 
NAL_SKIP_R 
NAL_RSV_ACL_N12 
NAL_RSV_ACL_R13 
NAL_RSV_ACL_N14 
NAL_RSV_ACL_R15 
NAL_BLA_W_LP 
NAL_BLA_W_RADL 
NAL_BLA_N_LP 
NAL_GBLA_W_LP 
NAL_GBLA_W_RADL 
NAL_GBLA_N_LP 
NAL_IDR_W_RADL 
NAL_IDR_N_LP 
NAL_GIDR_W_RADL 
NAL_GIDR_N_LP 
NAL_CRA 
NAL_GCRA 
NAL_RSV_IRAP_ACL_28 
NAL_RSV_IRAP_ACL_29 
NAL_RSV_ACL_30 
NAL_RSV_ACL_31 
NAL_RSV_ACL_32 
NAL_RSV_ACL_33 
NAL_RSV_ACL_34 
NAL_RSV_ACL_35 
NAL_ASPS 
NAL_AFPS 
NAL_AUD 
NAL_V3C_AUD 
NAL_EOS 
NAL_EOB 
NAL_FD 
NAL_PREFIX_NSEI 
NAL_SUFFIX_NSEI 
NAL_PREFIX_ESEI 
NAL_SUFFIX_ESEI 
NAL_AAPS 
NAL_CASPS 
NAL_CAF_IDR 
NAL_CAF_TRAIL 
NAL_RSV_NACL_51 
NAL_RSV_NACL_52 
NAL_RSV_NACL_53 
NAL_RSV_NACL_54 
NAL_RSV_NACL_55 
NAL_UNSPEC_56 
NAL_UNSPEC_57 
NAL_UNSPEC_58 
NAL_UNSPEC_59 
NAL_UNSPEC_60 
NAL_UNSPEC_61 
NAL_UNSPEC_62 
NAL_UNSPEC_63 

◆ TSI

Enumerator
V_PCC_Basic 
V_PCC_Extended 
MIV_Main 
MIV_Extended 
MIV_Geometry_Absent 
MIV_2 
MIV_Simple_MPI 

◆ VUT

Enumerator
V3C_VPS 
V3C_AD 
V3C_OVD 
V3C_GVD 
V3C_AVD 
V3C_PVD 
V3C_CAD 
V3C_BMD 
V3C_ADD 

Function Documentation

◆ prepareAtlasContext()

void uvgv3cbitstream::prepareAtlasContext ( AtlasContext atlas)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ uvg_bitstream_add_rbsp_trailing_bits()

void uvgv3cbitstream::uvg_bitstream_add_rbsp_trailing_bits ( bitstream_t stream)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ uvg_bitstream_align()

void uvgv3cbitstream::uvg_bitstream_align ( bitstream_t stream)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ uvg_bitstream_alloc_chunk()

uvg_data_chunk * uvgv3cbitstream::uvg_bitstream_alloc_chunk ( )
Here is the caller graph for this function:

◆ uvg_bitstream_clear()

void uvgv3cbitstream::uvg_bitstream_clear ( bitstream_t stream)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ uvg_bitstream_copy_bytes()

void uvgv3cbitstream::uvg_bitstream_copy_bytes ( bitstream_t stream,
const uint8_t *  bytes,
uint32_t  len 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ uvg_bitstream_finalize()

void uvgv3cbitstream::uvg_bitstream_finalize ( bitstream_t stream)
Here is the call graph for this function:

◆ uvg_bitstream_free_chunks()

void uvgv3cbitstream::uvg_bitstream_free_chunks ( uvg_data_chunk chunk)
Here is the caller graph for this function:

◆ uvg_bitstream_init()

void uvgv3cbitstream::uvg_bitstream_init ( bitstream_t stream)
Here is the caller graph for this function:

◆ uvg_bitstream_move()

void uvgv3cbitstream::uvg_bitstream_move ( bitstream_t dst,
bitstream_t src 
)
Here is the call graph for this function:

◆ uvg_bitstream_peek_last_byte()

uint32_t uvgv3cbitstream::uvg_bitstream_peek_last_byte ( bitstream_t stream)

◆ uvg_bitstream_put()

void uvgv3cbitstream::uvg_bitstream_put ( bitstream_t stream,
uint32_t  data,
uint8_t  bits 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ uvg_bitstream_put_ue()

void uvgv3cbitstream::uvg_bitstream_put_ue ( bitstream_t stream,
uint32_t  code_num 
)
Here is the call graph for this function:

◆ uvg_bitstream_take_chunks()

uvg_data_chunk * uvgv3cbitstream::uvg_bitstream_take_chunks ( bitstream_t stream)

◆ uvg_bitstream_tell()

uint64_t uvgv3cbitstream::uvg_bitstream_tell ( const bitstream_t stream)
Here is the caller graph for this function:

◆ uvg_bitstream_writebyte()

void uvgv3cbitstream::uvg_bitstream_writebyte ( bitstream_t stream,
uint8_t  byte 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ uvg_calculate_ue_len()

size_t uvgv3cbitstream::uvg_calculate_ue_len ( uint32_t  number)
Here is the caller graph for this function:

◆ writeAtlasEob()

void uvgv3cbitstream::writeAtlasEob ( bitstream_t stream,
const AtlasContext atlas 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeAtlasNal()

void uvgv3cbitstream::writeAtlasNal ( bitstream_t stream,
const AtlasContext atlas,
size_t  index 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeAtlasParameterSetNals()

void uvgv3cbitstream::writeAtlasParameterSetNals ( bitstream_t stream,
const AtlasContext atlas 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeAtlasSubBitstream()

void uvgv3cbitstream::writeAtlasSubBitstream ( bitstream_t stream,
const AtlasContext atlas 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeV3cLdUnits()

std::vector< SerializedUnit > uvgv3cbitstream::writeV3cLdUnits ( const V3cGof gof,
const std::vector< nal_info > &  ovd_nals,
const std::vector< nal_info > &  gvd_nals,
const std::vector< nal_info > &  avd_nals,
bool  double_layer 
)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeV3cUnits()

std::vector< SerializedUnit > uvgv3cbitstream::writeV3cUnits ( const V3cGof gof)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ writeVps()

bool uvgv3cbitstream::writeVps ( bitstream_t stream,
const Vps vps 
)
Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ VPS_EXT_MIV

constexpr int64_t uvgv3cbitstream::VPS_EXT_MIV = 2
constexpr

◆ VPS_EXT_MIV_2

constexpr int64_t uvgv3cbitstream::VPS_EXT_MIV_2 = 3
constexpr

◆ VPS_EXT_PACKED

constexpr int64_t uvgv3cbitstream::VPS_EXT_PACKED = 1
constexpr

◆ VPS_EXT_VDMC

constexpr int64_t uvgv3cbitstream::VPS_EXT_VDMC = 4
constexpr