[Bug 794794] rtpssrcdemux: add the support of buffer list

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Thu Mar 29 22:36:32 UTC 2018


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

Olivier CrĂȘte <olivier.crete at ocrete.ca> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
 Attachment #370285|none                        |needs-work
             status|                            |

--- Comment #4 from Olivier CrĂȘte <olivier.crete at ocrete.ca> ---
Review of attachment 370285:
 --> (https://bugzilla.gnome.org/review?bug=794794&attachment=370285)

::: gst/rtpmanager/gstrtpssrcdemux.c
@@ +159,3 @@
+  GstPad *src_pad;
+  GstBufferList *buffer_list;
+};

This seems duplicative from the GstRtpSsrcDemuxPad struct, you can just put the
GstBufferList* in there I think.

@@ +181,3 @@
+{
+  GstRtpSsrcBufferList *elem_buf_list;
+  elem_buf_list = g_new0 (GstRtpSsrcBufferList, 1);

Maybe g_slice_new0()

@@ +222,3 @@
+  for (walk = demux->ssrc_buffer_list; walk; walk = g_slist_next (walk)) {
+    GstRtpSsrcBufferList *list = (GstRtpSsrcBufferList *) walk->data;
+    GST_INFO_OBJECT (demux, "SSRC %08x: pushing %u buffers", list->ssrc,

This should be at the LOG level, it's done for every buffer list

@@ +224,3 @@
+    GST_INFO_OBJECT (demux, "SSRC %08x: pushing %u buffers", list->ssrc,
+        gst_buffer_list_length (list->buffer_list));
+    gst_pad_push_list (list->src_pad, list->buffer_list);

You need to aggregate the return values and return that to the caller, use
GstFlowCombiner for that

@@ +756,3 @@
+
+  push_all_buffer_list (demux);
+  return ((ret == TRUE) ? GST_FLOW_OK : GST_FLOW_ERROR);

You need to return the aggregated value.

@@ +767,3 @@
+  demux = GST_RTP_SSRC_DEMUX (parent);
+  ret = gst_rtp_ssrc_demux_handle_buffer (demux, buf, FALSE);
+  return ret;

You can do this in one line

return gst_rtp_ssrc_demux_handle_buffer (GST_RTP_SSRC_DEMUX(parent), buf,
FALSE);

::: gst/rtpmanager/gstrtpssrcdemux.h
@@ +43,3 @@
   GRecMutex padlock;
   GSList *srcpads;
+  GSList *ssrc_buffer_list;

Don't put this in the struct, you can just pass it in every call somehow.

You could instead put it in the GstRtpSsrcDemuxPad struct or something like
that.

-- 
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