rpicamsrc: Improve timeout error
authorJan Schmidt <thaytan@noraisin.net>
Mon, 16 Jul 2018 09:30:26 +0000 (19:30 +1000)
committerTim-Philipp Müller <tim@centricular.com>
Fri, 10 Jul 2020 15:46:31 +0000 (16:46 +0100)
Propagate timeout errors so they're not reported
generically

sys/rpicamsrc/RaspiCapture.c
sys/rpicamsrc/RaspiCapture.h
sys/rpicamsrc/gstrpicamsrc.c

index a7d72a0..96c4692 100644 (file)
@@ -942,7 +942,7 @@ raspi_capture_fill_buffer(RASPIVID_STATE *state, GstBuffer **bufp,
   buffer = mmal_queue_timedwait(state->encoded_buffer_q, 500);
 
   if (G_UNLIKELY(buffer == NULL)) {
-      return GST_FLOW_ERROR;
+      return GST_FLOW_ERROR_TIMEOUT;
   }
 
   if (G_LIKELY (config->useSTC && clock)) {
index 571d3b7..71e79b2 100644 (file)
@@ -66,6 +66,8 @@ GST_DEBUG_CATEGORY_EXTERN (gst_rpi_cam_src_debug);
 #undef vcos_log_warn
 #define vcos_log_warn GST_WARNING
 
+#define GST_FLOW_ERROR_TIMEOUT GST_FLOW_CUSTOM_ERROR
+
 G_BEGIN_DECLS
 
 typedef enum
index da84460..c2de761 100644 (file)
@@ -1439,6 +1439,13 @@ gst_rpi_cam_src_create (GstPushSrc * parent, GstBuffer ** buf)
       GST_BUFFER_DURATION (*buf) = src->duration;
   }
 
+  if (ret == GST_FLOW_ERROR_TIMEOUT) {
+    GST_ELEMENT_ERROR (src, STREAM, FAILED,
+        ("Camera capture timed out."),
+        ("Waiting for a buffer from the camera took too long."));
+    ret = GST_FLOW_ERROR;
+  }
+
   if (clock)
     gst_object_unref (clock);
   return ret;