Error: gstDsExample has no property named 'nvbuf-memory- type' and Gst_dsexample_transform_ip:NEED NVBUF_MEM_CUDA_UNIFIED memory for opencv blurring

  • deepstream-app version 6.1.0
  • DeepStreamSDK 6.1.0
  • CUDA Driver Version: 11.4
  • CUDA Runtime Version: 11.0
  • TensorRT Version: 8.2
  • cuDNN Version: 8.4
  • libNVWarp360 Version: 2.0.1d3
  • on A6000

1,I based on deepstream-test3, modified the source code, created the dsexample plugin with gst_element_factory_make and then added it to the pipeline, and it reported an error: gstDsExample has no property named ‘nvbuf-memory- type’ and Gst_dsexample_transform_ip:NEED NVBUF_MEM_CUDA_UNIFIED memory for opencv blurring.
2,But in deepsteam-app modify the configuration file, add ds-example can run, I analyzed the deepstream-app source code, found that he used create_dsexample_bin, in this function set nvbuf-memory-type separately.
3,I am modifying the source code, I can’t use deepstream-app, so I create dsexample plugin in the source code by gst_element_factory_make, what should I write in?

...
GstElement *osd = deepstream_test1_app_add_nvdsosd (pipeline, pgie, 0, 0, "OSD");
GstElement *dsexample = gst_element_factory_make ("dsexample", "dsexample");
g_object_set (G_OBJECT (dsexample), "full-frame", 0, "processing-width", 640, "processing-height", 480, "batch-size", 1, "unique-id", 15, "gpu-id", 0, "blur-objects", 1, "nvbuf-memory-type", 3, "roi-top-offset", 0, "roi-left-offset", 0, "roi-width", 640, "roi-height", 480, NULL);
gst_bin_add (GST_BIN (pipeline), dsexample);
gst_element_link (osd, dsexample);
...

gstDsExample is opensource, there is no nvbuf-memory- type property, the path is: opt\nvidia\deepstream\deepstream\sources\gst-plugins\gst-dsexample\gstdsexample.cpp

here is a deepstream native sample: /opt/nvidia/deepstream/deepstream/sources/apps/sample_apps/deepstream-opencv-test

opt\nvidia\deepstream\deepstream\sources\gst-plugins\gst-dsexample\gstdsexample.cpp

  /* Initialize all property variables to default values */
  dsexample->unique_id = DEFAULT_UNIQUE_ID;
  dsexample->processing_width = DEFAULT_PROCESSING_WIDTH;
  dsexample->processing_height = DEFAULT_PROCESSING_HEIGHT;
  dsexample->process_full_frame = DEFAULT_PROCESS_FULL_FRAME;
  dsexample->blur_objects = DEFAULT_BLUR_OBJECTS;
  dsexample->process_mapping = DEFAULT_PROCESS_MAP_OBJECTS;
  dsexample->gpu_id = DEFAULT_GPU_ID;
  /* This quark is required to identify NvDsMeta when iterating through
   * the buffer metadatas */
  if (!_dsmeta_quark)
    _dsmeta_quark = g_quark_from_static_string (NVDS_META_STRING);
}

From the opensource code, there is indeed no nvbuf-memory- type attribute.

Can I add the dsexample directly after the osd plugin? Or do I have to add the convert plugin?

yes, dsexample is only a sample plugin. no.

1,I have to set up the conv plugin before example and set the nvbuf-memory-type of the conv plugin to 1 , so that it can be enabled.
2,But I found out that if I have multiple input sources, dsexample only processes the image after the overall tiler, instead of cycling through the different input sources, right?
3,How to do it?

  1. yes, tiler plugin will output Gst Buffer (single frame) with composited input frames, please refer to Gst-nvmultistreamtiler — DeepStream 6.2 Release documentation.
  2. you can add dsexample before tiler plugin example, please refer to sample deepstream-opencv-test

There is no update from you for a period, assuming this is not an issue any more.
Hence we are closing this topic. If need further support, please open a new one.
Thanks

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.