decklinksrc: handle flow return properly and provide better message
authorblake tregre <blake@oblong.com>
Tue, 1 Nov 2011 01:56:23 +0000 (18:56 -0700)
committerDavid Schleef <ds@schleef.org>
Sat, 17 Mar 2012 21:24:51 +0000 (14:24 -0700)
* sys/decklink/gstdecklinksrc.cpp:

sys/decklink/gstdecklinksrc.cpp

index a6c5d89..37a306c 100644 (file)
@@ -1269,8 +1269,12 @@ gst_decklink_src_task (void *priv)
   gst_buffer_set_caps (buffer, decklinksrc->video_caps);
 
   ret = gst_pad_push (decklinksrc->videosrcpad, buffer);
-  if (ret != GST_FLOW_OK) {
-    GST_ELEMENT_ERROR (decklinksrc, CORE, NEGOTIATION, (NULL), (NULL));
+  if (! (ret == GST_FLOW_OK || ret == GST_FLOW_NOT_LINKED ||
+         ret == GST_FLOW_WRONG_STATE)) {
+    GST_ELEMENT_ERROR (decklinksrc, STREAM, FAILED,
+                       ("Internal data stream error."),
+                       ("stream stopped, reason %s",
+                        gst_flow_get_name (ret)));
   }
 
   if (gst_pad_is_linked (decklinksrc->audiosrcpad)) {
@@ -1299,8 +1303,12 @@ gst_decklink_src_task (void *priv)
     gst_buffer_set_caps (audio_buffer, decklinksrc->audio_caps);
 
     ret = gst_pad_push (decklinksrc->audiosrcpad, audio_buffer);
-    if (ret != GST_FLOW_OK) {
-      GST_ELEMENT_ERROR (decklinksrc, CORE, NEGOTIATION, (NULL), (NULL));
+    if (! (ret == GST_FLOW_OK || ret == GST_FLOW_NOT_LINKED ||
+           ret == GST_FLOW_WRONG_STATE)) {
+      GST_ELEMENT_ERROR (decklinksrc, STREAM, FAILED,
+                         ("Internal data stream error."),
+                         ("stream stopped, reason %s",
+                          gst_flow_get_name (ret)));
     }
   }
   audio_frame->Release ();