diff options
author | Harish Mahendrakar <harish.mahendrakar@ittiam.com> | 2015-08-05 14:47:11 +0530 |
---|---|---|
committer | Marco Nelissen <marcone@google.com> | 2015-10-09 11:44:26 -0700 |
commit | 03ca7981bfdeff6f3f8d852f8059adef680729da (patch) | |
tree | daa6f1ebe7eec05f5495302c2b6b655f8d4341d6 /common | |
parent | 6267c11c733b1d96ef75ac4b2854c86c7478d8a0 (diff) | |
download | android_external_libhevc-03ca7981bfdeff6f3f8d852f8059adef680729da.tar.gz android_external_libhevc-03ca7981bfdeff6f3f8d852f8059adef680729da.tar.bz2 android_external_libhevc-03ca7981bfdeff6f3f8d852f8059adef680729da.zip |
Added SEI structures and reordered ihevc_structs.h contents
Added asserts in buffer manager
Added few definitions for SEI messages
Change-Id: Ieb6dba04303e433e93f79360c064d96f21b1058f
Diffstat (limited to 'common')
-rw-r--r-- | common/ihevc_buf_mgr.c | 8 | ||||
-rw-r--r-- | common/ihevc_chroma_itrans_recon.h | 5 | ||||
-rw-r--r-- | common/ihevc_defs.h | 14 | ||||
-rw-r--r-- | common/ihevc_func_types.h | 2 | ||||
-rw-r--r-- | common/ihevc_structs.h | 1569 |
5 files changed, 906 insertions, 692 deletions
diff --git a/common/ihevc_buf_mgr.c b/common/ihevc_buf_mgr.c index b6e4f2a..93340ff 100644 --- a/common/ihevc_buf_mgr.c +++ b/common/ihevc_buf_mgr.c @@ -43,10 +43,12 @@ ******************************************************************************* */ #include <stdlib.h> +#include <assert.h> #include "ihevc_typedefs.h" #include "ihevc_macros.h" #include "ihevc_func_selector.h" #include "ihevc_buf_mgr.h" +#include "ihevc_debug.h" /** @@ -165,6 +167,8 @@ void* ihevc_buf_mgr_get_next_free( pv_ret_ptr = NULL; for(id = 0; id < (WORD32)ps_buf_mgr->u4_max_buf_cnt; id++) { + ASSERT(ps_buf_mgr->au4_status[id] != 2); + /* Check if the buffer is non-null and status is zero */ if((ps_buf_mgr->au4_status[id] == 0) && (ps_buf_mgr->apv_ptr[id])) { @@ -206,6 +210,8 @@ WORD32 ihevc_buf_mgr_check_free( for(id = 0; id < ps_buf_mgr->u4_max_buf_cnt; id++) { + ASSERT(ps_buf_mgr->au4_status[id] != 2); + if((ps_buf_mgr->au4_status[id] == 0) && (ps_buf_mgr->apv_ptr[id])) { @@ -256,6 +262,7 @@ WORD32 ihevc_buf_mgr_release( } ps_buf_mgr->au4_status[buf_id] &= ~mask; + ASSERT(ps_buf_mgr->au4_status[buf_id] != 2); /* If both the REF and DISP are zero, DEC is set to zero */ if(ps_buf_mgr->au4_status[buf_id] == 1) @@ -312,6 +319,7 @@ WORD32 ihevc_buf_mgr_set_status( } ps_buf_mgr->au4_status[buf_id] |= mask; + ASSERT(ps_buf_mgr->au4_status[buf_id] != 2); return 0; } diff --git a/common/ihevc_chroma_itrans_recon.h b/common/ihevc_chroma_itrans_recon.h index c20cebf..7d4958b 100644 --- a/common/ihevc_chroma_itrans_recon.h +++ b/common/ihevc_chroma_itrans_recon.h @@ -102,6 +102,11 @@ ihevc_hbd_chroma_itrans_recon_8x8_ft ihevc_hbd_chroma_itrans_recon_8x8; ihevc_chroma_itrans_recon_16x16_ft ihevc_chroma_itrans_recon_16x16; ihevc_hbd_chroma_itrans_recon_16x16_ft ihevc_hbd_chroma_itrans_recon_16x16; +/* A9 Q Function Declarations */ +ihevc_chroma_itrans_recon_4x4_ft ihevc_chroma_itrans_recon_4x4_a9q; +ihevc_chroma_itrans_recon_8x8_ft ihevc_chroma_itrans_recon_8x8_a9q; +ihevc_chroma_itrans_recon_16x16_ft ihevc_chroma_itrans_recon_16x16_a9q; + ihevc_hbd_chroma_itrans_recon_4x4_ft ihevc_hbd_chroma_itrans_recon_4x4_sse42; ihevc_hbd_chroma_itrans_recon_8x8_ft ihevc_hbd_chroma_itrans_recon_8x8_sse42; ihevc_hbd_chroma_itrans_recon_16x16_ft ihevc_hbd_chroma_itrans_recon_16x16_sse42; diff --git a/common/ihevc_defs.h b/common/ihevc_defs.h index 7f58121..c2906e7 100644 --- a/common/ihevc_defs.h +++ b/common/ihevc_defs.h @@ -210,6 +210,16 @@ enum VID_FMT_UNSPECIFIED }; +typedef enum { + USER_DATA_BAR_DATA = 0, + USER_DATA_CC_DATA = 1, + USER_DATA_AFD_DATA = 2, + + // do not add anything below + USER_DATA_MAX +} USER_DATA_SEI_TYPE_T; + + #define BIT_DEPTH 8 #define BIT_DEPTH_LUMA BIT_DEPTH #define BIT_DEPTH_CHROMA BIT_DEPTH @@ -455,5 +465,9 @@ enum #define INTRA_PRED_CHROMA_IDX_NONE 7 +#define MAX_NUM_CLOCK_TS 3 +#define MAX_USERDATA_PAYLOAD 256 + +#define MAX_CPB_CNT 32 #endif /*__IHEVC_DEFS_H_*/ diff --git a/common/ihevc_func_types.h b/common/ihevc_func_types.h index f5a2c44..74de30e 100644 --- a/common/ihevc_func_types.h +++ b/common/ihevc_func_types.h @@ -45,7 +45,7 @@ #define CXAINTR 10 /* Neon intrinsics */ -#define NEONINTR 0 +#define NEONINTR 11 /* X86 intrinsics */ #define X86INTR 12 diff --git a/common/ihevc_structs.h b/common/ihevc_structs.h index 26c1a39..93d2ad4 100644 --- a/common/ihevc_structs.h +++ b/common/ihevc_structs.h @@ -38,6 +38,870 @@ #ifndef _IHEVC_STRUCTS_H_ #define _IHEVC_STRUCTS_H_ + +/** + * Buffering Period SEI parameters Info + */ +typedef struct +{ + /** + * specifies SPS Id active for the coded picture assosiated + * with the bp message. + */ + UWORD8 u1_bp_seq_parameter_set_id; + + /** + * Derived from Hrd parameters + */ + UWORD8 u1_sub_pic_cpb_params_present_flag; + + /** + * specifies the presence of the initial_alt_cpb_removal_delay[ i ] + * and initial_alt_cpb_removal_offset[ i ] syntax elements + */ + UWORD8 u1_rap_cpb_params_present_flag; + + /** + * cbp removal delay used in buffering period SEI + */ + UWORD32 u4_cpb_delay_offset; + + /** + * dbp removal delay used in buffering period SEI + */ + UWORD32 u4_dpb_delay_offset; + + /** + * concatanation flag + */ + UWORD8 u1_concatenation_flag; + + /** + * delata cbp removal delay + */ + UWORD32 u4_au_cpb_removal_delay_delta_minus1; + + /** + * specify the default initial CPB removal delays, respectively, + * for the CPB when the NAL HRD parameters are in use + */ + UWORD32 au4_nal_initial_cpb_removal_delay[MAX_CPB_CNT]; + + /** + * specify the alternate initial CPB removal delays, respectively, + * for the CPB when the NAL HRD parameters are in use + */ + UWORD32 au4_nal_initial_alt_cpb_removal_delay[MAX_CPB_CNT]; + + /** + * specify the initial CPB removal delay offset, respectively, + * for the CPB when the NAL HRD parameters are in use + */ + UWORD32 au4_nal_initial_cpb_removal_delay_offset[MAX_CPB_CNT]; + + /** + * specify the alternate initial CPB removal delays offsets, respectively, + * for the CPB when the NAL HRD parameters are in use + */ + UWORD32 au4_nal_initial_alt_cpb_removal_delay_offset[MAX_CPB_CNT]; + + /** + * specify the default initial CPB removal delays, respectively, + * for the CPB when the VCL HRD parameters are in use + */ + UWORD32 au4_vcl_initial_cpb_removal_delay[MAX_CPB_CNT]; + + /** + * specify the initial alt CPB removal delays , respectively, + * for the CPB when the VCL HRD parameters are in use + */ + UWORD32 au4_vcl_initial_alt_cpb_removal_delay[MAX_CPB_CNT]; + + /** + * specify the initial CPB removal delay offset, respectively, + * for the CPB when the VCL HRD parameters are in use + */ + UWORD32 au4_vcl_initial_cpb_removal_delay_offset[MAX_CPB_CNT]; + + /** + * specify the alternate initial CPB removal delays offsets, respectively, + * for the CPB when the VCL HRD parameters are in use + */ + UWORD32 au4_vcl_initial_alt_cpb_removal_delay_offset[MAX_CPB_CNT]; + + /** + * Inital CPB removal delay + */ + UWORD32 u4_initial_cpb_removal_delay_length; + + /** + * CPB cnt for corr. sublayer + */ + UWORD32 u4_cpb_cnt; + + + /** + * VBV buffer size used in buffering period SEI + */ + UWORD32 u4_buffer_size_sei; + + /** + * Encoder buffer fullness used in buffering period SEI + */ + UWORD32 u4_dbf_sei; + + /** + * target bitrate used in buffering period SEI + */ + UWORD32 u4_target_bit_rate_sei; + +}buf_period_sei_params_t; + + +/** + * Picture Timing SEI parameters Info + */ +typedef struct +{ + /** + * derived from vui parameters + */ + UWORD8 u1_frame_field_info_present_flag; + + /** + * indicates whether a picture should be displayed as a + * frame or as one or more fields + */ + UWORD32 u4_pic_struct; + + UWORD32 u4_source_scan_type; + + /** + * if 1, indicates if the current pic is a duplicte pic in output order + */ + UWORD8 u1_duplicate_flag; + + /** + * specifies the number clock ticks between the nominal CPB removal time + * au associated with the pt SEI message and + * the preceding au in decoding order that contained a bp SEI message + */ + UWORD32 u4_au_cpb_removal_delay_minus1; + + /** + * compute the DPB output time of the picture + */ + UWORD32 u4_pic_dpb_output_delay; + + UWORD32 u4_pic_dpb_output_du_delay; + + /** + * specifies the number of decoding units in the access unit + * the picture timing SEI message is associated with + */ + UWORD32 u4_num_decoding_units_minus1; + + /** + * if 1 specifies that the du_common_cpb_removal_delay_increment_minus1 is present + */ + UWORD8 u1_du_common_cpb_removal_delay_flag; + + /** + * specifies the duration, in units of clock sub-ticks, + * between the nominal CPB removal times of any two consecutive decoding units + * in decoding order in the access unit associated with the pt_SEI message + */ + UWORD32 u4_du_common_cpb_removal_delay_increment_minus1; //same as u4_du_cpb_removal_delay_increment_minus1 + + /** + * specifies the number of NAL units in the decoding unit of the access unit + * the picture timing SEI message is associated with. + * range from 0 to (pic size in ctby - 1) + */ + UWORD32 au4_num_nalus_in_du_minus1[4320 / MIN_CTB_SIZE]; + + /** + * specifies the duration, in units of clock sub-ticks, + * between the nominal CPB removal times of the ( i + 1 )-th decoding unit and the i-th decoding unit, + * in decoding order, in the access unit associated with the pt_SEI message + */ + UWORD32 au4_du_cpb_removal_delay_increment_minus1[4320 / MIN_CTB_SIZE]; + +}pic_timing_sei_params_t; + +/** + * Structure to hold Recovery point SEI parameters Info + */ +typedef struct +{ + /** + * specifies the recovery point of output pictures in output order + */ + WORD32 i4_recovery_poc_cnt; + + UWORD8 u1_exact_match_flag; + + /** + * indicates the presence or absence of a broken link in the NAL unit + * stream at the location of the recovery point SEI message + */ + + UWORD8 u1_broken_link_flag; + +}recovery_point_sei_params_t; + +/** + * Structure to hold Mastering Display Colour Volume SEI + */ +typedef struct +{ + /** + * Array to store the display_primaries_x values + */ + UWORD16 au2_display_primaries_x[3]; + + /** + * Array to store the display_primaries_y values + */ + UWORD16 au2_display_primaries_y[3]; + + /** + * Variable to store the white point x value + */ + UWORD16 u2_white_point_x; + + /** + * Variable to store the white point y value + */ + UWORD16 u2_white_point_y; + + /** + * Variable to store the max display mastering luminance value + */ + UWORD32 u4_max_display_mastering_luminance; + + /** + * Variable to store the min display mastering luminance value + */ + UWORD32 u4_min_display_mastering_luminance; + +}mastering_dis_col_vol_sei_params_t; + +/** + * Structure to hold active parameter parameter set SEI parameters Info + */ +typedef struct +{ + /* + * active vps id + */ + + UWORD8 u1_active_video_parameter_set_id; + + /* + * default set to zero. + */ + UWORD8 u1_self_contained_cvs_flag; + + UWORD8 u1_no_parameter_set_update_flag; + + UWORD8 u1_num_sps_ids_minus1; + + /* + * active sps id + */ + UWORD8 au1_active_seq_parameter_set_id[15]; + + UWORD32 au4_layer_sps_idx[64]; + +}active_parameter_set_sei_param_t; + +/** + * Structure to hold SEI Hash values + */ +typedef struct +{ + /* + * SEI Hash values for each color component + */ + UWORD8 au1_sei_hash[3][16]; + +}hash_sei_param_t; + +/** + * Structure to hold user data registered SEI param Info + */ +typedef struct +{ + /** + * Contains country code by Annex A of Recommendation ITU-T T.35 + */ + UWORD8 u1_itu_t_t35_country_code; + + /** + * Contains country code by Annex B of Recommendation ITU-T T.35 + */ + UWORD8 u1_itu_t_t35_country_code_extension_byte; + + /** + * Contains data registered as specified in Recommendation ITU-T T.35 + */ + UWORD8 u1_itu_t_t35_payload_byte[MAX_USERDATA_PAYLOAD]; + + /** + * Valid payload size present in this buffer + */ + WORD32 i4_valid_payload_size; + + /** + * Total payload size incase payloadSize > IHEVCD_MAX_USERDATA_PAYLOAD + */ + WORD32 i4_payload_size; +}user_data_registered_itu_t_t35_t; + +/** + * Structure to hold time code SEI param info + */ +typedef struct +{ + /** + * Number of sets of clock timestamp syntax elements present for the current picture + */ + UWORD8 u1_num_clock_ts; + + /** + * Indicates presenc of associated set of clock timestamps + */ + UWORD8 au1_clock_timestamp_flag[MAX_NUM_CLOCK_TS]; + + /** + * Used in calculating clockTimestamp[i] + */ + UWORD8 au1_units_field_based_flag[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the method of dropping values of the n_frames[i] syntax element + */ + UWORD8 au1_counting_type[MAX_NUM_CLOCK_TS]; + + /** + * Specifies that the n_frames[i] syntax element is followed by seconds_value[i], + * minutes_value[i] and hours_value[i] + */ + UWORD8 au1_full_timestamp_flag[MAX_NUM_CLOCK_TS]; + + /** + * Indicates the discontinuity in clockTimestamp + */ + UWORD8 au1_discontinuity_flag[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the skipping of one or more values of n_frames[i] + */ + UWORD8 au1_cnt_dropped_flag[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the value of nFrames used to compute clockTimestamp[i] + */ + UWORD16 au2_n_frames[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the presence of seconds_value[i] and minutes_flag[i] + */ + UWORD8 au1_seconds_flag[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the presence of minutes_value[i] and hours_flag[i] + */ + UWORD8 au1_minutes_flag[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the presence of hours_value[i] + */ + UWORD8 au1_hours_flag[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the value of sS used to compute clockTimestamp[i] + */ + UWORD8 au1_seconds_value[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the value of mM used to compute clockTimestamp[i] + */ + UWORD8 au1_minutes_value[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the value of hH used to compute clockTimestamp[i] + */ + UWORD8 au1_hours_value[MAX_NUM_CLOCK_TS]; + + /** + * Specifies the length in bits of the time_offset_value[i] + */ + UWORD8 au1_time_offset_length[MAX_NUM_CLOCK_TS]; + + /** + * pecifies the value of tOffset used to compute clockTimestamp[i] + */ + UWORD8 au1_time_offset_value[MAX_NUM_CLOCK_TS]; + +}time_code_t; + + +/** + * Structure to hold SEI parameters Info + */ +typedef struct +{ + + WORD8 i1_sei_parameters_present_flag; + + WORD8 i1_aud_present_flag; + + WORD8 i1_buf_period_params_present_flag; + + WORD8 i1_pic_timing_params_present_flag; + + WORD8 i1_recovery_point_params_present_flag; + + WORD8 i1_active_parameter_set; + + WORD8 i4_sei_mastering_disp_colour_vol_params_present_flags; + + /* Enable/Disable SEI Hash on the Decoded picture & Hash type */ + /* < 3 : Checksum, 2 : CRC, 1 : MD5, 0 : disable > */ + /* Other values are not supported */ + WORD8 i1_decoded_pic_hash_sei_flag; + + /* number of user data e.g. CC data, BAR data, AFD data etc */ + WORD32 i4_sei_user_data_cnt; + + WORD8 i1_user_data_registered_present_flag; + + WORD8 i1_time_code_present_flag; + + buf_period_sei_params_t s_buf_period_sei_params; + + pic_timing_sei_params_t s_pic_timing_sei_params; + + recovery_point_sei_params_t s_recovery_point_params; + + active_parameter_set_sei_param_t s_active_parameter_set_sei_params; + + hash_sei_param_t s_hash_sei_params; + + mastering_dis_col_vol_sei_params_t s_mastering_dis_col_vol_sei_params; + + user_data_registered_itu_t_t35_t as_user_data_registered_itu_t_t35[USER_DATA_MAX]; + + time_code_t s_time_code; +} sei_params_t; + + +/** + * Sub-layer HRD parameters Info + */ +typedef struct +{ + /** + * (together with bit_rate_scale) specifies the + * maximum input bit rate for the i-th CPB + */ + UWORD32 au4_bit_rate_value_minus1[MAX_CPB_CNT]; + /** + * together with cpb_size_scale to specify the + * CPB size when the CPB operates at the access unit level. + */ + UWORD32 au4_cpb_size_value_minus1[MAX_CPB_CNT]; + + /** + * together with cpb_size_du_scale to specify the CPB size + * when the CPB operates at sub-picture level + */ + UWORD32 au4_cpb_size_du_value_minus1[MAX_CPB_CNT]; + + /** + * specifies the maximum input bit rate for the i-th CPB when the CPB + * operates at the sub-picture level. bit_rate_du_value_minus1[ i ] + * shall be in the range of 0 to 2^32 - 2 + */ + UWORD32 au4_bit_rate_du_value_minus1[MAX_CPB_CNT]; + + /** + * if 1, specifies that the HSS operates in a constant bit rate (CBR) mode + * if 0, specifies that the HSS operates in a intermittent bit rate (CBR) mode + */ + UWORD8 au1_cbr_flag[32]; + +}sub_lyr_hrd_params_t; + +/** + * HRD parameters Info + */ +typedef struct +{ + /** + * Indicates the presence of the + * num_units_in_ticks, time_scale flag + */ + UWORD8 u1_timing_info_present_flag; + + /** + * Number of units that + * correspond to one increment of the + * clock. Indicates the resolution + */ + UWORD32 u4_num_units_in_tick; + + /** + * The number of time units that pass in one second + */ + UWORD32 u4_time_scale; + + /** + * Nal- hrd parameters flag + */ + UWORD8 u1_nal_hrd_parameters_present_flag; + + /** + * VCL- hrd parameters flag + */ + UWORD8 u1_vcl_hrd_parameters_present_flag; + + /** + * Indicates the presence of NAL-HRD params or VCL_HRD params + * in the bitstream + */ + UWORD8 u1_cpbdpb_delays_present_flag; + + /** + * specifies that sub-picture level CPB removal delay parameters are + * present in picture timing SEI messages + */ + UWORD8 u1_sub_pic_cpb_params_present_flag; + + /** + * specify the clock sub-tick + * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1) + */ + UWORD8 u1_tick_divisor_minus2; + + /** + * specifies the length, in bits for the du cpb delay syntax in pt_sei + */ + UWORD8 u1_du_cpb_removal_delay_increment_length_minus1; + + /** + * Indicates presence of sub_pic_cpb_params in pic timing sei + */ + UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag; + + /** + * specifies the length, in bits, of the pic_dpb_output_du_delay syntax + * element in the picture timing SEI message and the + * pic_spt_dpb_output_du_delay syntax element in the decoding unit + * information SEI message + */ + UWORD8 u1_dpb_output_delay_du_length_minus1; + + /** + * (together with bit_rate_value_minus1) specifies the + * maximum input bit rate of the i-th CPB + */ + UWORD32 u4_bit_rate_scale; + + /** + * (together with cpb_size_du_value_minus1) specfies + * CPB size of the i-th CPB when the CPB operates + * at the access unit level + */ + UWORD32 u4_cpb_size_scale; + + /** + * (together with cpb_size_du_value_minus1) specfies + * CPB size of the i-th CPB when the CPB operates + * at the sub-picture level + */ + UWORD32 u4_cpb_size_du_scale; + + + /** + * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei + */ + UWORD8 u1_initial_cpb_removal_delay_length_minus1; + + /** + * specifies the length, in bits for the au cpb delay syntax in pt_sei + */ + UWORD8 u1_au_cpb_removal_delay_length_minus1; + + /** + * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message + */ + UWORD8 u1_dpb_output_delay_length_minus1; + + /** + * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times + * of consecutive pictures in output order is constrained refer to Table E-6 + */ + UWORD8 au1_fixed_pic_rate_general_flag[6]; + + UWORD8 au1_fixed_pic_rate_within_cvs_flag[6]; + + /** + * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the + * element units that specify HRD output times of consecutive pictures in output order is constrained + * refer to Table E-6 + */ + UWORD8 au1_elemental_duration_in_tc_minus1[6]; + + /** + * specifies the HRD operational mode + */ + UWORD8 au1_low_delay_hrd_flag[6]; + + /** + * 1 specifies the number of alternative CPB specifications in the + * bitstream of the cvs when HighestTid is equal to i + */ + UWORD8 au1_cpb_cnt_minus1[6]; + + + /** + * VUI level Sub-layer HRD parameters + */ + sub_lyr_hrd_params_t as_sub_layer_hrd_params[6]; + +}hrd_params_t; + +/** + * Structure to hold VUI parameters Info + */ +typedef struct +{ + /** + * indicates the presence of aspect_ratio + */ + UWORD8 u1_aspect_ratio_info_present_flag; + + /** + * specifies the aspect ratio of the luma samples + */ + UWORD8 u1_aspect_ratio_idc; + + /** + * width of the luma samples. user dependent + */ + UWORD16 u2_sar_width; + + /** + * hieght of the luma samples. user dependent + */ + UWORD16 u2_sar_height; + + /** + * if 1, specifies that the overscan_appropriate_flag is present + * if 0, the preferred display method for the video signal is unspecified + */ + UWORD8 u1_overscan_info_present_flag; + + /** + * if 1,indicates that the cropped decoded pictures output + * are suitable for display using overscan + */ + UWORD8 u1_overscan_appropriate_flag; + + /** + * if 1 specifies that video_format, video_full_range_flag and + * colour_description_present_flag are present + */ + UWORD8 u1_video_signal_type_present_flag; + + /** + * + */ + UWORD8 u1_video_format; + + /** + * indicates the black level and range of the luma and chroma signals + */ + UWORD8 u1_video_full_range_flag; + + /** + * if 1,to 1 specifies that colour_primaries, transfer_characteristics + * and matrix_coefficients are present + */ + UWORD8 u1_colour_description_present_flag; + + /** + * indicates the chromaticity coordinates of the source primaries + */ + UWORD8 u1_colour_primaries; + + /** + * indicates the opto-electronic transfer characteristic of the source picture + */ + UWORD8 u1_transfer_characteristics; + + /** + * the matrix coefficients used in deriving luma and chroma signals + * from the green, blue, and red primaries + */ + UWORD8 u1_matrix_coefficients; + + /** + * if 1, specifies that chroma_sample_loc_type_top_field and + * chroma_sample_loc_type_bottom_field are present + */ + UWORD8 u1_chroma_loc_info_present_flag; + + /** + * location of chroma samples + */ + UWORD8 u1_chroma_sample_loc_type_top_field; + + UWORD8 u1_chroma_sample_loc_type_bottom_field; + + /** + * if 1, indicates that the value of all decoded chroma samples is + * equal to 1 << ( BitDepthC - 1 ) + */ + UWORD8 u1_neutral_chroma_indication_flag; + + /** + * 1 indicates that the coded video sequence conveys pictures that represent fields + * 0 indicates the pictures that represents field + */ + UWORD8 u1_field_seq_flag; + + /** + * specifies that picture timing SEI messages are present for every picture + */ + UWORD8 u1_frame_field_info_present_flag; + + /** + * 1 indicates that the default display window parameters follow next in the VUI + */ + UWORD8 u1_default_display_window_flag; + + /** + * specify the samples of the pictures in the coded video sequence + * that are within the default display window, + * in terms of a rectangular region specified in picture coordinates for display + */ + UWORD32 u4_def_disp_win_left_offset; + + UWORD32 u4_def_disp_win_right_offset; + + UWORD32 u4_def_disp_win_top_offset; + + UWORD32 u4_def_disp_win_bottom_offset; + + /** + * to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue + */ + UWORD8 u1_vui_hrd_parameters_present_flag; + + /** + * VUI level HRD parameters + */ + hrd_params_t s_vui_hrd_parameters; + + /** + * Indicates the presence of the + * num_units_in_ticks, time_scale flag + */ + UWORD8 u1_vui_timing_info_present_flag; + + /** + * Number of units that + * correspond to one increment of the + * clock. Indicates the resolution + */ + UWORD32 u4_vui_num_units_in_tick; + + /** + * The number of time units that pass in one second + */ + UWORD32 u4_vui_time_scale; + /** + * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order, + * is proportional to the output time of the picture relative to that of the first picture in the cvs + */ + UWORD8 u1_poc_proportional_to_timing_flag; + + /** + * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks + * corresponding to a difference of poc values equal to 1 + */ + UWORD8 u1_num_ticks_poc_diff_one_minus1; + + /** + * 1, specifies that the following cvs bitstream restriction parameters are present + */ + UWORD8 u1_bitstream_restriction_flag; + + /** + * if 1, indicates that each pps that is active in the cvs has + * the same value of the tile syntax elements + */ + UWORD8 u1_tiles_fixed_structure_flag; + + /** + * if 0, indicates that no pel outside the pic boundaries and + * no sub-pels derived using pels outside the pic boundaries is used for inter prediction + */ + UWORD8 u1_motion_vectors_over_pic_boundaries_flag; + + /** + * if 1, indicates + * all P/B slices belonging to the same pic have an identical refpic list0, + * all B slices that belong to the same picture have an identical refpic list1. + */ + UWORD8 u1_restricted_ref_pic_lists_flag; + + /** + * min_spatial_segmentation_idc, when not equal to 0, establishes a bound on the maximum possible size of distinct + * coded spatial segmentation regions in the pictures of the CVS. When min_spatial_segmentation_idc is not present, it is + * inferred to be equal to 0. The value of min_spatial_segmentation_idc shall be in the range of 0 to 4095, inclusive. + * + * can be used by a decoder to calculate the maximum number of luma samples to be processed by one processing thread + * + * If tiles=0 and entropy_sync=0 then + * no slice shall exceed ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 luma samples + * + * If tiles=1 and entropy_sync=0 then + * no tile shall exceed ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 luma samples + * + * If tiles=0 and entropy_sync=1 then + * ( 2 * pic_height_in_luma_samples + pic_width_in_luma_samples ) * CtbSizeY + * <= ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 + */ + UWORD32 u4_min_spatial_segmentation_idc; + /** + * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units + * associated with any coded picture + */ + UWORD8 u1_max_bytes_per_pic_denom; + + /** + * Indicates an upper bound for the number of bits of coding_unit() data + */ + UWORD8 u1_max_bits_per_mincu_denom; + + /** + * Indicate the maximum absolute value of a decoded horizontal MV component + * in quarter-pel luma units + */ + UWORD8 u1_log2_max_mv_length_horizontal; + + /** + * Indicate the maximum absolute value of a decoded vertical MV component + * in quarter-pel luma units + */ + UWORD8 u1_log2_max_mv_length_vertical; +}vui_t; + /** * Picture buffer */ @@ -59,6 +923,16 @@ typedef struct */ UWORD8 u1_buf_id; + + // See IV_FLD_TYPE_T for all field types + UWORD32 e4_fld_type; + + sei_params_t s_sei_params; + + WORD32 i4_vui_present; + + vui_t s_vui; + }pic_buf_t; @@ -386,7 +1260,7 @@ typedef struct UWORD32 b2_pred_mode : 2; -/** + /** * Merge flag for each partition - 0 or 1 */ UWORD32 b1_merge_flag : 1; @@ -424,7 +1298,6 @@ typedef struct */ UWORD32 b2_part_idx : 2; - }pu_t; /** @@ -442,7 +1315,6 @@ typedef struct */ UWORD32 b4_pos_y : 4; - /*************************************************************************/ /* Luma TU size (width or height) = 1 << (b3_size + 2) */ /* i.e. 0 : 4, 1 : 8, 2: 16, 3: 32, 4: 64 */ @@ -460,7 +1332,6 @@ typedef struct /* Cr info. For the first three TUs in 8x8 (for 4x4 luma) this will */ /* be zero. For all the other cases this will be 1 */ /*************************************************************************/ - /** * 4x4 Luma TUs only the fourth one contains cb,cr * TODO: Check if this is really needed, cb_cbf and cr_cbf should be enough @@ -909,7 +1780,6 @@ typedef struct }tu_sblk_coeff_data_t; - /*************************************************************************/ /* The following describes how each of the CU cases are handled */ /*************************************************************************/ @@ -1310,7 +2180,6 @@ typedef struct */ WORD8 ai1_bit_rate_info_present_flag[VPS_MAX_SUB_LAYERS]; - /** * pic_rate_info_present_flag[i] */ @@ -1320,428 +2189,23 @@ typedef struct * avg_bit_rate[i] */ UWORD16 au2_avg_bit_rate[VPS_MAX_SUB_LAYERS]; + /** * max_bit_rate[i] */ UWORD16 au2_max_bit_rate[VPS_MAX_SUB_LAYERS]; + /** * constant_pic_rate_idc[i] */ WORD8 ai1_constant_pic_rate_idc[VPS_MAX_SUB_LAYERS]; + /** * avg_pic_rate[i] */ UWORD16 au2_avg_pic_rate[VPS_MAX_SUB_LAYERS]; }vps_t; -/** - * Sub-layer HRD parameters Info - */ -typedef struct -{ - /** - * (together with bit_rate_scale) specifies the - * maximum input bit rate for the i-th CPB - */ - UWORD32 au4_bit_rate_value_minus1[32]; - /** - * together with cpb_size_scale to specify the - * CPB size when the CPB operates at the access unit level. - */ - UWORD32 au4_cpb_size_value_minus1[32]; - - /** - * together with cpb_size_du_scale to specify the CPB size - * when the CPB operates at sub-picture level - */ - UWORD32 au4_cpb_size_du_value_minus1[32]; - - /** - * specifies the maximum input bit rate for the i-th CPB when the CPB - * operates at the sub-picture level. bit_rate_du_value_minus1[ i ] - * shall be in the range of 0 to 2^32 - 2 - */ - UWORD32 au4_bit_rate_du_value_minus1[32]; - - /** - * if 1, specifies that the HSS operates in a constant bit rate (CBR) mode - * if 0, specifies that the HSS operates in a intermittent bit rate (CBR) mode - */ - UWORD8 au1_cbr_flag[32]; - -}sub_lyr_hrd_params_t; - -/** - * HRD parameters Info - */ -typedef struct -{ - - /** - * Indicates the presence of the - * num_units_in_ticks, time_scale flag - */ - UWORD8 u1_timing_info_present_flag; - - /** - * Number of units that - * correspond to one increment of the - * clock. Indicates the resolution - */ - UWORD32 u4_num_units_in_tick; - - /** - * The number of time units that pass in one second - */ - UWORD32 u4_time_scale; - - /** - * Nal- hrd parameters flag - */ - UWORD8 u1_nal_hrd_parameters_present_flag; - - /** - * VCL- hrd parameters flag - */ - UWORD8 u1_vcl_hrd_parameters_present_flag; - - /** - * Indicates the presence of NAL-HRD params or VCL_HRD params - * in the bitstream - */ - UWORD8 u1_cpbdpb_delays_present_flag; - - /** - * specifies that sub-picture level CPB removal delay parameters are - * present in picture timing SEI messages - */ - UWORD8 u1_sub_pic_cpb_params_present_flag; - - /** - * specify the clock sub-tick - * (the minimum interval of time that can be represented in the coded data when sub_pic_cpb_params_present_flag is equal to 1) - */ - UWORD8 u1_tick_divisor_minus2; - - /** - * specifies the length, in bits for the du cpb delay syntax in pt_sei - */ - UWORD8 u1_du_cpb_removal_delay_increment_length_minus1; - - /** - * Indicates presence of sub_pic_cpb_params in pic timing sei - */ - UWORD8 u1_sub_pic_cpb_params_in_pic_timing_sei_flag; - - /** - * specifies the length, in bits, of the pic_dpb_output_du_delay syntax - * element in the picture timing SEI message and the - * pic_spt_dpb_output_du_delay syntax element in the decoding unit - * information SEI message - */ - UWORD8 u1_dpb_output_delay_du_length_minus1; - - /** - * (together with bit_rate_value_minus1) specifies the - * maximum input bit rate of the i-th CPB - */ - UWORD32 u4_bit_rate_scale; - - /** - * (together with cpb_size_du_value_minus1) specfies - * CPB size of the i-th CPB when the CPB operates - * at the access unit level - */ - UWORD32 u4_cpb_size_scale; - - /** - * (together with cpb_size_du_value_minus1) specfies - * CPB size of the i-th CPB when the CPB operates - * at the sub-picture level - */ - UWORD32 u4_cpb_size_du_scale; - - - /** - * specifies the length, in bits for initial cpb delay (nal/vcl)sysntax in bp sei - */ - UWORD8 u1_initial_cpb_removal_delay_length_minus1; - - /** - * specifies the length, in bits for the au cpb delay syntax in pt_sei - */ - UWORD8 u1_au_cpb_removal_delay_length_minus1; - - /** - * specifies the length, in bits, of the pic_dpb_output_delay syntax element in the pt SEI message - */ - UWORD8 u1_dpb_output_delay_length_minus1; - - /** - * if 1, , for the highest temporal sub-layers, the temporal distance between the HRD output times - * of consecutive pictures in output order is constrained refer to Table E-6 - */ - UWORD8 au1_fixed_pic_rate_general_flag[6]; - - UWORD8 au1_fixed_pic_rate_within_cvs_flag[6]; - - /** - * if 1, , for the highest temporal sub-layers, the temporal distance (in clock ticks) between the - * element units that specify HRD output times of consecutive pictures in output order is constrained - * refer to Table E-6 - */ - UWORD8 au1_elemental_duration_in_tc_minus1[6]; - - /** - * specifies the HRD operational mode - */ - UWORD8 au1_low_delay_hrd_flag[6]; - - /** - * 1 specifies the number of alternative CPB specifications in the - * bitstream of the cvs when HighestTid is equal to i - */ - UWORD8 au1_cpb_cnt_minus1[6]; - - - /** - * VUI level Sub-layer HRD parameters - */ - sub_lyr_hrd_params_t as_sub_layer_hrd_params[6]; - -}hrd_params_t; - - -/** - * Structure to hold VUI parameters Info - */ -typedef struct -{ - /** - * indicates the presence of aspect_ratio - */ - UWORD8 u1_aspect_ratio_info_present_flag; - - /** - * specifies the aspect ratio of the luma samples - */ - UWORD8 u1_aspect_ratio_idc; - - /** - * width of the luma samples. user dependent - */ - UWORD16 u2_sar_width; - - /** - * hieght of the luma samples. user dependent - */ - UWORD16 u2_sar_height; - - /** - * if 1, specifies that the overscan_appropriate_flag is present - * if 0, the preferred display method for the video signal is unspecified - */ - UWORD8 u1_overscan_info_present_flag; - - /** - * if 1,indicates that the cropped decoded pictures output - * are suitable for display using overscan - */ - UWORD8 u1_overscan_appropriate_flag; - - /** - * if 1 specifies that video_format, video_full_range_flag and - * colour_description_present_flag are present - */ - UWORD8 u1_video_signal_type_present_flag; - - /** - * - */ - UWORD8 u1_video_format; - - /** - * indicates the black level and range of the luma and chroma signals - */ - UWORD8 u1_video_full_range_flag; - - /** - * if 1,to 1 specifies that colour_primaries, transfer_characteristics - * and matrix_coefficients are present - */ - UWORD8 u1_colour_description_present_flag; - - /** - * indicates the chromaticity coordinates of the source primaries - */ - UWORD8 u1_colour_primaries; - - /** - * indicates the opto-electronic transfer characteristic of the source picture - */ - UWORD8 u1_transfer_characteristics; - - /** - * the matrix coefficients used in deriving luma and chroma signals - * from the green, blue, and red primaries - */ - UWORD8 u1_matrix_coefficients; - - /** - * if 1, specifies that chroma_sample_loc_type_top_field and - * chroma_sample_loc_type_bottom_field are present - */ - UWORD8 u1_chroma_loc_info_present_flag; - - /** - * location of chroma samples - */ - UWORD8 u1_chroma_sample_loc_type_top_field; - - UWORD8 u1_chroma_sample_loc_type_bottom_field; - - /** - * if 1, indicates that the value of all decoded chroma samples is - * equal to 1 << ( BitDepthC - 1 ) - */ - UWORD8 u1_neutral_chroma_indication_flag; - - /** - * 1 indicates that the coded video sequence conveys pictures that represent fields - * 0 indicates the pictures that represents field - */ - UWORD8 u1_field_seq_flag; - - /** - * specifies that picture timing SEI messages are present for every picture - */ - UWORD8 u1_frame_field_info_present_flag; - - /** - * 1 indicates that the default display window parameters follow next in the VUI - */ - UWORD8 u1_default_display_window_flag; - - /** - * specify the samples of the pictures in the coded video sequence - * that are within the default display window, - * in terms of a rectangular region specified in picture coordinates for display - */ - UWORD32 u4_def_disp_win_left_offset; - - UWORD32 u4_def_disp_win_right_offset; - - UWORD32 u4_def_disp_win_top_offset; - - UWORD32 u4_def_disp_win_bottom_offset; - - /** - * to 1 specifies that the syntax structure hrd_parameters is present in the vui_parameters syntax structue - */ - UWORD8 u1_vui_hrd_parameters_present_flag; - - /** - * VUI level HRD parameters - */ - hrd_params_t s_vui_hrd_parameters; - - /** - * Indicates the presence of the - * num_units_in_ticks, time_scale flag - */ - UWORD8 u1_vui_timing_info_present_flag; - - /** - * Number of units that - * correspond to one increment of the - * clock. Indicates the resolution - */ - UWORD32 u4_vui_num_units_in_tick; - - /** - * The number of time units that pass in one second - */ - UWORD32 u4_vui_time_scale; - /** - * if 1, indicates that the POC for each picture in the coded video sequence (cvs) (not the first picture), in decoding order, - * is proportional to the output time of the picture relative to that of the first picture in the cvs - */ - UWORD8 u1_poc_proportional_to_timing_flag; - - /** - * num_ticks_poc_diff_one_minus1 plus 1 specifies the number of clock ticks - * corresponding to a difference of poc values equal to 1 - */ - UWORD8 u1_num_ticks_poc_diff_one_minus1; - - /** - * 1, specifies that the following cvs bitstream restriction parameters are present - */ - UWORD8 u1_bitstream_restriction_flag; - - /** - * if 1, indicates that each pps that is active in the cvs has - * the same value of the tile syntax elements - */ - UWORD8 u1_tiles_fixed_structure_flag; - - /** - * if 0, indicates that no pel outside the pic boundaries and - * no sub-pels derived using pels outside the pic boundaries is used for inter prediction - */ - UWORD8 u1_motion_vectors_over_pic_boundaries_flag; - - /** - * if 1, indicates - * all P/B slices belonging to the same pic have an identical refpic list0, - * all B slices that belong to the same picture have an identical refpic list1. - */ - UWORD8 u1_restricted_ref_pic_lists_flag; - - /** - * min_spatial_segmentation_idc, when not equal to 0, establishes a bound on the maximum possible size of distinct - * coded spatial segmentation regions in the pictures of the CVS. When min_spatial_segmentation_idc is not present, it is - * inferred to be equal to 0. The value of min_spatial_segmentation_idc shall be in the range of 0 to 4095, inclusive. - * - * can be used by a decoder to calculate the maximum number of luma samples to be processed by one processing thread - * - * If tiles=0 and entropy_sync=0 then - * no slice shall exceed ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 luma samples - * - * If tiles=1 and entropy_sync=0 then - * no tile shall exceed ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 luma samples - * - * If tiles=0 and entropy_sync=1 then - * ( 2 * pic_height_in_luma_samples + pic_width_in_luma_samples ) * CtbSizeY - * <= ( 4 * PicSizeInSamplesY ) / minSpatialSegmentationTimes4 - */ - UWORD32 u4_min_spatial_segmentation_idc; - /** - * Indicates a number of bytes not exceeded by the sum of the sizes of the VCL NAL units - * associated with any coded picture - */ - UWORD8 u1_max_bytes_per_pic_denom; - - /** - * Indicates an upper bound for the number of bits of coding_unit() data - */ - UWORD8 u1_max_bits_per_mincu_denom; - - /** - * Indicate the maximum absolute value of a decoded horizontal MV component - * in quarter-pel luma units - */ - UWORD8 u1_log2_max_mv_length_horizontal; - - /** - * Indicate the maximum absolute value of a decoded vertical MV component - * in quarter-pel luma units - */ - UWORD8 u1_log2_max_mv_length_vertical; - - -}vui_t; - /** * Structure to hold SPS info @@ -2288,283 +2752,6 @@ typedef struct }pps_t; - -/** - * Buffering Period SEI parameters Info - */ -typedef struct -{ - /** - * specifies SPS Id active for the coded picture assosiated - * with the bp message. - */ - UWORD8 u1_sps_id; - - /** - * Derived from Hrd parameters - */ - UWORD8 u1_sub_pic_cpb_params_present_flag; - - /** - * specifies the presence of the initial_alt_cpb_removal_delay[ i ] - * and initial_alt_cpb_removal_offset[ i ] syntax elements - */ - UWORD8 u1_rap_cpb_params_present_flag; - - /** - * cbp removal delay used in buffering period SEI - */ - UWORD32 cpb_delay_offset; - - /** - * dbp removal delay used in buffering period SEI - */ - UWORD32 dpb_delay_offset; - - /** - * concatanation flag - */ - UWORD8 concatenation_flag; - - /** - * delata cbp removal delay - */ - UWORD32 au_cpb_removal_delay_delta_minus1; - - /** - * specify the default initial CPB removal delays, respectively, - * for the CPB when the NAL HRD parameters are in use - */ - UWORD32 au4_nal_initial_cpb_removal_delay[32]; - - /** - * specify the alternate initial CPB removal delays, respectively, - * for the CPB when the NAL HRD parameters are in use - */ - UWORD32 au4_nal_initial_alt_cpb_removal_delay[32]; - - /** - * specify the initial CPB removal delay offset, respectively, - * for the CPB when the NAL HRD parameters are in use - */ - UWORD32 au4_nal_initial_cpb_removal_delay_offset[32]; - - /** - * specify the alternate initial CPB removal delays offsets, respectively, - * for the CPB when the NAL HRD parameters are in use - */ - UWORD32 au4_nal_initial_alt_cpb_removal_delay_offset[32]; - - /** - * specify the default initial CPB removal delays, respectively, - * for the CPB when the VCL HRD parameters are in use - */ - UWORD32 au4_vcl_initial_cpb_removal_delay[32]; - - /** - * specify the initial alt CPB removal delays , respectively, - * for the CPB when the VCL HRD parameters are in use - */ - UWORD32 au4_vcl_initial_alt_cpb_removal_delay[32]; - - /** - * specify the initial CPB removal delay offset, respectively, - * for the CPB when the VCL HRD parameters are in use - */ - UWORD32 au4_vcl_initial_cpb_removal_delay_offset[32]; - - /** - * specify the alternate initial CPB removal delays offsets, respectively, - * for the CPB when the VCL HRD parameters are in use - */ - UWORD32 au4_vcl_initial_alt_cpb_removal_delay_offset[32]; - - /** - * Inital CPB removal delay - */ - UWORD32 u4_initial_cpb_removal_delay_length; - - /** - * CPB cnt for corr. sublayer - */ - UWORD32 u4_cpb_cnt; - - - /** - * VBV buffer size used in buffering period SEI - */ - UWORD32 u4_buffer_size_sei; - - /** - * Encoder buffer fullness used in buffering period SEI - */ - UWORD32 u4_dbf_sei; - - /** - * target bitrate used in buffering period SEI - */ - UWORD32 u4_target_bit_rate_sei; - - - - -}buf_period_sei_params_t; - - -/** - * Picture Timing SEI parameters Info - */ -typedef struct -{ - /** - * derived from vui parameters - */ - UWORD8 u1_frame_field_info_present_flag; - - /** - * indicates whether a picture should be displayed as a - * frame or as one or more fields - */ - UWORD32 u4_pic_struct; - - UWORD8 u1_num_clk_ticks; - - /** - * indicates whether a scan-type of the pic should be interpreted - * as progressive or interlaced - */ - UWORD8 u1_progressive_source_idc; - - /** - * if 1, indicates if the current pic is a duplicte pic in output order - */ - UWORD8 u1_duplicate_flag; - - /** - * specifies the number clock ticks between the nominal CPB removal time - * au associated with the pt SEI message and - * the preceding au in decoding order that contained a bp SEI message - */ - UWORD32 u4_au_cpb_removal_delay_minus1; - - /** - * compute the DPB output time of the picture - */ - UWORD32 u4_pic_dpb_output_delay; - - UWORD32 u4_pic_dpb_output_du_delay; - - /** - * specifies the number of decoding units in the access unit - * the picture timing SEI message is associated with - */ - UWORD32 u4_num_decoding_units_minus1; - - /** - * if 1 specifies that the du_common_cpb_removal_delay_increment_minus1 is present - */ - UWORD32 u4_du_common_cpb_removal_delay_flag; - - /** - * specifies the duration, in units of clock sub-ticks, - * between the nominal CPB removal times of any two consecutive decoding units - * in decoding order in the access unit associated with the pt_SEI message - */ - UWORD32 u4_du_common_cpb_removal_delay_increment_minus1; //same as u4_du_cpb_removal_delay_increment_minus1 - - /** - * specifies the number of NAL units in the decoding unit of the access unit - * the picture timing SEI message is associated with. - * range from 0 to (pic size in ctby - 1) - */ - UWORD32 u4_num_nalus_in_du_minus1; - - /** - * specifies the duration, in units of clock sub-ticks, - * between the nominal CPB removal times of the ( i + 1 )-th decoding unit and the i-th decoding unit, - * in decoding order, in the access unit associated with the pt_SEI message - */ - UWORD32 u4_du_cpb_removal_delay_increment_minus1; - - -}pic_timing_sei_params_t; - -/** - * Structure to hold Recovery point SEI parameters Info - */ -typedef struct -{ - /** - * specifies the recovery point of output pictures in output order - */ - WORD32 i4_recovery_poc_cnt; - - UWORD8 u1_exact_match_flag; - - /** - * indicates the presence or absence of a broken link in the NAL unit - * stream at the location of the recovery point SEI message - */ - - UWORD8 u1_broken_link_flag; - -}recovery_point_sei_params_t; -/** - * Structure to hold active parameter parameter set SEI parameters Info - */ -typedef struct -{ - /* - * active vps id - */ - - UWORD8 u1_active_video_parameter_set_id; - - /* - * default set to zero. - */ - UWORD8 u1_self_contained_cvs_flag; - - UWORD8 u1_no_parameter_set_update_flag; - - UWORD8 u1_num_sps_ids_minus1; - - /* - * active sps id - */ - UWORD8 au1_active_seq_parameter_set_id[15]; - -}active_parameter_set_sei_param_t; - -/** - * Structure to hold SEI parameters Info - */ -typedef struct -{ - - WORD8 i1_sei_parameters_present_flag; - - WORD8 i1_aud_present_flag; - - WORD8 i1_buf_period_params_present_flag; - - WORD8 i1_pic_timing_params_present_flag; - - WORD8 i1_recovery_point_params_present_flag; - - buf_period_sei_params_t s_buf_period_sei_params; - - pic_timing_sei_params_t s_pic_timing_sei_params; - - recovery_point_sei_params_t s_recovery_point_params; - - active_parameter_set_sei_param_t s_active_parameter_set_sei_params; - - -} sei_params_t; - - - /** * Structure to hold slice header info */ |