appsrc: handle a sample not having caps or a buffer more gracefully
authorNicola Murino <nicola.murino@gmail.com>
Fri, 27 Mar 2015 19:16:28 +0000 (20:16 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 28 Mar 2015 12:00:38 +0000 (12:00 +0000)
https://bugzilla.gnome.org/show_bug.cgi?id=746908

gst-libs/gst/app/gstappsrc.c

index f3a56b3..c47cace 100644 (file)
@@ -1666,10 +1666,22 @@ gst_app_src_push_sample_internal (GstAppSrc * appsrc, GstSample * sample)
 {
   GstBuffer *buffer;
   GstCaps *caps;
+
   g_return_val_if_fail (GST_IS_SAMPLE (sample), GST_FLOW_ERROR);
+
   caps = gst_sample_get_caps (sample);
-  gst_app_src_set_caps (appsrc, caps);
+  if (caps != NULL) {
+    gst_app_src_set_caps (appsrc, caps);
+  } else {
+    GST_WARNING_OBJECT (appsrc, "received sample without caps");
+  }
+
   buffer = gst_sample_get_buffer (sample);
+  if (buffer == NULL) {
+    GST_WARNING_OBJECT (appsrc, "received sample without buffer");
+    return GST_FLOW_OK;
+  }
+
   return gst_app_src_push_buffer_full (appsrc, buffer, FALSE);
 }