Cogs.Core
H265Data.cpp
1#include "H265Data.h"
2
3#include <assert.h>
4#include <stdio.h>
5
6namespace Cogs::Core{
7
8void H265ProfileTierLevel::print()
9{
10 printf("\n");
11 printf("ProfileTierLevel\n");
12 printf("profilePresentFlag %u\n", profilePresentFlag);
13 printf("maxNumSubLayersMinus1 %u\n", maxNumSubLayersMinus1);
14
15 if(profilePresentFlag){
16 printf("general_profile_space %u\n", general_profile_space);
17 printf("general_tier_flag %u\n", general_tier_flag);
18 printf("general_profile_idc %u\n", general_profile_idc);
19
20 printf("general_profile_compatibility_flags 0x%x\n", general_profile_compatibility_flags);
21
22 printf("general_progressive_source_flag %u\n", general_progressive_source_flag);
23 printf("general_interlaced_source_glag %u\n", general_interlaced_source_glag);
24 printf("general_non_packed_constraint_flag %u\n", general_non_packed_constraint_flag);
25 printf("general_frame_only_constraint_flag %u\n", general_frame_only_constraint_flag);
26
27 if(general_profile_idc == 4 || general_profile_compatibility_flags&(0x80000000>>4) ||
28 general_profile_idc == 5 || general_profile_compatibility_flags&(0x80000000>>5) ||
29 general_profile_idc == 6 || general_profile_compatibility_flags&(0x80000000>>6) ||
30 general_profile_idc == 7 || general_profile_compatibility_flags&(0x80000000>>7) ||
31 general_profile_idc == 8 || general_profile_compatibility_flags&(0x80000000>>8) ||
32 general_profile_idc == 9 || general_profile_compatibility_flags&(0x80000000>>9) ||
33 general_profile_idc == 10 || general_profile_compatibility_flags&(0x80000000>>10) ||
34 general_profile_idc == 11 || general_profile_compatibility_flags&(0x80000000>>11)){
35 printf("general_max_12bit_constraint_flag %u\n", general_max_12bit_constraint_flag);
36 printf("general_max_10bit_constraint_flag %u\n", general_max_10bit_constraint_flag);
37 printf("general_max_8bit_constraint_flag %u\n", general_max_8bit_constraint_flag);
38 printf("general_max_422chroma_constraint_flag %u\n", general_max_422chroma_constraint_flag);
39 printf("general_max_420chroma_constraint_flag %u\n", general_max_420chroma_constraint_flag);
40 printf("general_max_monochrome_constraint_flag %u\n", general_max_monochrome_constraint_flag);
41 printf("general_intra_constraint_flag %u\n", general_intra_constraint_flag);
42 printf("general_on_picture_only_constraint_flag %u\n", general_on_picture_only_constraint_flag);
43 printf("general_lower_bit_rate_constraint_flag %u\n", general_lower_bit_rate_constraint_flag);
44 if(general_profile_idc == 5 || general_profile_compatibility_flags&(0x80000000>>5) ||
45 general_profile_idc == 9 || general_profile_compatibility_flags&(0x80000000>>9) ||
46 general_profile_idc == 10 || general_profile_compatibility_flags&(0x80000000>>10) ||
47 general_profile_idc == 11 || general_profile_compatibility_flags&(0x80000000>>11)){
48 printf("general_max_14bit_constraint_flag %u\n", general_max_14bit_constraint_flag);
49 }
50 }
51 else if(general_profile_idc == 2 || general_profile_compatibility_flags&(0x80000000>>2)){
52 printf("general_one_picture_only_constraint_flag %u\n", general_one_picture_only_constraint_flag);
53 }
54 if(general_profile_idc == 1 || general_profile_compatibility_flags&(0x80000000>>1) ||
55 general_profile_idc == 2 || general_profile_compatibility_flags&(0x80000000>>2) ||
56 general_profile_idc == 3 || general_profile_compatibility_flags&(0x80000000>>3) ||
57 general_profile_idc == 4 || general_profile_compatibility_flags&(0x80000000>>4) ||
58 general_profile_idc == 5 || general_profile_compatibility_flags&(0x80000000>>5) ||
59 general_profile_idc == 9 || general_profile_compatibility_flags&(0x80000000>>9) ||
60 general_profile_idc == 11 || general_profile_compatibility_flags&(0x80000000>>11)){
61 printf("general_inbld_flag %u\n", general_inbld_flag);
62 }
63 }
64 printf("general_level_idc %u\n", general_level_idc);
65
66 for(uint32_t i=0; i<maxNumSubLayersMinus1; i++){
67 if(sub_layer_profile_present_flag[i]){
68 printf("sub_layer_profile_present_flag[%u] %u\n", i, sub_layer_profile_present_flag[i]);
69 printf("sub_layer_profile_space[%u] %u\n", i, sub_layer_profile_space[i]);
70 printf("sub_layer_tier_flag[%u] %u\n", i, sub_layer_tier_flag[i]);
71 printf("sub_layer_profile_idc[%u] %u\n", i, sub_layer_profile_idc[i]);
72
73 printf("sub_layer_profile_compatibility_flags[%u] %u\n", i, sub_layer_profile_compatibility_flags[i]);
74
75 printf("sub_layer_progressive_source_flag[%u] %u\n", i, sub_layer_progressive_source_flag[i]);
76 printf("sub_layer_interlaced_source_flag[%u] %u\n", i, sub_layer_interlaced_source_flag[i]);
77 printf("sub_layer_non_packed_constraint_flag[%u] %u\n", i, sub_layer_non_packed_constraint_flag[i]);
78 printf("sub_layer_frame_only_constraint_flag[%u] %u\n", i, sub_layer_frame_only_constraint_flag[i]);
79 if(sub_layer_profile_idc[i] == 4 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>4) ||
80 sub_layer_profile_idc[i] == 5 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>5) ||
81 sub_layer_profile_idc[i] == 6 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>6) ||
82 sub_layer_profile_idc[i] == 7 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>7) ||
83 sub_layer_profile_idc[i] == 8 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>8) ||
84 sub_layer_profile_idc[i] == 9 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>9) ||
85 sub_layer_profile_idc[i] == 10 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>10) ||
86 sub_layer_profile_idc[i] == 11 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>11)){
87 printf("sub_layer_max_12bit_constraint_flag[%u] %u\n", i, sub_layer_max_12bit_constraint_flag[i]);
88 printf("sub_layer_max_10bit_constraint_flag[%u] %u\n", i, sub_layer_max_10bit_constraint_flag[i]);
89 printf("sub_layer_max_8bit_constraint_flag[%u] %u\n", i, sub_layer_max_8bit_constraint_flag[i]);
90 printf("sub_layer_max_422chroma_constraint_flag[%u] %u\n", i, sub_layer_max_422chroma_constraint_flag[i]);
91 printf("sub_layer_max_420chroma_constraint_flag[%u] %u\n", i, sub_layer_max_420chroma_constraint_flag[i]);
92 printf("sub_layer_max_monochrome_constraint_flag[%u] %u\n", i, sub_layer_max_monochrome_constraint_flag[i]);
93 printf("sub_layer_intra_constraint_flag[%u] %u\n", i, sub_layer_intra_constraint_flag[i]);
94 printf("sub_layer_one_picture_only_constraint_flag[%u] %u\n", i, sub_layer_one_picture_only_constraint_flag[i]);
95 printf("sub_layer_lower_bit_rate_constraint_flag[%u] %u\n", i, sub_layer_lower_bit_rate_constraint_flag[i]);
96 if(sub_layer_profile_idc[i] == 5 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>5) ||
97 sub_layer_profile_idc[i] == 9 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>9) ||
98 sub_layer_profile_idc[i] == 10 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>10) ||
99 sub_layer_profile_idc[i] == 11 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>11)){
100 printf("sub_layer_max_14bit_constraint_flag[%u] %u\n", i, sub_layer_max_14bit_constraint_flag[i]);
101 }
102 }
103 else if(sub_layer_profile_idc[i] == 2 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>2)){
104 printf("sub_layer_inbld_flag[%u] %u\n", i, sub_layer_inbld_flag[i]);
105 }
106 if(sub_layer_profile_idc[i] == 1 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>1) ||
107 sub_layer_profile_idc[i] == 2 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>2) ||
108 sub_layer_profile_idc[i] == 3 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>3) ||
109 sub_layer_profile_idc[i] == 4 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>4) ||
110 sub_layer_profile_idc[i] == 5 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>5) ||
111 sub_layer_profile_idc[i] == 9 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>9) ||
112 sub_layer_profile_idc[i] == 11 || sub_layer_profile_compatibility_flags[i]&(0x80000000>>11)){
113 printf("sub_layer_inbld_flag[%u] %u\n", i, sub_layer_inbld_flag[i]);
114 }
115 }
116 if(sub_layer_level_present_flag[i]){
117 printf("sub_layer_level_present_flag[%u] %u\n", i, sub_layer_level_present_flag[i]);
118 printf("sub_layer_level_idc[%u] %u\n", i, sub_layer_level_idc[i]);
119 }
120 }
121 printf("\n");
122}
123
124void H265VideoParameterSet::print()
125{
126 printf("\n");
127 printf("video_perameter_set_rbsp\n");
128
129 printf("vps_video_parameter_set_id %u\n", vps_video_parameter_set_id);
130 printf("vps_base_layer_internal_flag %u\n", vps_base_layer_internal_flag);
131 printf("vps_base_layer_available_flag %u\n", vps_base_layer_available_flag);
132 printf("vps_max_layers_minus1 %u\n", vps_max_layers_minus1);
133 printf("vps_max_sub_layers_minus1 %u\n", vps_max_sub_layers_minus1);
134 printf("vps_temporal_id_nesting_flag %u\n", vps_temporal_id_nesting_flag);
135
136 tier.print();
137
138 printf("vps_sub_layer_ordering_info_present_flag %u\n", vps_sub_layer_ordering_info_present_flag);
139 for(uint32_t i=(vps_sub_layer_ordering_info_present_flag?0:vps_max_sub_layers_minus1);
140 i<=vps_max_sub_layers_minus1; i++){
141 printf("vps_max_dec_pic_buffering_minus1[%u] %u\n", i, vps_max_dec_pic_buffering_minus1[i]);
142 printf("vps_max_num_reorder_pics[%u] %u\n", i, vps_max_num_reorder_pics[i]);
143 printf("vps_max_latency_increase_plus1[%u] %u\n", i, vps_max_latency_increase_plus1[i]);
144 }
145
146 printf("vps_max_layer_id %u\n", vps_max_layer_id);
147 printf("vps_num_layer_sets_minus1 %u\n", vps_num_layer_sets_minus1);
148 for(uint32_t i=1; i<= vps_num_layer_sets_minus1; i++){
149 for(uint32_t j=0; j<vps_max_layer_id; j++){
150 // printf("layer_id_included_flag[%u][%U] %u\n", i, j, layer_id_included_flag[i][j]); // TODO
151 }
152 }
153
154 printf("vps_timing_info_present_flag %u\n", vps_timing_info_present_flag);
155 if(vps_timing_info_present_flag){
156 printf("vps_num_units_in_tick %u\n", vps_num_units_in_tick);
157 printf("vps_time_scale %u\n", vps_time_scale);
158 printf("vps_poc_proportional_to_timing_flag %u\n", vps_poc_proportional_to_timing_flag);
159 if(vps_poc_proportional_to_timing_flag){
160 printf("vps_num_ticks_poc_diff_one_minus1 %u\n", vps_num_ticks_poc_diff_one_minus1);
161 }
162 printf("vps_num_hrd_parameters %u\n", vps_num_hrd_parameters);
163 for(uint32_t i=0; i<vps_num_hrd_parameters; i++){
164 printf("hrd_layer_set_idx[%u] %u\n", i, hrd_layer_set_idx[i]);
165 if(i > 0){
166 printf("cprms_present_flag[%u] %u\n", i, cprms_present_flag[i]);
167 }
168 // hrd_parameters
169 }
170 }
171}
172
173void H265SeqParameterSet::print()
174{
175 printf("\n");
176 printf("seq_perameter_set_rbsp\n");
177
178 printf("sps_video_parameter_set_id %u\n", sps_video_parameter_set_id);
179 printf("sps_max_sub_layers_minus1 %u\n", sps_max_sub_layers_minus1);
180 printf("sps_temporal_id_nesting_flag %u\n", sps_temporal_id_nesting_flag);
181
182 tier.print();
183
184 printf("sps_seq_parameter_set_id %u\n", sps_seq_parameter_set_id);
185 printf("chroma_format_idc %u\n", chroma_format_idc);
186 if(chroma_format_idc == 3)
187 printf("separate_colour_plane_flag %u\n", separate_colour_plane_flag);
188 printf("pic_width_in_luma_samples %u\n", pic_width_in_luma_samples);
189 printf("pic_height_in_luma_samples %u\n", pic_height_in_luma_samples);
190
191 printf("conformance_window_flag %u\n", conformance_window_flag);
192 if(conformance_window_flag){
193 printf("conf_win_left_offset %u\n", conf_win_left_offset);
194 printf("conf_win_right_offset %u\n", conf_win_right_offset);
195 printf("conf_win_top_offset %u\n", conf_win_top_offset);
196 printf("conf_win_bottom_offset %u\n", conf_win_bottom_offset);
197 }
198
199 printf("bit_depth_luma_minus8 %u\n", bit_depth_luma_minus8);
200 printf("bit_depth_chroma_minus8 %u\n", bit_depth_chroma_minus8);
201 printf("log2_max_pic_order_cnt_lsb_minus4 %u\n", log2_max_pic_order_cnt_lsb_minus4);
202 printf("sps_sub_layer_ordering_info_present_flag %u\n", sps_sub_layer_ordering_info_present_flag);
203
204 for(uint32_t i = (sps_sub_layer_ordering_info_present_flag?0:sps_max_sub_layers_minus1);
205 i<=sps_max_sub_layers_minus1; i++){
206 printf("sps_max_dec_pic_buffering_minus1[%u] %u\n", i, sps_max_dec_pic_buffering_minus1[i]);
207 printf("sps_max_num_reorder_pics[%u] %u\n", i, sps_max_num_reorder_pics[i]);
208 printf("sps_max_latency_increase_plus1[%u] %u\n", i, sps_max_latency_increase_plus1[i]);
209 }
210
211 printf("log2_min_luma_coding_block_size_minus3 %u\n", log2_min_luma_coding_block_size_minus3);
212 printf("log2_diff_max_min_luma_coding_block_size %u\n", log2_diff_max_min_luma_coding_block_size);
213 printf("log2_min_luma_transform_block_size_minus2 %u\n", log2_min_luma_transform_block_size_minus2);
214 printf("log2_diff_max_min_luma_transform_block_size %u\n", log2_diff_max_min_luma_transform_block_size);
215
216 printf("max_tranform_hierarchy_depth_inter %u\n", max_tranform_hierarchy_depth_inter);
217 printf("max_tranform_hierarchy_depth_intra %u\n", max_tranform_hierarchy_depth_intra);
218 printf("scaling_list_enabled_flag %u\n", scaling_list_enabled_flag);
219 if(scaling_list_enabled_flag){
220 printf("sps_scaling_list_data_present_flag %u\n", sps_scaling_list_data_present_flag);
221 if(sps_scaling_list_data_present_flag){
222 //assert(false); // scaling_list_data
223 }
224 }
225
226 printf("amp_enabled_flag %u\n", amp_enabled_flag);
227 printf("sample_adaptive_offset_enabled_flag %u\n", sample_adaptive_offset_enabled_flag);
228 printf("pcm_enabled_flag %u\n", pcm_enabled_flag);
229 if(pcm_enabled_flag){
230 printf("pcm_sample_bit_depth_luma_minus1 %u\n", pcm_sample_bit_depth_luma_minus1);
231 printf("pcm_sample_bit_depth_chroma_minus1 %u\n", pcm_sample_bit_depth_chroma_minus1);
232 printf("log2_min_pcm_luma_coding_block_size_minus3 %u\n", log2_min_pcm_luma_coding_block_size_minus3);
233 printf("log2_idff_max_min_pcm_luma_coding_block_size %u\n", log2_idff_max_min_pcm_luma_coding_block_size);
234 printf("pcm_loop_filter_disabled_flag %u\n", pcm_loop_filter_disabled_flag);
235 }
236
237 printf("num_short_term_ref_pic_sets %u\n", num_short_term_ref_pic_sets);
238 for(uint32_t i=0; i<num_short_term_ref_pic_sets; i++){
239 //assert(false); // st_ref_pic_set
240 }
241
242 printf("long_term_ref_pic_present_flag %u\n", long_term_ref_pic_present_flag);
243 if(long_term_ref_pic_present_flag){
244 printf("num_long_term_ref_pics_sps %u\n", num_long_term_ref_pics_sps);
245 for(uint32_t i=0; i<num_long_term_ref_pics_sps; i++){
246 printf("lt_ref_pic_poc_lsb_sps[%u] %u\n", i, lt_ref_pic_poc_lsb_sps[i]);
247 printf("used_by_cuff_pic_lt_sps_flag[%u] %u\n", i, used_by_cuff_pic_lt_sps_flag[i]);
248 }
249 }
250
251 printf("sps_temporarl_mvp_enabled_flag %u\n", sps_temporarl_mvp_enabled_flag);
252 printf("string_intra_smoothing_enabled_flag %u\n", string_intra_smoothing_enabled_flag);
253
254 printf("vui_parameters_present_flag %u\n", vui_parameters_present_flag);
255 if(vui_parameters_present_flag){
256 //assert(false); // vui_parameters
257 }
258
259 printf("sps_extension_present_flag %u\n", sps_extension_present_flag);
260 if(sps_extension_present_flag){
261 printf("sps_range_extension_flag %u\n", sps_range_extension_flag);
262 printf("sps_multilayer_extension_flag %u\n", sps_multilayer_extension_flag);
263 printf("sps_3d_extension_flag %u\n", sps_3d_extension_flag);
264 printf("sps_scc_extenion_flag %u\n", sps_scc_extenion_flag);
265 printf("sps_extension_4bits %u\n", sps_extension_4bits);
266 }
267}
268
269void H265PicParameterSet::print()
270{
271 printf("\n");
272 printf("pic_perameter_set_rbsp\n");
273}
274
275void H265VuiParameters::print()
276{
277 printf("\n");
278 printf("vui_parameters\n");
279 printf(" - aspect_ratio_info_present %d\n", aspect_ratio_info_present);
280 if(aspect_ratio_info_present){
281 printf(" - Sample Aspect Ratio %d:%d\n", sar_width, sar_height);
282 }
283 printf(" - overscan_info_present_flag %d\n", overscan_info_present_flag);
284 if(overscan_info_present_flag){
285 printf(" - overscan_appropriate_flag %d\n", overscan_appropriate_flag);
286 }
287 printf(" - video_signal_type_present_flag %d\n", video_signal_type_present_flag);
288 if(video_signal_type_present_flag){
289 printf(" - video_format %d\n", video_format);
290 printf(" - video_full_range_flag %d\n", video_full_range_flag);
291 printf(" - colour_description_present_flag %d\n", colour_description_present_flag);
292 if(colour_description_present_flag){
293 printf(" - colour_primaries %d\n", colour_primaries);
294 printf(" - transfer_characteristics %d\n", transfer_characteristics);
295 printf(" - matrix_coefficients %d\n", matrix_coefficients);
296 }
297 }
298 printf(" - chroma_loc_info_present_flag %d\n", chroma_loc_info_present_flag);
299 if(chroma_loc_info_present_flag){
300 printf(" - chroma_sample_loc_type_top_field %d\n", chroma_sample_loc_type_top_field);
301 printf(" - chroma_sample_loc_type_bottom_field %d\n", chroma_sample_loc_type_bottom_field);
302 }
303
304 printf(" - neutral_chroma_indication_flag %u\n", neutral_chroma_indication_flag);
305 printf(" - field_seq_flag %u\n", field_seq_flag);
306 printf(" - frame_field_info_present_flag %u\n", frame_field_info_present_flag);
307 printf(" - default_display_window_flag %u\n", default_display_window_flag);
308 if(default_display_window_flag){
309 printf(" - def_disp_win_left_offset %u\n", def_disp_win_left_offset);
310 printf(" - def_disp_win_right_offset %u\n", def_disp_win_right_offset);
311 printf(" - def_disp_win_top_offset %u\n", def_disp_win_top_offset);
312 printf(" - def_disp_win_bottom_offset %u\n", def_disp_win_bottom_offset);
313 }
314 printf(" - vui_timing_info_present_flag %u\n", vui_timing_info_present_flag);
315 if(vui_timing_info_present_flag){
316 printf(" - vui_num_units_in_tick %u\n", vui_num_units_in_tick);
317 printf(" - vui_time_scale %u\n", vui_time_scale);
318 printf(" - vui_poc_proportional_to_timing_flag %u\n", vui_poc_proportional_to_timing_flag);
319 if(vui_poc_proportional_to_timing_flag)
320 printf(" - vui_num_ticks_poc_diff_one_minus1 %u\n", vui_num_ticks_poc_diff_one_minus1);
321 printf(" - vui_hrd_parameters_present_flag %u\n", vui_hrd_parameters_present_flag);
322 if(vui_hrd_parameters_present_flag)
323 assert(false); // HrdParameters hrd; // TODO
324 }
325 printf(" - bitstream_restriction_flag %u\n", bitstream_restriction_flag);
326 if(bitstream_restriction_flag){
327 printf(" - tiles_fixed_structure_flag %u\n", tiles_fixed_structure_flag);
328 printf(" - motion_vectors_over_pic_boundaries_flag %u\n", motion_vectors_over_pic_boundaries_flag);
329 printf(" - restricted_ref_pic_lists_flag %u\n", restricted_ref_pic_lists_flag);
330 printf(" - min_spatial_segmentation_idc %u\n", min_spatial_segmentation_idc);
331 printf(" - max_bytes_per_pic_denom %u\n", max_bytes_per_pic_denom);
332 printf(" - max_bits_per_min_cu_denom %u\n", max_bits_per_min_cu_denom);
333 printf(" - log2_max_mv_length_horizontal %u\n", log2_max_mv_length_horizontal);
334 printf(" - log2_max_mv_length_vertical %u\n", log2_max_mv_length_vertical);
335 }
336}
337
338}// namespace ...
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....