How to know which source reached EOS in a multi source pipeline?

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) GPU
• DeepStream Version 6.2
• JetPack Version (valid for Jetson only)
• Issue Type( questions, new requirements, bugs) question
I would like to know which stream reached EOS in a multi stream pipeline.
the message bus call is as follows


 t = message.type
    if t == Gst.MessageType.EOS:
        sys.stdout.write("End-of-stream\n")

is there a way i can know which stream reached EOS

likewise, if i feed in a invalid RTSP stream i get this error

Error: gst-resource-error-quark: Could not open resource for reading and writing. (7): gstrtspsrc.c(7893): gst_rtspsrc_retrieve_sdp (): /GstPipeline:pipeline0/GstURIDecodeBin:source-bin-01/GstRTSPSrc:source:
Failed to connect. (Generic error)

right now i parse the error message and look for the ‘source-bin-01’ to find that bin at index 1 has failed, is there any direct method to find which source failed instead of parsing error message?

It related to the sink pad of nvstreammux. The nvstreammux is open source on the latest version. You can refer to the souce code: opt\nvidia\deepstream\deepstream-6.3\sources\gst-plugins\gst-nvmultistream2\gstnvstreammux.cpp.

static gboolean
gst_nvstreammux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
.....
GST_EVENT_EOS
.....

can someone tell me a python implementation

its possible to know from message bus


if t == Gst.MessageType.ELEMENT:
        struct = message.get_structure()
        #Check for stream-eos message
        if struct is not None and struct.has_name("stream-eos"):
            parsed, stream_id = struct.get_uint("stream-id")
            if parsed:
                #Set eos status of stream to True, to be deleted in delete-sources
                print("Got EOS from stream %d" % stream_id)

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