1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * Copyright 2015 Rockchip Electronics Co. LTD 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Licensed under the Apache License, Version 2.0 (the "License"); 5*4882a593Smuzhiyun * you may not use this file except in compliance with the License. 6*4882a593Smuzhiyun * You may obtain a copy of the License at 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * http://www.apache.org/licenses/LICENSE-2.0 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * Unless required by applicable law or agreed to in writing, software 11*4882a593Smuzhiyun * distributed under the License is distributed on an "AS IS" BASIS, 12*4882a593Smuzhiyun * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*4882a593Smuzhiyun * See the License for the specific language governing permissions and 14*4882a593Smuzhiyun * limitations under the License. 15*4882a593Smuzhiyun */ 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun #ifndef __VP8E_SYNTAX_H__ 18*4882a593Smuzhiyun #define __VP8E_SYNTAX_H__ 19*4882a593Smuzhiyun 20*4882a593Smuzhiyun #include "rk_type.h" 21*4882a593Smuzhiyun #include "mpp_enc_cfg.h" 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun typedef struct { 24*4882a593Smuzhiyun RK_S32 a1; 25*4882a593Smuzhiyun RK_S32 a2; 26*4882a593Smuzhiyun RK_S32 qp_prev; 27*4882a593Smuzhiyun RK_S32 qs[15]; 28*4882a593Smuzhiyun RK_S32 bits[15]; 29*4882a593Smuzhiyun RK_S32 pos; 30*4882a593Smuzhiyun RK_S32 len; 31*4882a593Smuzhiyun RK_S32 zero_div; 32*4882a593Smuzhiyun } Vp8eLinReg; 33*4882a593Smuzhiyun 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun typedef struct vp8e_feedback_t { 36*4882a593Smuzhiyun /* rc */ 37*4882a593Smuzhiyun void *result; 38*4882a593Smuzhiyun RK_U32 hw_status; /* 0:corret, 1:error */ 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun RK_S32 qp_sum; 41*4882a593Smuzhiyun RK_S32 cp[10]; 42*4882a593Smuzhiyun RK_S32 mad_count; 43*4882a593Smuzhiyun RK_S32 rlc_count; 44*4882a593Smuzhiyun RK_U32 out_strm_size; 45*4882a593Smuzhiyun RK_U32 out_hw_strm_size; 46*4882a593Smuzhiyun RK_S64 sse_sum; 47*4882a593Smuzhiyun } Vp8eFeedback; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun typedef struct vp8e_virture_buffer_t { 50*4882a593Smuzhiyun RK_S32 buffer_size; 51*4882a593Smuzhiyun RK_S32 bit_rate; //MppEncRcCfg.bps_target 52*4882a593Smuzhiyun RK_S32 bps_max; 53*4882a593Smuzhiyun RK_S32 bps_min; 54*4882a593Smuzhiyun RK_S32 bit_per_pic; 55*4882a593Smuzhiyun RK_S32 pic_time_inc; 56*4882a593Smuzhiyun RK_S32 time_scale; 57*4882a593Smuzhiyun RK_S32 units_in_tic; 58*4882a593Smuzhiyun RK_S32 virtual_bit_cnt; 59*4882a593Smuzhiyun RK_S32 real_bit_cnt; 60*4882a593Smuzhiyun RK_S32 buffer_occupancy; 61*4882a593Smuzhiyun RK_S32 skip_frame_target; 62*4882a593Smuzhiyun RK_S32 skipped_frames; 63*4882a593Smuzhiyun RK_S32 bucket_fullness; 64*4882a593Smuzhiyun RK_S32 gop_rem; 65*4882a593Smuzhiyun } Vp8eVirBuf; 66*4882a593Smuzhiyun 67*4882a593Smuzhiyun typedef struct { 68*4882a593Smuzhiyun RK_U8 pic_rc_enable; 69*4882a593Smuzhiyun RK_U8 pic_skip; 70*4882a593Smuzhiyun RK_U8 frame_coded; 71*4882a593Smuzhiyun RK_S32 mb_per_pic; 72*4882a593Smuzhiyun RK_S32 mb_rows; 73*4882a593Smuzhiyun RK_S32 curr_frame_intra; 74*4882a593Smuzhiyun RK_S32 prev_frame_intra; 75*4882a593Smuzhiyun RK_S32 fixed_qp; 76*4882a593Smuzhiyun RK_S32 qp_hdr; 77*4882a593Smuzhiyun RK_S32 qp_min; 78*4882a593Smuzhiyun RK_S32 qp_max; 79*4882a593Smuzhiyun RK_S32 qp_hdr_prev; 80*4882a593Smuzhiyun RK_S32 fps_out_num; //MppEncRcCfg.fps_out_num 81*4882a593Smuzhiyun RK_S32 fps_out_denorm; //MppEncRcCfg.fps_out_denorm 82*4882a593Smuzhiyun RK_S32 fps_out; 83*4882a593Smuzhiyun 84*4882a593Smuzhiyun RK_S32 target_pic_size; 85*4882a593Smuzhiyun RK_S32 frame_bit_cnt; 86*4882a593Smuzhiyun RK_S32 gop_qp_sum; 87*4882a593Smuzhiyun RK_S32 gop_qp_div; 88*4882a593Smuzhiyun RK_S32 frame_cnt; 89*4882a593Smuzhiyun RK_S32 gop_len; 90*4882a593Smuzhiyun RK_S32 intra_qp_delta; 91*4882a593Smuzhiyun RK_S32 fixed_intra_qp; 92*4882a593Smuzhiyun RK_S32 mb_qp_adjustment; 93*4882a593Smuzhiyun RK_S32 intra_picture_rate; 94*4882a593Smuzhiyun RK_S32 golden_picture_rate; 95*4882a593Smuzhiyun RK_S32 altref_picture_rate; 96*4882a593Smuzhiyun RK_U32 time_inc; 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun Vp8eLinReg lin_reg; 99*4882a593Smuzhiyun Vp8eLinReg r_error; 100*4882a593Smuzhiyun Vp8eVirBuf virbuf; 101*4882a593Smuzhiyun } Vp8eRc; 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun typedef enum Vp8eSyntaxType_e { 104*4882a593Smuzhiyun VP8E_SYN_CFG, 105*4882a593Smuzhiyun VP8E_SYN_RC, 106*4882a593Smuzhiyun } Vp8eSyntaxType; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun typedef struct { 109*4882a593Smuzhiyun Vp8eSyntaxType type; 110*4882a593Smuzhiyun void *data; 111*4882a593Smuzhiyun } Vp8eSyntax; 112*4882a593Smuzhiyun #endif /*__VP8E_SYNTAX_H__*/ 113