[Bug 771525] gst-rtsp-server: Poor performance with interleaved RTSP due to missing buffer list support and merging of all memories in buffers

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Oct 11 15:17:23 UTC 2018


https://bugzilla.gnome.org/show_bug.cgi?id=771525

Tim-Philipp Müller <t.i.m at zen.co.uk> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #373684|none                        |reviewed
             status|                            |

--- Comment #29 from Tim-Philipp Müller <t.i.m at zen.co.uk> ---
Comment on attachment 373684
  --> https://bugzilla.gnome.org/attachment.cgi?id=373684
rtsp-server: Add support for buffer lists

Looks fine to me by and large.

Some nitpicks:

>--- a/gst/rtsp-server/rtsp-stream.c
>+++ b/gst/rtsp-server/rtsp-stream.c
>@@ -2394,6 +2394,8 @@ send_tcp_message (GstRTSPStream * stream, gint idx)
>   GList *walk;
>   GstSample *sample;
>   GstBuffer *buffer;
>+  GstBufferList *buffer_list;
>+  guint n_messages = 0;
>   gboolean is_rtp;
> 
>   if (priv->n_outstanding > 0 || !priv->have_buffer[idx]) {
>@@ -2414,6 +2416,14 @@ send_tcp_message (GstRTSPStream * stream, gint idx)
>   }
> 
>   buffer = gst_sample_get_buffer (sample);
>+  buffer_list = gst_sample_get_buffer_list (sample);
>+
>+  /* We will get one message-sent notification per message,
>+   * i.e. per buffer that is actually sent out */
>+  if (buffer)
>+    n_messages += 1;
>+  if (buffer_list)
>+    n_messages += gst_buffer_list_length (buffer_list);

Why are we doing "+=" here and not "=" and should it be "else if" here for
clarity or can we get both a buffer and a buffer list? (don't think so?)

"else if" also a few times in the code below.


>--- a/tests/check/gst/rtspserver.c
>+++ b/tests/check/gst/rtspserver.c
>@@ -2117,7 +2117,7 @@ GST_START_TEST (test_record_tcp)
> 
>   mfactory =
>       start_record_server
>-      ("( rtppcmadepay name=depay0 ! appsink name=sink async=false )");
>+      ("( rtppcmadepay name=depay0 ! appsink name=sink buffer-list=true async=false )");
> 
>   g_signal_connect (mfactory, "media-constructed",
>       G_CALLBACK (media_constructed_cb), &server_sink);

Does this (buffer-list=true) here actually do anything? Is it needed?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list