Information on internal library

• Hardware Platform (Jetson / GPU): Jetson
• DeepStream Version: 6.2
• JetPack Version (valid for Jetson only): 5.1.1-b56
• TensorRT Version: 8.5.2.2
• NVIDIA GPU Driver Version (valid for GPU only)
• Issue Type( questions, new requirements, bugs): Concern
Hello,
Currently when I am running deepstream I am getting

(pipeline:2272): GStreamer-WARNING **: 12:53:02.376: External plugin loader failed. This most likely means that the plugin loader helper binary was not found or could not be run. You might need to set the GST_PLUGIN_SCANNER environment variable if your setup is unusual. This should normally not be required though.

(pipeline:2272): GStreamer-WARNING **: 12:53:02.376: Failed to load plugin '/usr/lib/x86_64-linux-gnu/gstreamer-1.0/deepstream/libnvdsgst_udp.so': librivermax.so.1: cannot open shared object file: No such file or directory
gstnvtracker: Loading low-level lib at /opt/nvidia/deepstream/deepstream/lib/libnvds_nvmultiobjecttracker.so
[NvMultiObjectTracker] Initialized
0:00:08.489107705  2272 0x556035cd7100 INFO                 nvinfer gstnvinfer.cpp:682:gst_nvinfer_logger:<primary-nvinference-engine> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::deserializeEngineAndBackend() <nvdsinfer_context_impl.cpp:2092> [UID = 1]: deserialized trt engine from :/opt/nvidia/deepstream/deepstream-6.4/fast-api/inference_base/dino/dino_model_v1.onnx_b1_gpu0_fp32.engine
WARNING: [TRT]: The getMaxBatchSize() function should not be used with an engine built from a network created with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag. This function will always return 1.
INFO: ../nvdsinfer/nvdsinfer_model_builder.cpp:610 [Implicit Engine Info]: layers num: 3
0   INPUT  kFLOAT inputs          3x544x960       
1   OUTPUT kFLOAT pred_logits     900x91          
2   OUTPUT kFLOAT pred_boxes      900x4           

