Cogs.Core
H265Data.h
1#pragma once
2
3#include "Base.h"
4
5#include <stdint.h>
6#include <stddef.h>
7#include <string>
8
9namespace Cogs::Core{
10
12 uint8_t forbidden_zero_bit : 1;
13 uint8_t type : 6;
14 uint8_t layerId0 : 1;
15 uint8_t layerId1 : 5;
16 uint8_t TID : 3;
17
18 void COGSCORE_DLL_API print();
19};
20static_assert(sizeof(H265NALheader) == 2, "H265NALHeader size");
21
23 uint32_t profilePresentFlag;
24 uint32_t maxNumSubLayersMinus1;
25
26 uint32_t general_profile_space;
27 uint32_t general_tier_flag;
28 uint32_t general_profile_idc;
29
30 uint32_t general_profile_compatibility_flags;
31
32 uint32_t general_progressive_source_flag;
33 uint32_t general_interlaced_source_glag;
34 uint32_t general_non_packed_constraint_flag;
35 uint32_t general_frame_only_constraint_flag;
36
37 uint32_t general_max_12bit_constraint_flag;
38 uint32_t general_max_10bit_constraint_flag;
39 uint32_t general_max_8bit_constraint_flag;
40 uint32_t general_max_422chroma_constraint_flag;
41 uint32_t general_max_420chroma_constraint_flag;
42 uint32_t general_max_monochrome_constraint_flag;
43 uint32_t general_intra_constraint_flag;
44 uint32_t general_on_picture_only_constraint_flag;
45 uint32_t general_lower_bit_rate_constraint_flag;
46
47 uint32_t general_max_14bit_constraint_flag;
48
49 uint32_t general_one_picture_only_constraint_flag;
50
51 uint32_t general_inbld_flag;
52
53 uint32_t general_level_idc;
54
55 uint32_t sub_layer_profile_present_flag[8];
56 uint32_t sub_layer_level_present_flag[8];
57
58 uint32_t sub_layer_profile_space[8];
59 uint32_t sub_layer_tier_flag[8];
60 uint32_t sub_layer_profile_idc[8];
61
62 uint32_t sub_layer_profile_compatibility_flags[8];
63
64 uint32_t sub_layer_progressive_source_flag[8];
65 uint32_t sub_layer_interlaced_source_flag[8];
66 uint32_t sub_layer_non_packed_constraint_flag[8];
67 uint32_t sub_layer_frame_only_constraint_flag[8];
68
69 uint32_t sub_layer_max_12bit_constraint_flag[8];
70 uint32_t sub_layer_max_10bit_constraint_flag[8];
71 uint32_t sub_layer_max_8bit_constraint_flag[8];
72 uint32_t sub_layer_max_422chroma_constraint_flag[8];
73 uint32_t sub_layer_max_420chroma_constraint_flag[8];
74 uint32_t sub_layer_max_monochrome_constraint_flag[8];
75 uint32_t sub_layer_intra_constraint_flag[8];
76 uint32_t sub_layer_one_picture_only_constraint_flag[8];
77 uint32_t sub_layer_lower_bit_rate_constraint_flag[8];
78
79 uint32_t sub_layer_max_14bit_constraint_flag[8];
80
81 uint32_t sub_layer_inbld_flag[8];
82
83 uint32_t sub_layer_level_idc[8];
84
85 void COGSCORE_DLL_API print();
86};
87
89 uint32_t vps_video_parameter_set_id;
90 uint32_t vps_base_layer_internal_flag;
91 uint32_t vps_base_layer_available_flag;
92 uint32_t vps_max_layers_minus1;
93 uint32_t vps_max_sub_layers_minus1;
94 uint32_t vps_temporal_id_nesting_flag;
95
97
98 uint32_t vps_sub_layer_ordering_info_present_flag;
99 uint32_t vps_max_dec_pic_buffering_minus1[64];
100 uint32_t vps_max_num_reorder_pics[64];
101 uint32_t vps_max_latency_increase_plus1[64];
102
103 uint32_t vps_max_layer_id;
104 uint32_t vps_num_layer_sets_minus1;
105 // uint32_t layer_id_included_flag[][64]; // TODO
106
107 uint32_t vps_timing_info_present_flag;
108 uint32_t vps_num_units_in_tick;
109 uint32_t vps_time_scale;
110 uint32_t vps_poc_proportional_to_timing_flag;
111 uint32_t vps_num_ticks_poc_diff_one_minus1;
112 uint32_t vps_num_hrd_parameters;
113 uint32_t hrd_layer_set_idx[64];
114 uint32_t cprms_present_flag[64];
115
116 // hrd_parameters
117
118 void COGSCORE_DLL_API print();
119};
120
122 uint32_t sps_video_parameter_set_id;
123 uint32_t sps_max_sub_layers_minus1;
124 uint32_t sps_temporal_id_nesting_flag;
125
127
128 uint32_t sps_seq_parameter_set_id;
129 uint32_t chroma_format_idc;
130 uint32_t separate_colour_plane_flag;
131 uint32_t pic_width_in_luma_samples;
132 uint32_t pic_height_in_luma_samples;
133 uint32_t conformance_window_flag;
134
135 uint32_t conf_win_left_offset;
136 uint32_t conf_win_right_offset;
137 uint32_t conf_win_top_offset;
138 uint32_t conf_win_bottom_offset;
139
140 uint32_t bit_depth_luma_minus8;
141 uint32_t bit_depth_chroma_minus8;
142 uint32_t log2_max_pic_order_cnt_lsb_minus4;
143 uint32_t sps_sub_layer_ordering_info_present_flag;
144
145 uint32_t sps_max_dec_pic_buffering_minus1[9];
146 uint32_t sps_max_num_reorder_pics[9];
147 uint32_t sps_max_latency_increase_plus1[9];
148
149 uint32_t log2_min_luma_coding_block_size_minus3;
150 uint32_t log2_diff_max_min_luma_coding_block_size;
151 uint32_t log2_min_luma_transform_block_size_minus2;
152 uint32_t log2_diff_max_min_luma_transform_block_size;
153
154 uint32_t max_tranform_hierarchy_depth_inter;
155 uint32_t max_tranform_hierarchy_depth_intra;
156 uint32_t scaling_list_enabled_flag;
157 uint32_t sps_scaling_list_data_present_flag;
158 // scaling_list_data
159
160 uint32_t amp_enabled_flag;
161 uint32_t sample_adaptive_offset_enabled_flag;
162 uint32_t pcm_enabled_flag;
163 uint32_t pcm_sample_bit_depth_luma_minus1;
164 uint32_t pcm_sample_bit_depth_chroma_minus1;
165 uint32_t log2_min_pcm_luma_coding_block_size_minus3;
166 uint32_t log2_idff_max_min_pcm_luma_coding_block_size;
167 uint32_t pcm_loop_filter_disabled_flag;
168
169 uint32_t num_short_term_ref_pic_sets;
170 // st_ref_pic_set
171
172 uint32_t long_term_ref_pic_present_flag;
173 uint32_t num_long_term_ref_pics_sps;
174 uint32_t lt_ref_pic_poc_lsb_sps[32];
175 uint32_t used_by_cuff_pic_lt_sps_flag[32];
176
177 uint32_t sps_temporarl_mvp_enabled_flag;
178 uint32_t string_intra_smoothing_enabled_flag;
179
180 uint32_t vui_parameters_present_flag;
181 // vui_parameters
182
183 uint32_t sps_extension_present_flag;
184 uint32_t sps_range_extension_flag;
185 uint32_t sps_multilayer_extension_flag;
186 uint32_t sps_3d_extension_flag;
187 uint32_t sps_scc_extenion_flag;
188 uint32_t sps_extension_4bits;
189
190 // sps_range_extension
191 // sps_multilayer_extenssion_flag
192 // sps_3d_extension
193 // sps_scc_extension
194
195 void COGSCORE_DLL_API print();
196};
197
199 void COGSCORE_DLL_API print();
200};
201
203 // Sample Aspect Ratio (SAR) (Luma Samples)
204 uint32_t aspect_ratio_info_present;
205 uint32_t sar_width;
206 uint32_t sar_height;
207
208 // Overscan
209 uint32_t overscan_info_present_flag;
210 uint32_t overscan_appropriate_flag;
211
212 // Video Signal Type
213 uint32_t video_signal_type_present_flag;
214 uint32_t video_format;
215 uint32_t video_full_range_flag;
216 uint32_t colour_description_present_flag;
217 uint32_t colour_primaries;
218 uint32_t transfer_characteristics;
219 uint32_t matrix_coefficients;
220
221 // Chroma location info
222 uint32_t chroma_loc_info_present_flag;
223 uint32_t chroma_sample_loc_type_top_field;
224 uint32_t chroma_sample_loc_type_bottom_field;
225
226 uint32_t neutral_chroma_indication_flag;
227 uint32_t field_seq_flag;
228 uint32_t frame_field_info_present_flag;
229
230 // Default Display Window
231 uint32_t default_display_window_flag;
232 uint32_t def_disp_win_left_offset;
233 uint32_t def_disp_win_right_offset;
234 uint32_t def_disp_win_top_offset;
235 uint32_t def_disp_win_bottom_offset;
236
237 // Timing Information
238 uint32_t vui_timing_info_present_flag;
239 uint32_t vui_num_units_in_tick;
240 uint32_t vui_time_scale;
241 uint32_t vui_poc_proportional_to_timing_flag;
242 uint32_t vui_num_ticks_poc_diff_one_minus1;
243 uint32_t vui_hrd_parameters_present_flag;
244 // HrdParameters hrd; // TODO
245
246 // Bitstream restriction parameters
247 uint32_t bitstream_restriction_flag;
248 uint32_t tiles_fixed_structure_flag;
249 uint32_t motion_vectors_over_pic_boundaries_flag;
250 uint32_t restricted_ref_pic_lists_flag;
251 uint32_t min_spatial_segmentation_idc;
252 uint32_t max_bytes_per_pic_denom;
253 uint32_t max_bits_per_min_cu_denom;
254 uint32_t log2_max_mv_length_horizontal;
255 uint32_t log2_max_mv_length_vertical;
256
257 void COGSCORE_DLL_API print();
258};
259
261 H265NALheader header;
262 H265VideoParameterSet video_set;
263 H265SeqParameterSet seq_set;
264 H265PicParameterSet pic_set;
266};
267
268void COGSCORE_DLL_API video_parameter_set_nalu(H265ParseData &parse, const uint8_t *vps, size_t vps_size);
269void COGSCORE_DLL_API seq_parameter_set_nalu(H265ParseData &parse, const uint8_t *sps, size_t sps_size);
270void COGSCORE_DLL_API pic_parameter_set_nalu(H265ParseData &parse, const uint8_t *pps, size_t pps_size);
271
272void COGSCORE_DLL_API byte_stream_nal_unit(H265ParseData &parse, const uint8_t *data, size_t size);
273
274void COGSCORE_DLL_API extract_spspps(const uint8_t *data, size_t size, std::string &vps, std::string &sps, std::string &pps);
275
276bool COGSCORE_DLL_API extract_nalu_header(H265NALheader &header, const uint8_t *data, size_t /*size*/);
277
278}// namespace ...
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....