**• Hardware Platform : Xavier AGX
**• DeepStream Version: 5.0
**• JetPack Version: 4.4
**• TensorRT Version: 7.1.3.0
**• NVIDIA GPU Driver Version: 10.2
I’ve a plugin that adds meta data that I can see using the following code:
check_metadata (GstBuffer * inbuf)
{
NvDsBatchMeta *batch_meta = gst_buffer_get_nvds_batch_meta (inbuf);
NvDsMetaList * l_frame = batch_meta->frame_meta_list;
NvDsMetaList * l_user_meta = NULL;
NvDsUserMeta *user_meta = NULL;
int *user_meta_data = NULL;
int i = 0;
NvDsFrameMeta *frame_meta = (NvDsFrameMeta ) (l_frame->data);
/ Validate user meta */
for (l_user_meta = frame_meta->frame_user_meta_list; l_user_meta != NULL;
l_user_meta = l_user_meta->next)
{
user_meta = (NvDsUserMeta *) (l_user_meta->data);
user_meta_data = (int *)user_meta->user_meta_data;
if(user_meta->base_meta.meta_type == WATERLINE_GST_META)
{
for(i = 0; i < USER_ARRAY_SIZE; i++)
{
g_print("user_meta_data [%d] = %d\n", i, user_meta_data[i]);
}
g_print("\n");
}
}
Now how can I get access to this meta data using python ? I’ve the following code not throwing any error but it returns a NULL capsule object.
batch_meta = pyds.gst_buffer_get_nvds_batch_meta(hash(buffer))
l_frame = batch_meta.frame_meta_list
while l_frame is not None:
try:
# l_frame.data needs a cast to pyds.NvDsFrameMeta
frame_meta = pyds.NvDsFrameMeta.cast(l_frame.data)
l_user_meta = frame_meta.frame_user_meta_list
except StopIteration:
break
while l_user_meta is not None:
try:
user_meta = pyds.NvDsUserMeta.cast(l_user_meta.data)
user_meta_data = user_meta.user_meta_data
print('******* USER DATA: ', user_meta_data)
except StopIteration:
break
try:
l_user_meta=l_user_meta.next
except StopIteration:
break
How can I mimic in Python the content of the C++ check_metadata() routine? I need to get a construct that output the ‘user_meta_data[i]’.
I already spent a couple of days reading the doc but so far without any success. Any help will be greatly appreciated. Thanks