/* * Copyright 2015 Rockchip Electronics Co. LTD * * 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. */ #ifndef __H264E_SPS_H__ #define __H264E_SPS_H__ #include "mpp_packet.h" #include "mpp_enc_cfg.h" #include "h264_syntax.h" typedef struct H264eVui_t { RK_U32 vui_present; RK_S32 aspect_ratio_info_present; RK_S32 aspect_ratio_idc; RK_S32 sar_width; RK_S32 sar_height; RK_S32 overscan_info_present; RK_S32 overscan_appropriate_flag; RK_S32 signal_type_present; RK_S32 vidformat; RK_S32 fullrange; RK_S32 color_description_present; RK_S32 colorprim; RK_S32 colortrc; RK_S32 colmatrix; RK_S32 chroma_loc_info_present; RK_S32 chroma_loc_top; RK_S32 chroma_loc_bottom; RK_S32 timing_info_present; RK_U32 num_units_in_tick; RK_U32 time_scale; RK_S32 fixed_frame_rate; RK_S32 nal_hrd_parameters_present; RK_S32 vcl_hrd_parameters_present; struct { RK_S32 cpb_cnt; RK_S32 bit_rate_scale; RK_S32 cpb_size_scale; RK_S32 bit_rate_value; RK_S32 cpb_size_value; RK_S32 bit_rate_unscaled; RK_S32 cpb_size_unscaled; RK_S32 cbr_hrd; RK_S32 initial_cpb_removal_delay_length; RK_S32 cpb_removal_delay_length; RK_S32 dpb_output_delay_length; RK_S32 time_offset_length; } hrd; RK_S32 pic_struct_present; RK_S32 bitstream_restriction; RK_S32 motion_vectors_over_pic_boundaries; RK_S32 max_bytes_per_pic_denom; RK_S32 max_bits_per_mb_denom; RK_S32 log2_max_mv_length_horizontal; RK_S32 log2_max_mv_length_vertical; RK_S32 num_reorder_frames; RK_S32 max_dec_frame_buffering; } H264eVui; typedef struct H264eSps_t { RK_S32 profile_idc; RK_S32 constraint_set0; RK_S32 constraint_set1; RK_S32 constraint_set2; RK_S32 constraint_set3; RK_S32 constraint_set4; RK_S32 constraint_set5; RK_S32 level_idc; RK_S32 sps_id; RK_S32 chroma_format_idc; /* scaling list is in pps */ RK_S32 log2_max_frame_num_minus4; RK_S32 pic_order_cnt_type; /* poc type 0 */ RK_S32 log2_max_poc_lsb_minus4; RK_S32 num_ref_frames; RK_S32 gaps_in_frame_num_value_allowed; RK_S32 pic_width_in_mbs; RK_S32 pic_height_in_mbs; // alway frame encoding RK_S32 frame_mbs_only; RK_S32 direct8x8_inference; RK_S32 cropping; struct { RK_S32 left; RK_S32 right; RK_S32 top; RK_S32 bottom; } crop; H264eVui vui; } H264eSps; #ifdef __cplusplus extern "C" { #endif MPP_RET h264e_sps_update(H264eSps *sps, MppEncCfgSet *cfg); MPP_RET h264e_sps_to_packet(H264eSps *sps, MppPacket packet, RK_S32 *offset, RK_S32 *len); MPP_RET h264e_sps_dump(H264eSps *sps); #ifdef __cplusplus } #endif #endif /* __H264E_SPS_H__ */