Access user meta

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) Jetson
• DeepStream Version 5.0
• JetPack Version (valid for Jetson only) 4.4
• TensorRT Version 7
• NVIDIA GPU Driver Version (valid for GPU only)
• Issue Type( questions, new requirements, bugs)
• How to reproduce the issue ? (This is for bugs. Including which sample app is using, the configuration files content, the command line used and other details for reproducing)
• Requirement details( This is for new requirement. Including the module name-for which plugin or for which sample application, the function description)

hello everyone!
this is my pipeline:
gst_bin_add_many (GST_BIN (pipeline),
source, h264parser, decoder, streammux, pgie, nvtracker,
nvvidconv, caps_filter, dsexample, NULL);

i add user data in nvinfer_src_pad_buffer_probe(), like the deepstream-user-metadata-test does, and i want access the data in gstdsexample.cpp, like this:
for (l_frame = batch_meta->frame_meta_list; l_frame != NULL;
l_frame = l_frame->next)
{

                    frame_meta = (NvDsFrameMeta *)(l_frame->data);
                    user_meta = (NvDsUserMeta *)(l_frame->data);
                    user_meta_data = (gchar *)user_meta->user_meta_data;
                    if(user_meta->base_meta.meta_type == NVDS_USER_FRAME_META_EXAMPLE)
                    {
                            fprintf(stderr, "stop 1\n");
                            g_print("\n************ Retrieving user_meta_data array of 16 on osd sink pad\n");
                            for(i = 0; i < USER_ARRAY_SIZE; i++) {
                                    g_print("user_meta_data [%d] = %d\n", i, user_meta_data[i]);
                            }
                            g_print("\n");
                    }
                    cv::Mat in_mat;
                    if (dsexample->blur_objects)
                              ......

but it doesn 't work, the program never into “stop 1”, please help。

Do you mean you modified deepstream-user-metadata-test to add dsexample to get user meta which is inserted by nvinfer_src_pad_buffer_probe()?

Please read the deepstream-user-metadata-test code carefully. In osd_sink_pad_buffer_probe(), it retrieve the use meta in this way:

for (l_frame = batch_meta->frame_meta_list; l_frame != NULL;
l_frame = l_frame->next) {
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 = (gchar )user_meta->user_meta_data;
if(user_meta->base_meta.meta_type == NVDS_USER_FRAME_META_EXAMPLE)
{
g_print("\n
******** Retrieving user_meta_data array of 16 on osd sink pad\n");
for(i = 0; i < USER_ARRAY_SIZE; i++) {
g_print(“user_meta_data [%d] = %d\n”, i, user_meta_data[i]);
}
g_print(“\n”);
}
}
frame_number++;
}

Please refer to the structure of NvDsFrameMeta

https://docs.nvidia.com/metropolis/deepstream/sdk-api/Meta/_NvDsFrameMeta.html

The problem is solved, thank you for your help.