mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-17 14:40:44 +08:00
[format]: format coding style
Change-Id: I3d0e081f6636ca8162df4bda68618ec0ba37e7ae Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -177,7 +177,7 @@ typedef struct MppBufferInfo_t {
|
|||||||
void *ptr;
|
void *ptr;
|
||||||
void *hnd;
|
void *hnd;
|
||||||
int fd;
|
int fd;
|
||||||
int index;
|
int index;
|
||||||
} MppBufferInfo;
|
} MppBufferInfo;
|
||||||
|
|
||||||
#define BUFFER_GROUP_SIZE_DEFAULT (SZ_1M*80)
|
#define BUFFER_GROUP_SIZE_DEFAULT (SZ_1M*80)
|
||||||
|
@@ -76,7 +76,7 @@ typedef enum VPU_API_CMD {
|
|||||||
VPU_API_GET_VPUMEM_USED_COUNT,
|
VPU_API_GET_VPUMEM_USED_COUNT,
|
||||||
VPU_API_DEC_GETFORMAT,
|
VPU_API_DEC_GETFORMAT,
|
||||||
VPU_API_SET_OUTPUT_BLOCK,
|
VPU_API_SET_OUTPUT_BLOCK,
|
||||||
VPU_API_DEC_GET_EOS_STATUS,
|
VPU_API_DEC_GET_EOS_STATUS,
|
||||||
} VPU_API_CMD;
|
} VPU_API_CMD;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
@@ -293,8 +293,8 @@ MPP_RET mpp_buffer_create(const char *tag, const char *caller,
|
|||||||
group->count_unused++;
|
group->count_unused++;
|
||||||
|
|
||||||
buffer_group_add_log(group, p,
|
buffer_group_add_log(group, p,
|
||||||
(group->mode == MPP_BUFFER_INTERNAL) ? (BUF_CREATE) : (BUF_COMMIT),
|
(group->mode == MPP_BUFFER_INTERNAL) ? (BUF_CREATE) : (BUF_COMMIT),
|
||||||
caller);
|
caller);
|
||||||
|
|
||||||
if (buffer) {
|
if (buffer) {
|
||||||
inc_buffer_ref_no_lock(p, caller);
|
inc_buffer_ref_no_lock(p, caller);
|
||||||
|
@@ -90,13 +90,11 @@ private:
|
|||||||
RK_U32 node_count;
|
RK_U32 node_count;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static MppMetaService *get_instance()
|
static MppMetaService *get_instance() {
|
||||||
{
|
|
||||||
static MppMetaService instance;
|
static MppMetaService instance;
|
||||||
return &instance;
|
return &instance;
|
||||||
}
|
}
|
||||||
static Mutex *get_lock()
|
static Mutex *get_lock() {
|
||||||
{
|
|
||||||
static Mutex lock;
|
static Mutex lock;
|
||||||
return &lock;
|
return &lock;
|
||||||
}
|
}
|
||||||
@@ -118,9 +116,9 @@ public:
|
|||||||
};
|
};
|
||||||
|
|
||||||
MppMetaService::MppMetaService()
|
MppMetaService::MppMetaService()
|
||||||
: meta_id(0),
|
: meta_id(0),
|
||||||
meta_count(0),
|
meta_count(0),
|
||||||
node_count(0)
|
node_count(0)
|
||||||
{
|
{
|
||||||
INIT_LIST_HEAD(&mlist_meta);
|
INIT_LIST_HEAD(&mlist_meta);
|
||||||
INIT_LIST_HEAD(&mlist_node);
|
INIT_LIST_HEAD(&mlist_node);
|
||||||
|
@@ -146,6 +146,6 @@ RK_S32 H264Calculate(RK_S32 a, RK_S32 b, RK_S32 c);
|
|||||||
bool_e H264InitRc(h264RateControl_s * rc);
|
bool_e H264InitRc(h264RateControl_s * rc);
|
||||||
void H264BeforePicRc(h264RateControl_s * rc, RK_U32 timeInc, RK_U32 sliceType);
|
void H264BeforePicRc(h264RateControl_s * rc, RK_U32 timeInc, RK_U32 sliceType);
|
||||||
RK_S32 H264AfterPicRc(h264RateControl_s * rc, RK_U32 nonZeroCnt, RK_U32 byteCnt,
|
RK_S32 H264AfterPicRc(h264RateControl_s * rc, RK_U32 nonZeroCnt, RK_U32 byteCnt,
|
||||||
RK_U32 qpSum);
|
RK_U32 qpSum);
|
||||||
#endif /* H264_RATE_CONTROL_H */
|
#endif /* H264_RATE_CONTROL_H */
|
||||||
|
|
||||||
|
@@ -741,19 +741,19 @@ H264EncRet H264EncStrmEncode(H264ECtx *pEncInst, const H264EncIn * pEncIn,
|
|||||||
RK_S32 EncAsicCheckHwStatus(asicData_s *asic)
|
RK_S32 EncAsicCheckHwStatus(asicData_s *asic)
|
||||||
{
|
{
|
||||||
RK_S32 ret = ASIC_STATUS_FRAME_READY;
|
RK_S32 ret = ASIC_STATUS_FRAME_READY;
|
||||||
/*
|
/*
|
||||||
RK_U32 status = asic->regs.hw_status;
|
RK_U32 status = asic->regs.hw_status;
|
||||||
|
|
||||||
if (status & ASIC_STATUS_ERROR) {
|
if (status & ASIC_STATUS_ERROR) {
|
||||||
ret = ASIC_STATUS_ERROR;
|
ret = ASIC_STATUS_ERROR;
|
||||||
} else if (status & ASIC_STATUS_HW_RESET) {
|
} else if (status & ASIC_STATUS_HW_RESET) {
|
||||||
ret = ASIC_STATUS_HW_RESET;
|
ret = ASIC_STATUS_HW_RESET;
|
||||||
} else if (status & ASIC_STATUS_FRAME_READY) {
|
} else if (status & ASIC_STATUS_FRAME_READY) {
|
||||||
ret = ASIC_STATUS_FRAME_READY;
|
ret = ASIC_STATUS_FRAME_READY;
|
||||||
} else {
|
} else {
|
||||||
ret = ASIC_STATUS_BUFF_FULL;
|
ret = ASIC_STATUS_BUFF_FULL;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -158,7 +158,7 @@ bool_e SetParameter(H264ECtx * inst, const H264EncConfig * pEncCfg)
|
|||||||
/* enforce macroblock rate limit in level */
|
/* enforce macroblock rate limit in level */
|
||||||
{
|
{
|
||||||
RK_U32 mb_rate = (pEncCfg->frameRateNum * inst->mbPerFrame) /
|
RK_U32 mb_rate = (pEncCfg->frameRateNum * inst->mbPerFrame) /
|
||||||
pEncCfg->frameRateDenom;
|
pEncCfg->frameRateDenom;
|
||||||
|
|
||||||
if (mb_rate > H264MaxMBPS[inst->seqParameterSet.levelIdx]) {
|
if (mb_rate > H264MaxMBPS[inst->seqParameterSet.levelIdx]) {
|
||||||
mpp_log("input mb rate %d is larger than restriction %d\n",
|
mpp_log("input mb rate %d is larger than restriction %d\n",
|
||||||
|
@@ -64,10 +64,10 @@ FILE *fpRcTrc = NULL;
|
|||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
/* q_step values scaled up by 4 and evenly rounded */
|
/* q_step values scaled up by 4 and evenly rounded */
|
||||||
RK_S32 q_step[53] = { 3, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9, 10, 11,
|
RK_S32 q_step[53] = { 3, 3, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9, 10, 11,
|
||||||
13, 14, 16, 18, 20, 23, 25, 28, 32, 36, 40, 45, 51, 57, 64, 72, 80, 90,
|
13, 14, 16, 18, 20, 23, 25, 28, 32, 36, 40, 45, 51, 57, 64, 72, 80, 90,
|
||||||
101, 114, 128, 144, 160, 180, 203, 228, 256, 288, 320, 360, 405, 456,
|
101, 114, 128, 144, 160, 180, 203, 228, 256, 288, 320, 360, 405, 456,
|
||||||
513, 577, 640, 720, 810, 896
|
513, 577, 640, 720, 810, 896
|
||||||
};
|
};
|
||||||
|
|
||||||
/*------------------------------------------------------------------------------
|
/*------------------------------------------------------------------------------
|
||||||
Local function prototypes
|
Local function prototypes
|
||||||
@@ -422,7 +422,7 @@ static RK_S32 VirtualBuffer_new(h264VirtualBuffer_s *vb, RK_S32 timeInc, true_e
|
|||||||
returns number of required filler payload bytes.
|
returns number of required filler payload bytes.
|
||||||
------------------------------------------------------------------------------*/
|
------------------------------------------------------------------------------*/
|
||||||
RK_S32 H264AfterPicRc(h264RateControl_s * rc, RK_U32 nonZeroCnt, RK_U32 byteCnt,
|
RK_S32 H264AfterPicRc(h264RateControl_s * rc, RK_U32 nonZeroCnt, RK_U32 byteCnt,
|
||||||
RK_U32 qpSum)
|
RK_U32 qpSum)
|
||||||
{
|
{
|
||||||
h264VirtualBuffer_s *vb = &rc->virtualBuffer;
|
h264VirtualBuffer_s *vb = &rc->virtualBuffer;
|
||||||
RK_S32 bitPerPic = rc->virtualBuffer.bitPerPic;
|
RK_S32 bitPerPic = rc->virtualBuffer.bitPerPic;
|
||||||
|
@@ -45,8 +45,8 @@ const RK_U32 H264MaxCPBS[15] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const RK_U32 H264MaxFS[15] = { 99, 396, 396, 396, 396, 792, 1620, 1620,
|
const RK_U32 H264MaxFS[15] = { 99, 396, 396, 396, 396, 792, 1620, 1620,
|
||||||
3600, 5120, 8192, 8192, 8192, 22080, 36864
|
3600, 5120, 8192, 8192, 8192, 22080, 36864
|
||||||
};
|
};
|
||||||
|
|
||||||
/* sqrt(8*maxFrameSize) is maximum width and height of specific level */
|
/* sqrt(8*maxFrameSize) is maximum width and height of specific level */
|
||||||
const RK_U32 H264SqrtMaxFS8[15] =
|
const RK_U32 H264SqrtMaxFS8[15] =
|
||||||
|
@@ -50,7 +50,7 @@ static const ParserApi *parsers[] = {
|
|||||||
&api_mpg4d_parser,
|
&api_mpg4d_parser,
|
||||||
&api_vp8d_parser,
|
&api_vp8d_parser,
|
||||||
&api_vp9d_parser,
|
&api_vp9d_parser,
|
||||||
&api_jpegd_parser,
|
&api_jpegd_parser,
|
||||||
&dummy_dec_parser,
|
&dummy_dec_parser,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -87,7 +87,7 @@ typedef struct h264e_feedback_t {
|
|||||||
|
|
||||||
/* for VEPU future extansion */
|
/* for VEPU future extansion */
|
||||||
//TODO: add nal size table feedback
|
//TODO: add nal size table feedback
|
||||||
}h264e_feedback;
|
} h264e_feedback;
|
||||||
|
|
||||||
|
|
||||||
typedef struct h264e_control_extra_info_cfg_t {
|
typedef struct h264e_control_extra_info_cfg_t {
|
||||||
|
@@ -52,8 +52,8 @@ static const MppHalApi *hw_apis[] = {
|
|||||||
&hal_api_mpg4d,
|
&hal_api_mpg4d,
|
||||||
&hal_api_vp8d,
|
&hal_api_vp8d,
|
||||||
&hal_api_vp9d,
|
&hal_api_vp9d,
|
||||||
&hal_api_jpegd,
|
&hal_api_jpegd,
|
||||||
&hal_api_h264e,
|
&hal_api_h264e,
|
||||||
&hal_api_dummy_dec,
|
&hal_api_dummy_dec,
|
||||||
&hal_api_dummy_enc,
|
&hal_api_dummy_enc,
|
||||||
};
|
};
|
||||||
|
@@ -1392,10 +1392,10 @@ MPP_RET hal_h265d_gen_regs(void *hal, HalTaskInfo *syn)
|
|||||||
numCuInWidth = width / uiMaxCUWidth + (width % uiMaxCUWidth != 0);
|
numCuInWidth = width / uiMaxCUWidth + (width % uiMaxCUWidth != 0);
|
||||||
|
|
||||||
#ifdef SOFIA_3GR_LINUX
|
#ifdef SOFIA_3GR_LINUX
|
||||||
stride_y = (((numCuInWidth * uiMaxCUWidth * (dxva_cxt->pp.bit_depth_luma_minus8 + 8) + 63)
|
stride_y = (((numCuInWidth * uiMaxCUWidth * (dxva_cxt->pp.bit_depth_luma_minus8 + 8) + 63)
|
||||||
& (~63)) >> 3);
|
& (~63)) >> 3);
|
||||||
stride_uv = (((numCuInWidth * uiMaxCUHeight * (dxva_cxt->pp.bit_depth_chroma_minus8 + 8) + 63)
|
stride_uv = (((numCuInWidth * uiMaxCUHeight * (dxva_cxt->pp.bit_depth_chroma_minus8 + 8) + 63)
|
||||||
& (~63)) >> 3);
|
& (~63)) >> 3);
|
||||||
#else
|
#else
|
||||||
stride_y = ((((numCuInWidth * uiMaxCUWidth * (dxva_cxt->pp.bit_depth_luma_minus8 + 8) + 2047)
|
stride_y = ((((numCuInWidth * uiMaxCUWidth * (dxva_cxt->pp.bit_depth_luma_minus8 + 8) + 2047)
|
||||||
& (~2047)) | 2048) >> 3);
|
& (~2047)) | 2048) >> 3);
|
||||||
|
@@ -335,7 +335,7 @@ typedef struct h264e_hal_context_t {
|
|||||||
void *param_buf;
|
void *param_buf;
|
||||||
size_t param_size;
|
size_t param_size;
|
||||||
MppPacket packeted_param;
|
MppPacket packeted_param;
|
||||||
void *test_cfg;
|
void *test_cfg;
|
||||||
} h264e_hal_context;
|
} h264e_hal_context;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1484,7 +1484,7 @@ static MPP_RET hal_h264e_rkv_allocate_buffers(h264e_hal_context *ctx, h264e_synt
|
|||||||
{
|
{
|
||||||
RK_S32 k = 0;
|
RK_S32 k = 0;
|
||||||
h264e_hal_rkv_buffers *buffers = (h264e_hal_rkv_buffers *)ctx->buffers;
|
h264e_hal_rkv_buffers *buffers = (h264e_hal_rkv_buffers *)ctx->buffers;
|
||||||
RK_U32 num_mbs_oneframe = (syn->pic_luma_width+15)/16 * ((syn->pic_luma_height+15)/16);
|
RK_U32 num_mbs_oneframe = (syn->pic_luma_width + 15) / 16 * ((syn->pic_luma_height + 15) / 16);
|
||||||
RK_U32 frame_size = ((syn->pic_luma_width + 15) & (~15)) * ((syn->pic_luma_height + 15) & (~15)) * 3 / 2;
|
RK_U32 frame_size = ((syn->pic_luma_width + 15) & (~15)) * ((syn->pic_luma_height + 15) & (~15)) * 3 / 2;
|
||||||
h264e_hal_rkv_dpb_ctx *dpb_ctx = (h264e_hal_rkv_dpb_ctx *)ctx->dpb_ctx;
|
h264e_hal_rkv_dpb_ctx *dpb_ctx = (h264e_hal_rkv_dpb_ctx *)ctx->dpb_ctx;
|
||||||
h264e_hal_rkv_frame *frame_buf = dpb_ctx->frame_buf;
|
h264e_hal_rkv_frame *frame_buf = dpb_ctx->frame_buf;
|
||||||
@@ -1498,7 +1498,7 @@ static MPP_RET hal_h264e_rkv_allocate_buffers(h264e_hal_context *ctx, h264e_synt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(syn->preproc_en || (test_cfg && test_cfg->preproc)) {
|
if (syn->preproc_en || (test_cfg && test_cfg->preproc)) {
|
||||||
for (k = 0; k < 2; k++) {
|
for (k = 0; k < 2; k++) {
|
||||||
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_PP], &buffers->hw_pp_buf[k], frame_size)) {
|
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_PP], &buffers->hw_pp_buf[k], frame_size)) {
|
||||||
mpp_err("hw_pp_buf[%d] get failed", k);
|
mpp_err("hw_pp_buf[%d] get failed", k);
|
||||||
@@ -1509,9 +1509,9 @@ static MPP_RET hal_h264e_rkv_allocate_buffers(h264e_hal_context *ctx, h264e_synt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!all_intra_mode) {
|
if (!all_intra_mode) {
|
||||||
for (k = 0; k < 2; k++) {
|
for (k = 0; k < 2; k++) {
|
||||||
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_DSP], &buffers->hw_dsp_buf[k], frame_size/16)) {
|
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_DSP], &buffers->hw_dsp_buf[k], frame_size / 16)) {
|
||||||
mpp_err("hw_dsp_buf[%d] get failed", k);
|
mpp_err("hw_dsp_buf[%d] get failed", k);
|
||||||
return MPP_ERR_MALLOC;
|
return MPP_ERR_MALLOC;
|
||||||
} else {
|
} else {
|
||||||
@@ -1520,21 +1520,21 @@ static MPP_RET hal_h264e_rkv_allocate_buffers(h264e_hal_context *ctx, h264e_synt
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0 //default setting
|
#if 0 //default setting
|
||||||
RK_U32 num_mei_oneframe = (syn->pic_luma_width+255)/256 * ((syn->pic_luma_height+15)/16);
|
RK_U32 num_mei_oneframe = (syn->pic_luma_width + 255) / 256 * ((syn->pic_luma_height + 15) / 16);
|
||||||
for (k = 0; k < RKV_H264E_LINKTABLE_FRAME_NUM; k++) {
|
for (k = 0; k < RKV_H264E_LINKTABLE_FRAME_NUM; k++) {
|
||||||
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_MEI], &buffers->hw_mei_buf[k], num_mei_oneframe*16*4)) {
|
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_MEI], &buffers->hw_mei_buf[k], num_mei_oneframe * 16 * 4)) {
|
||||||
mpp_err("hw_mei_buf[%d] get failed", k);
|
mpp_err("hw_mei_buf[%d] get failed", k);
|
||||||
return MPP_ERR_MALLOC;
|
return MPP_ERR_MALLOC;
|
||||||
} else {
|
} else {
|
||||||
h264e_hal_log_detail("hw_mei_buf[%d] %p done, fd %d", k, buffers->hw_mei_buf[k], mpp_buffer_get_fd(buffers->hw_mei_buf[k]));
|
h264e_hal_log_detail("hw_mei_buf[%d] %p done, fd %d", k, buffers->hw_mei_buf[k], mpp_buffer_get_fd(buffers->hw_mei_buf[k]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(syn->roi_en || (test_cfg && test_cfg->roi)) {
|
if (syn->roi_en || (test_cfg && test_cfg->roi)) {
|
||||||
for (k = 0; k < RKV_H264E_LINKTABLE_FRAME_NUM; k++) {
|
for (k = 0; k < RKV_H264E_LINKTABLE_FRAME_NUM; k++) {
|
||||||
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_ROI], &buffers->hw_roi_buf[k], num_mbs_oneframe*1)) {
|
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_ROI], &buffers->hw_roi_buf[k], num_mbs_oneframe * 1)) {
|
||||||
mpp_err("hw_roi_buf[%d] get failed", k);
|
mpp_err("hw_roi_buf[%d] get failed", k);
|
||||||
return MPP_ERR_MALLOC;
|
return MPP_ERR_MALLOC;
|
||||||
} else {
|
} else {
|
||||||
@@ -1551,19 +1551,19 @@ static MPP_RET hal_h264e_rkv_allocate_buffers(h264e_hal_context *ctx, h264e_synt
|
|||||||
return MPP_ERR_MALLOC;
|
return MPP_ERR_MALLOC;
|
||||||
} else {
|
} else {
|
||||||
h264e_hal_log_detail("hw_rec_buf[%d] %p done, fd %d", k, buffers->hw_rec_buf[k], mpp_buffer_get_fd(buffers->hw_rec_buf[k]));
|
h264e_hal_log_detail("hw_rec_buf[%d] %p done, fd %d", k, buffers->hw_rec_buf[k], mpp_buffer_get_fd(buffers->hw_rec_buf[k]));
|
||||||
}
|
}
|
||||||
frame_buf[k].hw_buf = buffers->hw_rec_buf[k];
|
frame_buf[k].hw_buf = buffers->hw_rec_buf[k];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(syn->osd_mode || (test_cfg && test_cfg->osd)) {
|
if (syn->osd_mode || (test_cfg && test_cfg->osd)) {
|
||||||
for (k = 0; k < RKV_H264E_LINKTABLE_FRAME_NUM; k++) {
|
for (k = 0; k < RKV_H264E_LINKTABLE_FRAME_NUM; k++) {
|
||||||
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_REC], &buffers->hw_osd_buf[k], num_mbs_oneframe*256)) {
|
if (MPP_OK != mpp_buffer_get(buffers->hw_buf_grp[H264E_HAL_RKV_BUF_GRP_REC], &buffers->hw_osd_buf[k], num_mbs_oneframe * 256)) {
|
||||||
mpp_err("hw_osd_buf[%d] get failed", buffers->hw_osd_buf[k]);
|
mpp_err("hw_osd_buf[%d] get failed", buffers->hw_osd_buf[k]);
|
||||||
return MPP_ERR_MALLOC;
|
return MPP_ERR_MALLOC;
|
||||||
} else {
|
} else {
|
||||||
h264e_hal_log_detail("hw_osd_buf[%d] %p done, fd %d", k, buffers->hw_osd_buf[k], mpp_buffer_get_fd(buffers->hw_osd_buf[k]));
|
h264e_hal_log_detail("hw_osd_buf[%d] %p done, fd %d", k, buffers->hw_osd_buf[k], mpp_buffer_get_fd(buffers->hw_osd_buf[k]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2661,13 +2661,13 @@ static MPP_RET hal_h264e_rkv_validate_syntax(h264e_syntax *syn, h264e_hal_csp_in
|
|||||||
*src_fmt = hal_h264e_rkv_convert_csp(input_image_format);
|
*src_fmt = hal_h264e_rkv_convert_csp(input_image_format);
|
||||||
syn->input_image_format = src_fmt->fmt;
|
syn->input_image_format = src_fmt->fmt;
|
||||||
syn->input_image_format = H264E_RKV_CSP_YUV420SP; //TODO: removed later
|
syn->input_image_format = H264E_RKV_CSP_YUV420SP; //TODO: removed later
|
||||||
|
|
||||||
syn->input_cb_addr = syn->input_luma_addr;
|
syn->input_cb_addr = syn->input_luma_addr;
|
||||||
syn->input_cr_addr = syn->input_luma_addr;
|
syn->input_cr_addr = syn->input_luma_addr;
|
||||||
|
|
||||||
H264E_HAL_VALIDATE_NEQ(syn->input_image_format, "input_image_format", H264E_RKV_CSP_NONE);
|
H264E_HAL_VALIDATE_NEQ(syn->input_image_format, "input_image_format", H264E_RKV_CSP_NONE);
|
||||||
if(syn->frame_coding_type==1) {/* ASIC_INTRA */
|
if (syn->frame_coding_type == 1) { /* ASIC_INTRA */
|
||||||
if(gop_start)
|
if (gop_start)
|
||||||
syn->frame_coding_type = RKVENC_FRAME_TYPE_IDR;
|
syn->frame_coding_type = RKVENC_FRAME_TYPE_IDR;
|
||||||
else
|
else
|
||||||
syn->frame_coding_type = RKVENC_FRAME_TYPE_I;
|
syn->frame_coding_type = RKVENC_FRAME_TYPE_I;
|
||||||
@@ -2679,34 +2679,34 @@ static MPP_RET hal_h264e_rkv_validate_syntax(h264e_syntax *syn, h264e_hal_csp_in
|
|||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET hal_h264e_rkv_set_rc_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn,
|
MPP_RET hal_h264e_rkv_set_rc_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn,
|
||||||
h264e_hal_rkv_coveragetest_cfg *test)
|
h264e_hal_rkv_coveragetest_cfg *test)
|
||||||
{
|
{
|
||||||
if(test && test->mbrc) {
|
if (test && test->mbrc) {
|
||||||
RK_U32 num_mbs_oneframe = (syn->pic_luma_width+15)/16 * ((syn->pic_luma_height+15)/16);
|
RK_U32 num_mbs_oneframe = (syn->pic_luma_width + 15) / 16 * ((syn->pic_luma_height + 15) / 16);
|
||||||
RK_U32 frame_target_bitrate = (syn->pic_luma_width*syn->pic_luma_height/1920/1080)*10000000/8; //Bytes
|
RK_U32 frame_target_bitrate = (syn->pic_luma_width * syn->pic_luma_height / 1920 / 1080) * 10000000 / 8; //Bytes
|
||||||
RK_U32 frame_target_size = frame_target_bitrate/syn->keyframe_max_interval;
|
RK_U32 frame_target_size = frame_target_bitrate / syn->keyframe_max_interval;
|
||||||
RK_U32 mb_target_size = frame_target_size/num_mbs_oneframe;
|
RK_U32 mb_target_size = frame_target_size / num_mbs_oneframe;
|
||||||
RK_U32 aq_strength = 2;
|
RK_U32 aq_strength = 2;
|
||||||
|
|
||||||
mpp_log("---- test-mbrc ----");
|
mpp_log("---- test-mbrc ----");
|
||||||
regs->swreg46.rc_en = 1;
|
regs->swreg46.rc_en = 1;
|
||||||
regs->swreg46.rc_mode = 1; //0:frame/slice rc; 1:mbrc
|
regs->swreg46.rc_mode = 1; //0:frame/slice rc; 1:mbrc
|
||||||
regs->swreg46.aqmode_en = 1;
|
regs->swreg46.aqmode_en = 1;
|
||||||
regs->swreg46.aq_strg = (RK_U32)(aq_strength*1.0397*256);
|
regs->swreg46.aq_strg = (RK_U32)(aq_strength * 1.0397 * 256);
|
||||||
regs->swreg46.Reserved = 0x0;
|
regs->swreg46.Reserved = 0x0;
|
||||||
regs->swreg46.rc_ctu_num = (syn->pic_luma_width+15)/16;
|
regs->swreg46.rc_ctu_num = (syn->pic_luma_width + 15) / 16;
|
||||||
|
|
||||||
|
regs->swreg47.bits_error0 = ((mb_target_size >> 4) * num_mbs_oneframe / 2) * -192; //sw_bits_error[0];
|
||||||
|
regs->swreg47.bits_error1 = ((mb_target_size >> 4) * num_mbs_oneframe / 2) * -144; //sw_bits_error[1];
|
||||||
|
regs->swreg48.bits_error2 = ((mb_target_size >> 4) * num_mbs_oneframe / 2) * -96; //sw_bits_error[2];
|
||||||
|
regs->swreg48.bits_error3 = ((mb_target_size >> 4) * num_mbs_oneframe / 2) * -16; //sw_bits_error[3];
|
||||||
|
regs->swreg49.bits_error4 = ((mb_target_size >> 4) * num_mbs_oneframe / 2) * 16; //sw_bits_error[4];
|
||||||
|
regs->swreg49.bits_error5 = ((mb_target_size >> 4) * num_mbs_oneframe / 2) * 96; //sw_bits_error[5];
|
||||||
|
regs->swreg50.bits_error6 = ((mb_target_size >> 4) * num_mbs_oneframe / 2) * 144; //sw_bits_error[6];
|
||||||
|
regs->swreg50.bits_error7 = ((mb_target_size >> 4) * num_mbs_oneframe / 2) * 192; //sw_bits_error[7];
|
||||||
|
regs->swreg51.bits_error8 = ((mb_target_size >> 4) * num_mbs_oneframe / 2) * 256; //sw_bits_error[8];
|
||||||
|
|
||||||
regs->swreg47.bits_error0 = ((mb_target_size >> 4) *num_mbs_oneframe / 2) * -192; //sw_bits_error[0];
|
|
||||||
regs->swreg47.bits_error1 = ((mb_target_size >> 4) *num_mbs_oneframe / 2) * -144; //sw_bits_error[1];
|
|
||||||
regs->swreg48.bits_error2 = ((mb_target_size >> 4) *num_mbs_oneframe / 2) * -96; //sw_bits_error[2];
|
|
||||||
regs->swreg48.bits_error3 = ((mb_target_size >> 4) *num_mbs_oneframe / 2) * -16; //sw_bits_error[3];
|
|
||||||
regs->swreg49.bits_error4 = ((mb_target_size >> 4) *num_mbs_oneframe / 2) * 16; //sw_bits_error[4];
|
|
||||||
regs->swreg49.bits_error5 = ((mb_target_size >> 4) *num_mbs_oneframe / 2) * 96; //sw_bits_error[5];
|
|
||||||
regs->swreg50.bits_error6 = ((mb_target_size >> 4) *num_mbs_oneframe / 2) * 144; //sw_bits_error[6];
|
|
||||||
regs->swreg50.bits_error7 = ((mb_target_size >> 4) *num_mbs_oneframe / 2) * 192; //sw_bits_error[7];
|
|
||||||
regs->swreg51.bits_error8 = ((mb_target_size >> 4) *num_mbs_oneframe / 2) * 256; //sw_bits_error[8];
|
|
||||||
|
|
||||||
regs->swreg52.qp_adjuest0 = -4; //sw_qp_adjuest[0];
|
regs->swreg52.qp_adjuest0 = -4; //sw_qp_adjuest[0];
|
||||||
regs->swreg52.qp_adjuest1 = -3; //sw_qp_adjuest[1];
|
regs->swreg52.qp_adjuest1 = -3; //sw_qp_adjuest[1];
|
||||||
regs->swreg52.qp_adjuest2 = -2; //sw_qp_adjuest[2];
|
regs->swreg52.qp_adjuest2 = -2; //sw_qp_adjuest[2];
|
||||||
@@ -2716,7 +2716,7 @@ MPP_RET hal_h264e_rkv_set_rc_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn,
|
|||||||
regs->swreg53.qp_adjuest6 = 2; //sw_qp_adjuest[6];
|
regs->swreg53.qp_adjuest6 = 2; //sw_qp_adjuest[6];
|
||||||
regs->swreg53.qp_adjuest7 = 3; //sw_qp_adjuest[7];
|
regs->swreg53.qp_adjuest7 = 3; //sw_qp_adjuest[7];
|
||||||
regs->swreg53.qp_adjuest8 = 4; //sw_qp_adjuest[8];
|
regs->swreg53.qp_adjuest8 = 4; //sw_qp_adjuest[8];
|
||||||
|
|
||||||
regs->swreg54.rc_qp_mod = 2; //sw_quality_flag;
|
regs->swreg54.rc_qp_mod = 2; //sw_quality_flag;
|
||||||
regs->swreg54.rc_fact0 = 8; //sw_quality_factor_0;
|
regs->swreg54.rc_fact0 = 8; //sw_quality_factor_0;
|
||||||
regs->swreg54.rc_fact1 = 8; //sw_quality_factor_1;
|
regs->swreg54.rc_fact1 = 8; //sw_quality_factor_1;
|
||||||
@@ -2724,64 +2724,64 @@ MPP_RET hal_h264e_rkv_set_rc_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn,
|
|||||||
regs->swreg54.rc_qp_range = 4; //sw_rc_clip_qp_range;
|
regs->swreg54.rc_qp_range = 4; //sw_rc_clip_qp_range;
|
||||||
regs->swreg54.rc_max_qp = 40;
|
regs->swreg54.rc_max_qp = 40;
|
||||||
regs->swreg54.rc_min_qp = 20;
|
regs->swreg54.rc_min_qp = 20;
|
||||||
|
|
||||||
regs->swreg55.ctu_ebits = mb_target_size; //sw_ctu_target_bits;
|
regs->swreg55.ctu_ebits = mb_target_size; //sw_ctu_target_bits;
|
||||||
} else {
|
} else {
|
||||||
regs->swreg46.rc_mode = 0; //0:frame/slice rc; 1:mbrc
|
regs->swreg46.rc_mode = 0; //0:frame/slice rc; 1:mbrc
|
||||||
regs->swreg54.rc_qp_range = 4; //yn->swreg54.rc_qp_range;
|
regs->swreg54.rc_qp_range = 4; //yn->swreg54.rc_qp_range;
|
||||||
regs->swreg54.rc_max_qp = 51; //syn->swreg54.rc_max_qp;
|
regs->swreg54.rc_max_qp = 51; //syn->swreg54.rc_max_qp;
|
||||||
regs->swreg54.rc_min_qp = 1; //syn->swreg54.rc_min_qp;
|
regs->swreg54.rc_min_qp = 1; //syn->swreg54.rc_min_qp;
|
||||||
|
|
||||||
regs->swreg55.ctu_ebits = 0; //syn->swreg55.ctu_ebits;
|
regs->swreg55.ctu_ebits = 0; //syn->swreg55.ctu_ebits;
|
||||||
|
|
||||||
(void)test;
|
(void)test;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET hal_h264e_rkv_set_roi_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, MppBuffer roi_idx_buf, RK_U32 frame_cnt,
|
MPP_RET hal_h264e_rkv_set_roi_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, MppBuffer roi_idx_buf, RK_U32 frame_cnt,
|
||||||
h264e_hal_rkv_coveragetest_cfg *test)
|
h264e_hal_rkv_coveragetest_cfg *test)
|
||||||
{
|
{
|
||||||
if(test && test->roi) {
|
if (test && test->roi) {
|
||||||
RK_U32 k = 0;
|
RK_U32 k = 0;
|
||||||
RK_U32 num_mbs_oneframe = (syn->pic_luma_width+15)/16 * ((syn->pic_luma_height+15)/16);
|
RK_U32 num_mbs_oneframe = (syn->pic_luma_width + 15) / 16 * ((syn->pic_luma_height + 15) / 16);
|
||||||
h264e_hal_rkv_roi_cfg *roi_cfg = mpp_calloc(h264e_hal_rkv_roi_cfg, num_mbs_oneframe);
|
h264e_hal_rkv_roi_cfg *roi_cfg = mpp_calloc(h264e_hal_rkv_roi_cfg, num_mbs_oneframe);
|
||||||
mpp_log("---- test-roi ----");
|
mpp_log("---- test-roi ----");
|
||||||
regs->swreg10.roi_enc = 1;
|
regs->swreg10.roi_enc = 1;
|
||||||
regs->swreg29_ctuc_addr= mpp_buffer_get_fd(roi_idx_buf);
|
regs->swreg29_ctuc_addr = mpp_buffer_get_fd(roi_idx_buf);
|
||||||
if(frame_cnt%3==0) {
|
if (frame_cnt % 3 == 0) {
|
||||||
for(k=0; k<4*((syn->pic_luma_width+15)/16); k++) {
|
for (k = 0; k < 4 * ((syn->pic_luma_width + 15) / 16); k++) {
|
||||||
roi_cfg[k].set_qp_y_en = 1;
|
roi_cfg[k].set_qp_y_en = 1;
|
||||||
roi_cfg[k].qp_y = 20;
|
roi_cfg[k].qp_y = 20;
|
||||||
}
|
}
|
||||||
} else if(frame_cnt%3==1) {
|
} else if (frame_cnt % 3 == 1) {
|
||||||
for(k=0; k<4*((syn->pic_luma_width+15)/16); k++) {
|
for (k = 0; k < 4 * ((syn->pic_luma_width + 15) / 16); k++) {
|
||||||
roi_cfg[k].forbit_inter = 1;
|
roi_cfg[k].forbit_inter = 1;
|
||||||
}
|
}
|
||||||
} else { // frame_cnt%3==2
|
} else { // frame_cnt%3==2
|
||||||
for(k=0; k<4*((syn->pic_luma_width+15)/16); k++) {
|
for (k = 0; k < 4 * ((syn->pic_luma_width + 15) / 16); k++) {
|
||||||
roi_cfg[k].set_qp_y_en = 1;
|
roi_cfg[k].set_qp_y_en = 1;
|
||||||
roi_cfg[k].qp_y = 20;
|
roi_cfg[k].qp_y = 20;
|
||||||
roi_cfg[k].forbit_inter = 1;
|
roi_cfg[k].forbit_inter = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
mpp_buffer_write(roi_idx_buf, 0, (void *)roi_cfg, num_mbs_oneframe);
|
mpp_buffer_write(roi_idx_buf, 0, (void *)roi_cfg, num_mbs_oneframe);
|
||||||
MPP_FREE(roi_cfg);
|
MPP_FREE(roi_cfg);
|
||||||
} else {
|
} else {
|
||||||
regs->swreg10.roi_enc = 0; //syn->swreg10.roi_enc;
|
regs->swreg10.roi_enc = 0; //syn->swreg10.roi_enc;
|
||||||
(void)test;
|
(void)test;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET hal_h264e_rkv_set_osd_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, MppBuffer osd_idx_buf,
|
MPP_RET hal_h264e_rkv_set_osd_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, MppBuffer osd_idx_buf,
|
||||||
h264e_hal_rkv_coveragetest_cfg *test)
|
h264e_hal_rkv_coveragetest_cfg *test)
|
||||||
{
|
{
|
||||||
if(test && test->osd) {
|
if (test && test->osd) {
|
||||||
#define OSD_SIZE_MBS 4 //size of osd in mb
|
#define OSD_SIZE_MBS 4 //size of osd in mb
|
||||||
RK_S32 k = 0;
|
RK_S32 k = 0;
|
||||||
RK_U32 osd_r0_en = 1;
|
RK_U32 osd_r0_en = 1;
|
||||||
RK_U32 osd_r1_en = 1;
|
RK_U32 osd_r1_en = 1;
|
||||||
RK_U32 osd_r2_en = 1;
|
RK_U32 osd_r2_en = 1;
|
||||||
@@ -2790,7 +2790,7 @@ MPP_RET hal_h264e_rkv_set_osd_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, M
|
|||||||
RK_U32 osd_r5_en = 1;
|
RK_U32 osd_r5_en = 1;
|
||||||
RK_U32 osd_r6_en = 1;
|
RK_U32 osd_r6_en = 1;
|
||||||
RK_U32 osd_r7_en = 1;
|
RK_U32 osd_r7_en = 1;
|
||||||
|
|
||||||
RK_U32 osd_r0_inv_en = 0;
|
RK_U32 osd_r0_inv_en = 0;
|
||||||
RK_U32 osd_r1_inv_en = 0;
|
RK_U32 osd_r1_inv_en = 0;
|
||||||
RK_U32 osd_r2_inv_en = 0;
|
RK_U32 osd_r2_inv_en = 0;
|
||||||
@@ -2800,17 +2800,17 @@ MPP_RET hal_h264e_rkv_set_osd_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, M
|
|||||||
RK_U32 osd_r6_inv_en = 0;
|
RK_U32 osd_r6_inv_en = 0;
|
||||||
RK_U32 osd_r7_inv_en = 0;
|
RK_U32 osd_r7_inv_en = 0;
|
||||||
|
|
||||||
RK_U32 osd_size_pixels = 16*OSD_SIZE_MBS*16*OSD_SIZE_MBS;
|
RK_U32 osd_size_pixels = 16 * OSD_SIZE_MBS * 16 * OSD_SIZE_MBS;
|
||||||
mpp_log("---- test-osd ----");
|
mpp_log("---- test-osd ----");
|
||||||
|
|
||||||
|
|
||||||
regs->swreg65.osd_en = (osd_r0_en<<0)+(osd_r1_en<<1)+(osd_r2_en<<2)+(osd_r3_en<<3)+ (osd_r4_en<<4)+(osd_r5_en<<5)+(osd_r6_en<<6)+(osd_r7_en<<7);
|
regs->swreg65.osd_en = (osd_r0_en << 0) + (osd_r1_en << 1) + (osd_r2_en << 2) + (osd_r3_en << 3) + (osd_r4_en << 4) + (osd_r5_en << 5) + (osd_r6_en << 6) + (osd_r7_en << 7);
|
||||||
regs->swreg65.osd_inv = (osd_r0_inv_en<<0)+(osd_r1_inv_en<<1)+(osd_r2_inv_en<<2)+(osd_r3_inv_en<<3)+
|
regs->swreg65.osd_inv = (osd_r0_inv_en << 0) + (osd_r1_inv_en << 1) + (osd_r2_inv_en << 2) + (osd_r3_inv_en << 3) +
|
||||||
(osd_r4_inv_en<<4)+(osd_r5_inv_en<<5)+(osd_r6_inv_en<<6)+(osd_r7_inv_en<<7);
|
(osd_r4_inv_en << 4) + (osd_r5_inv_en << 5) + (osd_r6_inv_en << 6) + (osd_r7_inv_en << 7);
|
||||||
|
|
||||||
regs->swreg65.osd_clk_sel = 1;
|
regs->swreg65.osd_clk_sel = 1;
|
||||||
regs->swreg65.osd_plt_type = 0; //OSD_plt_type;
|
regs->swreg65.osd_plt_type = 0; //OSD_plt_type;
|
||||||
|
|
||||||
regs->swreg66.osd_inv_r1 = 0; //OSD_r1_inv_range;
|
regs->swreg66.osd_inv_r1 = 0; //OSD_r1_inv_range;
|
||||||
regs->swreg66.osd_inv_r2 = 0; //OSD_r2_inv_range;
|
regs->swreg66.osd_inv_r2 = 0; //OSD_r2_inv_range;
|
||||||
regs->swreg66.osd_inv_r3 = 0; //OSD_r3_inv_range;
|
regs->swreg66.osd_inv_r3 = 0; //OSD_r3_inv_range;
|
||||||
@@ -2818,91 +2818,89 @@ MPP_RET hal_h264e_rkv_set_osd_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, M
|
|||||||
regs->swreg66.osd_inv_r5 = 0; //OSD_r5_inv_range;
|
regs->swreg66.osd_inv_r5 = 0; //OSD_r5_inv_range;
|
||||||
regs->swreg66.osd_inv_r6 = 0; //OSD_r6_inv_range;
|
regs->swreg66.osd_inv_r6 = 0; //OSD_r6_inv_range;
|
||||||
regs->swreg66.osd_inv_r7 = 0; //OSD_r7_inv_range;
|
regs->swreg66.osd_inv_r7 = 0; //OSD_r7_inv_range;
|
||||||
|
|
||||||
regs->swreg67_osd_pos[0].lt_pos_x = 0*OSD_SIZE_MBS; //OSD_r0_x_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[0].lt_pos_y = 0*OSD_SIZE_MBS; //OSD_r0_y_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[0].rd_pos_x = 0*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r0_x_rd_pos;
|
|
||||||
regs->swreg67_osd_pos[0].rd_pos_y = 0*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r0_y_rd_pos;
|
|
||||||
|
|
||||||
regs->swreg67_osd_pos[1].lt_pos_x = 1*OSD_SIZE_MBS; //OSD_r1_x_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[1].lt_pos_y = 0*OSD_SIZE_MBS; //OSD_r1_y_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[1].rd_pos_x = 1*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r1_x_rd_pos;
|
|
||||||
regs->swreg67_osd_pos[1].rd_pos_y = 0*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r1_y_rd_pos;
|
|
||||||
|
|
||||||
regs->swreg67_osd_pos[2].lt_pos_x = 2*OSD_SIZE_MBS; //OSD_r2_x_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[2].lt_pos_y = 0*OSD_SIZE_MBS; //OSD_r2_y_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[2].rd_pos_x = 2*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r2_x_rd_pos;
|
|
||||||
regs->swreg67_osd_pos[2].rd_pos_y = 0*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r2_y_rd_pos;
|
|
||||||
|
|
||||||
regs->swreg67_osd_pos[3].lt_pos_x = 3*OSD_SIZE_MBS; //OSD_r3_x_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[3].lt_pos_y = 0*OSD_SIZE_MBS; //OSD_r3_y_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[3].rd_pos_x = 3*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r3_x_rd_pos;
|
|
||||||
regs->swreg67_osd_pos[3].rd_pos_y = 0*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r3_y_rd_pos;
|
|
||||||
|
|
||||||
regs->swreg67_osd_pos[4].lt_pos_x = 0*OSD_SIZE_MBS; //OSD_r4_x_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[4].lt_pos_y = 1*OSD_SIZE_MBS; //OSD_r4_y_lt_pos;
|
|
||||||
regs->swreg67_osd_pos[4].rd_pos_x = 0*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r4_x_rd_pos;
|
|
||||||
regs->swreg67_osd_pos[4].rd_pos_y = 1*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r4_x_rd_pos;
|
|
||||||
|
|
||||||
regs->swreg67_osd_pos[5].lt_pos_x = 1*OSD_SIZE_MBS; //OSD_r5_x_lt_pos;
|
regs->swreg67_osd_pos[0].lt_pos_x = 0 * OSD_SIZE_MBS; //OSD_r0_x_lt_pos;
|
||||||
regs->swreg67_osd_pos[5].lt_pos_y = 1*OSD_SIZE_MBS; //OSD_r5_y_lt_pos;
|
regs->swreg67_osd_pos[0].lt_pos_y = 0 * OSD_SIZE_MBS; //OSD_r0_y_lt_pos;
|
||||||
regs->swreg67_osd_pos[5].rd_pos_x = 1*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r5_x_rd_pos;
|
regs->swreg67_osd_pos[0].rd_pos_x = 0 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r0_x_rd_pos;
|
||||||
regs->swreg67_osd_pos[5].rd_pos_y = 1*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r5_y_rd_pos;
|
regs->swreg67_osd_pos[0].rd_pos_y = 0 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r0_y_rd_pos;
|
||||||
|
|
||||||
regs->swreg67_osd_pos[6].lt_pos_x = 2*OSD_SIZE_MBS; //OSD_r6_x_lt_pos;
|
regs->swreg67_osd_pos[1].lt_pos_x = 1 * OSD_SIZE_MBS; //OSD_r1_x_lt_pos;
|
||||||
regs->swreg67_osd_pos[6].lt_pos_y = 1*OSD_SIZE_MBS; //OSD_r6_y_lt_pos;
|
regs->swreg67_osd_pos[1].lt_pos_y = 0 * OSD_SIZE_MBS; //OSD_r1_y_lt_pos;
|
||||||
regs->swreg67_osd_pos[6].rd_pos_x = 2*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r6_x_rd_pos;
|
regs->swreg67_osd_pos[1].rd_pos_x = 1 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r1_x_rd_pos;
|
||||||
regs->swreg67_osd_pos[6].rd_pos_y = 1*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r6_y_rd_pos;
|
regs->swreg67_osd_pos[1].rd_pos_y = 0 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r1_y_rd_pos;
|
||||||
|
|
||||||
regs->swreg67_osd_pos[7].lt_pos_x = 3*OSD_SIZE_MBS; //OSD_r7_x_lt_pos;
|
regs->swreg67_osd_pos[2].lt_pos_x = 2 * OSD_SIZE_MBS; //OSD_r2_x_lt_pos;
|
||||||
regs->swreg67_osd_pos[7].lt_pos_y = 1*OSD_SIZE_MBS; //OSD_r7_y_lt_pos;
|
regs->swreg67_osd_pos[2].lt_pos_y = 0 * OSD_SIZE_MBS; //OSD_r2_y_lt_pos;
|
||||||
regs->swreg67_osd_pos[7].rd_pos_x = 3*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r7_x_rd_pos;
|
regs->swreg67_osd_pos[2].rd_pos_x = 2 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r2_x_rd_pos;
|
||||||
regs->swreg67_osd_pos[7].rd_pos_y = 1*OSD_SIZE_MBS+OSD_SIZE_MBS-1; //OSD_r7_y_rd_pos;
|
regs->swreg67_osd_pos[2].rd_pos_y = 0 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r2_y_rd_pos;
|
||||||
|
|
||||||
for(k=0; k<8; k++)
|
regs->swreg67_osd_pos[3].lt_pos_x = 3 * OSD_SIZE_MBS; //OSD_r3_x_lt_pos;
|
||||||
{
|
regs->swreg67_osd_pos[3].lt_pos_y = 0 * OSD_SIZE_MBS; //OSD_r3_y_lt_pos;
|
||||||
if(regs->swreg65.osd_plt_type==0) //configurable
|
regs->swreg67_osd_pos[3].rd_pos_x = 3 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r3_x_rd_pos;
|
||||||
memset((RK_U8 *)mpp_buffer_get_ptr(osd_idx_buf)+k*osd_size_pixels, 32*k, osd_size_pixels);
|
regs->swreg67_osd_pos[3].rd_pos_y = 0 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r3_y_rd_pos;
|
||||||
else //fixed mode: only support idx 0~7
|
|
||||||
memset((RK_U8 *)mpp_buffer_get_ptr(osd_idx_buf)+k*osd_size_pixels, k, osd_size_pixels);
|
regs->swreg67_osd_pos[4].lt_pos_x = 0 * OSD_SIZE_MBS; //OSD_r4_x_lt_pos;
|
||||||
|
regs->swreg67_osd_pos[4].lt_pos_y = 1 * OSD_SIZE_MBS; //OSD_r4_y_lt_pos;
|
||||||
regs->swreg68_indx_addr_i[k] = mpp_buffer_get_fd(osd_idx_buf) | ((k*osd_size_pixels)<<10); //h->param.indx_addr_i[i];
|
regs->swreg67_osd_pos[4].rd_pos_x = 0 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r4_x_rd_pos;
|
||||||
|
regs->swreg67_osd_pos[4].rd_pos_y = 1 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r4_x_rd_pos;
|
||||||
|
|
||||||
|
regs->swreg67_osd_pos[5].lt_pos_x = 1 * OSD_SIZE_MBS; //OSD_r5_x_lt_pos;
|
||||||
|
regs->swreg67_osd_pos[5].lt_pos_y = 1 * OSD_SIZE_MBS; //OSD_r5_y_lt_pos;
|
||||||
|
regs->swreg67_osd_pos[5].rd_pos_x = 1 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r5_x_rd_pos;
|
||||||
|
regs->swreg67_osd_pos[5].rd_pos_y = 1 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r5_y_rd_pos;
|
||||||
|
|
||||||
|
regs->swreg67_osd_pos[6].lt_pos_x = 2 * OSD_SIZE_MBS; //OSD_r6_x_lt_pos;
|
||||||
|
regs->swreg67_osd_pos[6].lt_pos_y = 1 * OSD_SIZE_MBS; //OSD_r6_y_lt_pos;
|
||||||
|
regs->swreg67_osd_pos[6].rd_pos_x = 2 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r6_x_rd_pos;
|
||||||
|
regs->swreg67_osd_pos[6].rd_pos_y = 1 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r6_y_rd_pos;
|
||||||
|
|
||||||
|
regs->swreg67_osd_pos[7].lt_pos_x = 3 * OSD_SIZE_MBS; //OSD_r7_x_lt_pos;
|
||||||
|
regs->swreg67_osd_pos[7].lt_pos_y = 1 * OSD_SIZE_MBS; //OSD_r7_y_lt_pos;
|
||||||
|
regs->swreg67_osd_pos[7].rd_pos_x = 3 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r7_x_rd_pos;
|
||||||
|
regs->swreg67_osd_pos[7].rd_pos_y = 1 * OSD_SIZE_MBS + OSD_SIZE_MBS - 1; //OSD_r7_y_rd_pos;
|
||||||
|
|
||||||
|
for (k = 0; k < 8; k++) {
|
||||||
|
if (regs->swreg65.osd_plt_type == 0) //configurable
|
||||||
|
memset((RK_U8 *)mpp_buffer_get_ptr(osd_idx_buf) + k * osd_size_pixels, 32 * k, osd_size_pixels);
|
||||||
|
else //fixed mode: only support idx 0~7
|
||||||
|
memset((RK_U8 *)mpp_buffer_get_ptr(osd_idx_buf) + k * osd_size_pixels, k, osd_size_pixels);
|
||||||
|
|
||||||
|
regs->swreg68_indx_addr_i[k] = mpp_buffer_get_fd(osd_idx_buf) | ((k * osd_size_pixels) << 10); //h->param.indx_addr_i[i];
|
||||||
mpp_log("regs->swreg68_indx_addr_i[k] 0x%08x", regs->swreg68_indx_addr_i[k]);
|
mpp_log("regs->swreg68_indx_addr_i[k] 0x%08x", regs->swreg68_indx_addr_i[k]);
|
||||||
}
|
}
|
||||||
#if 0 //written in kernel
|
#if 0 //written in kernel
|
||||||
for(k=0; k<256; k++)
|
for (k = 0; k < 256; k++) {
|
||||||
{
|
regs->swreg73_osd_indx_tab_i[k] = k | (0x80 << 8) | (0x80 << 16) | (k << 24);
|
||||||
regs->swreg73_osd_indx_tab_i[k] = k | (0x80<<8) | (0x80<<16) | (k<<24);
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
(void)test;
|
(void)test;
|
||||||
}
|
}
|
||||||
(void)syn;
|
(void)syn;
|
||||||
|
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
MPP_RET hal_h264e_rkv_set_pp_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, MppBuffer hw_buf_w, MppBuffer hw_buf_r, RK_U32 frame_cnt,
|
MPP_RET hal_h264e_rkv_set_pp_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, MppBuffer hw_buf_w, MppBuffer hw_buf_r, RK_U32 frame_cnt,
|
||||||
h264e_hal_rkv_coveragetest_cfg *test)
|
h264e_hal_rkv_coveragetest_cfg *test)
|
||||||
{
|
{
|
||||||
RK_S32 k = 0;
|
RK_S32 k = 0;
|
||||||
RK_S32 stridey, stridec;
|
RK_S32 stridey, stridec;
|
||||||
if(test && test->preproc) {
|
if (test && test->preproc) {
|
||||||
|
|
||||||
RK_U32 h3d_tbl[40] = {
|
RK_U32 h3d_tbl[40] = {
|
||||||
0x0b080400,0x1815120f,0x23201e1b,0x2c2a2725,
|
0x0b080400, 0x1815120f, 0x23201e1b, 0x2c2a2725,
|
||||||
0x33312f2d,0x38373634,0x3d3c3b39,0x403f3e3d,
|
0x33312f2d, 0x38373634, 0x3d3c3b39, 0x403f3e3d,
|
||||||
0x42414140,0x43434342,0x44444444,0x44444444,
|
0x42414140, 0x43434342, 0x44444444, 0x44444444,
|
||||||
0x44444444,0x43434344,0x42424343,0x40414142,
|
0x44444444, 0x43434344, 0x42424343, 0x40414142,
|
||||||
0x3d3e3f40,0x393a3b3c,0x35363738,0x30313334,
|
0x3d3e3f40, 0x393a3b3c, 0x35363738, 0x30313334,
|
||||||
0x2c2d2e2f,0x28292a2b,0x23242526,0x20202122,
|
0x2c2d2e2f, 0x28292a2b, 0x23242526, 0x20202122,
|
||||||
0x191b1d1f,0x14151618,0x0f101112,0x0b0c0d0e,
|
0x191b1d1f, 0x14151618, 0x0f101112, 0x0b0c0d0e,
|
||||||
0x08090a0a,0x06070708,0x05050506,0x03040404,
|
0x08090a0a, 0x06070708, 0x05050506, 0x03040404,
|
||||||
0x02020303,0x01010102,0x00010101,0x00000000,
|
0x02020303, 0x01010102, 0x00010101, 0x00000000,
|
||||||
0x00000000,0x00000000,0x00000000,0x00000000
|
0x00000000, 0x00000000, 0x00000000, 0x00000000
|
||||||
};
|
};
|
||||||
|
|
||||||
mpp_log("---- test-preproc ----");
|
mpp_log("---- test-preproc ----");
|
||||||
@@ -2959,28 +2957,28 @@ MPP_RET hal_h264e_rkv_set_pp_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, Mp
|
|||||||
regs->swreg21_scr_stbl[3] = (RK_U32)1073741823; //sharp_matrix[3];
|
regs->swreg21_scr_stbl[3] = (RK_U32)1073741823; //sharp_matrix[3];
|
||||||
regs->swreg21_scr_stbl[4] = (RK_U32)1073741823; //sharp_matrix[4];
|
regs->swreg21_scr_stbl[4] = (RK_U32)1073741823; //sharp_matrix[4];
|
||||||
|
|
||||||
for(k=0; k<40; k++)
|
for (k = 0; k < 40; k++)
|
||||||
regs->swreg22_h3d_tbl[k] = h3d_tbl[k];
|
regs->swreg22_h3d_tbl[k] = h3d_tbl[k];
|
||||||
|
|
||||||
|
|
||||||
stridey = (syn->pic_luma_width + 15)&(~15);
|
stridey = (syn->pic_luma_width + 15) & (~15);
|
||||||
stridec = stridey;
|
stridec = stridey;
|
||||||
|
|
||||||
regs->swreg23.src_ystrid = stridey;
|
regs->swreg23.src_ystrid = stridey;
|
||||||
regs->swreg23.reserve = 0x0;
|
regs->swreg23.reserve = 0x0;
|
||||||
regs->swreg23.src_cstrid = stridec; ////YUV420 planar;
|
regs->swreg23.src_cstrid = stridec; ////YUV420 planar;
|
||||||
|
|
||||||
regs->swreg27_fltw_addr = mpp_buffer_get_fd(hw_buf_w);
|
regs->swreg27_fltw_addr = mpp_buffer_get_fd(hw_buf_w);
|
||||||
regs->swreg28_fltr_addr = mpp_buffer_get_fd(hw_buf_r);
|
regs->swreg28_fltr_addr = mpp_buffer_get_fd(hw_buf_r);
|
||||||
} else {
|
} else {
|
||||||
regs->swreg14.src_cfmt = syn->input_image_format; //syn->swreg14.src_cfmt; //src_cfmt
|
regs->swreg14.src_cfmt = syn->input_image_format; //syn->swreg14.src_cfmt; //src_cfmt
|
||||||
|
|
||||||
for (k = 0; k < 5; k++)
|
for (k = 0; k < 5; k++)
|
||||||
regs->swreg21_scr_stbl[k] = 0; //syn->swreg21_scr_stbl[k];
|
regs->swreg21_scr_stbl[k] = 0; //syn->swreg21_scr_stbl[k];
|
||||||
|
|
||||||
for (k = 0; k < 40; k++)
|
for (k = 0; k < 40; k++)
|
||||||
regs->swreg22_h3d_tbl[k] = h264e_h3d_tbl[k];
|
regs->swreg22_h3d_tbl[k] = h264e_h3d_tbl[k];
|
||||||
|
|
||||||
stridey = (regs->swreg19.src_rot == 1 || regs->swreg19.src_rot == 3) ? (syn->pic_luma_height - 1) : (syn->pic_luma_width - 1);
|
stridey = (regs->swreg19.src_rot == 1 || regs->swreg19.src_rot == 3) ? (syn->pic_luma_height - 1) : (syn->pic_luma_width - 1);
|
||||||
if (regs->swreg14.src_cfmt == 0 )
|
if (regs->swreg14.src_cfmt == 0 )
|
||||||
stridey = (stridey + 1) * 4 - 1;
|
stridey = (stridey + 1) * 4 - 1;
|
||||||
@@ -2995,7 +2993,7 @@ MPP_RET hal_h264e_rkv_set_pp_regs(h264e_rkv_reg_set *regs, h264e_syntax *syn, Mp
|
|||||||
|
|
||||||
(void)test;
|
(void)test;
|
||||||
}
|
}
|
||||||
|
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3026,7 +3024,7 @@ MPP_RET hal_h264e_rkv_gen_regs(void *hal, HalTaskInfo *task)
|
|||||||
h264e_hal_debug_enter();
|
h264e_hal_debug_enter();
|
||||||
hal_h264e_rkv_dump_mpp_syntax_in(syn, ctx);
|
hal_h264e_rkv_dump_mpp_syntax_in(syn, ctx);
|
||||||
|
|
||||||
if (MPP_OK != hal_h264e_rkv_validate_syntax(syn, &src_fmt, ctx->frame_cnt%sps->keyframe_max_interval==0)) {
|
if (MPP_OK != hal_h264e_rkv_validate_syntax(syn, &src_fmt, ctx->frame_cnt % sps->keyframe_max_interval == 0)) {
|
||||||
h264e_hal_log_err("hal_h264e_rkv_validate_syntax failed");
|
h264e_hal_log_err("hal_h264e_rkv_validate_syntax failed");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3132,7 +3130,7 @@ MPP_RET hal_h264e_rkv_gen_regs(void *hal, HalTaskInfo *task)
|
|||||||
regs->swreg13.axi_brsp_cke = 0x7f; //syn->swreg13.axi_brsp_cke;
|
regs->swreg13.axi_brsp_cke = 0x7f; //syn->swreg13.axi_brsp_cke;
|
||||||
regs->swreg13.cime_dspw_orsd = 0x0;
|
regs->swreg13.cime_dspw_orsd = 0x0;
|
||||||
|
|
||||||
hal_h264e_rkv_set_pp_regs(regs, syn, bufs->hw_pp_buf[buf2_idx], bufs->hw_pp_buf[1-buf2_idx], ctx->frame_cnt, test_cfg);
|
hal_h264e_rkv_set_pp_regs(regs, syn, bufs->hw_pp_buf[buf2_idx], bufs->hw_pp_buf[1 - buf2_idx], ctx->frame_cnt, test_cfg);
|
||||||
|
|
||||||
regs->swreg24_adr_srcy = syn->input_luma_addr; //syn->addr_cfg.adr_srcy;
|
regs->swreg24_adr_srcy = syn->input_luma_addr; //syn->addr_cfg.adr_srcy;
|
||||||
regs->swreg25_adr_srcu = syn->input_cb_addr; //syn->addr_cfg.adr_srcu;
|
regs->swreg25_adr_srcu = syn->input_cb_addr; //syn->addr_cfg.adr_srcu;
|
||||||
@@ -3146,11 +3144,11 @@ MPP_RET hal_h264e_rkv_gen_regs(void *hal, HalTaskInfo *task)
|
|||||||
regs->swreg31_rfpr_addr = mpp_buffer_get_fd(dpb_ctx->fref[0][0]->hw_buf); //syn->addr_cfg.rfpr_addr;
|
regs->swreg31_rfpr_addr = mpp_buffer_get_fd(dpb_ctx->fref[0][0]->hw_buf); //syn->addr_cfg.rfpr_addr;
|
||||||
//regs->swreg32_cmvw_addr = mpp_buffer_get_fd(bufs->hw_cmv_buf[buf2_idx]);
|
//regs->swreg32_cmvw_addr = mpp_buffer_get_fd(bufs->hw_cmv_buf[buf2_idx]);
|
||||||
|
|
||||||
if(bufs->hw_dsp_buf[buf2_idx])
|
if (bufs->hw_dsp_buf[buf2_idx])
|
||||||
regs->swreg34_dspw_addr = mpp_buffer_get_fd(bufs->hw_dsp_buf[buf2_idx]); //syn->addr_cfg.dspw_addr;
|
regs->swreg34_dspw_addr = mpp_buffer_get_fd(bufs->hw_dsp_buf[buf2_idx]); //syn->addr_cfg.dspw_addr;
|
||||||
if(bufs->hw_dsp_buf[1 - buf2_idx])
|
if (bufs->hw_dsp_buf[1 - buf2_idx])
|
||||||
regs->swreg35_dspr_addr = mpp_buffer_get_fd(bufs->hw_dsp_buf[1 - buf2_idx]); //syn->addr_cfg.dspr_addr;
|
regs->swreg35_dspr_addr = mpp_buffer_get_fd(bufs->hw_dsp_buf[1 - buf2_idx]); //syn->addr_cfg.dspr_addr;
|
||||||
|
|
||||||
regs->swreg36_meiw_addr = 0; //mpp_buffer_get_fd(bufs->hw_mei_buf[mul_buf_idx]);
|
regs->swreg36_meiw_addr = 0; //mpp_buffer_get_fd(bufs->hw_mei_buf[mul_buf_idx]);
|
||||||
regs->swreg38_bsbb_addr = syn->output_strm_addr;
|
regs->swreg38_bsbb_addr = syn->output_strm_addr;
|
||||||
if (VPUClientGetIOMMUStatus() > 0)
|
if (VPUClientGetIOMMUStatus() > 0)
|
||||||
@@ -3498,45 +3496,45 @@ static MPP_RET hal_h264e_rkv_set_feedback(h264e_feedback *fb, h264e_rkv_ioctl_ou
|
|||||||
for (k = 0; k < out->frame_num; k++) {
|
for (k = 0; k < out->frame_num; k++) {
|
||||||
elem = &out->elem[k];
|
elem = &out->elem[k];
|
||||||
fb->qp_sum = elem->swreg71.qp_sum;
|
fb->qp_sum = elem->swreg71.qp_sum;
|
||||||
fb->out_strm_size = elem->swreg69.bs_lgth;
|
fb->out_strm_size = elem->swreg69.bs_lgth;
|
||||||
|
|
||||||
fb->hw_status = 0;
|
fb->hw_status = 0;
|
||||||
h264e_hal_log_detail("hw_status: 0x%08x", elem->hw_status);
|
h264e_hal_log_detail("hw_status: 0x%08x", elem->hw_status);
|
||||||
if(elem->hw_status & RKV_H264E_INT_LINKTABLE_FINISH) {
|
if (elem->hw_status & RKV_H264E_INT_LINKTABLE_FINISH) {
|
||||||
h264e_hal_log_err("RKV_H264E_INT_LINKTABLE_FINISH");
|
h264e_hal_log_err("RKV_H264E_INT_LINKTABLE_FINISH");
|
||||||
}
|
}
|
||||||
if(elem->hw_status & RKV_H264E_INT_ONE_FRAME_FINISH) {
|
if (elem->hw_status & RKV_H264E_INT_ONE_FRAME_FINISH) {
|
||||||
h264e_hal_log_detail("RKV_H264E_INT_ONE_FRAME_FINISH");
|
h264e_hal_log_detail("RKV_H264E_INT_ONE_FRAME_FINISH");
|
||||||
}
|
}
|
||||||
if(elem->hw_status & RKV_H264E_INT_ONE_SLICE_FINISH) {
|
if (elem->hw_status & RKV_H264E_INT_ONE_SLICE_FINISH) {
|
||||||
h264e_hal_log_err("RKV_H264E_INT_ONE_SLICE_FINISH");
|
h264e_hal_log_err("RKV_H264E_INT_ONE_SLICE_FINISH");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(elem->hw_status & RKV_H264E_INT_SAFE_CLEAR_FINISH) {
|
if (elem->hw_status & RKV_H264E_INT_SAFE_CLEAR_FINISH) {
|
||||||
h264e_hal_log_err("RKV_H264E_INT_SAFE_CLEAR_FINISH");
|
h264e_hal_log_err("RKV_H264E_INT_SAFE_CLEAR_FINISH");
|
||||||
}
|
}
|
||||||
|
|
||||||
if(elem->hw_status & RKV_H264E_INT_BIT_STREAM_OVERFLOW) {
|
if (elem->hw_status & RKV_H264E_INT_BIT_STREAM_OVERFLOW) {
|
||||||
h264e_hal_log_err("RKV_H264E_INT_BIT_STREAM_OVERFLOW");
|
h264e_hal_log_err("RKV_H264E_INT_BIT_STREAM_OVERFLOW");
|
||||||
fb->hw_status = 1;
|
fb->hw_status = 1;
|
||||||
}
|
}
|
||||||
if(elem->hw_status & RKV_H264E_INT_BUS_WRITE_FULL) {
|
if (elem->hw_status & RKV_H264E_INT_BUS_WRITE_FULL) {
|
||||||
h264e_hal_log_err("RKV_H264E_INT_BUS_WRITE_FULL");
|
h264e_hal_log_err("RKV_H264E_INT_BUS_WRITE_FULL");
|
||||||
fb->hw_status = 1;
|
fb->hw_status = 1;
|
||||||
}
|
}
|
||||||
if(elem->hw_status & RKV_H264E_INT_BUS_WRITE_ERROR) {
|
if (elem->hw_status & RKV_H264E_INT_BUS_WRITE_ERROR) {
|
||||||
h264e_hal_log_err("RKV_H264E_INT_BUS_WRITE_ERROR");
|
h264e_hal_log_err("RKV_H264E_INT_BUS_WRITE_ERROR");
|
||||||
fb->hw_status = 1;
|
fb->hw_status = 1;
|
||||||
}
|
}
|
||||||
if(elem->hw_status & RKV_H264E_INT_BUS_READ_ERROR) {
|
if (elem->hw_status & RKV_H264E_INT_BUS_READ_ERROR) {
|
||||||
h264e_hal_log_err("RKV_H264E_INT_BUS_READ_ERROR");
|
h264e_hal_log_err("RKV_H264E_INT_BUS_READ_ERROR");
|
||||||
fb->hw_status = 1;
|
fb->hw_status = 1;
|
||||||
}
|
}
|
||||||
if(elem->hw_status & RKV_H264E_INT_TIMEOUT_ERROR) {
|
if (elem->hw_status & RKV_H264E_INT_TIMEOUT_ERROR) {
|
||||||
h264e_hal_log_err("RKV_H264E_INT_TIMEOUT_ERROR");
|
h264e_hal_log_err("RKV_H264E_INT_TIMEOUT_ERROR");
|
||||||
fb->hw_status = 1;
|
fb->hw_status = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
fb->hw_status = elem->hw_status;
|
fb->hw_status = elem->hw_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -91,7 +91,7 @@ typedef struct h264e_hal_rkv_coveragetest_cfg_t {
|
|||||||
RK_U32 osd;
|
RK_U32 osd;
|
||||||
RK_U32 mbrc;
|
RK_U32 mbrc;
|
||||||
RK_U32 roi;
|
RK_U32 roi;
|
||||||
}h264e_hal_rkv_coveragetest_cfg;
|
} h264e_hal_rkv_coveragetest_cfg;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@@ -145,8 +145,8 @@ typedef struct h264e_hal_rkv_roi_cfg_t {
|
|||||||
RK_U8 qp_y : 6;
|
RK_U8 qp_y : 6;
|
||||||
RK_U8 set_qp_y_en : 1;
|
RK_U8 set_qp_y_en : 1;
|
||||||
RK_U8 forbit_inter : 1;
|
RK_U8 forbit_inter : 1;
|
||||||
}h264e_hal_rkv_roi_cfg;
|
} h264e_hal_rkv_roi_cfg;
|
||||||
|
|
||||||
|
|
||||||
typedef struct h264e_hal_rkv_buffers_t {
|
typedef struct h264e_hal_rkv_buffers_t {
|
||||||
MppBufferGroup hw_buf_grp[H264E_HAL_RKV_BUF_GRP_BUTT];
|
MppBufferGroup hw_buf_grp[H264E_HAL_RKV_BUF_GRP_BUTT];
|
||||||
|
@@ -1370,7 +1370,7 @@ static MPP_RET hal_h264e_vpu_write_sps(h264e_hal_vpu_stream *stream, h264e_hal_s
|
|||||||
|
|
||||||
hal_h264e_vpu_write_ue(stream, sps->i_id, "seq_parameter_set_id"); //8D
|
hal_h264e_vpu_write_ue(stream, sps->i_id, "seq_parameter_set_id"); //8D
|
||||||
|
|
||||||
if (sps->i_profile_idc >= 100) { //High profile
|
if (sps->i_profile_idc >= 100) { //High profile
|
||||||
hal_h264e_vpu_write_ue(stream, sps->i_chroma_format_idc, "chroma_format_idc");
|
hal_h264e_vpu_write_ue(stream, sps->i_chroma_format_idc, "chroma_format_idc");
|
||||||
hal_h264e_vpu_write_ue(stream, H264_BIT_DEPTH - 8, "bit_depth_luma_minus8");
|
hal_h264e_vpu_write_ue(stream, H264_BIT_DEPTH - 8, "bit_depth_luma_minus8");
|
||||||
hal_h264e_vpu_write_ue(stream, H264_BIT_DEPTH - 8, "bit_depth_chroma_minus8");
|
hal_h264e_vpu_write_ue(stream, H264_BIT_DEPTH - 8, "bit_depth_chroma_minus8");
|
||||||
@@ -1498,7 +1498,7 @@ static void hal_h264e_vpu_set_sps(h264e_hal_sps *sps, h264e_control_extra_info_c
|
|||||||
sps->i_mb_height = ( cfg->pic_luma_height + 15 ) / 16;
|
sps->i_mb_height = ( cfg->pic_luma_height + 15 ) / 16;
|
||||||
sps->b_frame_mbs_only = 1;
|
sps->b_frame_mbs_only = 1;
|
||||||
sps->b_direct8x8_inference = 1;
|
sps->b_direct8x8_inference = 1;
|
||||||
sps->i_chroma_format_idc = 1; //YUV420
|
sps->i_chroma_format_idc = 1; //YUV420
|
||||||
|
|
||||||
sps->b_vui = 1;
|
sps->b_vui = 1;
|
||||||
|
|
||||||
|
@@ -634,7 +634,7 @@ typedef enum {
|
|||||||
H264E_VPU_CSP_RGB101010 = 12, // 30-bit RGB
|
H264E_VPU_CSP_RGB101010 = 12, // 30-bit RGB
|
||||||
H264E_VPU_CSP_BGR101010 = 13, // 30-bit RGB
|
H264E_VPU_CSP_BGR101010 = 13, // 30-bit RGB
|
||||||
H264E_VPU_CSP_NONE,
|
H264E_VPU_CSP_NONE,
|
||||||
H264E_VPU_CSP_BUTT,
|
H264E_VPU_CSP_BUTT,
|
||||||
} h264e_hal_vpu_csp;
|
} h264e_hal_vpu_csp;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -87,13 +87,13 @@ static RK_U32 h264e_rkv_revert_csp(h264e_hal_csp_info csp_info)
|
|||||||
RK_U32 aswap = csp_info.aswap;
|
RK_U32 aswap = csp_info.aswap;
|
||||||
MppFrameFormat dst_fmt;
|
MppFrameFormat dst_fmt;
|
||||||
|
|
||||||
switch(fmt) {
|
switch (fmt) {
|
||||||
case H264E_RKV_CSP_YUV420P: {
|
case H264E_RKV_CSP_YUV420P: {
|
||||||
dst_fmt = MPP_FMT_YUV420P;
|
dst_fmt = MPP_FMT_YUV420P;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case H264E_RKV_CSP_YUV420SP: {
|
case H264E_RKV_CSP_YUV420SP: {
|
||||||
dst_fmt = cswap? MPP_FMT_YUV420SP_VU : MPP_FMT_YUV420SP;
|
dst_fmt = cswap ? MPP_FMT_YUV420SP_VU : MPP_FMT_YUV420SP;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case H264E_RKV_CSP_YUV422P: {
|
case H264E_RKV_CSP_YUV422P: {
|
||||||
@@ -101,7 +101,7 @@ static RK_U32 h264e_rkv_revert_csp(h264e_hal_csp_info csp_info)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case H264E_RKV_CSP_YUV422SP: {
|
case H264E_RKV_CSP_YUV422SP: {
|
||||||
dst_fmt = cswap? MPP_FMT_YUV422SP_VU : MPP_FMT_YUV422SP;
|
dst_fmt = cswap ? MPP_FMT_YUV422SP_VU : MPP_FMT_YUV422SP;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case H264E_RKV_CSP_YUYV422: {
|
case H264E_RKV_CSP_YUYV422: {
|
||||||
@@ -113,16 +113,16 @@ static RK_U32 h264e_rkv_revert_csp(h264e_hal_csp_info csp_info)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case H264E_RKV_CSP_BGR565: {
|
case H264E_RKV_CSP_BGR565: {
|
||||||
dst_fmt = cswap? MPP_FMT_RGB565 : MPP_FMT_BGR565;
|
dst_fmt = cswap ? MPP_FMT_RGB565 : MPP_FMT_BGR565;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case H264E_RKV_CSP_BGR888: {
|
case H264E_RKV_CSP_BGR888: {
|
||||||
dst_fmt = cswap? MPP_FMT_RGB888 : MPP_FMT_BGR888;
|
dst_fmt = cswap ? MPP_FMT_RGB888 : MPP_FMT_BGR888;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case H264E_RKV_CSP_BGRA8888: {
|
case H264E_RKV_CSP_BGRA8888: {
|
||||||
if(aswap)
|
if (aswap)
|
||||||
dst_fmt = cswap? MPP_FMT_ABGR8888 : MPP_FMT_ARGB8888;
|
dst_fmt = cswap ? MPP_FMT_ABGR8888 : MPP_FMT_ARGB8888;
|
||||||
else
|
else
|
||||||
dst_fmt = MPP_FMT_BUTT;
|
dst_fmt = MPP_FMT_BUTT;
|
||||||
|
|
||||||
@@ -130,12 +130,12 @@ static RK_U32 h264e_rkv_revert_csp(h264e_hal_csp_info csp_info)
|
|||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
h264e_hal_log_err("invalid csp_info.fmt %d, csp_info.cswap %d, csp_info.aswap %d",
|
h264e_hal_log_err("invalid csp_info.fmt %d, csp_info.cswap %d, csp_info.aswap %d",
|
||||||
csp_info.fmt, csp_info.cswap, csp_info.aswap);
|
csp_info.fmt, csp_info.cswap, csp_info.aswap);
|
||||||
dst_fmt = MPP_FMT_BUTT;
|
dst_fmt = MPP_FMT_BUTT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(dst_fmt == MPP_FMT_BUTT) {
|
if (dst_fmt == MPP_FMT_BUTT) {
|
||||||
h264e_hal_log_err("revert_csp error, src_fmt %d, dst_fmt %d", fmt, dst_fmt);
|
h264e_hal_log_err("revert_csp error, src_fmt %d, dst_fmt %d", fmt, dst_fmt);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,7 +147,7 @@ static RK_U32 h264e_vpu_revert_csp(RK_U32 csp)
|
|||||||
h264e_hal_vpu_csp fmt = (h264e_hal_vpu_csp)csp;
|
h264e_hal_vpu_csp fmt = (h264e_hal_vpu_csp)csp;
|
||||||
MppFrameFormat dst_fmt;
|
MppFrameFormat dst_fmt;
|
||||||
|
|
||||||
switch(fmt) {
|
switch (fmt) {
|
||||||
case H264E_VPU_CSP_YUV420P: {
|
case H264E_VPU_CSP_YUV420P: {
|
||||||
dst_fmt = MPP_FMT_YUV420P;
|
dst_fmt = MPP_FMT_YUV420P;
|
||||||
break;
|
break;
|
||||||
@@ -227,23 +227,23 @@ static MPP_RET h264e_rkv_test_open_files(h264e_hal_test_cfg test_cfg)
|
|||||||
return MPP_ERR_OPEN_FILE;
|
return MPP_ERR_OPEN_FILE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if !RKV_H264E_SDK_TEST
|
#if !RKV_H264E_SDK_TEST
|
||||||
sprintf(full_path, "%s", test_cfg.input_syntax_file_path);
|
sprintf(full_path, "%s", test_cfg.input_syntax_file_path);
|
||||||
fp_golden_syntax_in = fopen(full_path, "rb");
|
fp_golden_syntax_in = fopen(full_path, "rb");
|
||||||
if (!fp_golden_syntax_in) {
|
if (!fp_golden_syntax_in) {
|
||||||
mpp_err("%s open error", full_path);
|
mpp_err("%s open error", full_path);
|
||||||
return MPP_ERR_OPEN_FILE;
|
return MPP_ERR_OPEN_FILE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
sprintf(full_path, "%s%s", base_path, "mpp_yuv_in.yuv");
|
sprintf(full_path, "%s%s", base_path, "mpp_yuv_in.yuv");
|
||||||
fp_mpp_yuv_in = fopen(full_path, "wb");
|
fp_mpp_yuv_in = fopen(full_path, "wb");
|
||||||
if (!fp_mpp_yuv_in) {
|
if (!fp_mpp_yuv_in) {
|
||||||
mpp_err("%s open error", full_path);
|
mpp_err("%s open error", full_path);
|
||||||
return MPP_ERR_OPEN_FILE;
|
return MPP_ERR_OPEN_FILE;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
@@ -819,7 +819,7 @@ static void dump_rkv_mpp_dbg_info(h264e_hal_rkv_dbg_info *info, h264e_syntax *sy
|
|||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
static MPP_RET get_rkv_dbg_info(h264e_hal_rkv_dbg_info *info, h264e_syntax *syn,
|
static MPP_RET get_rkv_dbg_info(h264e_hal_rkv_dbg_info *info, h264e_syntax *syn,
|
||||||
MppBuffer *hw_in_buf, MppBuffer *hw_output_strm_buf)
|
MppBuffer *hw_in_buf, MppBuffer *hw_output_strm_buf)
|
||||||
|
|
||||||
{
|
{
|
||||||
RK_S32 k = 0;
|
RK_S32 k = 0;
|
||||||
@@ -1100,7 +1100,7 @@ static MPP_RET get_rkv_dbg_info(h264e_hal_rkv_dbg_info *info, h264e_syntax *syn,
|
|||||||
|
|
||||||
static MPP_RET get_rkv_syntax_in( h264e_syntax *syn, MppBuffer *hw_in_buf, MppBuffer *hw_output_strm_buf, h264e_hal_test_cfg *cfg)
|
static MPP_RET get_rkv_syntax_in( h264e_syntax *syn, MppBuffer *hw_in_buf, MppBuffer *hw_output_strm_buf, h264e_hal_test_cfg *cfg)
|
||||||
|
|
||||||
{
|
{
|
||||||
h264e_hal_csp_info csp_info;
|
h264e_hal_csp_info csp_info;
|
||||||
RK_U32 buf_idx = g_frame_read_cnt % RKV_H264E_LINKTABLE_FRAME_NUM;
|
RK_U32 buf_idx = g_frame_read_cnt % RKV_H264E_LINKTABLE_FRAME_NUM;
|
||||||
h264e_hal_debug_enter();
|
h264e_hal_debug_enter();
|
||||||
@@ -1114,8 +1114,8 @@ static MPP_RET get_rkv_syntax_in( h264e_syntax *syn, MppBuffer *hw_in_buf, MppBu
|
|||||||
}
|
}
|
||||||
if (hw_output_strm_buf[buf_idx])
|
if (hw_output_strm_buf[buf_idx])
|
||||||
syn->output_strm_addr = mpp_buffer_get_fd(hw_output_strm_buf[buf_idx]);
|
syn->output_strm_addr = mpp_buffer_get_fd(hw_output_strm_buf[buf_idx]);
|
||||||
|
|
||||||
#if RKV_H264E_SDK_TEST
|
#if RKV_H264E_SDK_TEST
|
||||||
mpp_log("make syntax begin");
|
mpp_log("make syntax begin");
|
||||||
syn->pic_luma_width = cfg->pic_width;
|
syn->pic_luma_width = cfg->pic_width;
|
||||||
syn->pic_luma_height = cfg->pic_height;
|
syn->pic_luma_height = cfg->pic_height;
|
||||||
@@ -1124,7 +1124,7 @@ static MPP_RET get_rkv_syntax_in( h264e_syntax *syn, MppBuffer *hw_in_buf, MppBu
|
|||||||
mpp_log("syn->level_idc %d", syn->level_idc);
|
mpp_log("syn->level_idc %d", syn->level_idc);
|
||||||
mpp_log("syn->profile_idc %d", syn->profile_idc);
|
mpp_log("syn->profile_idc %d", syn->profile_idc);
|
||||||
syn->keyframe_max_interval = 30;
|
syn->keyframe_max_interval = 30;
|
||||||
if(g_frame_cnt==0 || g_frame_cnt%syn->keyframe_max_interval==0) {
|
if (g_frame_cnt == 0 || g_frame_cnt % syn->keyframe_max_interval == 0) {
|
||||||
syn->frame_coding_type = 1; //intra
|
syn->frame_coding_type = 1; //intra
|
||||||
syn->slice_type = 2;
|
syn->slice_type = 2;
|
||||||
} else {
|
} else {
|
||||||
@@ -1146,13 +1146,13 @@ static MPP_RET get_rkv_syntax_in( h264e_syntax *syn, MppBuffer *hw_in_buf, MppBu
|
|||||||
syn->frame_num = 0;
|
syn->frame_num = 0;
|
||||||
syn->cabac_init_idc = 0;
|
syn->cabac_init_idc = 0;
|
||||||
|
|
||||||
|
|
||||||
syn->idr_pic_id = 0;
|
syn->idr_pic_id = 0;
|
||||||
syn->pic_order_cnt_lsb = 0;
|
syn->pic_order_cnt_lsb = 0;
|
||||||
|
|
||||||
|
|
||||||
mpp_log("make syntax end");
|
mpp_log("make syntax end");
|
||||||
#else
|
#else
|
||||||
if (fp_golden_syntax_in) {
|
if (fp_golden_syntax_in) {
|
||||||
FILE *fp = fp_golden_syntax_in;
|
FILE *fp = fp_golden_syntax_in;
|
||||||
char temp[512] = {0};
|
char temp[512] = {0};
|
||||||
@@ -1195,7 +1195,7 @@ static MPP_RET get_rkv_syntax_in( h264e_syntax *syn, MppBuffer *hw_in_buf, MppBu
|
|||||||
} else {
|
} else {
|
||||||
mpp_err("rkv_syntax_in.txt doesn't exits");
|
mpp_err("rkv_syntax_in.txt doesn't exits");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
syn->output_strm_limit_size = syn->pic_luma_width * syn->pic_luma_height * 1.5;
|
syn->output_strm_limit_size = syn->pic_luma_width * syn->pic_luma_height * 1.5;
|
||||||
|
|
||||||
h264e_hal_debug_leave();
|
h264e_hal_debug_leave();
|
||||||
@@ -1243,23 +1243,23 @@ static MPP_RET h264e_hal_test_parse_options(int arg_num, char **arg_str, h264e_h
|
|||||||
if (!strcmp("--test-qp", arg_str[k])) {
|
if (!strcmp("--test-qp", arg_str[k])) {
|
||||||
cfg->test.qp = atoi(arg_str[k + 1]);
|
cfg->test.qp = atoi(arg_str[k + 1]);
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
if (!strcmp("--test-preproc", arg_str[k])) {
|
if (!strcmp("--test-preproc", arg_str[k])) {
|
||||||
cfg->test.preproc = atoi(arg_str[k + 1]);
|
cfg->test.preproc = atoi(arg_str[k + 1]);
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
if (!strcmp("--test-osd", arg_str[k])) {
|
if (!strcmp("--test-osd", arg_str[k])) {
|
||||||
cfg->test.osd = atoi(arg_str[k + 1]);
|
cfg->test.osd = atoi(arg_str[k + 1]);
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
if (!strcmp("--test-mbrc", arg_str[k])) {
|
if (!strcmp("--test-mbrc", arg_str[k])) {
|
||||||
cfg->test.mbrc = atoi(arg_str[k + 1]);
|
cfg->test.mbrc = atoi(arg_str[k + 1]);
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
if (!strcmp("--test-roi", arg_str[k])) {
|
if (!strcmp("--test-roi", arg_str[k])) {
|
||||||
cfg->test.roi = atoi(arg_str[k + 1]);
|
cfg->test.roi = atoi(arg_str[k + 1]);
|
||||||
k++;
|
k++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -1267,7 +1267,7 @@ static MPP_RET h264e_hal_test_parse_options(int arg_num, char **arg_str, h264e_h
|
|||||||
mpp_log("test param parse error: input_yuv_file_path is NULL");
|
mpp_log("test param parse error: input_yuv_file_path is NULL");
|
||||||
return MPP_NOK;
|
return MPP_NOK;
|
||||||
}
|
}
|
||||||
#if RKV_H264E_SDK_TEST
|
#if RKV_H264E_SDK_TEST
|
||||||
if (!cfg->pic_width) {
|
if (!cfg->pic_width) {
|
||||||
mpp_log("test param parse error: pic_width is 0");
|
mpp_log("test param parse error: pic_width is 0");
|
||||||
return MPP_NOK;
|
return MPP_NOK;
|
||||||
@@ -1276,12 +1276,12 @@ static MPP_RET h264e_hal_test_parse_options(int arg_num, char **arg_str, h264e_h
|
|||||||
mpp_log("test param parse error: pic_height is 0");
|
mpp_log("test param parse error: pic_height is 0");
|
||||||
return MPP_NOK;
|
return MPP_NOK;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
if (!cfg->input_syntax_file_path) {
|
if (!cfg->input_syntax_file_path) {
|
||||||
mpp_log("test param parse error: input_syntax_file_path is NULL");
|
mpp_log("test param parse error: input_syntax_file_path is NULL");
|
||||||
return MPP_NOK;
|
return MPP_NOK;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (cfg->hw_mode == 0)
|
if (cfg->hw_mode == 0)
|
||||||
test_device_id = HAL_RKVENC;
|
test_device_id = HAL_RKVENC;
|
||||||
@@ -1293,18 +1293,18 @@ static MPP_RET h264e_hal_test_parse_options(int arg_num, char **arg_str, h264e_h
|
|||||||
}
|
}
|
||||||
|
|
||||||
mpp_log("======== hal converage test cfg (st) =======");
|
mpp_log("======== hal converage test cfg (st) =======");
|
||||||
if(cfg->test.qp)
|
if (cfg->test.qp)
|
||||||
mpp_log("cfg->test.qp %d", cfg->test.qp);
|
mpp_log("cfg->test.qp %d", cfg->test.qp);
|
||||||
if(cfg->test.preproc)
|
if (cfg->test.preproc)
|
||||||
mpp_log("cfg->test.preproc %d", cfg->test.preproc);
|
mpp_log("cfg->test.preproc %d", cfg->test.preproc);
|
||||||
if(cfg->test.osd)
|
if (cfg->test.osd)
|
||||||
mpp_log("cfg->test.osd %d", cfg->test.osd);
|
mpp_log("cfg->test.osd %d", cfg->test.osd);
|
||||||
if(cfg->test.mbrc)
|
if (cfg->test.mbrc)
|
||||||
mpp_log("cfg->test.mbrc %d", cfg->test.mbrc);
|
mpp_log("cfg->test.mbrc %d", cfg->test.mbrc);
|
||||||
if(cfg->test.roi)
|
if (cfg->test.roi)
|
||||||
mpp_log("cfg->test.roi %d", cfg->test.roi);
|
mpp_log("cfg->test.roi %d", cfg->test.roi);
|
||||||
mpp_log("======== hal converage test cfg (ed) =======");
|
mpp_log("======== hal converage test cfg (ed) =======");
|
||||||
|
|
||||||
return MPP_OK;
|
return MPP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1374,7 +1374,7 @@ MPP_RET h264e_hal_vpu_test()
|
|||||||
mpp_packet_init(&extra_info_pkt, (void *)extra_info_buf, H264E_MAX_PACKETED_PARAM_SIZE);
|
mpp_packet_init(&extra_info_pkt, (void *)extra_info_buf, H264E_MAX_PACKETED_PARAM_SIZE);
|
||||||
|
|
||||||
get_vpu_syntax_in(&syntax_data, hw_input_buf, hw_output_strm_buf);
|
get_vpu_syntax_in(&syntax_data, hw_input_buf, hw_output_strm_buf);
|
||||||
if(fp_golden_syntax_in)
|
if (fp_golden_syntax_in)
|
||||||
fseek(fp_golden_syntax_in, 0L, SEEK_SET);
|
fseek(fp_golden_syntax_in, 0L, SEEK_SET);
|
||||||
|
|
||||||
frame_luma_stride = ((syntax_data.pic_luma_width + 15) & (~15)) * ((syntax_data.pic_luma_height + 15) & (~15));
|
frame_luma_stride = ((syntax_data.pic_luma_width + 15) & (~15)) * ((syntax_data.pic_luma_height + 15) & (~15));
|
||||||
@@ -1494,8 +1494,8 @@ MPP_RET h264e_hal_rkv_test(h264e_hal_test_cfg *test_cfg)
|
|||||||
|
|
||||||
|
|
||||||
get_rkv_syntax_in(&syntax_data[0], hw_input_buf_mul, hw_output_strm_buf_mul, test_cfg);
|
get_rkv_syntax_in(&syntax_data[0], hw_input_buf_mul, hw_output_strm_buf_mul, test_cfg);
|
||||||
if(fp_golden_syntax_in)
|
if (fp_golden_syntax_in)
|
||||||
fseek(fp_golden_syntax_in, 0L, SEEK_SET);
|
fseek(fp_golden_syntax_in, 0L, SEEK_SET);
|
||||||
|
|
||||||
|
|
||||||
frame_luma_stride = ((syntax_data[0].pic_luma_width + 15) & (~15)) * ((syntax_data[0].pic_luma_height + 15) & (~15));
|
frame_luma_stride = ((syntax_data[0].pic_luma_width + 15) & (~15)) * ((syntax_data[0].pic_luma_height + 15) & (~15));
|
||||||
@@ -1544,11 +1544,11 @@ MPP_RET h264e_hal_rkv_test(h264e_hal_test_cfg *test_cfg)
|
|||||||
}
|
}
|
||||||
ret = get_rkv_h264e_yuv_in_frame(syn, hw_input_buf_mul);
|
ret = get_rkv_h264e_yuv_in_frame(syn, hw_input_buf_mul);
|
||||||
if (ret == MPP_EOS_STREAM_REACHED) {
|
if (ret == MPP_EOS_STREAM_REACHED) {
|
||||||
if(g_frame_cnt == test_cfg->num_frames) {
|
if (g_frame_cnt == test_cfg->num_frames) {
|
||||||
mpp_log("total %d frames are encoded, test is ended", g_frame_cnt);
|
mpp_log("total %d frames are encoded, test is ended", g_frame_cnt);
|
||||||
goto __test_end;
|
goto __test_end;
|
||||||
} else {
|
} else {
|
||||||
fseek(fp_h264e_yuv_in, 0L, SEEK_SET);
|
fseek(fp_h264e_yuv_in, 0L, SEEK_SET);
|
||||||
ret = get_rkv_h264e_yuv_in_frame(syn, hw_input_buf_mul);
|
ret = get_rkv_h264e_yuv_in_frame(syn, hw_input_buf_mul);
|
||||||
}
|
}
|
||||||
} else if (ret == MPP_NOK) {
|
} else if (ret == MPP_NOK) {
|
||||||
@@ -1575,11 +1575,11 @@ MPP_RET h264e_hal_rkv_test(h264e_hal_test_cfg *test_cfg)
|
|||||||
|
|
||||||
if (g_frame_cnt == g_frame_read_cnt)
|
if (g_frame_cnt == g_frame_read_cnt)
|
||||||
hal_h264e_rkv_dump_mpp_strm_out(&ctx, hw_output_strm_buf_mul);
|
hal_h264e_rkv_dump_mpp_strm_out(&ctx, hw_output_strm_buf_mul);
|
||||||
if(g_frame_cnt==test_cfg->num_frames) {
|
if (g_frame_cnt == test_cfg->num_frames) {
|
||||||
mpp_log("test_cfg->num_frames %d reached, end test", test_cfg->num_frames);
|
mpp_log("test_cfg->num_frames %d reached, end test", test_cfg->num_frames);
|
||||||
goto __test_end;
|
goto __test_end;
|
||||||
}
|
}
|
||||||
|
|
||||||
} while (1);
|
} while (1);
|
||||||
|
|
||||||
|
|
||||||
|
@@ -208,8 +208,7 @@ public:
|
|||||||
VpulibDlsym() :
|
VpulibDlsym() :
|
||||||
rkapi_hdl(NULL),
|
rkapi_hdl(NULL),
|
||||||
rkvpu_open_cxt(NULL),
|
rkvpu_open_cxt(NULL),
|
||||||
rkvpu_close_cxt(NULL)
|
rkvpu_close_cxt(NULL) {
|
||||||
{
|
|
||||||
RK_U32 i;
|
RK_U32 i;
|
||||||
|
|
||||||
for (i = 0; i < MPP_ARRAY_ELEMS(codec_paths); i++) {
|
for (i = 0; i < MPP_ARRAY_ELEMS(codec_paths); i++) {
|
||||||
|
@@ -43,7 +43,7 @@ static MppCodingTypeInfo support_list[] = {
|
|||||||
{ MPP_CTX_DEC, MPP_VIDEO_CodingVP8, "dec", "vp8", },
|
{ MPP_CTX_DEC, MPP_VIDEO_CodingVP8, "dec", "vp8", },
|
||||||
{ MPP_CTX_DEC, MPP_VIDEO_CodingVP9, "dec", "VP9", },
|
{ MPP_CTX_DEC, MPP_VIDEO_CodingVP9, "dec", "VP9", },
|
||||||
{ MPP_CTX_DEC, MPP_VIDEO_CodingAVS, "dec", "avs+", },
|
{ MPP_CTX_DEC, MPP_VIDEO_CodingAVS, "dec", "avs+", },
|
||||||
{ MPP_CTX_DEC, MPP_VIDEO_CodingMJPEG, "dec", "jpeg", },
|
{ MPP_CTX_DEC, MPP_VIDEO_CodingMJPEG, "dec", "jpeg", },
|
||||||
{ MPP_CTX_ENC, MPP_VIDEO_CodingAVC, "enc", "h.264/AVC", },
|
{ MPP_CTX_ENC, MPP_VIDEO_CodingAVC, "enc", "h.264/AVC", },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -196,7 +196,7 @@ RK_S32 check_sysfs_iommu()
|
|||||||
|
|
||||||
mpp_env_get_u32("ion_debug", &ion_debug, 0);
|
mpp_env_get_u32("ion_debug", &ion_debug, 0);
|
||||||
#ifdef SOFIA_3GR_LINUX
|
#ifdef SOFIA_3GR_LINUX
|
||||||
return ret;
|
return ret;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
for (i = 0; i < MPP_ARRAY_ELEMS(dts_devices); i++) {
|
for (i = 0; i < MPP_ARRAY_ELEMS(dts_devices); i++) {
|
||||||
|
@@ -459,7 +459,7 @@ static RK_S32 mpi_enc_test_parse_options(int argc, char **argv, MpiEncTestCmd* c
|
|||||||
if (next) {
|
if (next) {
|
||||||
cmd->format = (MppFrameFormat)atoi(next);
|
cmd->format = (MppFrameFormat)atoi(next);
|
||||||
err = ((cmd->format >= MPP_FMT_YUV_BUTT && cmd->format < MPP_FRAME_FMT_RGB) ||
|
err = ((cmd->format >= MPP_FMT_YUV_BUTT && cmd->format < MPP_FRAME_FMT_RGB) ||
|
||||||
cmd->format >= MPP_FMT_RGB_BUTT);
|
cmd->format >= MPP_FMT_RGB_BUTT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!next || err) {
|
if (!next || err) {
|
||||||
|
Reference in New Issue
Block a user