| /****************************************************************************** |
| * |
| * Copyright (C) 2018 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at: |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| * |
| ***************************************************************************** |
| * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore |
| */ |
| |
| /** |
| ****************************************************************************** |
| * |
| * @file ihevce_encode_header_sei_vui.h |
| * |
| * @brief |
| * This file contains structures and interface prototypes for header vui/sei |
| * encoding |
| * |
| * @author |
| * ittiam |
| * |
| ****************************************************************************** |
| */ |
| |
| #ifndef _IHEVCE_ENCODE_HEADER_SEI_VUI_H_ |
| #define _IHEVCE_ENCODE_HEADER_SEI_VUI_H_ |
| |
| /*****************************************************************************/ |
| /* Function Macros */ |
| /*****************************************************************************/ |
| |
| /** |
| ****************************************************************************** |
| * @brief Macro to calculate the CRC for a bit index |
| ****************************************************************************** |
| */ |
| #define CALC_CRC_BIT_LEVEL(u4_crc_val, u1_cur_val, bit_idx) \ |
| { \ |
| UWORD32 u4_bit_val, u4_crc_msb; \ |
| u4_crc_msb = (u4_crc_val >> 15) & 1; \ |
| u4_bit_val = (u1_cur_val >> (7 - bit_idx)) & 1; \ |
| u4_crc_val = (((u4_crc_val << 1) + u4_bit_val) & 0xffff) ^ (u4_crc_msb * 0x1021); \ |
| } |
| |
| /*****************************************************************************/ |
| /* Enums */ |
| /*****************************************************************************/ |
| typedef enum |
| { |
| /* SEI PREFIX */ |
| IHEVCE_SEI_BUF_PERIOD_T = 0, |
| IHEVCE_SEI_PIC_TIMING_T, |
| IHEVCE_SEI_PAN_SCAN_RECT_T, |
| IHEVCE_SEI_FILLER_PAYLOAD_T, |
| IHEVCE_SEI_USER_DATA_REGISTERED_ITU_T_T35_T, |
| IHEVCE_SEI_USER_DATA_UNREGISTERED_T, |
| IHEVCE_SEI_RECOVERY_POINT_T = 6, |
| IHEVCE_SEI_SCENE_INFO_T = 9, |
| IHEVCE_SEI_FULL_FRAME_SNAPSHOT_T = 15, |
| IHEVCE_SEI_PROGRESSIVE_REFINEMENT_SEGMENT_START_T = 16, |
| IHEVCE_SEI_PROGRESSIVE_REFINEMENT_SEGMENT_END_T = 17, |
| IHEVCE_SEI_FILM_GRAIN_CHARACTERISTICS_T = 19, |
| IHEVCE_SEI_POST_FILTER_HINT_T = 22, |
| IHEVCE_SEI_TONE_MAPPING_INFO_T = 23, |
| IHEVCE_SEI_FRAME_PACKING_ARRANGEMENT_T = 45, |
| IHEVCE_SEI_DISPLAY_ORIENTATION_T = 47, |
| IHEVCE_SEI_SOP_DESCRIPTION_T = 128, |
| IHEVCE_SEI_ACTIVE_PARAMETER_SETS_T = 129, |
| IHEVCE_SEI_DECODING_UNIT_INFO_T = 130, |
| IHEVCE_SEI_TL0_INDEX_T = 131, |
| IHEVCE_SEI_DECODED_PICTURE_HASH_T = 132, /* SEI SUFFIX */ |
| IHEVCE_SEI_SCALABLE_NESTING_T = 133, |
| IHEVCE_SEI_REGION_REFRESH_INFO_T = 134, |
| IHEVCE_SEI_MASTERING_DISP_COL_VOL_T = 137, |
| IHEVCE_SEI_CONTENT_LIGHT_LEVEL_DATA_T = 144, |
| |
| /* SIE SUFFIX/PREFIX REST OF THE SEI */ |
| IHEVCE_SEI_RESERVED_SEI_MESSAGE_T |
| } IHEVCE_SEI_TYPE; |
| |
| /*****************************************************************************/ |
| /* Extern Function Declarations */ |
| /*****************************************************************************/ |
| |
| WORD32 ihevce_generate_sub_layer_hrd_params( |
| bitstrm_t *ps_bitstrm, |
| sub_lyr_hrd_params_t *ps_sub_lyr_hrd_params, |
| hrd_params_t *ps_hrd_params, |
| WORD32 cpb_cnt_minus1); |
| |
| WORD32 |
| ihevce_generate_hrd_params(bitstrm_t *ps_bitstrm, hrd_params_t *ps_hrd_params, sps_t *ps_sps); |
| |
| WORD32 ihevce_generate_vui(bitstrm_t *ps_bitstrm, sps_t *ps_sps, vui_t s_vui); |
| |
| WORD32 ihevce_put_buf_period_sei_params( |
| buf_period_sei_params_t *ps_bp_sei, vui_t *ps_vui_params, bitstrm_t *ps_bitstrm); |
| |
| WORD32 ihevce_put_active_parameter_set_sei_params( |
| active_parameter_set_sei_param_t *ps_act_sei, bitstrm_t *ps_bitstrm); |
| |
| WORD32 ihevce_put_recovery_point_sei_params( |
| recovery_point_sei_params_t *ps_rp_sei, bitstrm_t *ps_bitstrm); |
| |
| WORD32 ihevce_put_pic_timing_sei_params( |
| pic_timing_sei_params_t *ps_pt_sei, vui_t *ps_vui_params, bitstrm_t *ps_bitstrm); |
| |
| WORD32 ihevce_put_sei_msg( |
| IHEVCE_SEI_TYPE e_payload_type, |
| sei_params_t *ps_sei_params, |
| vui_t *ps_vui_params, |
| bitstrm_t *ps_bitstrm, |
| UWORD32 i4_registered_user_data_length, |
| UWORD8 *pu1_user_data_registered); |
| |
| WORD32 ihevce_generate_sei( |
| bitstrm_t *ps_bitstrm, |
| sei_params_t *ps_sei_params, |
| vui_t *ps_vui_params, |
| WORD32 insert_per_cra, |
| WORD32 nal_unit_header, |
| UWORD32 u4_num_sei_payloads, |
| sei_payload_t *ps_sei_payload); |
| |
| WORD32 ihevce_populate_recovery_point_sei( |
| sei_params_t *ps_sei, ihevce_vui_sei_params_t *ps_vui_sei_prms); |
| |
| WORD32 ihevce_populate_mastering_disp_col_vol_sei( |
| sei_params_t *ps_sei, ihevce_out_strm_params_t *ps_out_strm_prms); |
| |
| WORD32 ihevce_populate_picture_timing_sei( |
| sei_params_t *ps_sei, |
| vui_t *ps_vui, |
| ihevce_src_params_t *ps_src_params, |
| WORD32 u4_bottom_field_flag); |
| |
| WORD32 ihevce_populate_buffering_period_sei( |
| sei_params_t *ps_sei, vui_t *ps_vui, sps_t *ps_sps, ihevce_vui_sei_params_t *ps_vui_sei_prms); |
| |
| WORD32 ihevce_populate_active_parameter_set_sei(sei_params_t *ps_sei, vps_t *ps_vps, sps_t *ps_sps); |
| |
| WORD32 ihevce_populate_hash_sei( |
| sei_params_t *ps_sei, |
| WORD32 bit_depth, |
| void *pv_y_buf, |
| WORD32 y_wd, |
| WORD32 y_ht, |
| WORD32 y_strd, |
| void *pv_u_buf, |
| WORD32 uv_wd, |
| WORD32 uv_ht, |
| WORD32 uv_strd, |
| WORD32 i4_frame_pos_x, |
| WORD32 i4_frame_pos_y); |
| |
| WORD32 ihevce_populate_vui( |
| vui_t *ps_vui, |
| sps_t *ps_sps, |
| ihevce_src_params_t *ps_src_params, |
| ihevce_vui_sei_params_t *ps_vui_sei_prms, |
| WORD32 i4_resolution_id, |
| ihevce_tgt_params_t *ps_tgt_params, |
| ihevce_static_cfg_params_t *ps_stat_prms, |
| WORD32 i4_bitrate_instance_id); |
| |
| #endif // _IHEVCE_ENCODE_HEADER_SEI_VUI_H_ |