Refactor osd src pad buffer metadata probe function
This commit is contained in:
parent
e7c20e08ea
commit
760b162301
@ -432,6 +432,37 @@ void NvOsdManager::generate_event_msg_meta(gpointer data, gint class_id,
|
||||
}
|
||||
}
|
||||
|
||||
void NvOsdManager::event_message_meta(NvDsBatchMeta *batch_meta,
|
||||
NvDsFrameMeta *frame_meta,
|
||||
NvDsObjectMeta *obj_meta,
|
||||
float *user_meta_data) {
|
||||
NvDsEventMsgMeta *msg_meta =
|
||||
(NvDsEventMsgMeta *)g_malloc0(sizeof(NvDsEventMsgMeta));
|
||||
msg_meta->bbox.top = obj_meta->rect_params.top;
|
||||
msg_meta->bbox.left = obj_meta->rect_params.left;
|
||||
msg_meta->bbox.width = obj_meta->rect_params.width;
|
||||
msg_meta->bbox.height = obj_meta->rect_params.height;
|
||||
msg_meta->frameId = frame_number;
|
||||
msg_meta->trackingId = obj_meta->object_id;
|
||||
msg_meta->confidence = obj_meta->confidence;
|
||||
msg_meta->embedding.embedding_vector = user_meta_data;
|
||||
msg_meta->embedding.embedding_length = EMBEDDING_VECTOR_SIZE;
|
||||
generate_event_msg_meta(msg_meta, obj_meta->class_id, obj_meta);
|
||||
|
||||
NvDsUserMeta *user_event_meta =
|
||||
nvds_acquire_user_meta_from_pool(batch_meta);
|
||||
if (user_event_meta) {
|
||||
user_event_meta->user_meta_data = (void *)msg_meta;
|
||||
user_event_meta->base_meta.meta_type = NVDS_EVENT_MSG_META;
|
||||
user_event_meta->base_meta.copy_func = (NvDsMetaCopyFunc)meta_copy_func;
|
||||
user_event_meta->base_meta.release_func =
|
||||
(NvDsMetaReleaseFunc)meta_free_func;
|
||||
nvds_add_user_meta_to_frame(frame_meta, user_event_meta);
|
||||
} else {
|
||||
g_print("Error in attaching event meta to buffer\n");
|
||||
}
|
||||
}
|
||||
|
||||
/* osd_sink_pad_buffer_probe will extract metadata received on OSD sink pad
|
||||
* and update params for drawing rectangle, object information etc. */
|
||||
GstPadProbeReturn NvOsdManager::osd_src_pad_buffer_metadata_probe(
|
||||
@ -525,38 +556,8 @@ GstPadProbeReturn NvOsdManager::osd_src_pad_buffer_metadata_probe(
|
||||
}
|
||||
|
||||
if (is_meta_type_NVOSD_embedding_vector == true) {
|
||||
// is_first_object && !(frame_number % frame_interval) &&
|
||||
/* Frequency of messages to be send will be based on use case.
|
||||
* Here message is being sent for first object every
|
||||
* frame_interval(default=30).
|
||||
*/
|
||||
|
||||
NvDsEventMsgMeta *msg_meta =
|
||||
(NvDsEventMsgMeta *)g_malloc0(sizeof(NvDsEventMsgMeta));
|
||||
msg_meta->bbox.top = obj_meta->rect_params.top;
|
||||
msg_meta->bbox.left = obj_meta->rect_params.left;
|
||||
msg_meta->bbox.width = obj_meta->rect_params.width;
|
||||
msg_meta->bbox.height = obj_meta->rect_params.height;
|
||||
msg_meta->frameId = frame_number;
|
||||
msg_meta->trackingId = obj_meta->object_id;
|
||||
msg_meta->confidence = obj_meta->confidence;
|
||||
msg_meta->embedding.embedding_vector = user_meta_data;
|
||||
msg_meta->embedding.embedding_length = EMBEDDING_VECTOR_SIZE;
|
||||
generate_event_msg_meta(msg_meta, obj_meta->class_id, obj_meta);
|
||||
|
||||
NvDsUserMeta *user_event_meta =
|
||||
nvds_acquire_user_meta_from_pool(batch_meta);
|
||||
if (user_event_meta) {
|
||||
user_event_meta->user_meta_data = (void *)msg_meta;
|
||||
user_event_meta->base_meta.meta_type = NVDS_EVENT_MSG_META;
|
||||
user_event_meta->base_meta.copy_func =
|
||||
(NvDsMetaCopyFunc)meta_copy_func;
|
||||
user_event_meta->base_meta.release_func =
|
||||
(NvDsMetaReleaseFunc)meta_free_func;
|
||||
nvds_add_user_meta_to_frame(frame_meta, user_event_meta);
|
||||
} else {
|
||||
g_print("Error in attaching event meta to buffer\n");
|
||||
}
|
||||
event_message_meta(batch_meta, frame_meta, obj_meta,
|
||||
user_meta_data);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -40,4 +40,6 @@ class NvOsdManager {
|
||||
static void meta_free_func_custom(gpointer, gpointer);
|
||||
static void generate_face_meta(gpointer);
|
||||
static void generate_person_meta(gpointer);
|
||||
static void event_message_meta(NvDsBatchMeta *, NvDsFrameMeta *,
|
||||
NvDsObjectMeta *, float *);
|
||||
};
|
||||
Loading…
x
Reference in New Issue
Block a user