Gst-rtsp-server, rtph265pay or rtph264pay, metadata lost on payloader

Does anyone have experience with losing metadata in rtsp server gstreamer pipeline when it comes across an rtp payloader on jetson?

Here is gstreamer pipeline:

  gst_bin_add_many(GST_BIN(topbin), src, conv, capsfilter, encode, parse, pay, NULL);

  // listen for newly created pads
  g_signal_connect(src, "pad-added", G_CALLBACK(cb_new_rtspsrc_pad), encode);

  if (!gst_element_link_many(src, conv, capsfilter, encode, parse, pay, NULL))
    g_print("Failed to link src, conv, capsfilter, encode, parse, pay, identity\n");

And here is the src pad data callback creation:

 pay_src_pad = gst_element_get_static_pad(identity, "src");
  gst_pad_add_probe(pay_src_pad, GST_PAD_PROBE_TYPE_BUFFER,
                    (GstPadProbeCallback) pay_src_probe, identity, NULL);
  gst_object_unref(pay_src_pad);

I hand off metadata to rtp manually using the standard gstreamer one byte, two byte method.

Any help is greatly appreciated!

Hi,
Would suggest you go to gstreamer forum to get further help. The plugins are native gstreamer plugins in rev1.14.5. Probably it is a known issue in the revision. Users in the forum can have more experience and provide suggestion.

Hi.Did you resolve this issue?

Yes, but gstreamer forums did not help either. You can close it, thanks.

No, i’m not moderator) I have the same issue. Could you tell me please, how did you resolve it?

Hello again, Yuri. If it’s possible share your solution please. Thanks.

Yes, Bumatov,

Pad probe type was not what the RTSP server pipeline was expecting, I am not sure if it is RTSP server or elements of the pipeline I use but if you use GST_PAD_PROBE_TYPE_BUFFER_LIST, the pad begins working. Also, note that identity element is no longer needed and you can add the probe directly to the payloader element.

pay_src_pad = gst_element_get_static_pad(pay, "src");
  gst_pad_add_probe(pay_src_pad, GST_PAD_PROBE_TYPE_BUFFER_LIST,
      (GstPadProbeCallback)pay_src_probe_for_list, pay, NULL);
  gst_object_unref(pay_src_pad);