Inquiry Regarding Error When Switching DeepStream Pipelines

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) AGX Orin 64GB Dev-kit
• DeepStream Version DeepStream 7.1
• JetPack Version (valid for Jetson only) JetPack 6.2
• TensorRT Version 10.4
• NVIDIA GPU Driver Version (valid for GPU only)
• Issue Type( questions, new requirements, bugs) questions
• 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)

I am currently developing a GUI application using the DeepStream SDK with Python. I’m still a beginner with DeepStream, and I’m reaching out to ask for your support with an issue I’m facing during development.

The GUI application I am developing currently supports two functionalities:

  • A pipeline without nvinfer
  • A pipeline with nvinfer

When I first run the pipeline that includes nvinfer, it works as expected. However, after stopping that pipeline and trying to run the one without nvinfer, the program outputs an error message and then terminates unexpectedly.

I would greatly appreciate any guidance on what might be causing this behavior. For example, is there any additional resource cleanup or initialization required when switching between pipelines in a single application?

By the way, I implemented the memory release part like this:

“”
def create_and_set_pipeline(self, use_ds=False):
if self.pipeline:
self.pipeline.set_state(Gst.State.NULL)
Gst.debug_bin_to_dot_file(self.pipeline, Gst.DebugGraphDetails.ALL, “debug_null”)

        for element in self.pipeline.iterate_elements():
            element.set_state(Gst.State.NULL)

        bus = self.pipeline.get_bus()
        if bus:
            bus.remove_signal_watch()
            bus.set_sync_handler(None)

        del self.pipeline
        self.pipeline = None
        self.sink = None

        # 가비지 컬렉션 트리거
        gc.collect()

    if use_ds:
        self.pipeline = create_pipeline_ds(self.cam_list)
    else:
        self.pipeline = create_pipeline_ori(self.cam_list)

    self.sink = self.pipeline.get_by_name('sink')

    bus = self.pipeline.get_bus()
    bus.add_signal_watch()
    bus.connect("message", self.on_bus_message)
    bus.set_sync_handler(self.on_bus_sync_message)

    self.pipeline.set_state(Gst.State.PLAYING)

“”

pipeline with nvifer
v4l2src → capsfilter → videoconvert → nvvideoconvert → capsfilter → queue → streammux
→ queue1
→ nvinfer
→ queue2
→ nvmultistreamtiler
→ queue3
→ nvvideoconvert
→ queue4
→ nv3dsink

pipeline without nvifer
v4l2src → capsfilter → videoconvert → nvvideoconvert → capsfilter → queue → streammux
→ queue1
→ nvmultistreamtiler
→ queue2
→ nvvideoconvert
→ queue3
→ nv3dsink

If you have any related advice, I would appreciate it!

Please refer to the 320358 for the workaround. There are some compatibility issues between Deepstream 7.1 and Jetpack 6.2.

I have checked the topic above.

Thank you for your reply. Hope you have a good day.

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