xref: /rockchip-linux_mpp/mpp/base/inc/mpp_enc_ref.h (revision 437bfbeb9567cca9cd9080e3f6954aa9d6a94f18)
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 __MPP_ENC_REF_H__
18*437bfbebSnyanmisaka #define __MPP_ENC_REF_H__
19*437bfbebSnyanmisaka 
20*437bfbebSnyanmisaka #include "rk_venc_ref.h"
21*437bfbebSnyanmisaka 
22*437bfbebSnyanmisaka #define REF_MODE_IS_GLOBAL(mode)    ((mode >= REF_MODE_GLOBAL) && (mode < REF_MODE_GLOBAL_BUTT))
23*437bfbebSnyanmisaka #define REF_MODE_IS_LT_MODE(mode)   ((mode > REF_MODE_LT) && (mode < REF_MODE_LT_BUTT))
24*437bfbebSnyanmisaka #define REF_MODE_IS_ST_MODE(mode)   ((mode > REF_MODE_ST) && (mode < REF_MODE_ST_BUTT))
25*437bfbebSnyanmisaka 
26*437bfbebSnyanmisaka typedef struct MppEncCpbInfo_t {
27*437bfbebSnyanmisaka     RK_S32              dpb_size;
28*437bfbebSnyanmisaka     RK_S32              max_lt_cnt;
29*437bfbebSnyanmisaka     RK_S32              max_st_cnt;
30*437bfbebSnyanmisaka     RK_S32              max_lt_idx;
31*437bfbebSnyanmisaka     RK_S32              max_st_tid;
32*437bfbebSnyanmisaka     /* loop length of st/lt config */
33*437bfbebSnyanmisaka     RK_S32              lt_gop;
34*437bfbebSnyanmisaka     RK_S32              st_gop;
35*437bfbebSnyanmisaka } MppEncCpbInfo;
36*437bfbebSnyanmisaka 
37*437bfbebSnyanmisaka typedef struct MppEncRefCfgImpl_t {
38*437bfbebSnyanmisaka     const char          *name;
39*437bfbebSnyanmisaka     RK_S32              ready;
40*437bfbebSnyanmisaka     RK_U32              debug;
41*437bfbebSnyanmisaka 
42*437bfbebSnyanmisaka     /* config from user */
43*437bfbebSnyanmisaka     RK_S32              keep_cpb;
44*437bfbebSnyanmisaka     RK_S32              max_lt_cfg;
45*437bfbebSnyanmisaka     RK_S32              max_st_cfg;
46*437bfbebSnyanmisaka     RK_S32              lt_cfg_cnt;
47*437bfbebSnyanmisaka     RK_S32              st_cfg_cnt;
48*437bfbebSnyanmisaka     RK_S32              max_tlayers;
49*437bfbebSnyanmisaka     MppEncRefLtFrmCfg   *lt_cfg;
50*437bfbebSnyanmisaka     MppEncRefStFrmCfg   *st_cfg;
51*437bfbebSnyanmisaka 
52*437bfbebSnyanmisaka     /* generated parameter for MppEncRefs */
53*437bfbebSnyanmisaka     MppEncCpbInfo       cpb_info;
54*437bfbebSnyanmisaka } MppEncRefCfgImpl;
55*437bfbebSnyanmisaka 
56*437bfbebSnyanmisaka #ifdef __cplusplus
57*437bfbebSnyanmisaka extern "C" {
58*437bfbebSnyanmisaka #endif
59*437bfbebSnyanmisaka 
60*437bfbebSnyanmisaka MppEncRefCfg mpp_enc_ref_default(void);
61*437bfbebSnyanmisaka MPP_RET mpp_enc_ref_cfg_copy(MppEncRefCfg dst, MppEncRefCfg src);
62*437bfbebSnyanmisaka MppEncCpbInfo *mpp_enc_ref_cfg_get_cpb_info(MppEncRefCfg ref);
63*437bfbebSnyanmisaka 
64*437bfbebSnyanmisaka #define check_is_mpp_enc_ref_cfg(ref) _check_is_mpp_enc_ref_cfg(__FUNCTION__, ref)
65*437bfbebSnyanmisaka MPP_RET _check_is_mpp_enc_ref_cfg(const char *func, void *ref);
66*437bfbebSnyanmisaka 
67*437bfbebSnyanmisaka #ifdef __cplusplus
68*437bfbebSnyanmisaka }
69*437bfbebSnyanmisaka #endif
70*437bfbebSnyanmisaka 
71*437bfbebSnyanmisaka #endif /*__MPP_ENC_REF_H__*/
72