xref: /OK3568_Linux_fs/external/mpp/mpp/common/vp8e_syntax.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
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