[meta]: modify metadata type and key definition

This is prepare for adding metadata key tree.

Change-Id: Ibd8f4a2c820cdeb5c59ade9a0f80d29e803143da
Signed-off-by: herman.chen <herman.chen@rock-chips.com>
This commit is contained in:
herman.chen
2016-08-31 16:28:42 +08:00
committed by Herman Chen
parent a0c8a331ad
commit a0c0639205
6 changed files with 72 additions and 55 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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);
}

View File

@@ -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) {

View File

@@ -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;

View File

@@ -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) {