23static inline int floorLog2(uint32_t x) {
28 return 31 - __builtin_clz(x);
54#define UVG_DATA_CHUNK_SIZE 4096
60 std::unique_ptr<char[]>
data;
99 std::unique_ptr<Vps>
vps =
nullptr;
100 std::unique_ptr<AtlasContext>
atlas =
nullptr;
101 std::unique_ptr<std::vector<uint8_t>>
ovd =
nullptr;
102 std::unique_ptr<std::vector<uint8_t>>
gvd =
nullptr;
103 std::unique_ptr<std::vector<uint8_t>>
avd =
nullptr;
112static inline int ceilLog2(uint32_t x) {
return (x == 0) ? -1 : floorLog2(x - 1) + 1; }
135void writeAtlasNal(bitstream_t* stream,
const AtlasContext& atlas,
size_t index);
136void writeAtlasEob(bitstream_t* stream,
const AtlasContext& atlas);
138std::vector<SerializedUnit>
writeV3cLdUnits(
const V3cGof& gof,
const std::vector<nal_info>& ovd_nals,
const std::vector<nal_info>& gvd_nals,
139 const std::vector<nal_info>& avd_nals,
bool double_layer);
Definition jobManagement.hpp:72
uint64_t uvg_bitstream_tell(const bitstream_t *stream)
Definition v3cbitstream_bitstream.cpp:105
uvg_data_chunk * uvg_bitstream_alloc_chunk()
Definition v3cbitstream_bitstream.cpp:38
void uvg_bitstream_align(bitstream_t *stream)
Definition v3cbitstream_bitstream.cpp:130
void uvg_bitstream_init(bitstream_t *stream)
Definition v3cbitstream_bitstream.cpp:36
void writeAtlasEob(bitstream_t *stream, const AtlasContext &atlas)
Definition v3cbitstream_writer.cpp:418
void uvg_bitstream_copy_bytes(bitstream_t *stream, const uint8_t *bytes, uint32_t len)
Definition v3cbitstream_bitstream.cpp:155
void uvg_bitstream_clear(bitstream_t *stream)
Definition v3cbitstream_bitstream.cpp:100
uint32_t uvg_bitstream_peek_last_byte(bitstream_t *stream)
Definition v3cbitstream_bitstream.cpp:193
size_t uvg_calculate_ue_len(uint32_t number)
Definition v3cbitstream_bitstream.cpp:118
VUT
Definition const_defs.h:175
@ V3C_VPS
Definition const_defs.h:176
std::vector< SerializedUnit > 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)
Definition v3cbitstream_writer.cpp:459
void uvg_bitstream_put(bitstream_t *stream, uint32_t data, uint8_t bits)
Definition v3cbitstream_bitstream.cpp:73
uvg_data_chunk * uvg_bitstream_take_chunks(bitstream_t *stream)
Definition v3cbitstream_bitstream.cpp:87
void writeAtlasSubBitstream(bitstream_t *stream, const AtlasContext &atlas)
Definition v3cbitstream_writer.cpp:382
void uvg_bitstream_put_ue(bitstream_t *stream, uint32_t code_num)
Definition v3cbitstream_bitstream.cpp:109
std::vector< SerializedUnit > writeV3cUnits(const V3cGof &gof)
Definition v3cbitstream_writer.cpp:424
void uvg_bitstream_finalize(bitstream_t *stream)
Definition v3cbitstream_bitstream.cpp:95
void writeAtlasNal(bitstream_t *stream, const AtlasContext &atlas, size_t index)
Definition v3cbitstream_writer.cpp:411
bool writeVps(bitstream_t *stream, const Vps &vps)
Definition v3cbitstream_writer.cpp:255
void uvg_bitstream_move(bitstream_t *dst, bitstream_t *src)
Definition v3cbitstream_bitstream.cpp:136
void uvg_bitstream_free_chunks(uvg_data_chunk *chunk)
Definition v3cbitstream_bitstream.cpp:47
void uvg_bitstream_add_rbsp_trailing_bits(bitstream_t *stream)
Definition v3cbitstream_bitstream.cpp:123
void uvg_bitstream_writebyte(bitstream_t *stream, uint8_t byte)
Definition v3cbitstream_bitstream.cpp:55
void prepareAtlasContext(AtlasContext &atlas)
Definition v3cbitstream_writer.cpp:336
void writeAtlasParameterSetNals(bitstream_t *stream, const AtlasContext &atlas)
Definition v3cbitstream_writer.cpp:401
Definition v3cbitstream.hpp:106
VUT type
Definition v3cbitstream.hpp:107
std::unique_ptr< char[]> data
Definition v3cbitstream.hpp:109
size_t len
Definition v3cbitstream.hpp:108
Definition v3cbitstream.hpp:96
std::unique_ptr< std::vector< uint8_t > > ovd
Definition v3cbitstream.hpp:101
size_t n_frames
Definition v3cbitstream.hpp:98
std::unique_ptr< AtlasContext > atlas
Definition v3cbitstream.hpp:100
size_t gof_id
Definition v3cbitstream.hpp:97
std::unique_ptr< std::vector< uint8_t > > avd
Definition v3cbitstream.hpp:103
std::unique_ptr< std::vector< uint8_t > > gvd
Definition v3cbitstream.hpp:102
Definition v3cbitstream.hpp:83
uvg_data_chunk * last
Definition v3cbitstream.hpp:86
uint8_t data
Definition v3cbitstream.hpp:87
uint32_t len
Definition v3cbitstream.hpp:84
uvg_data_chunk * first
Definition v3cbitstream.hpp:85
uint8_t cur_bit
Definition v3cbitstream.hpp:88
Definition v3cbitstream.hpp:91
size_t location
Definition v3cbitstream.hpp:92
size_t size
Definition v3cbitstream.hpp:93
Definition v3cbitstream.hpp:77
struct uvg_data_chunk * next
Definition v3cbitstream.hpp:80
uint32_t len
Definition v3cbitstream.hpp:79
uint8_t data[UVG_DATA_CHUNK_SIZE]
Definition v3cbitstream.hpp:78
One GOF-worth of ordered V3C units emitted by the encoder.
Definition v3cbitstream.hpp:67
std::vector< v3c_unit > v3c_units
Definition v3cbitstream.hpp:68
Definition v3cbitstream.hpp:71
std::queue< v3c_unit_batch > v3c_unit_batches
Definition v3cbitstream.hpp:72
std::counting_semaphore available_chunks
Definition v3cbitstream.hpp:73
std::mutex io_mutex
Definition v3cbitstream.hpp:74
One complete V3C unit, including the V3C unit header.
Definition v3cbitstream.hpp:57
VUT type
Definition v3cbitstream.hpp:58
v3c_unit(VUT type, size_t len, std::unique_ptr< char[]> data)
Definition v3cbitstream.hpp:63
std::unique_ptr< char[]> data
Definition v3cbitstream.hpp:60
size_t len
Definition v3cbitstream.hpp:59
#define UVG_DATA_CHUNK_SIZE
Definition v3cbitstream.hpp:54