1*437bfbebSnyanmisaka /* 2*437bfbebSnyanmisaka * Copyright 2015 Rockchip Electronics Co. LTD 3*437bfbebSnyanmisaka * 4*437bfbebSnyanmisaka * Licensed under the Apache License, Version 2.0 (the "License"); 5*437bfbebSnyanmisaka * you may not use this file except in compliance with the License. 6*437bfbebSnyanmisaka * You may obtain a copy of the License at 7*437bfbebSnyanmisaka * 8*437bfbebSnyanmisaka * http://www.apache.org/licenses/LICENSE-2.0 9*437bfbebSnyanmisaka * 10*437bfbebSnyanmisaka * Unless required by applicable law or agreed to in writing, software 11*437bfbebSnyanmisaka * distributed under the License is distributed on an "AS IS" BASIS, 12*437bfbebSnyanmisaka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*437bfbebSnyanmisaka * See the License for the specific language governing permissions and 14*437bfbebSnyanmisaka * limitations under the License. 15*437bfbebSnyanmisaka */ 16*437bfbebSnyanmisaka 17*437bfbebSnyanmisaka #ifndef __H264E_SPS_H__ 18*437bfbebSnyanmisaka #define __H264E_SPS_H__ 19*437bfbebSnyanmisaka 20*437bfbebSnyanmisaka #include "mpp_packet.h" 21*437bfbebSnyanmisaka #include "mpp_enc_cfg.h" 22*437bfbebSnyanmisaka 23*437bfbebSnyanmisaka #include "h264_syntax.h" 24*437bfbebSnyanmisaka 25*437bfbebSnyanmisaka typedef struct H264eVui_t { 26*437bfbebSnyanmisaka RK_U32 vui_en; 27*437bfbebSnyanmisaka 28*437bfbebSnyanmisaka RK_S32 aspect_ratio_info_present; 29*437bfbebSnyanmisaka RK_S32 aspect_ratio_idc; 30*437bfbebSnyanmisaka RK_S32 sar_width; 31*437bfbebSnyanmisaka RK_S32 sar_height; 32*437bfbebSnyanmisaka 33*437bfbebSnyanmisaka RK_S32 overscan_info_present; 34*437bfbebSnyanmisaka RK_S32 overscan_appropriate_flag; 35*437bfbebSnyanmisaka 36*437bfbebSnyanmisaka RK_S32 signal_type_present; 37*437bfbebSnyanmisaka RK_S32 vidformat; 38*437bfbebSnyanmisaka RK_S32 fullrange; 39*437bfbebSnyanmisaka RK_S32 color_description_present; 40*437bfbebSnyanmisaka RK_S32 colorprim; 41*437bfbebSnyanmisaka RK_S32 colortrc; 42*437bfbebSnyanmisaka RK_S32 colmatrix; 43*437bfbebSnyanmisaka 44*437bfbebSnyanmisaka RK_S32 chroma_loc_info_present; 45*437bfbebSnyanmisaka RK_S32 chroma_loc_top; 46*437bfbebSnyanmisaka RK_S32 chroma_loc_bottom; 47*437bfbebSnyanmisaka 48*437bfbebSnyanmisaka RK_S32 timing_info_present; 49*437bfbebSnyanmisaka RK_U32 num_units_in_tick; 50*437bfbebSnyanmisaka RK_U32 time_scale; 51*437bfbebSnyanmisaka RK_S32 fixed_frame_rate; 52*437bfbebSnyanmisaka 53*437bfbebSnyanmisaka RK_S32 nal_hrd_parameters_present; 54*437bfbebSnyanmisaka RK_S32 vcl_hrd_parameters_present; 55*437bfbebSnyanmisaka 56*437bfbebSnyanmisaka struct { 57*437bfbebSnyanmisaka RK_S32 cpb_cnt; 58*437bfbebSnyanmisaka RK_S32 bit_rate_scale; 59*437bfbebSnyanmisaka RK_S32 cpb_size_scale; 60*437bfbebSnyanmisaka RK_S32 bit_rate_value; 61*437bfbebSnyanmisaka RK_S32 cpb_size_value; 62*437bfbebSnyanmisaka RK_S32 bit_rate_unscaled; 63*437bfbebSnyanmisaka RK_S32 cpb_size_unscaled; 64*437bfbebSnyanmisaka RK_S32 cbr_hrd; 65*437bfbebSnyanmisaka 66*437bfbebSnyanmisaka RK_S32 initial_cpb_removal_delay_length; 67*437bfbebSnyanmisaka RK_S32 cpb_removal_delay_length; 68*437bfbebSnyanmisaka RK_S32 dpb_output_delay_length; 69*437bfbebSnyanmisaka RK_S32 time_offset_length; 70*437bfbebSnyanmisaka } hrd; 71*437bfbebSnyanmisaka 72*437bfbebSnyanmisaka RK_S32 pic_struct_present; 73*437bfbebSnyanmisaka RK_S32 bitstream_restriction; 74*437bfbebSnyanmisaka RK_S32 motion_vectors_over_pic_boundaries; 75*437bfbebSnyanmisaka RK_S32 max_bytes_per_pic_denom; 76*437bfbebSnyanmisaka RK_S32 max_bits_per_mb_denom; 77*437bfbebSnyanmisaka RK_S32 log2_max_mv_length_horizontal; 78*437bfbebSnyanmisaka RK_S32 log2_max_mv_length_vertical; 79*437bfbebSnyanmisaka RK_S32 num_reorder_frames; 80*437bfbebSnyanmisaka RK_S32 max_dec_frame_buffering; 81*437bfbebSnyanmisaka } H264eVui; 82*437bfbebSnyanmisaka 83*437bfbebSnyanmisaka typedef struct H264eSps_t { 84*437bfbebSnyanmisaka RK_S32 profile_idc; 85*437bfbebSnyanmisaka 86*437bfbebSnyanmisaka RK_S32 constraint_set0; 87*437bfbebSnyanmisaka RK_S32 constraint_set1; 88*437bfbebSnyanmisaka RK_S32 constraint_set2; 89*437bfbebSnyanmisaka RK_S32 constraint_set3; 90*437bfbebSnyanmisaka RK_S32 constraint_set4; 91*437bfbebSnyanmisaka RK_S32 constraint_set5; 92*437bfbebSnyanmisaka 93*437bfbebSnyanmisaka RK_S32 level_idc; 94*437bfbebSnyanmisaka RK_U32 sps_id; 95*437bfbebSnyanmisaka 96*437bfbebSnyanmisaka RK_S32 chroma_format_idc; 97*437bfbebSnyanmisaka /* scaling list is in pps */ 98*437bfbebSnyanmisaka 99*437bfbebSnyanmisaka RK_S32 log2_max_frame_num_minus4; 100*437bfbebSnyanmisaka RK_S32 pic_order_cnt_type; 101*437bfbebSnyanmisaka /* poc type 0 */ 102*437bfbebSnyanmisaka RK_S32 log2_max_poc_lsb_minus4; 103*437bfbebSnyanmisaka 104*437bfbebSnyanmisaka RK_S32 num_ref_frames; 105*437bfbebSnyanmisaka RK_S32 gaps_in_frame_num_value_allowed; 106*437bfbebSnyanmisaka RK_S32 pic_width_in_mbs; 107*437bfbebSnyanmisaka RK_S32 pic_height_in_mbs; 108*437bfbebSnyanmisaka 109*437bfbebSnyanmisaka // alway frame encoding 110*437bfbebSnyanmisaka RK_S32 frame_mbs_only; 111*437bfbebSnyanmisaka RK_S32 direct8x8_inference; 112*437bfbebSnyanmisaka 113*437bfbebSnyanmisaka RK_S32 cropping; 114*437bfbebSnyanmisaka struct { 115*437bfbebSnyanmisaka RK_S32 left; 116*437bfbebSnyanmisaka RK_S32 right; 117*437bfbebSnyanmisaka RK_S32 top; 118*437bfbebSnyanmisaka RK_S32 bottom; 119*437bfbebSnyanmisaka } crop; 120*437bfbebSnyanmisaka 121*437bfbebSnyanmisaka H264eVui vui; 122*437bfbebSnyanmisaka } H264eSps; 123*437bfbebSnyanmisaka 124*437bfbebSnyanmisaka #ifdef __cplusplus 125*437bfbebSnyanmisaka extern "C" { 126*437bfbebSnyanmisaka #endif 127*437bfbebSnyanmisaka 128*437bfbebSnyanmisaka MPP_RET h264e_sps_update(H264eSps *sps, MppEncCfgSet *cfg); 129*437bfbebSnyanmisaka MPP_RET h264e_sps_to_packet(H264eSps *sps, MppPacket packet, RK_S32 *offset, 130*437bfbebSnyanmisaka RK_S32 *len, MppEncCfgSet *cfg); 131*437bfbebSnyanmisaka MPP_RET h264e_sps_dump(H264eSps *sps); 132*437bfbebSnyanmisaka 133*437bfbebSnyanmisaka #ifdef __cplusplus 134*437bfbebSnyanmisaka } 135*437bfbebSnyanmisaka #endif 136*437bfbebSnyanmisaka 137*437bfbebSnyanmisaka #endif /* __H264E_SPS_H__ */ 138