From a0c06392053082d606f0ccd03224b59530a7d2ec Mon Sep 17 00:00:00 2001 From: "herman.chen" Date: Wed, 31 Aug 2016 16:28:42 +0800 Subject: [PATCH] [meta]: modify metadata type and key definition This is prepare for adding metadata key tree. Change-Id: Ibd8f4a2c820cdeb5c59ade9a0f80d29e803143da Signed-off-by: herman.chen --- inc/mpp_meta.h | 47 ++++++++++++++++++++++++----------- mpp/base/mpp_meta.cpp | 44 ++++++++++++++++---------------- mpp/codec/mpp_enc.cpp | 14 +++++------ mpp/legacy/vpu_api_legacy.cpp | 8 +++--- mpp/mpp.cpp | 6 ++--- test/mpi_enc_test.c | 8 +++--- 6 files changed, 72 insertions(+), 55 deletions(-) diff --git a/inc/mpp_meta.h b/inc/mpp_meta.h index a2b966b6..4aad14e6 100644 --- a/inc/mpp_meta.h +++ b/inc/mpp_meta.h @@ -45,27 +45,44 @@ typedef enum MppMetaDataType_e { * mpp meta data of data flow * reference counter will be used for these meta data type */ - MPP_META_TYPE_FRAME = 'mfrm', - MPP_META_TYPE_PACKET = 'mpkt', - MPP_META_TYPE_BUFFER = 'mbuf', + TYPE_FRAME = 'mfrm', + TYPE_PACKET = 'mpkt', + TYPE_BUFFER = 'mbuf', /* mpp meta data of normal data type */ - MPP_META_TYPE_S32 = 's32 ', - MPP_META_TYPE_S64 = 's64 ', - MPP_META_TYPE_PTR = 'ptr ', + TYPE_S32 = 's32 ', + TYPE_S64 = 's64 ', + TYPE_PTR = 'ptr ', } MppMetaType; typedef enum MppMetaKey_e { - MPP_META_KEY_INPUT_FRM = 'ifrm', - MPP_META_KEY_INPUT_PKT = 'ipkt', - MPP_META_KEY_OUTPUT_FRM = 'ofrm', - MPP_META_KEY_OUTPUT_PKT = 'opkt', - MPP_META_KEY_MOTION_INFO = 'mvif', /* output motion information for motion detection */ + /* data flow key */ + KEY_INPUT_FRAME = 'ifrm', + KEY_INPUT_PACKET = 'ipkt', + KEY_OUTPUT_FRAME = 'ofrm', + KEY_OUTPUT_PACKET = 'opkt', + KEY_MOTION_INFO = 'mvif', /* output motion information for motion detection */ - MPP_META_KEY_INPUT_BLOCK = 'iblk', - MPP_META_KEY_OUTPUT_BLOCK = 'oblk', - MPP_META_KEY_INPUT_IDR_REQ = 'iidr', /* input idr frame request flag */ - MPP_META_KEY_OUTPUT_INTRA = 'oidr', /* output intra frame indicator */ + /* flow control key */ + KEY_INPUT_BLOCK = 'iblk', + KEY_OUTPUT_BLOCK = 'oblk', + KEY_INPUT_IDR_REQ = 'iidr', /* input idr frame request flag */ + KEY_OUTPUT_INTRA = 'oidr', /* output intra frame indicator */ + + /* flow control key */ + KEY_WIDTH = 'wdth', + KEY_HEIGHT = 'hght', + KEY_BITRATE = 'bps ', + KEY_BITRATE_UP = 'bpsu', + KEY_BITRATE_LOW = 'bpsl', + KEY_INPUT_FPS = 'ifps', + KEY_OUTPUT_FPS = 'ofps', + KEY_GOP = 'gop ', + KEY_QP = 'qp ', + KEY_QP_MIN = 'qmin', + KEY_QP_MAX = 'qmax', + KEY_QP_DIFF_RANGE = 'qdif', + KEY_RC_MODE = 'rcmo', } MppMetaKey; typedef void* MppMeta; diff --git a/mpp/base/mpp_meta.cpp b/mpp/base/mpp_meta.cpp index 1ab1ac36..e1f5ac87 100644 --- a/mpp/base/mpp_meta.cpp +++ b/mpp/base/mpp_meta.cpp @@ -63,14 +63,14 @@ typedef struct MppMetaNode_t { static MppMetaDef meta_defs[] = { /* categorized by type */ /* data flow type */ - { MPP_META_KEY_INPUT_FRM, MPP_META_TYPE_FRAME, }, - { MPP_META_KEY_OUTPUT_FRM, MPP_META_TYPE_FRAME, }, - { MPP_META_KEY_INPUT_PKT, MPP_META_TYPE_PACKET, }, - { MPP_META_KEY_OUTPUT_PKT, MPP_META_TYPE_PACKET, }, - { MPP_META_KEY_MOTION_INFO, MPP_META_TYPE_BUFFER, }, /* buffer for motion detection */ + { KEY_INPUT_FRAME, TYPE_FRAME, }, + { KEY_OUTPUT_FRAME, TYPE_FRAME, }, + { KEY_INPUT_PACKET, TYPE_PACKET, }, + { KEY_OUTPUT_PACKET, TYPE_PACKET, }, + { KEY_MOTION_INFO, TYPE_BUFFER, }, /* buffer for motion detection */ - { MPP_META_KEY_INPUT_BLOCK, MPP_META_TYPE_S32, }, - { MPP_META_KEY_OUTPUT_BLOCK, MPP_META_TYPE_S32, }, + { KEY_INPUT_BLOCK, TYPE_S32, }, + { KEY_OUTPUT_BLOCK, TYPE_S32, }, }; class MppMetaService @@ -242,13 +242,13 @@ void MppMetaService::put_node(MppMetaNode *node) node_count--; // TODO: may be we need to release MppFrame / MppPacket / MppBuffer here switch (meta_defs[node->type_id].type) { - case MPP_META_TYPE_FRAME : { + case TYPE_FRAME : { // mpp_frame_deinit(&node->val.frame); } break; - case MPP_META_TYPE_PACKET : { + case TYPE_PACKET : { // mpp_packet_deinit(&node->val.packet); } break; - case MPP_META_TYPE_BUFFER : { + case TYPE_BUFFER : { //mpp_buffer_put(node->val.buffer); } break; default : { @@ -330,7 +330,7 @@ MPP_RET mpp_meta_set_s32(MppMeta meta, MppMetaKey key, RK_S32 val) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; meta_val.val_s32 = val; - return set_val_by_key(impl, key, MPP_META_TYPE_S32, &meta_val); + return set_val_by_key(impl, key, TYPE_S32, &meta_val); } MPP_RET mpp_meta_set_s64(MppMeta meta, MppMetaKey key, RK_S64 val) @@ -343,7 +343,7 @@ MPP_RET mpp_meta_set_s64(MppMeta meta, MppMetaKey key, RK_S64 val) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; meta_val.val_s64 = val; - return set_val_by_key(impl, key, MPP_META_TYPE_S64, &meta_val); + return set_val_by_key(impl, key, TYPE_S64, &meta_val); } MPP_RET mpp_meta_set_ptr(MppMeta meta, MppMetaKey key, void *val) @@ -356,7 +356,7 @@ MPP_RET mpp_meta_set_ptr(MppMeta meta, MppMetaKey key, void *val) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; meta_val.val_ptr = val; - return set_val_by_key(impl, key, MPP_META_TYPE_PTR, &meta_val); + return set_val_by_key(impl, key, TYPE_PTR, &meta_val); } MPP_RET mpp_meta_get_s32(MppMeta meta, MppMetaKey key, RK_S32 *val) @@ -368,7 +368,7 @@ MPP_RET mpp_meta_get_s32(MppMeta meta, MppMetaKey key, RK_S32 *val) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; - MPP_RET ret = get_val_by_key(impl, key, MPP_META_TYPE_S32, &meta_val); + MPP_RET ret = get_val_by_key(impl, key, TYPE_S32, &meta_val); if (MPP_OK == ret) *val = meta_val.val_s32; @@ -384,7 +384,7 @@ MPP_RET mpp_meta_get_s64(MppMeta meta, MppMetaKey key, RK_S64 *val) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; - MPP_RET ret = get_val_by_key(impl, key, MPP_META_TYPE_S64, &meta_val); + MPP_RET ret = get_val_by_key(impl, key, TYPE_S64, &meta_val); if (MPP_OK == ret) *val = meta_val.val_s64; @@ -400,7 +400,7 @@ MPP_RET mpp_meta_get_ptr(MppMeta meta, MppMetaKey key, void **val) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; - MPP_RET ret = get_val_by_key(impl, key, MPP_META_TYPE_PTR, &meta_val); + MPP_RET ret = get_val_by_key(impl, key, TYPE_PTR, &meta_val); if (MPP_OK == ret) *val = meta_val.val_ptr; @@ -417,7 +417,7 @@ MPP_RET mpp_meta_set_frame(MppMeta meta, MppMetaKey key, MppFrame frame) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; meta_val.frame = frame; - return set_val_by_key(impl, key, MPP_META_TYPE_FRAME, &meta_val); + return set_val_by_key(impl, key, TYPE_FRAME, &meta_val); } MPP_RET mpp_meta_set_packet(MppMeta meta, MppMetaKey key, MppPacket packet) @@ -430,7 +430,7 @@ MPP_RET mpp_meta_set_packet(MppMeta meta, MppMetaKey key, MppPacket packet) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; meta_val.packet = packet; - return set_val_by_key(impl, key, MPP_META_TYPE_PACKET, &meta_val); + return set_val_by_key(impl, key, TYPE_PACKET, &meta_val); } MPP_RET mpp_meta_set_buffer(MppMeta meta, MppMetaKey key, MppBuffer buffer) @@ -443,7 +443,7 @@ MPP_RET mpp_meta_set_buffer(MppMeta meta, MppMetaKey key, MppBuffer buffer) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; meta_val.buffer = buffer; - return set_val_by_key(impl, key, MPP_META_TYPE_BUFFER, &meta_val); + return set_val_by_key(impl, key, TYPE_BUFFER, &meta_val); } MPP_RET mpp_meta_get_frame(MppMeta meta, MppMetaKey key, MppFrame *frame) @@ -455,7 +455,7 @@ MPP_RET mpp_meta_get_frame(MppMeta meta, MppMetaKey key, MppFrame *frame) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; - MPP_RET ret = get_val_by_key(impl, key, MPP_META_TYPE_FRAME, &meta_val); + MPP_RET ret = get_val_by_key(impl, key, TYPE_FRAME, &meta_val); if (MPP_OK == ret) *frame = meta_val.frame; @@ -471,7 +471,7 @@ MPP_RET mpp_meta_get_packet(MppMeta meta, MppMetaKey key, MppPacket *packet) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; - MPP_RET ret = get_val_by_key(impl, key, MPP_META_TYPE_PACKET, &meta_val); + MPP_RET ret = get_val_by_key(impl, key, TYPE_PACKET, &meta_val); if (MPP_OK == ret) *packet = meta_val.packet; @@ -487,7 +487,7 @@ MPP_RET mpp_meta_get_buffer(MppMeta meta, MppMetaKey key, MppBuffer *buffer) MppMetaImpl *impl = (MppMetaImpl *)meta; MppMetaVal meta_val; - MPP_RET ret = get_val_by_key(impl, key, MPP_META_TYPE_BUFFER, &meta_val); + MPP_RET ret = get_val_by_key(impl, key, TYPE_BUFFER, &meta_val); if (MPP_OK == ret) *buffer = meta_val.buffer; diff --git a/mpp/codec/mpp_enc.cpp b/mpp/codec/mpp_enc.cpp index 4862e049..423349a6 100644 --- a/mpp/codec/mpp_enc.cpp +++ b/mpp/codec/mpp_enc.cpp @@ -48,12 +48,12 @@ static MPP_RET release_task_in_port(MppPort port) if (mpp_task) { packet = NULL; frame = NULL; - ret = mpp_task_meta_get_frame(mpp_task, MPP_META_KEY_INPUT_FRM, &frame); + ret = mpp_task_meta_get_frame(mpp_task, KEY_INPUT_FRAME, &frame); if (frame) { mpp_frame_deinit(&frame); frame = NULL; } - ret = mpp_task_meta_get_packet(mpp_task, MPP_META_KEY_OUTPUT_PKT, &packet); + ret = mpp_task_meta_get_packet(mpp_task, KEY_OUTPUT_PACKET, &packet); if (packet) { mpp_packet_deinit(&packet); packet = NULL; @@ -93,8 +93,8 @@ void *mpp_enc_control_thread(void *data) thd_enc->unlock(); if (mpp_task != NULL) { - mpp_task_meta_get_frame (mpp_task, MPP_META_KEY_INPUT_FRM, &frame); - mpp_task_meta_get_packet(mpp_task, MPP_META_KEY_OUTPUT_PKT, &packet); + mpp_task_meta_get_frame (mpp_task, KEY_INPUT_FRAME, &frame); + mpp_task_meta_get_packet(mpp_task, KEY_OUTPUT_PACKET, &packet); if (NULL == frame) { mpp_port_enqueue(input, mpp_task); @@ -149,19 +149,19 @@ void *mpp_enc_control_thread(void *data) * then enqueue task back to input port * final user will release the mpp_frame they had input */ - mpp_task_meta_set_frame(mpp_task, MPP_META_KEY_INPUT_FRM, frame); + mpp_task_meta_set_frame(mpp_task, KEY_INPUT_FRAME, frame); mpp_port_enqueue(input, mpp_task); mpp_task = NULL; // send finished task to output port mpp_port_dequeue(output, &mpp_task); - mpp_task_meta_set_packet(mpp_task, MPP_META_KEY_OUTPUT_PKT, packet); + mpp_task_meta_set_packet(mpp_task, KEY_OUTPUT_PACKET, packet); { RK_S32 is_intra = enc_task->is_intra; RK_U32 flag = mpp_packet_get_flag(packet); - mpp_task_meta_set_s32(mpp_task, MPP_META_KEY_OUTPUT_INTRA, is_intra); + mpp_task_meta_set_s32(mpp_task, KEY_OUTPUT_INTRA, is_intra); if (is_intra) { mpp_packet_set_flag(packet, flag | MPP_PACKET_FLAG_INTRA); } diff --git a/mpp/legacy/vpu_api_legacy.cpp b/mpp/legacy/vpu_api_legacy.cpp index f2ed47fd..4ec899d7 100644 --- a/mpp/legacy/vpu_api_legacy.cpp +++ b/mpp/legacy/vpu_api_legacy.cpp @@ -670,8 +670,8 @@ RK_S32 VpuApiLegacy::encode(VpuCodecContext *ctx, EncInputStream_t *aEncInStrm, break; } while (1); - mpp_task_meta_set_frame (task, MPP_META_KEY_INPUT_FRM, frame); - mpp_task_meta_set_packet(task, MPP_META_KEY_OUTPUT_PKT, packet); + mpp_task_meta_set_frame (task, KEY_INPUT_FRAME, frame); + mpp_task_meta_set_packet(task, KEY_OUTPUT_PACKET, packet); if (mpi != NULL) { ret = mpi->enqueue(mpp_ctx, MPP_PORT_INPUT, task); @@ -692,7 +692,7 @@ RK_S32 VpuApiLegacy::encode(VpuCodecContext *ctx, EncInputStream_t *aEncInStrm, MppFrame frame_out = NULL; MppFrame packet_out = NULL; - mpp_task_meta_get_packet(task, MPP_META_KEY_OUTPUT_PKT, &packet_out); + mpp_task_meta_get_packet(task, KEY_OUTPUT_PACKET, &packet_out); mpp_assert(packet_out == packet); vpu_api_dbg_func("encoded frame %d\n", frame_count); @@ -712,7 +712,7 @@ RK_S32 VpuApiLegacy::encode(VpuCodecContext *ctx, EncInputStream_t *aEncInStrm, break; } mpp_assert(task); - ret = mpp_task_meta_get_frame(task, MPP_META_KEY_INPUT_FRM, &frame_out); + ret = mpp_task_meta_get_frame(task, KEY_INPUT_FRAME, &frame_out); mpp_assert(frame_out == frame); ret = mpi->enqueue(mpp_ctx, MPP_PORT_INPUT, task); if (ret) { diff --git a/mpp/mpp.cpp b/mpp/mpp.cpp index 24033de9..10b6727d 100644 --- a/mpp/mpp.cpp +++ b/mpp/mpp.cpp @@ -303,7 +303,7 @@ MPP_RET Mpp::put_frame(MppFrame frame) mpp_assert(task); - ret = mpp_task_meta_set_frame(task, MPP_META_KEY_INPUT_FRM, frame); + ret = mpp_task_meta_set_frame(task, KEY_INPUT_FRAME, frame); if (ret) { mpp_log_f("failed to set input frame to task ret %d\n", ret); break; @@ -327,7 +327,7 @@ MPP_RET Mpp::put_frame(MppFrame frame) } mpp_assert(task); - ret = mpp_task_meta_get_frame(task, MPP_META_KEY_INPUT_FRM, &frame); + ret = mpp_task_meta_get_frame(task, KEY_INPUT_FRAME, &frame); if (frame) { mpp_frame_deinit(&frame); frame = NULL; @@ -371,7 +371,7 @@ MPP_RET Mpp::get_packet(MppPacket *packet) mpp_assert(task); - ret = mpp_task_meta_get_packet(task, MPP_META_KEY_OUTPUT_PKT, packet); + ret = mpp_task_meta_get_packet(task, KEY_OUTPUT_PACKET, packet); if (ret) { mpp_log_f("failed to get output packet from task ret %d\n", ret); break; diff --git a/test/mpi_enc_test.c b/test/mpi_enc_test.c index 2065a149..5706c455 100644 --- a/test/mpi_enc_test.c +++ b/test/mpi_enc_test.c @@ -310,7 +310,7 @@ int mpi_enc_test(MpiEncTestCmd *cmd) } else { MppFrame frame_out = NULL; - mpp_task_meta_get_frame (task, MPP_META_KEY_INPUT_FRM, &frame_out); + mpp_task_meta_get_frame (task, KEY_INPUT_FRAME, &frame_out); if (frame_out) mpp_assert(frame_out == frame); @@ -319,8 +319,8 @@ int mpi_enc_test(MpiEncTestCmd *cmd) } while (1); - mpp_task_meta_set_frame (task, MPP_META_KEY_INPUT_FRM, frame); - mpp_task_meta_set_packet(task, MPP_META_KEY_OUTPUT_PKT, packet); + mpp_task_meta_set_frame (task, KEY_INPUT_FRAME, frame); + mpp_task_meta_set_packet(task, KEY_OUTPUT_PACKET, packet); ret = mpi->enqueue(ctx, MPP_PORT_INPUT, task); if (ret) { @@ -340,7 +340,7 @@ int mpi_enc_test(MpiEncTestCmd *cmd) if (task) { MppFrame packet_out = NULL; - mpp_task_meta_get_packet(task, MPP_META_KEY_OUTPUT_PKT, &packet_out); + mpp_task_meta_get_packet(task, KEY_OUTPUT_PACKET, &packet_out); mpp_assert(packet_out == packet); if (packet) {