00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _PARSETCOMMON_H_
00027 #define _PARSETCOMMON_H_
00028
00029 #define MAXIMUMPARSETRBSPSIZE 1500
00030 #define MAXIMUMPARSETNALUSIZE 1500
00031
00032 #define MAXSPS 32
00033 #define MAXPPS 256
00034
00035
00036 #ifdef FALSE
00037 # define Boolean int
00038 #else
00039 typedef enum {
00040 FALSE,
00041 TRUE
00042 } Boolean;
00043 #endif
00044
00045 #define MAXIMUMVALUEOFcpb_cnt 32
00046 typedef struct
00047 {
00048 unsigned int cpb_cnt_minus1;
00049 unsigned int bit_rate_scale;
00050 unsigned int cpb_size_scale;
00051 unsigned int bit_rate_value_minus1 [MAXIMUMVALUEOFcpb_cnt];
00052 unsigned int cpb_size_value_minus1 [MAXIMUMVALUEOFcpb_cnt];
00053 unsigned int cbr_flag [MAXIMUMVALUEOFcpb_cnt];
00054 unsigned int initial_cpb_removal_delay_length_minus1;
00055 unsigned int cpb_removal_delay_length_minus1;
00056 unsigned int dpb_output_delay_length_minus1;
00057 unsigned int time_offset_length;
00058 } hrd_parameters_t;
00059
00060
00061 typedef struct
00062 {
00063 Boolean aspect_ratio_info_present_flag;
00064 unsigned int aspect_ratio_idc;
00065 unsigned int sar_width;
00066 unsigned int sar_height;
00067 Boolean overscan_info_present_flag;
00068 Boolean overscan_appropriate_flag;
00069 Boolean video_signal_type_present_flag;
00070 unsigned int video_format;
00071 Boolean video_full_range_flag;
00072 Boolean colour_description_present_flag;
00073 unsigned int colour_primaries;
00074 unsigned int transfer_characteristics;
00075 unsigned int matrix_coefficients;
00076 Boolean chroma_location_info_present_flag;
00077 unsigned int chroma_sample_loc_type_top_field;
00078 unsigned int chroma_sample_loc_type_bottom_field;
00079 Boolean timing_info_present_flag;
00080 unsigned int num_units_in_tick;
00081 unsigned int time_scale;
00082 Boolean fixed_frame_rate_flag;
00083 Boolean nal_hrd_parameters_present_flag;
00084 hrd_parameters_t nal_hrd_parameters;
00085 Boolean vcl_hrd_parameters_present_flag;
00086 hrd_parameters_t vcl_hrd_parameters;
00087
00088 Boolean low_delay_hrd_flag;
00089 Boolean pic_struct_present_flag;
00090 Boolean bitstream_restriction_flag;
00091 Boolean motion_vectors_over_pic_boundaries_flag;
00092 unsigned int max_bytes_per_pic_denom;
00093 unsigned int max_bits_per_mb_denom;
00094 unsigned int log2_max_mv_length_vertical;
00095 unsigned int log2_max_mv_length_horizontal;
00096 unsigned int num_reorder_frames;
00097 unsigned int max_dec_frame_buffering;
00098 } vui_seq_parameters_t;
00099
00100
00101 #define MAXnum_slice_groups_minus1 8
00102 typedef struct
00103 {
00104 Boolean Valid;
00105 unsigned int pic_parameter_set_id;
00106 unsigned int seq_parameter_set_id;
00107 Boolean entropy_coding_mode_flag;
00108
00109 Boolean transform_8x8_mode_flag;
00110
00111 Boolean pic_scaling_matrix_present_flag;
00112 int pic_scaling_list_present_flag[12];
00113
00114
00115 Boolean pic_order_present_flag;
00116 unsigned int num_slice_groups_minus1;
00117 unsigned int slice_group_map_type;
00118
00119 unsigned int run_length_minus1[MAXnum_slice_groups_minus1];
00120
00121 unsigned int top_left[MAXnum_slice_groups_minus1];
00122 unsigned int bottom_right[MAXnum_slice_groups_minus1];
00123
00124 Boolean slice_group_change_direction_flag;
00125 unsigned int slice_group_change_rate_minus1;
00126
00127 unsigned int pic_size_in_map_units_minus1;
00128 byte *slice_group_id;
00129
00130 int num_ref_idx_l0_active_minus1;
00131 int num_ref_idx_l1_active_minus1;
00132 Boolean weighted_pred_flag;
00133 unsigned int weighted_bipred_idc;
00134 int pic_init_qp_minus26;
00135 int pic_init_qs_minus26;
00136 int chroma_qp_index_offset;
00137
00138 int cb_qp_index_offset;
00139 int cr_qp_index_offset;
00140
00141 Boolean deblocking_filter_control_present_flag;
00142 Boolean constrained_intra_pred_flag;
00143 Boolean redundant_pic_cnt_present_flag;
00144 Boolean vui_pic_parameters_flag;
00145 } pic_parameter_set_rbsp_t;
00146
00147
00148 #define MAXnum_ref_frames_in_pic_order_cnt_cycle 256
00149 typedef struct
00150 {
00151 Boolean Valid;
00152
00153 unsigned int profile_idc;
00154 Boolean constrained_set0_flag;
00155 Boolean constrained_set1_flag;
00156 Boolean constrained_set2_flag;
00157 Boolean constrained_set3_flag;
00158 unsigned int level_idc;
00159 unsigned int seq_parameter_set_id;
00160 unsigned int chroma_format_idc;
00161
00162 Boolean seq_scaling_matrix_present_flag;
00163 int seq_scaling_list_present_flag[12];
00164
00165 unsigned int bit_depth_luma_minus8;
00166 unsigned int bit_depth_chroma_minus8;
00167 unsigned int log2_max_frame_num_minus4;
00168 unsigned int pic_order_cnt_type;
00169
00170 unsigned int log2_max_pic_order_cnt_lsb_minus4;
00171
00172 Boolean delta_pic_order_always_zero_flag;
00173 int offset_for_non_ref_pic;
00174 int offset_for_top_to_bottom_field;
00175 unsigned int num_ref_frames_in_pic_order_cnt_cycle;
00176
00177 int offset_for_ref_frame[MAXnum_ref_frames_in_pic_order_cnt_cycle];
00178 unsigned int num_ref_frames;
00179 Boolean gaps_in_frame_num_value_allowed_flag;
00180 unsigned int pic_width_in_mbs_minus1;
00181 unsigned int pic_height_in_map_units_minus1;
00182 Boolean frame_mbs_only_flag;
00183
00184 Boolean mb_adaptive_frame_field_flag;
00185 Boolean direct_8x8_inference_flag;
00186 Boolean frame_cropping_flag;
00187 unsigned int frame_cropping_rect_left_offset;
00188 unsigned int frame_cropping_rect_right_offset;
00189 unsigned int frame_cropping_rect_top_offset;
00190 unsigned int frame_cropping_rect_bottom_offset;
00191 Boolean vui_parameters_present_flag;
00192 vui_seq_parameters_t vui_seq_parameters;
00193 unsigned separate_colour_plane_flag;
00194 } seq_parameter_set_rbsp_t;
00195
00196 pic_parameter_set_rbsp_t *AllocPPS (void);
00197 seq_parameter_set_rbsp_t *AllocSPS (void);
00198
00199 void FreePPS (pic_parameter_set_rbsp_t *pps);
00200 void FreeSPS (seq_parameter_set_rbsp_t *sps);
00201
00202 #endif