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
|
/* osd_sink_pad_buffer_probe will extract metadata received on OSD sink pad
|
||||||
* and update params for drawing rectangle, object information etc. */
|
* and update params for drawing rectangle, object information etc. */
|
||||||
GstPadProbeReturn NvOsdManager::osd_src_pad_buffer_metadata_probe(
|
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) {
|
if (is_meta_type_NVOSD_embedding_vector == true) {
|
||||||
// is_first_object && !(frame_number % frame_interval) &&
|
event_message_meta(batch_meta, frame_meta, obj_meta,
|
||||||
/* Frequency of messages to be send will be based on use case.
|
user_meta_data);
|
||||||
* 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");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -40,4 +40,6 @@ class NvOsdManager {
|
|||||||
static void meta_free_func_custom(gpointer, gpointer);
|
static void meta_free_func_custom(gpointer, gpointer);
|
||||||
static void generate_face_meta(gpointer);
|
static void generate_face_meta(gpointer);
|
||||||
static void generate_person_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