mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-01 23:42:12 +08:00
[utils]: Add encoder reference config sample
Add MppEncRefCfg configure sample to mpi_enc_utils. Change-Id: I56d87dc6b267a8029c4d539526c368f2f44cec11 Signed-off-by: Herman Chen <herman.chen@rock-chips.com>
This commit is contained in:
@@ -265,6 +265,92 @@ MPP_RET mpi_enc_test_cmd_put(MpiEncTestArgs* cmd)
|
||||
return MPP_OK;
|
||||
}
|
||||
|
||||
MPP_RET mpi_enc_gen_ref_cfg(MppEncRefCfg ref)
|
||||
{
|
||||
MppEncRefLtFrmCfg lt_ref[4];
|
||||
MppEncRefStFrmCfg st_ref[16];
|
||||
RK_S32 lt_cnt = 1;
|
||||
RK_S32 st_cnt = 9;
|
||||
MPP_RET ret = MPP_OK;
|
||||
|
||||
memset(<_ref, 0, sizeof(lt_ref));
|
||||
memset(&st_ref, 0, sizeof(st_ref));
|
||||
|
||||
ret = mpp_enc_ref_cfg_set_cfg_cnt(ref, lt_cnt, st_cnt);
|
||||
|
||||
/* set 8 frame lt-ref gap */
|
||||
lt_ref[0].lt_idx = 0;
|
||||
lt_ref[0].temporal_id = 0;
|
||||
lt_ref[0].ref_mode = REF_TO_PREV_LT_REF;
|
||||
lt_ref[0].lt_gap = 8;
|
||||
lt_ref[0].lt_delay = 0;
|
||||
|
||||
ret = mpp_enc_ref_cfg_add_lt_cfg(ref, 1, lt_ref);
|
||||
|
||||
/* set tsvc4 st-ref struct */
|
||||
/* st 0 layer 0 - ref */
|
||||
st_ref[0].is_non_ref = 0;
|
||||
st_ref[0].temporal_id = 0;
|
||||
st_ref[0].ref_mode = REF_TO_TEMPORAL_LAYER;
|
||||
st_ref[0].ref_arg = 0;
|
||||
st_ref[0].repeat = 0;
|
||||
/* st 1 layer 3 - non-ref */
|
||||
st_ref[1].is_non_ref = 1;
|
||||
st_ref[1].temporal_id = 3;
|
||||
st_ref[1].ref_mode = REF_TO_PREV_REF_FRM;
|
||||
st_ref[1].ref_arg = 0;
|
||||
st_ref[1].repeat = 0;
|
||||
/* st 2 layer 2 - ref */
|
||||
st_ref[2].is_non_ref = 0;
|
||||
st_ref[2].temporal_id = 2;
|
||||
st_ref[2].ref_mode = REF_TO_PREV_REF_FRM;
|
||||
st_ref[2].ref_arg = 0;
|
||||
st_ref[2].repeat = 0;
|
||||
/* st 3 layer 3 - non-ref */
|
||||
st_ref[3].is_non_ref = 1;
|
||||
st_ref[3].temporal_id = 3;
|
||||
st_ref[3].ref_mode = REF_TO_PREV_REF_FRM;
|
||||
st_ref[3].ref_arg = 0;
|
||||
st_ref[3].repeat = 0;
|
||||
/* st 4 layer 1 - ref */
|
||||
st_ref[4].is_non_ref = 0;
|
||||
st_ref[4].temporal_id = 1;
|
||||
st_ref[4].ref_mode = REF_TO_PREV_LT_REF;
|
||||
st_ref[4].ref_arg = 0;
|
||||
st_ref[4].repeat = 0;
|
||||
/* st 5 layer 3 - non-ref */
|
||||
st_ref[5].is_non_ref = 1;
|
||||
st_ref[5].temporal_id = 3;
|
||||
st_ref[5].ref_mode = REF_TO_PREV_REF_FRM;
|
||||
st_ref[5].ref_arg = 0;
|
||||
st_ref[5].repeat = 0;
|
||||
/* st 6 layer 2 - ref */
|
||||
st_ref[6].is_non_ref = 0;
|
||||
st_ref[6].temporal_id = 2;
|
||||
st_ref[6].ref_mode = REF_TO_PREV_REF_FRM;
|
||||
st_ref[6].ref_arg = 0;
|
||||
st_ref[6].repeat = 0;
|
||||
/* st 7 layer 3 - non-ref */
|
||||
st_ref[7].is_non_ref = 1;
|
||||
st_ref[7].temporal_id = 3;
|
||||
st_ref[7].ref_mode = REF_TO_PREV_REF_FRM;
|
||||
st_ref[7].ref_arg = 0;
|
||||
st_ref[7].repeat = 0;
|
||||
/* st 8 layer 0 - ref */
|
||||
st_ref[8].is_non_ref = 0;
|
||||
st_ref[8].temporal_id = 0;
|
||||
st_ref[8].ref_mode = REF_TO_TEMPORAL_LAYER;
|
||||
st_ref[8].ref_arg = 0;
|
||||
st_ref[8].repeat = 0;
|
||||
|
||||
ret = mpp_enc_ref_cfg_add_st_cfg(ref, 9, st_ref);
|
||||
|
||||
/* check and get dpb size */
|
||||
ret = mpp_enc_ref_cfg_check(ref);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
MPP_RET mpi_enc_gen_osd_data(MppEncOSDData *osd_data, MppBuffer osd_buf, RK_U32 frame_cnt)
|
||||
{
|
||||
RK_U32 k = 0;
|
||||
|
Reference in New Issue
Block a user