diff --git a/inc/mpp_meta.h b/inc/mpp_meta.h index d1059d7e..e33d0d23 100644 --- a/inc/mpp_meta.h +++ b/inc/mpp_meta.h @@ -76,6 +76,7 @@ typedef enum MppMetaKey_e { /* mpp_frame / mpp_packet meta data info key */ KEY_TEMPORAL_ID = FOURCC_META('t', 'l', 'i', 'd'), KEY_LONG_REF_IDX = FOURCC_META('l', 't', 'i', 'd'), + KEY_ENC_AVERAGE_QP = FOURCC_META('a', 'v', 'g', 'q'), KEY_ROI_DATA = FOURCC_META('r', 'o', 'i', ' '), KEY_OSD_DATA = FOURCC_META('o', 's', 'd', ' '), KEY_OSD_DATA2 = FOURCC_META('o', 's', 'd', '2'), diff --git a/mpp/base/mpp_meta.cpp b/mpp/base/mpp_meta.cpp index 0422fe97..eb33c830 100644 --- a/mpp/base/mpp_meta.cpp +++ b/mpp/base/mpp_meta.cpp @@ -42,6 +42,7 @@ static MppMetaDef meta_defs[] = { /* extra information for tsvc */ { KEY_TEMPORAL_ID, TYPE_S32, }, { KEY_LONG_REF_IDX, TYPE_S32, }, + { KEY_ENC_AVERAGE_QP, TYPE_S32, }, { KEY_ROI_DATA, TYPE_PTR, }, { KEY_OSD_DATA, TYPE_PTR, }, diff --git a/mpp/codec/mpp_enc_impl.cpp b/mpp/codec/mpp_enc_impl.cpp index 91ad1bad..74dbfacf 100644 --- a/mpp/codec/mpp_enc_impl.cpp +++ b/mpp/codec/mpp_enc_impl.cpp @@ -1842,6 +1842,8 @@ void *mpp_enc_thread(void *data) mpp_meta_set_buffer(meta, KEY_MOTION_INFO, hal_task->mv_info); mpp_meta_set_s32(meta, KEY_OUTPUT_INTRA, frm->is_intra); + if (rc_task->info.quality_real) + mpp_meta_set_s32(meta, KEY_ENC_AVERAGE_QP, rc_task->info.quality_real); } /* diff --git a/test/mpi_enc_test.c b/test/mpi_enc_test.c index 6a009462..88f44110 100644 --- a/test/mpi_enc_test.c +++ b/test/mpi_enc_test.c @@ -714,6 +714,7 @@ MPP_RET test_mpp_run(MpiEncTestData *p) meta = mpp_packet_get_meta(packet); RK_S32 temporal_id = 0; RK_S32 lt_idx = -1; + RK_S32 avg_qp = -1; if (MPP_OK == mpp_meta_get_s32(meta, KEY_TEMPORAL_ID, &temporal_id)) log_len += snprintf(log_buf + log_len, log_size - log_len, @@ -722,6 +723,10 @@ MPP_RET test_mpp_run(MpiEncTestData *p) if (MPP_OK == mpp_meta_get_s32(meta, KEY_LONG_REF_IDX, <_idx)) log_len += snprintf(log_buf + log_len, log_size - log_len, " lt %d", lt_idx); + + if (MPP_OK == mpp_meta_get_s32(meta, KEY_ENC_AVERAGE_QP, &avg_qp)) + log_len += snprintf(log_buf + log_len, log_size - log_len, + " qp %d", avg_qp); } mpp_log("%p %s\n", ctx, log_buf);