| /* | 
|  * 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__ */ |