Hi,
We have one more sample:
deepstream_sdk_v4.0_jetson\sources\apps\sample_apps\deepstream-user-metadata-test
And below modification for your reference:
static GstPadProbeReturn
pgie_src_pad_buffer_probe (GstPad * pad, GstPadProbeInfo * info,
gpointer u_data)
{
GstBuffer *buf = (GstBuffer *) info->data;
NvDsMetaList * l_frame = NULL;
NvDsUserMeta *user_meta = NULL;
NvDsMetaType user_meta_type = NVDS_DECODER_GST_META_EXAMPLE;
NvDsBatchMeta *batch_meta = gst_buffer_get_nvds_batch_meta (buf);
for (l_frame = batch_meta->frame_meta_list; l_frame != NULL;
l_frame = l_frame->next) {
NvDsFrameMeta *frame_meta = (NvDsFrameMeta *) (l_frame->data);
/* Acquire NvDsUserMeta user meta from pool */
user_meta = nvds_acquire_user_meta_from_pool(batch_meta);
NvDecoderMeta *decoder_meta = (NvDecoderMeta *)g_malloc0(sizeof(NvDecoderMeta));
/* Add dummy metadata */
decoder_meta->frame_type = (frame_number % 3);
decoder_meta->frame_num = frame_number++;
decoder_meta->dec_err = ((frame_number % 4) / 3);
/* Set NvDsUserMeta below */
user_meta->user_meta_data = (void *)decoder_meta;
user_meta->base_meta.meta_type = user_meta_type;
user_meta->base_meta.copy_func = (NvDsMetaCopyFunc)decoder_gst_to_nvds_meta_transform_func;
user_meta->base_meta.release_func = (NvDsMetaReleaseFunc)decoder_gst_nvds_meta_release_func;
/* We want to add NvDsUserMeta to frame level */
nvds_add_user_meta_to_frame(frame_meta, user_meta);
}
return GST_PAD_PROBE_OK;
}