Cogs.Core
H264Data.cpp
1#include "H264Data.h"
2
3#include <assert.h>
4#include <stdio.h>
5
6using namespace Cogs::Core;
7
8void NALheader::print()
9{
10 printf("zero_bit %d nal_ref_idc %d nal_unit_type %d\n", forbidden_zero_bit, nal_ref_idc, nal_unit_type);
11}
12
13void SeqParameterSet::print()
14{
15 printf("\n");
16 printf("seq_perameter_set_rbsp\n");
17 printf("profile_idc %d\n", profile_idc);
18 printf("constraint_set0_flag %d\n", constraint_set0_flag);
19 printf("constraint_set1_flag %d\n", constraint_set1_flag);
20 printf("constraint_set2_flag %d\n", constraint_set2_flag);
21 printf("constraint_set3_flag %d\n", constraint_set3_flag);
22 printf("constraint_set4_flag %d\n", constraint_set4_flag);
23 printf("constraint_set5_flag %d\n", constraint_set5_flag);
24 printf("level_idc %d\n", level_idc);
25 printf("seq_parameter_set_id %d\n", seq_parameter_set_id);
26
27 if(profile_idc == 66 && constraint_set1_flag) printf("Constrained Baseline profile\n");
28 else if(profile_idc == 66) printf("Baseline profile\n");
29 else if(profile_idc == 77) printf("Main profile\n");
30 else if (profile_idc == 100) printf("High profile\n");
31
32 printf("chroma_format_idc %d\n", chroma_format_idc);
33 printf("separate_colour_plane_flag %d\n", separate_colour_plane_flag);
34 uint32_t SubWidthC = (uint32_t)-1;
35 uint32_t SubHeightC = (uint32_t)-1;
36 if(chroma_format_idc == 1){
37 SubWidthC = 2;
38 SubHeightC = 2;
39 }
40 else if(chroma_format_idc == 2){
41 SubWidthC = 2;
42 SubHeightC = 1;
43 }
44 else if(chroma_format_idc == 3 && separate_colour_plane_flag == 0){
45 SubWidthC = 1;
46 SubHeightC = 1;
47 }
48 uint32_t MbWidthC = 16/SubWidthC;
49 uint32_t MbHeightC = 16/SubHeightC;
50 if(chroma_format_idc == 0)
51 printf("Chroma Format: monochrome SubWidthC: - SubHeightC: -\n");
52 else if(chroma_format_idc == 1)
53 printf("Chroma Format: 4:2:0 SubWidthC: %d SubHeightC: %d MbWidthC %d MbHeightC %d\n", SubWidthC, SubHeightC, MbWidthC, MbHeightC);
54 else if(chroma_format_idc == 2)
55 printf("Chroma Format: 4:2:2 SubWidthC: %d SubHeightC: %d MbWidthC %d MbHeightC %d\n", SubWidthC, SubHeightC, MbWidthC, MbHeightC);
56 else if(chroma_format_idc == 3 && separate_colour_plane_flag == 0)
57 printf("Chroma Format: 4:4:4 SubWidthC: %d SubHeightC: %d MbWidthC %d MbHeightC %d\n", SubWidthC, SubHeightC, MbWidthC, MbHeightC);
58 else if(chroma_format_idc == 3 && separate_colour_plane_flag == 1)
59 printf("Chroma Format: 4:4:4 SubWidthC: - SubHeightC: -\n");
60 printf("bit_depth_luma_minus8 %d (%d)\n", bit_depth_luma_minus8, bit_depth_luma_minus8+8);
61 printf("bit_depth_chroma_minus8 %d (%d)\n", bit_depth_chroma_minus8, bit_depth_chroma_minus8+8);
62 printf("qpprime_y_zero_transform_bypass_flag %d\n", qpprime_y_zero_transform_bypass_flag);
63 printf("seq_scaling_matrix_present_flag %d\n", seq_scaling_matrix_present_flag);
64 printf("log2_max_frame_num_minus4 %d (%d)\n",
65 log2_max_frame_num_minus4,
66 1<<(log2_max_frame_num_minus4+4));
67 printf("pic_order_cnt_type %d\n", pic_order_cnt_type);
68 if(pic_order_cnt_type == 0){
69 printf("log2_max_pic_order_cnt_lsb_minus4 %d (%d)\n",
70 log2_max_pic_order_cnt_lsb_minus4,
71 1<<(log2_max_pic_order_cnt_lsb_minus4+4));
72 }
73 else if(pic_order_cnt_type == 1){
74 assert(false);
75 }
76 printf("num_ref_frames %d\n", num_ref_frames);
77 printf("gaps_in_frame_num_value_allowed_flag %d\n", gaps_in_frame_num_value_allowed_flag);
78
79 uint32_t PicWidthInMbs = pic_width_in_mbs_minus1+1;
80 uint32_t PicWidthInSamplesLuma = PicWidthInMbs*16;
81 uint32_t PixWidthInSamplesChroma = PicWidthInMbs*MbWidthC;
82 printf("pic_width_in_mbs_minus1 %d (%d Luma %d Chroma %d)\n", pic_width_in_mbs_minus1, PicWidthInMbs,
83 PicWidthInSamplesLuma, PixWidthInSamplesChroma);
84 uint32_t PicHeightInMapUnits = pic_height_in_map_units_minus1+1;
85 uint32_t FrameHeightInMbs = (2-frame_mbs_only_flag)*PicHeightInMapUnits;
86 printf("pic_height_in_map_units_minus1 %d (%d Size %d)\n", pic_height_in_map_units_minus1,
87 PicHeightInMapUnits, FrameHeightInMbs*16);
88
89 printf("frame_mbs_only_flag %d\n", frame_mbs_only_flag);
90 if(!frame_mbs_only_flag)
91 assert(false);
92 printf("direct_8x8_inference_flag %d\n", direct_8x8_inference_flag);
93 printf("frame_cropping_flag %d\n", frame_cropping_flag);
94 if(frame_cropping_flag){
95 printf("frame_crop_left_offset %d\n", frame_crop_left_offset);
96 printf("frame_crop_right_offset %d\n", frame_crop_right_offset);
97 printf("frame_crop_top_offset %d\n", frame_crop_top_offset);
98 printf("frame_crop_bottom_offset %d\n", frame_crop_bottom_offset);
99 }
100 printf("vui_parameters_present_flag %d\n", vui_parameters_present_flag);
101}
102
103void PicParameterSet::print()
104{
105 printf("\n");
106 printf("pic_perameter_set_rbsp\n");
107 printf("pic_parameter_set_id %d\n", pic_parameter_set_id);
108 printf("seq_parameter_set_id %d\n", seq_parameter_set_id);
109 printf("entropy_coding_mode_flag %d\n", entropy_coding_mode_flag);
110 printf("bottom_field_pic_order_in_frame_present_flag %d\n", bottom_field_pic_order_in_frame_present_flag);
111 printf("num_slice_groups_minus1 %d\n", num_slice_groups_minus1);
112 if(num_slice_groups_minus1 > 0){
113 printf("slice_group_map_type %d\n", slice_group_map_type);
114 if(slice_group_map_type == 0){
115 assert(false);
116 }
117 else if(slice_group_map_type == 2){
118 assert(false);
119 }
120 else if(slice_group_map_type == 3 ||
121 slice_group_map_type == 4 ||
122 slice_group_map_type == 5){
123 assert(false);
124 }
125 else if(slice_group_map_type == 6){
126 assert(false);
127 }
128 }
129 printf("num_ref_idx_l0_default_active_minus1 %d\n", num_ref_idx_l0_default_active_minus1);
130 printf("num_ref_idx_l1_default_active_minus1 %d\n", num_ref_idx_l1_default_active_minus1);
131 printf("weighted_pred_flag %d\n", weighted_pred_flag);
132 printf("weighted_bipred_idc %d\n", weighted_bipred_idc);
133 printf("pic_init_qp_minus26 %d\n", pic_init_qp_minus26);
134 printf("pic_init_sp_minus26 %d\n", pic_init_sp_minus26);
135 printf("chroma_qp_index_offset %d\n", chroma_qp_index_offset);
136 printf("deblocking_filter_control_present_flag %d\n", deblocking_filter_control_present_flag);
137 printf("constrained_intra_pred_flag %d\n", constrained_intra_pred_flag);
138 printf("redundant_pic_cnt_present_flag %d\n", redundant_pic_cnt_present_flag);
139}
140
141void SliceLayer::print()
142{
143 const char *slice_type_name[] = {"P", "B", "I", "SP", "SI", "P", "B", "I", "SP", "SI"};
144 printf("\n");
145 printf("slice\n");
146 printf("first_mb_in_slice %d\n", first_mb_in_slice);
147 printf("slice_type %d %s\n", slice_type, slice_type_name[slice_type]);
148 printf("pic_parameter_set_id %d\n", pic_parameter_set_id);
149 printf("colour_plane_id %d\n", colour_plane_id);
150 printf("frame_num %d\n", frame_num);
151 printf("field_pic_flag %d\n", field_pic_flag);
152 printf("bottom_field_flag %d\n", bottom_field_flag);
153 printf("idr_pic_id %d\n", idr_pic_id);
154 printf("pic_order_cnt_lsb %d\n", pic_order_cnt_lsb);
155 printf("delta_pic_order_cnt_bottom %d\n", delta_pic_order_cnt_bottom);
156 printf("delta_pic_order_cnt[0] %d\n", delta_pic_order_cnt[0]);
157 printf("delta_pic_order_cnt[1] %d\n", delta_pic_order_cnt[1]);
158 printf("redundant_pic_cnt %d\n", redundant_pic_cnt);
159 printf("direct_spatial_mv_pred_flag %d\n", direct_spatial_mv_pred_flag);
160 printf("num_ref_idx_active_override_flag %d\n", num_ref_idx_active_override_flag);
161 printf("num_ref_idx_l0_active_minus1 %d\n", num_ref_idx_l0_active_minus1);
162 printf("num_ref_idx_l1_active_minus1 %d\n", num_ref_idx_l1_active_minus1);
163 printf("cabac_init_idc %d\n", cabac_init_idc);
164 printf("slice_qp_delta %d\n", slice_qp_delta);
165 printf("sp_for_switch_flag %d\n", sp_for_switch_flag);
166 printf("slice_qs_delta %d\n", slice_qs_delta);
167 printf("disable_deblocking_filter_idc %d\n", disable_deblocking_filter_idc);
168 printf("slice_alpha_c0_offset_div2 %d\n", slice_alpha_c0_offset_div2);
169 printf("slice_beta_offset_div2 %d\n", slice_beta_offset_div2);
170 printf("slice_group_change_cycle %d\n", slice_group_change_cycle);
171}
172
173static void PrintHrdParameters(HrdParameters &param)
174{
175 printf(" - cpb_cnt_minus1 %u\n", param.cpb_cnt_minus1);
176 printf(" - cpb_cnt_minus1 %u\n", param.cpb_cnt_minus1);
177 printf(" - bit_rate_scale %u\n", param.bit_rate_scale);
178 printf(" - cpb_size_scale %u\n", param.cpb_size_scale);
179 for(size_t SchedSelIdx=0; SchedSelIdx<=param.cpb_cnt_minus1; SchedSelIdx++){
180 printf(" - bit_rate_calue_minus1[%zu] %u\n", SchedSelIdx, param.bit_rate_calue_minus1[SchedSelIdx]);
181 printf(" - cpb_size_value_minus1[%zu] %u\n", SchedSelIdx, param.cpb_size_value_minus1[SchedSelIdx]);
182 printf(" - cbr_flag[%zu] %u\n", SchedSelIdx, param.cbr_flag[SchedSelIdx]);
183 }
184 printf(" - initial_sbp_removal_delay_length_minus1 %u\n", param.initial_cpb_removal_delay_length_minus1);
185 printf(" - cpb_removal_delay_length_minus1 %u\n", param.cpb_removal_delay_length_minus1);
186 printf(" - cpb_output_delay_length_minus1 %u\n", param.cpb_output_delay_length_minus1);
187 printf(" - time_offset_length %u\n", param.time_offset_length);
188}
189
190void VuiParameters::print()
191{
192 printf("\n");
193 printf("vui_parameters\n");
194 printf(" - aspect_ratio_info_present %d\n", aspect_ratio_info_present);
195 if(aspect_ratio_info_present){
196 printf(" - Sample Aspect Ratio %d:%d\n", sar_width, sar_height);
197 }
198 printf(" - overscan_info_present_flag %d\n", overscan_info_present_flag);
199 if(overscan_info_present_flag){
200 printf(" - overscan_appropriate_flag %d\n", overscan_appropriate_flag);
201 }
202 printf(" - video_signal_type_present_flag %d\n", video_signal_type_present_flag);
203 if(video_signal_type_present_flag){
204 printf(" - video_format %d\n", video_format);
205 printf(" - video_full_range_flag %d\n", video_full_range_flag);
206 printf(" - colour_description_present_flag %d\n", colour_description_present_flag);
207 if(colour_description_present_flag){
208 printf(" - colour_primaries %d\n", colour_primaries);
209 printf(" - transfer_characteristics %d\n", transfer_characteristics);
210 printf(" - matrix_coefficients %d\n", matrix_coefficients);
211 }
212 }
213 printf(" - chroma_loc_info_present_flag %d\n", chroma_loc_info_present_flag);
214 if(chroma_loc_info_present_flag){
215 printf(" - chroma_sample_loc_type_top_field %d\n", chroma_sample_loc_type_top_field);
216 printf(" - chroma_sample_loc_type_bottom_field %d\n", chroma_sample_loc_type_bottom_field);
217 }
218 printf(" - timing_info_present_flag %d\n", timing_info_present_flag);
219 if(timing_info_present_flag){
220 printf(" - num_units_in_tick %d\n", num_units_in_tick);
221 printf(" - time_scale %d\n", time_scale);
222 printf(" - fixed_frame_rate_flag %d\n", fixed_frame_rate_flag);
223 }
224 printf(" - nal_hrd_parameters_present_flag %d\n", nal_hrd_parameters_present_flag);
225 if(nal_hrd_parameters_present_flag){
226 PrintHrdParameters(nal_hrd_parameters);
227 }
228 printf(" - vcl_hrd_parameters_present_flag %d\n", vcl_hrd_parameters_present_flag);
229 if(vcl_hrd_parameters_present_flag){
230 PrintHrdParameters(vcl_hrd_parameters);
231 }
232 if(nal_hrd_parameters_present_flag || vcl_hrd_parameters_present_flag){
233 printf(" - low_delay_hrd_flag %d\n", low_delay_hrd_flag);
234 }
235 printf(" - pic_struct_present_flag %d\n", pic_struct_present_flag);
236 printf(" - bitstream_restriction_flag %d\n", bitstream_restriction_flag);
237 if(bitstream_restriction_flag){
238 printf(" - motion_vectors_over_pic_bondaries_flag %u\n", motion_vectors_over_pic_bondaries_flag);
239 printf(" - max_bytes_per_pic_denom %u\n", max_bytes_per_pic_denom);
240 printf(" - max_bits_per_pic_denom %u\n", max_bits_per_pic_denom);
241 printf(" - log2_max_mv_length_horizontal %u\n", log2_max_mv_length_horizontal);
242 printf(" - log2_max_mv_length_vertical %u\n", log2_max_mv_length_vertical);
243 printf(" - max_num_reorder_frames %u\n", max_num_reorder_frames);
244 printf(" - max_dec_frame_buffering %u\n", max_dec_frame_buffering);
245 }
246}
Contains the Engine, Renderer, resource managers and other systems needed to run Cogs....