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