mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-06 17:46:50 +08:00
[rk_venc_cmd]: Change encoder interface
Add encoder misc config for later extension. Change-Id: Ie67b2d5e74227e5089b16752d8088a9502142ddd Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -39,13 +39,20 @@
|
|||||||
#define CMD_ENC_CFG_ALL (0x00000000)
|
#define CMD_ENC_CFG_ALL (0x00000000)
|
||||||
#define CMD_ENC_CFG_RC (0x00000100)
|
#define CMD_ENC_CFG_RC (0x00000100)
|
||||||
#define CMD_ENC_CFG_FRM (0x00000200)
|
#define CMD_ENC_CFG_FRM (0x00000200)
|
||||||
#define CMD_ENC_CFG_REF (0x00000300)
|
#define CMD_ENC_CFG_PREP (0x00000300)
|
||||||
#define CMD_ENC_CFG_PREP (0x00000400)
|
#define CMD_ENC_CFG_CODEC (0x00001000)
|
||||||
#define CMD_ENC_CFG_H264 (0x00001000)
|
#define CMD_ENC_CFG_H264 (0x00001000)
|
||||||
#define CMD_ENC_CFG_H265 (0x00001800)
|
#define CMD_ENC_CFG_H265 (0x00001800)
|
||||||
#define CMD_ENC_CFG_VP8 (0x00002000)
|
#define CMD_ENC_CFG_VP8 (0x00002000)
|
||||||
|
#define CMD_ENC_CFG_VP9 (0x00002800)
|
||||||
|
#define CMD_ENC_CFG_AV1 (0x00003000)
|
||||||
#define CMD_ENC_CFG_MJPEG (0x00004000)
|
#define CMD_ENC_CFG_MJPEG (0x00004000)
|
||||||
#define CMD_ENC_CFG_EXTRA (0x00008000)
|
|
||||||
|
#define CMD_ENC_CFG_MISC (0x00008000)
|
||||||
|
#define CMD_ENC_CFG_SPLIT (0x00008100)
|
||||||
|
#define CMD_ENC_CFG_GOPREF (0x00008200)
|
||||||
|
#define CMD_ENC_CFG_ROI (0x00008300)
|
||||||
|
#define CMD_ENC_CFG_OSD (0x00008400)
|
||||||
|
|
||||||
typedef enum {
|
typedef enum {
|
||||||
MPP_OSAL_CMD_BASE = CMD_MODULE_OSAL,
|
MPP_OSAL_CMD_BASE = CMD_MODULE_OSAL,
|
||||||
@@ -119,9 +126,6 @@ typedef enum {
|
|||||||
MPP_ENC_SET_FRM, /* set MppFrame structure */
|
MPP_ENC_SET_FRM, /* set MppFrame structure */
|
||||||
MPP_ENC_GET_FRM, /* get MppFrame structure */
|
MPP_ENC_GET_FRM, /* get MppFrame structure */
|
||||||
|
|
||||||
MPP_ENC_CFG_REF = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_REF,
|
|
||||||
MPP_ENC_SET_REF, /* set MppEncRefCfg structure */
|
|
||||||
MPP_ENC_GET_REF, /* get MppEncRefCfg structure */
|
|
||||||
|
|
||||||
MPP_ENC_CFG_PREP = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_PREP,
|
MPP_ENC_CFG_PREP = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_PREP,
|
||||||
MPP_ENC_SET_PREP, /* set MppEncPrepCfg structure */
|
MPP_ENC_SET_PREP, /* set MppEncPrepCfg structure */
|
||||||
@@ -135,7 +139,14 @@ typedef enum {
|
|||||||
|
|
||||||
MPP_ENC_CFG_MJPEG = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_MJPEG,
|
MPP_ENC_CFG_MJPEG = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_MJPEG,
|
||||||
|
|
||||||
MPP_ENC_CFG_EXTRA = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_EXTRA,
|
MPP_ENC_CFG_MISC = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_MISC,
|
||||||
|
|
||||||
|
MPP_ENC_CFG_SPLIT = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_SPLIT,
|
||||||
|
MPP_ENC_SET_SPLIT, /* set MppEncSliceSplit structure */
|
||||||
|
MPP_ENC_GET_SPLIT, /* get MppEncSliceSplit structure */
|
||||||
|
|
||||||
|
MPP_ENC_CFG_GOPREF = CMD_MODULE_CODEC | CMD_CTX_ID_ENC | CMD_ENC_CFG_GOPREF,
|
||||||
|
MPP_ENC_SET_GOPREF, /* set MppEncGopRef structure */
|
||||||
|
|
||||||
MPP_ENC_CMD_END,
|
MPP_ENC_CMD_END,
|
||||||
|
|
||||||
|
@@ -20,28 +20,29 @@
|
|||||||
#include "mpp_frame.h"
|
#include "mpp_frame.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Configure of encoder is separated into four parts.
|
* Configure of encoder is very complicated. So we divide configures into
|
||||||
|
* four parts:
|
||||||
*
|
*
|
||||||
* 1. Rate control parameter
|
* 1. Rate control parameter
|
||||||
* This is quality and bitrate request from user.
|
* This is quality and bitrate request from user.
|
||||||
* For controller only
|
|
||||||
*
|
*
|
||||||
* 2. Data source MppFrame parameter
|
* 2. Data source MppFrame parameter
|
||||||
* This is data source buffer information.
|
* This is data source buffer information.
|
||||||
* For both controller and hal
|
* Now it is PreP config
|
||||||
|
* PreP : Encoder Preprocess configuration
|
||||||
*
|
*
|
||||||
* 3. Video codec infomation
|
* 3. Video codec infomation
|
||||||
* This is user custormized stream information.
|
* This is user custormized stream information.
|
||||||
* For hal only
|
|
||||||
*
|
|
||||||
* 4. Extra parameter
|
|
||||||
* including:
|
* including:
|
||||||
* PreP : encoder Preprocess configuration
|
* H.264 / H.265 / vp8 / mjpeg
|
||||||
|
*
|
||||||
|
* 4. Misc parameter
|
||||||
|
* including:
|
||||||
|
* Split : Slice split configuration
|
||||||
|
* GopRef: Reference gop configuration
|
||||||
* ROI : Region Of Interest
|
* ROI : Region Of Interest
|
||||||
* OSD : On Screen Display
|
* OSD : On Screen Display
|
||||||
* MD : Motion Detection
|
* MD : Motion Detection
|
||||||
* extra : SEI for h.264 / Exif for mjpeg
|
|
||||||
* For hal only
|
|
||||||
*
|
*
|
||||||
* The module transcation flow is as follows:
|
* The module transcation flow is as follows:
|
||||||
*
|
*
|
||||||
@@ -360,86 +361,6 @@ typedef struct MppEncPrepCfg_t {
|
|||||||
MppEncPrepSharpenCfg sharpen;
|
MppEncPrepSharpenCfg sharpen;
|
||||||
} MppEncPrepCfg;
|
} MppEncPrepCfg;
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Mpp ROI parameter
|
|
||||||
* Region configure define a rectangle as ROI
|
|
||||||
* @note x, y, w, h are calculated in pixels, which had better be 16-pixel aligned.
|
|
||||||
* These parameters MUST retain in memory when encoder is running.
|
|
||||||
* TODO: Only absolute qp is supported so far, relative qp should be supported
|
|
||||||
* in the future. Also, the ROI regions can be overlaid with each other,
|
|
||||||
* so overlay priority should be considered.
|
|
||||||
*/
|
|
||||||
typedef struct MppEncROIRegion_t {
|
|
||||||
RK_U16 x; /**< horizontal position of top left corner */
|
|
||||||
RK_U16 y; /**< vertical position of top left corner */
|
|
||||||
RK_U16 w; /**< width of ROI rectangle */
|
|
||||||
RK_U16 h; /**< height of ROI rectangle */
|
|
||||||
RK_U16 intra; /**< flag of forced intra macroblock */
|
|
||||||
RK_U16 quality; /**< absolute qp of macroblock */
|
|
||||||
} MppEncROIRegion;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief MPP encoder's ROI configuration
|
|
||||||
*/
|
|
||||||
typedef struct MppEncROICfg_t {
|
|
||||||
RK_U32 number; /**< ROI rectangle number */
|
|
||||||
MppEncROIRegion *regions;/**< ROI parameters */
|
|
||||||
} MppEncROICfg;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Mpp OSD parameter
|
|
||||||
*
|
|
||||||
* Mpp OSD support total 8 regions
|
|
||||||
* Mpp OSD support 256-color palette two mode palette:
|
|
||||||
* 1. Configurable OSD palette
|
|
||||||
* When palette is set.
|
|
||||||
* 2. fixed OSD palette
|
|
||||||
* When palette is NULL.
|
|
||||||
*
|
|
||||||
* if MppEncOSDPlt.buf != NULL , palette includes maximun 256 levels,
|
|
||||||
* every level composed of 32 bits defined below:
|
|
||||||
* Y : 8 bits
|
|
||||||
* U : 8 bits
|
|
||||||
* V : 8 bits
|
|
||||||
* alpha : 8 bits
|
|
||||||
*/
|
|
||||||
#define MPP_ENC_OSD_PLT_WHITE ((255<<24)|(128<<16)|(128<<8)|235)
|
|
||||||
#define MPP_ENC_OSD_PLT_YELLOW ((255<<24)|(146<<16)|( 16<<8 )|210)
|
|
||||||
#define MPP_ENC_OSD_PLT_CYAN ((255<<24)|( 16<<16 )|(166<<8)|170)
|
|
||||||
#define MPP_ENC_OSD_PLT_GREEN ((255<<24)|( 34<<16 )|( 54<<8 )|145)
|
|
||||||
#define MPP_ENC_OSD_PLT_TRANS (( 0<<24)|(222<<16)|(202<<8)|106)
|
|
||||||
#define MPP_ENC_OSD_PLT_RED ((255<<24)|(240<<16)|( 90<<8 )|81)
|
|
||||||
#define MPP_ENC_OSD_PLT_BLUE ((255<<24)|(110<<16)|(240<<8)|41)
|
|
||||||
#define MPP_ENC_OSD_PLT_BLACK ((255<<24)|(128<<16)|(128<<8)|16)
|
|
||||||
|
|
||||||
typedef struct MppEncOSDPlt_t {
|
|
||||||
RK_U32 buf[256];
|
|
||||||
} MppEncOSDPlt;
|
|
||||||
|
|
||||||
/* position info is unit in 16 pixels(one MB), and
|
|
||||||
* x-directon range in pixels = (rd_pos_x - lt_pos_x + 1) * 16;
|
|
||||||
* y-directon range in pixels = (rd_pos_y - lt_pos_y + 1) * 16;
|
|
||||||
*/
|
|
||||||
typedef struct MppEncOSDRegion_t {
|
|
||||||
RK_U32 enable;
|
|
||||||
RK_U32 inverse;
|
|
||||||
RK_U32 start_mb_x;
|
|
||||||
RK_U32 start_mb_y;
|
|
||||||
RK_U32 num_mb_x;
|
|
||||||
RK_U32 num_mb_y;
|
|
||||||
RK_U32 buf_offset;
|
|
||||||
} MppEncOSDRegion;
|
|
||||||
|
|
||||||
|
|
||||||
/* if num_region > 0 && region==NULL
|
|
||||||
* use old osd data
|
|
||||||
*/
|
|
||||||
typedef struct MppEncOSDData_t {
|
|
||||||
MppBuffer buf;
|
|
||||||
RK_U32 num_region;
|
|
||||||
MppEncOSDRegion region[8];
|
|
||||||
} MppEncOSDData;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mpp Motion Detection parameter
|
* Mpp Motion Detection parameter
|
||||||
*
|
*
|
||||||
@@ -599,6 +520,33 @@ typedef enum MppEncH264CfgChange_e {
|
|||||||
MPP_ENC_H264_CFG_CHANGE_ALL = (0xFFFFFFFF),
|
MPP_ENC_H264_CFG_CHANGE_ALL = (0xFFFFFFFF),
|
||||||
} MppEncH264CfgChange;
|
} MppEncH264CfgChange;
|
||||||
|
|
||||||
|
typedef struct MppEncH264IntraPred_t {
|
||||||
|
RK_S32 constrained_intra_pred_mode;
|
||||||
|
} MppEncH264IntraPred;
|
||||||
|
|
||||||
|
typedef struct MppEncH264InterPred_t {
|
||||||
|
RK_S32 reserve;
|
||||||
|
} MppEncH264InterPred;
|
||||||
|
|
||||||
|
typedef struct MppEncH264Trans_t {
|
||||||
|
RK_S32 trans_mode;
|
||||||
|
RK_S32 scaling_list_enable;
|
||||||
|
RK_S8 inter_scaling_list_8x8[64];
|
||||||
|
RK_S8 intra_scaling_list_8x8[64];
|
||||||
|
RK_S8 chroma_qp_offset;;
|
||||||
|
} MppEncH264Trans;
|
||||||
|
|
||||||
|
typedef struct MppEncH264Entropy_t {
|
||||||
|
RK_S32 entropy_coding_mode;
|
||||||
|
RK_S32 cabac_init_idc;
|
||||||
|
} MppEncH264Entropy;
|
||||||
|
|
||||||
|
typedef struct MppEncH264Dblk_t {
|
||||||
|
RK_S32 deblock_disable;
|
||||||
|
RK_S32 deblock_offset_alpha;
|
||||||
|
RK_S32 deblock_offset_beta;
|
||||||
|
} MppEncH264Dblk;
|
||||||
|
|
||||||
typedef struct MppEncH264Cfg_t {
|
typedef struct MppEncH264Cfg_t {
|
||||||
RK_U32 change;
|
RK_U32 change;
|
||||||
|
|
||||||
@@ -883,57 +831,6 @@ typedef struct MppEncVp8Cfg_t {
|
|||||||
RK_S32 quant;
|
RK_S32 quant;
|
||||||
} MppEncVp8Cfg;
|
} MppEncVp8Cfg;
|
||||||
|
|
||||||
typedef enum MppEncRefMode_e {
|
|
||||||
GopRefModeRockchip,
|
|
||||||
GopRefModeHisilicon,
|
|
||||||
GopRefModeButt,
|
|
||||||
} MppEncRefMode;
|
|
||||||
|
|
||||||
#define MAX_GOP_REF_LEN 16
|
|
||||||
#define GOP_REF_SIZE (MAX_GOP_REF_LEN+1)
|
|
||||||
|
|
||||||
typedef struct MppGopRefInfo_t {
|
|
||||||
RK_S32 temporal_id;
|
|
||||||
RK_S32 ref_idx;
|
|
||||||
RK_S32 is_non_ref;
|
|
||||||
RK_S32 is_lt_ref;
|
|
||||||
RK_S32 lt_idx;
|
|
||||||
} MppGopRefInfo;
|
|
||||||
|
|
||||||
typedef struct MppEncRefCfg_t {
|
|
||||||
RK_U32 change;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Enable flag for gop reference configuration
|
|
||||||
* 0 - Default reference mode I P P P ...
|
|
||||||
* 1 - Customized reference configuration
|
|
||||||
*/
|
|
||||||
RK_U32 ref_cfg_enable;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* config mode for gop reference configuration
|
|
||||||
* 0 - Rockchip config mode
|
|
||||||
* 1 - Hisilicon config mode
|
|
||||||
*/
|
|
||||||
RK_U32 ref_cfg_mode;
|
|
||||||
|
|
||||||
union {
|
|
||||||
// Rockchip mode
|
|
||||||
struct {
|
|
||||||
RK_U32 ref_gop_len;
|
|
||||||
MppGopRefInfo ref_info[GOP_REF_SIZE];
|
|
||||||
};
|
|
||||||
|
|
||||||
// Hisilicon mode
|
|
||||||
struct {
|
|
||||||
RK_U32 hi_gop_mode;
|
|
||||||
RK_U32 hi_base;
|
|
||||||
RK_U32 hi_enhance;
|
|
||||||
RK_U32 hi_enable_pred;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
} MppEncRefCfg;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* in decoder mode application need to specify the coding type first
|
* in decoder mode application need to specify the coding type first
|
||||||
* send a stream header to mpi ctx using parameter data / size
|
* send a stream header to mpi ctx using parameter data / size
|
||||||
@@ -951,11 +848,167 @@ typedef struct MppEncCodecCfg_t {
|
|||||||
};
|
};
|
||||||
} MppEncCodecCfg;
|
} MppEncCodecCfg;
|
||||||
|
|
||||||
|
typedef struct MppEncSliceSplit_t {
|
||||||
|
RK_S32 split_en;
|
||||||
|
RK_S32 split_mode;
|
||||||
|
RK_S32 slice_size;
|
||||||
|
} MppEncSliceSplit;
|
||||||
|
|
||||||
|
typedef enum MppEncRefMode_e {
|
||||||
|
GopRefModeRockchip,
|
||||||
|
GopRefModeHisilicon,
|
||||||
|
GopRefModeButt,
|
||||||
|
} MppEncRefMode;
|
||||||
|
|
||||||
|
#define MAX_GOP_REF_LEN 16
|
||||||
|
#define GOP_REF_SIZE (MAX_GOP_REF_LEN+1)
|
||||||
|
|
||||||
|
typedef struct MppGopRefInfo_t {
|
||||||
|
RK_S32 temporal_id;
|
||||||
|
RK_S32 ref_idx;
|
||||||
|
RK_S32 is_non_ref;
|
||||||
|
RK_S32 is_lt_ref;
|
||||||
|
RK_S32 lt_idx;
|
||||||
|
} MppGopRefInfo;
|
||||||
|
|
||||||
|
typedef struct MppEncGopRef_t {
|
||||||
|
RK_U32 change;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Enable flag for gop reference configuration
|
||||||
|
* 0 - Default reference mode I P P P ...
|
||||||
|
* 1 - Customized reference configuration
|
||||||
|
*/
|
||||||
|
RK_U32 gop_cfg_enable;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* config mode for gop reference configuration
|
||||||
|
* 0 - Rockchip config mode
|
||||||
|
* 1 - Hisilicon config mode
|
||||||
|
*/
|
||||||
|
RK_U32 gop_cfg_mode;
|
||||||
|
|
||||||
|
union {
|
||||||
|
// Rockchip mode
|
||||||
|
struct {
|
||||||
|
RK_U32 ref_gop_len;
|
||||||
|
MppGopRefInfo gop_info[GOP_REF_SIZE];
|
||||||
|
};
|
||||||
|
|
||||||
|
// Hisilicon mode
|
||||||
|
struct {
|
||||||
|
RK_U32 hi_gop_mode;
|
||||||
|
RK_U32 hi_base;
|
||||||
|
RK_U32 hi_enhance;
|
||||||
|
RK_U32 hi_enable_pred;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
} MppEncGopRef;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Mpp ROI parameter
|
||||||
|
* Region configure define a rectangle as ROI
|
||||||
|
* @note x, y, w, h are calculated in pixels, which had better be 16-pixel aligned.
|
||||||
|
* These parameters MUST retain in memory when encoder is running.
|
||||||
|
* TODO: Only absolute qp is supported so far, relative qp should be supported
|
||||||
|
* in the future. Also, the ROI regions can be overlaid with each other,
|
||||||
|
* so overlay priority should be considered.
|
||||||
|
*/
|
||||||
|
typedef struct MppEncROIRegion_t {
|
||||||
|
RK_U16 x; /**< horizontal position of top left corner */
|
||||||
|
RK_U16 y; /**< vertical position of top left corner */
|
||||||
|
RK_U16 w; /**< width of ROI rectangle */
|
||||||
|
RK_U16 h; /**< height of ROI rectangle */
|
||||||
|
RK_U16 intra; /**< flag of forced intra macroblock */
|
||||||
|
RK_U16 quality; /**< absolute qp of macroblock */
|
||||||
|
} MppEncROIRegion;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief MPP encoder's ROI configuration
|
||||||
|
*/
|
||||||
|
typedef struct MppEncROICfg_t {
|
||||||
|
RK_U32 number; /**< ROI rectangle number */
|
||||||
|
MppEncROIRegion *regions;/**< ROI parameters */
|
||||||
|
} MppEncROICfg;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Mpp OSD parameter
|
||||||
|
*
|
||||||
|
* Mpp OSD support total 8 regions
|
||||||
|
* Mpp OSD support 256-color palette two mode palette:
|
||||||
|
* 1. Configurable OSD palette
|
||||||
|
* When palette is set.
|
||||||
|
* 2. fixed OSD palette
|
||||||
|
* When palette is NULL.
|
||||||
|
*
|
||||||
|
* if MppEncOSDPlt.buf != NULL , palette includes maximun 256 levels,
|
||||||
|
* every level composed of 32 bits defined below:
|
||||||
|
* Y : 8 bits
|
||||||
|
* U : 8 bits
|
||||||
|
* V : 8 bits
|
||||||
|
* alpha : 8 bits
|
||||||
|
*/
|
||||||
|
#define MPP_ENC_OSD_PLT_WHITE ((255<<24)|(128<<16)|(128<<8)|235)
|
||||||
|
#define MPP_ENC_OSD_PLT_YELLOW ((255<<24)|(146<<16)|( 16<<8 )|210)
|
||||||
|
#define MPP_ENC_OSD_PLT_CYAN ((255<<24)|( 16<<16 )|(166<<8)|170)
|
||||||
|
#define MPP_ENC_OSD_PLT_GREEN ((255<<24)|( 34<<16 )|( 54<<8 )|145)
|
||||||
|
#define MPP_ENC_OSD_PLT_TRANS (( 0<<24)|(222<<16)|(202<<8)|106)
|
||||||
|
#define MPP_ENC_OSD_PLT_RED ((255<<24)|(240<<16)|( 90<<8 )|81)
|
||||||
|
#define MPP_ENC_OSD_PLT_BLUE ((255<<24)|(110<<16)|(240<<8)|41)
|
||||||
|
#define MPP_ENC_OSD_PLT_BLACK ((255<<24)|(128<<16)|(128<<8)|16)
|
||||||
|
|
||||||
|
typedef struct MppEncOSDPlt_t {
|
||||||
|
RK_U32 buf[256];
|
||||||
|
} MppEncOSDPlt;
|
||||||
|
|
||||||
|
/* position info is unit in 16 pixels(one MB), and
|
||||||
|
* x-directon range in pixels = (rd_pos_x - lt_pos_x + 1) * 16;
|
||||||
|
* y-directon range in pixels = (rd_pos_y - lt_pos_y + 1) * 16;
|
||||||
|
*/
|
||||||
|
typedef struct MppEncOSDRegion_t {
|
||||||
|
RK_U32 enable;
|
||||||
|
RK_U32 inverse;
|
||||||
|
RK_U32 start_mb_x;
|
||||||
|
RK_U32 start_mb_y;
|
||||||
|
RK_U32 num_mb_x;
|
||||||
|
RK_U32 num_mb_y;
|
||||||
|
RK_U32 buf_offset;
|
||||||
|
} MppEncOSDRegion;
|
||||||
|
|
||||||
|
/* if num_region > 0 && region==NULL
|
||||||
|
* use old osd data
|
||||||
|
*/
|
||||||
|
typedef struct MppEncOSDData_t {
|
||||||
|
MppBuffer buf;
|
||||||
|
RK_U32 num_region;
|
||||||
|
MppEncOSDRegion region[8];
|
||||||
|
} MppEncOSDData;
|
||||||
|
|
||||||
|
typedef struct MppEncMiscCfg_t {
|
||||||
|
MppEncSliceSplit split;
|
||||||
|
MppEncGopRef gop_ref;
|
||||||
|
MppEncROICfg roi;
|
||||||
|
MppEncOSDData osd_data;
|
||||||
|
MppEncOSDPlt osd_plt;
|
||||||
|
} MppEncMiscCfg;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
typedef struct MppEncCfgSet_t {
|
typedef struct MppEncCfgSet_t {
|
||||||
|
// esential config
|
||||||
MppEncPrepCfg prep;
|
MppEncPrepCfg prep;
|
||||||
MppEncRcCfg rc;
|
MppEncRcCfg rc;
|
||||||
|
|
||||||
|
// codec detail config
|
||||||
MppEncCodecCfg codec;
|
MppEncCodecCfg codec;
|
||||||
MppEncRefCfg ref;
|
|
||||||
|
// misc extra config
|
||||||
|
MppEncMiscCfg misc;
|
||||||
} MppEncCfgSet;
|
} MppEncCfgSet;
|
||||||
|
|
||||||
#endif /*__RK_VENC_CMD_H__*/
|
#endif /*__RK_VENC_CMD_H__*/
|
||||||
|
Reference in New Issue
Block a user