0:00:08.594079943  2272 0x556035cd7100 INFO                 nvinfer gstnvinfer.cpp:682:gst_nvinfer_logger:<primary-nvinference-engine> NvDsInferContext[UID 1]: Info from NvDsInferContextImpl::generateBackendContext() <nvdsinfer_context_impl.cpp:2195> [UID = 1]: Use deserialized engine model: /opt/nvidia/deepstream/deepstream-6.4/fast-api/inference_base/dino/dino_model_v1.onnx_b1_gpu0_fp32.engine
0:00:08.599511642  2272 0x556035cd7100 INFO                 nvinfer gstnvinfer_impl.cpp:328:notifyLoadModelStatus:<primary-nvinference-engine> [UID 1]: Load new model:./configs/model_config.txt sucessfully
Now playing: (null)
Deepstream Pipeline is Running now...
New file created: file:///opt/nvidia/deepstream/deepstream-6.4/fast-api/tmp/car_long.mp4
Calling Start 0 
creating uridecodebin for [file:///opt/nvidia/deepstream/deepstream-6.4/fast-api/tmp/car_long.mp4]

(pipeline:2272): GStreamer-CRITICAL **: 12:53:14.701: gst_mini_object_copy: assertion 'mini_object != NULL' failed

(pipeline:2272): GStreamer-CRITICAL **: 12:53:14.701: gst_mini_object_unref: assertion 'mini_object != NULL' failed

(pipeline:2272): GStreamer-CRITICAL **: 12:53:14.701: gst_caps_get_structure: assertion 'GST_IS_CAPS (caps)' failed

(pipeline:2272): GStreamer-CRITICAL **: 12:53:14.702: gst_structure_set_value: assertion 'structure != NULL' failed

(pipeline:2272): GStreamer-CRITICAL **: 12:53:14.702: gst_mini_object_unref: assertion 'mini_object != NULL' failed
decodebin child added source
decodebin child added decodebin0
STATE CHANGE ASYNC

decodebin child added qtdemux0
decodebin child added multiqueue0
decodebin child added h264parse0
decodebin child added capsfilter0
decodebin child added nvv4l2decoder0
decodebin new pad video/x-raw
Decodebin linked to pipeline
nvstreammux: Successfully handled EOS for source_id=0

The last line from the terminal nvstreammux: Successfully handled EOS for source_id=0 is coming from an internal library, May get any information of that library and where can I access it.
Thank you.

currently this plugin code are not opensource. why do you want to know that information? could you share your use scenario?

If that message appears the tasks that are running are stopped
eg: I tried to write meta data to a text file, if that message appears it stops without completing.

If you could give a solution for this it would be grateful.

Thank you.

that message means nvstreammux received source’s EOS message. which sample are you testing or referring to? you can let application not quit after receiving EOS in bus_call function.

static gboolean
bus_call (GstBus * bus, GstMessage * msg, gpointer data)
{
  GMainLoop *loop = (GMainLoop *) data;
  switch (GST_MESSAGE_TYPE (msg)) {
    case GST_MESSAGE_EOS:
      if (g_run_forever==FALSE){
        g_print ("End of stream\n");
        
      }
      break;
    case GST_MESSAGE_WARNING:
    {
      gchar *debug;
      GError *error;
      gst_message_parse_warning (msg, &error, &debug);
      g_printerr ("WARNING from element %s: %s\n",
          GST_OBJECT_NAME (msg->src), error->message);
      g_free (debug);
      g_printerr ("Warning: %s\n", error->message);
      g_error_free (error);
      break;
    }
    case GST_MESSAGE_ERROR:
    {
      gchar *debug;
      GError *error;
      gst_message_parse_error (msg, &error, &debug);
      g_printerr ("ERROR from element %s: %s\n",
          GST_OBJECT_NAME (msg->src), error->message);
      if (debug)
        g_printerr ("Error details: %s\n", debug);
      g_free (debug);
      g_error_free (error);
      g_main_loop_quit (loop);
      break;
    }
    case GST_MESSAGE_ELEMENT:
    {
      if (gst_nvmessage_is_stream_eos (msg)) {
        guint stream_id;
        if (gst_nvmessage_parse_stream_eos (msg, &stream_id)) {
          g_print ("Got EOS from stream %d\n", stream_id);
          g_mutex_lock (&eos_lock);
          g_eos_list[stream_id] = TRUE;
          g_mutex_unlock (&eos_lock);
        }
      }
      break;
    }
    default:
      break;
  }
  return TRUE;
}

This is our function and we are calling

  bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
  bus_watch_id = gst_bus_add_watch (bus, bus_call, loop);
  gst_object_unref (bus);

even if we comment this also nvstreammux: Successfully handled EOS for source_id=0 comes

it means nvstreammux received source’s EOS message. what is the whole media pipeline? if source ends or meets error, source will send EOS downstream.

how did you write meta data? why it stops without completing after the pipeline ends?

our pipeline works for processing mp4 videos and bouding boxes are generated, in addition we planned to print metadata as response.

// To collect metadata and store in textfile
static GstPadProbeReturn
osd_sink_pad_buffer_probe (GstPad * pad, GstPadProbeInfo * info,
    gpointer u_data)
{
    GstBuffer *buf = (GstBuffer *) info->data;
    NvDsObjectMeta *obj_meta = NULL;
    NvDsMetaList * l_frame = NULL;
    NvDsMetaList * l_obj = NULL;

    NvDsBatchMeta *batch_meta = gst_buffer_get_nvds_batch_meta (buf);
   
    if (output_file == NULL) {
      output_file = fopen("predictions.txt", "w");
      if (output_file == NULL) {
          g_printerr("Failed to open the output file for writing\n");
          return GST_PAD_PROBE_OK;
      }
    }
    // frame level output
    for (l_frame = batch_meta->frame_meta_list; l_frame != NULL;
      l_frame = l_frame->next) {
        NvDsFrameMeta *frame_meta = (NvDsFrameMeta *) (l_frame->data);
        int frame_number = frame_meta->frame_num;
        guint64 timestamp = GST_BUFFER_PTS(buf);
        double seconds = (double)timestamp / 1e9;

        fprintf(output_file, "Timestamp: %f\n", seconds);
        fprintf(output_file, "Frame Number: %d\n", frame_number);

        // Object level output
        for (l_obj = frame_meta->obj_meta_list; l_obj != NULL;
                l_obj = l_obj->next) {
            obj_meta = (NvDsObjectMeta *) (l_obj->data);
            int class_id = obj_meta->class_id;
            float confidence = obj_meta->confidence;
            NvOSD_RectParams bbox = obj_meta->rect_params;
            gchar *obj_class = obj_meta->obj_label;

            fprintf(output_file, "Class ID: %d\n", class_id);
            fprintf(output_file, "Confidence: %f\n", confidence);
            fprintf(output_file, "Object Class: %s\n", obj_class);
            if (obj_meta->object_id != UNTRACKED_OBJECT_ID) {
                int track_id = obj_meta->object_id;
                fprintf(output_file, "Track ID: %d\n", track_id);
            }

            fprintf(output_file, "Bounding Box:\n");
            fprintf(output_file, "Left: %f\n", bbox.left);
            fprintf(output_file, "Top: %f\n", bbox.top);
            fprintf(output_file, "Width: %f\n", bbox.width);
            fprintf(output_file, "Height: %f\n", bbox.height);

          }
        }

      }

wrote this function to write in text file.

but when the video finished it stops with this msg nvstreammux: Successfully handled EOS for source_id=0

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.
as mentioned above, “nvstreammux: Successfully handled EOS for source_id=0” printing is an internal log, which is expected. I am still not clear about the question " when the video finished it stops with this msg". could you use deepstream sample to reproduce this issue?

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