1 /* SPDX-License-Identifier: Apache-2.0 OR MIT */ 2 /* 3 * Copyright (c) 2015 Rockchip Electronics Co., Ltd. 4 */ 5 6 #ifndef __MPP_ENC_CFG_H__ 7 #define __MPP_ENC_CFG_H__ 8 9 #include "rk_venc_cfg.h" 10 #include "rk_venc_cmd.h" 11 #include "rk_venc_ref.h" 12 #include "mpp_rc_defs.h" 13 14 #include "kmpp_obj.h" 15 16 /* 17 * MppEncCfgSet shows the relationship between different configuration 18 * Due to the huge amount of configurable parameters we need to setup 19 * only minimum amount of necessary parameters. 20 * 21 * For normal user rc and prep config are enough. 22 */ 23 #define POS_TO_FLAG(p, pos) ((rk_u8*)(p) + ((rk_u32)(pos) & 0xffff)) 24 #define POS_TO_ELEM(p, pos) ((rk_u8*)(p) + ((rk_u32)(pos) >> 16)) 25 26 typedef struct MppEncCfgSet_t { 27 MppEncBaseCfg base; 28 29 // esential config 30 MppEncPrepCfg prep; 31 MppEncRcCfg rc; 32 33 // hardware related config 34 MppEncHwCfg hw; 35 36 // codec detail config 37 MppEncH264Cfg h264; 38 MppEncH265Cfg h265; 39 MppEncJpegCfg jpeg; 40 MppEncVp8Cfg vp8; 41 42 MppEncSliceSplit split; 43 MppEncRefCfg ref_cfg; 44 union { 45 MppEncROICfg roi; 46 /* for kmpp venc roi */ 47 MppEncROICfgLegacy roi_legacy; 48 }; 49 /* for kmpp venc osd */ 50 MppEncOSDData3 osd; 51 MppEncOSDPltCfg plt_cfg; 52 MppEncOSDPlt plt_data; 53 /* for kmpp venc ref */ 54 MppEncRefParam ref_param; 55 56 // quality fine tuning config 57 MppEncFineTuneCfg tune; 58 } MppEncCfgSet; 59 60 #ifdef __cplusplus 61 extern "C" { 62 #endif 63 64 rk_u32 *mpp_enc_cfg_prep_change(MppEncCfgSet *cfg); 65 rk_u32 *mpp_enc_cfg_rc_change(MppEncCfgSet *cfg); 66 rk_u32 *mpp_enc_cfg_hw_change(MppEncCfgSet *cfg); 67 rk_u32 *mpp_enc_cfg_tune_change(MppEncCfgSet *cfg); 68 rk_u32 *mpp_enc_cfg_h264_change(MppEncCfgSet *cfg); 69 rk_u32 *mpp_enc_cfg_h265_change(MppEncCfgSet *cfg); 70 rk_u32 *mpp_enc_cfg_jpeg_change(MppEncCfgSet *cfg); 71 rk_u32 *mpp_enc_cfg_vp8_change(MppEncCfgSet *cfg); 72 73 #define KMPP_OBJ_NAME mpp_enc_cfg 74 #define KMPP_OBJ_INTF_TYPE MppEncCfg 75 #include "kmpp_obj_func.h" 76 77 #ifdef __cplusplus 78 } 79 #endif 80 81 #endif /*__MPP_ENC_CFG_H__*/ 82