aggregator: Simplify clip function
authorOlivier Crête <olivier.crete@collabora.com>
Wed, 6 Jul 2016 20:41:44 +0000 (16:41 -0400)
committerOlivier Crête <olivier.crete@collabora.com>
Sat, 20 May 2017 14:21:16 +0000 (16:21 +0200)
The return value was ignored anyway

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

gst-libs/gst/audio/gstaudioaggregator.c
gst-libs/gst/base/gstaggregator.c
gst-libs/gst/base/gstaggregator.h

index 8d66225..5621fb7 100644 (file)
@@ -183,8 +183,8 @@ static GstFlowReturn gst_audio_aggregator_flush (GstAggregator * agg);
 
 static GstBuffer *gst_audio_aggregator_create_output_buffer (GstAudioAggregator
     * aagg, guint num_frames);
-static GstFlowReturn gst_audio_aggregator_do_clip (GstAggregator * agg,
-    GstAggregatorPad * bpad, GstBuffer * buffer, GstBuffer ** outbuf);
+static GstBuffer *gst_audio_aggregator_do_clip (GstAggregator * agg,
+    GstAggregatorPad * bpad, GstBuffer * buffer);
 static GstFlowReturn gst_audio_aggregator_aggregate (GstAggregator * agg,
     gboolean timeout);
 static gboolean sync_pad_values (GstAudioAggregator * aagg,
@@ -741,22 +741,21 @@ gst_audio_aggregator_flush (GstAggregator * agg)
   return GST_FLOW_OK;
 }
 
-static GstFlowReturn
+static GstBuffer *
 gst_audio_aggregator_do_clip (GstAggregator * agg,
-    GstAggregatorPad * bpad, GstBuffer * buffer, GstBuffer ** out)
+    GstAggregatorPad * bpad, GstBuffer * buffer)
 {
   GstAudioAggregatorPad *pad = GST_AUDIO_AGGREGATOR_PAD (bpad);
   gint rate, bpf;
 
-
   rate = GST_AUDIO_INFO_RATE (&pad->info);
   bpf = GST_AUDIO_INFO_BPF (&pad->info);
 
   GST_OBJECT_LOCK (bpad);
-  *out = gst_audio_buffer_clip (buffer, &bpad->clip_segment, rate, bpf);
+  buffer = gst_audio_buffer_clip (buffer, &bpad->clip_segment, rate, bpf);
   GST_OBJECT_UNLOCK (bpad);
 
-  return GST_FLOW_OK;
+  return buffer;
 }
 
 /* Called with the object lock for both the element and pad held,
index 88b71bc..6661bdf 100644 (file)
@@ -2141,7 +2141,6 @@ static GstFlowReturn
 gst_aggregator_pad_chain_internal (GstAggregator * self,
     GstAggregatorPad * aggpad, GstBuffer * buffer, gboolean head)
 {
-  GstBuffer *actual_buf = buffer;
   GstAggregatorClass *aggclass = GST_AGGREGATOR_GET_CLASS (self);
   GstFlowReturn flow_return;
   GstClockTime buf_pts;
@@ -2161,15 +2160,15 @@ gst_aggregator_pad_chain_internal (GstAggregator * self,
   PAD_UNLOCK (aggpad);
 
   if (aggclass->clip && head) {
-    aggclass->clip (self, aggpad, buffer, &actual_buf);
+    buffer = aggclass->clip (self, aggpad, buffer);
   }
 
-  if (actual_buf == NULL) {
-    GST_LOG_OBJECT (actual_buf, "Buffer dropped by clip function");
+  if (buffer == NULL) {
+    GST_LOG_OBJECT (aggpad, "Buffer dropped by clip function");
     goto done;
   }
 
-  buf_pts = GST_BUFFER_PTS (actual_buf);
+  buf_pts = GST_BUFFER_PTS (buffer);
 
   aggpad->priv->first_buffer = FALSE;
 
@@ -2180,12 +2179,12 @@ gst_aggregator_pad_chain_internal (GstAggregator * self,
     if (gst_aggregator_pad_has_space (self, aggpad)
         && aggpad->priv->flow_return == GST_FLOW_OK) {
       if (head)
-        g_queue_push_head (&aggpad->priv->buffers, actual_buf);
+        g_queue_push_head (&aggpad->priv->buffers, buffer);
       else
-        g_queue_push_tail (&aggpad->priv->buffers, actual_buf);
-      apply_buffer (aggpad, actual_buf, head);
+        g_queue_push_tail (&aggpad->priv->buffers, buffer);
+      apply_buffer (aggpad, buffer, head);
       aggpad->priv->num_buffers++;
-      actual_buf = buffer = NULL;
+      buffer = NULL;
       SRC_BROADCAST (self);
       break;
     }
index 700373e..e6238b7 100644 (file)
@@ -155,9 +155,13 @@ struct _GstAggregator
  *                  stops have been received. Flush pad-specific data in
  *                  #GstAggregatorPad->flush.
  * @clip:           Optional.
- *                  Called when a buffer is received on a sink pad, the task
- *                  of clipping it and translating it to the current segment
- *                  falls on the subclass.
+ *                  Called when a buffer is received on a sink pad, the task of
+ *                  clipping it and translating it to the current segment falls
+ *                  on the subclass. The function should use the segment of data
+ *                  and the negotiated media type on the pad to perform
+ *                  clipping of inbuffer. This function takes ownership of
+ *                  buf and should output a buffer or return NULL in
+ *                  if the buffer should be dropped.
  * @sink_event:     Optional.
  *                  Called when an event is received on a sink pad, the subclass
  *                  should always chain up.
@@ -211,10 +215,9 @@ struct _GstAggregatorClass {
 
   GstFlowReturn     (*flush)          (GstAggregator    *  aggregator);
 
-  GstFlowReturn     (*clip)           (GstAggregator    *  aggregator,
+  GstBuffer *       (*clip)           (GstAggregator    *  aggregator,
                                        GstAggregatorPad *  aggregator_pad,
-                                       GstBuffer        *  buf,
-                                       GstBuffer        ** outbuf);
+                                       GstBuffer        *  buf);
 
   /* sinkpads virtual methods */
   gboolean          (*sink_event)     (GstAggregator    *  aggregator,