aggregator: Add API to check if a pad has a new buffer

https://bugzilla.gnome.org/show_bug.cgi?id=795332
diff --git a/docs/libs/gstreamer-libs-sections.txt b/docs/libs/gstreamer-libs-sections.txt
index 66f77af..f5b22b3 100644
--- a/docs/libs/gstreamer-libs-sections.txt
+++ b/docs/libs/gstreamer-libs-sections.txt
@@ -245,6 +245,7 @@
 gst_aggregator_pad_peek_buffer
 gst_aggregator_pad_drop_buffer
 gst_aggregator_pad_is_eos
+gst_aggregator_pad_has_buffer
 <SUBSECTION Standard>
 GST_IS_AGGREGATOR_PAD
 GST_IS_AGGREGATOR_PAD_CLASS
diff --git a/libs/gst/base/gstaggregator.c b/libs/gst/base/gstaggregator.c
index 3051a17..b67f36d 100644
--- a/libs/gst/base/gstaggregator.c
+++ b/libs/gst/base/gstaggregator.c
@@ -2946,6 +2946,27 @@
 }
 
 /**
+ * gst_aggregator_pad_has_buffer:
+ * @pad: the pad to check the buffer on
+ *
+ * Returns: %TRUE if the pad has a buffer available as the next thing.
+ *
+ * Since: 1.16
+ */
+gboolean
+gst_aggregator_pad_has_buffer (GstAggregatorPad * pad)
+{
+  gboolean has_buffer;
+
+  PAD_LOCK (pad);
+  gst_aggregator_pad_clip_buffer_unlocked (pad);
+  has_buffer = (pad->priv->clipped_buffer != NULL);
+  PAD_UNLOCK (pad);
+
+  return has_buffer;
+}
+
+/**
  * gst_aggregator_pad_is_eos:
  * @pad: an aggregator pad
  *
diff --git a/libs/gst/base/gstaggregator.h b/libs/gst/base/gstaggregator.h
index 67d52dc..4c9c77d 100644
--- a/libs/gst/base/gstaggregator.h
+++ b/libs/gst/base/gstaggregator.h
@@ -112,6 +112,9 @@
 gboolean    gst_aggregator_pad_drop_buffer  (GstAggregatorPad *  pad);
 
 GST_BASE_API
+gboolean    gst_aggregator_pad_has_buffer   (GstAggregatorPad * pad);
+
+GST_BASE_API
 gboolean    gst_aggregator_pad_is_eos       (GstAggregatorPad *  pad);
 
 /*********************