singe/thirdparty/rockchip-mpp/mpp/inc/mpp_enc_cfg.h
2026-09-10 20:17:28 -05:00

81 lines
2 KiB
C

/* SPDX-License-Identifier: Apache-2.0 OR MIT */
/*
* Copyright (c) 2015 Rockchip Electronics Co., Ltd.
*/
#ifndef MPP_ENC_CFG_H
#define MPP_ENC_CFG_H
#include "rk_venc_cfg.h"
#include "rk_venc_cmd.h"
#include "rk_venc_ref.h"
#include "mpp_rc_defs.h"
#include "kmpp_obj.h"
/*
* MppEncCfgSet shows the relationship between different configuration
* Due to the huge amount of configurable parameters we need to setup
* only minimum amount of necessary parameters.
*
* For normal user rc and prep config are enough.
*/
#define POS_TO_FLAG(p, pos) ((rk_u8*)(p) + ((rk_u32)(pos) & 0xffff))
#define POS_TO_ELEM(p, pos) ((rk_u8*)(p) + ((rk_u32)(pos) >> 16))
typedef struct MppEncCfgSet_t {
MppEncBaseCfg base;
// esential config
MppEncPrepCfg prep;
MppEncRcCfg rc;
// hardware related config
MppEncHwCfg hw;
// codec detail config
MppEncH264Cfg h264;
MppEncH265Cfg h265;
MppEncJpegCfg jpeg;
MppEncVp8Cfg vp8;
MppEncSliceSplit split;
MppEncRefCfg ref_cfg;
union {
MppEncROICfg roi;
/* for kmpp venc roi */
MppEncROICfgLegacy roi_legacy;
};
/* for kmpp venc osd */
MppEncOSDData3 osd;
MppEncOSDPltCfg plt_cfg;
MppEncOSDPlt plt_data;
/* for kmpp venc ref */
MppEncRefParam ref_param;
// quality fine tuning config
MppEncFineTuneCfg tune;
} MppEncCfgSet;
#ifdef __cplusplus
extern "C" {
#endif
rk_u32 *mpp_enc_cfg_prep_change(MppEncCfgSet *cfg);
rk_u32 *mpp_enc_cfg_rc_change(MppEncCfgSet *cfg);
rk_u32 *mpp_enc_cfg_hw_change(MppEncCfgSet *cfg);
rk_u32 *mpp_enc_cfg_tune_change(MppEncCfgSet *cfg);
rk_u32 *mpp_enc_cfg_h264_change(MppEncCfgSet *cfg);
rk_u32 *mpp_enc_cfg_h265_change(MppEncCfgSet *cfg);
rk_u32 *mpp_enc_cfg_jpeg_change(MppEncCfgSet *cfg);
rk_u32 *mpp_enc_cfg_vp8_change(MppEncCfgSet *cfg);
#define KMPP_OBJ_NAME mpp_enc_cfg
#define KMPP_OBJ_INTF_TYPE MppEncCfg
#include "kmpp_obj_func.h"
#ifdef __cplusplus
}
#endif
#endif /* MPP_ENC_CFG_H */