]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/gstreamer0-10.git/blobdiff - gst/elements/gstfakesrc.c
Merged from INCSCHED on 200505251!!!
[glsdk/gstreamer0-10.git] / gst / elements / gstfakesrc.c
index 5fa6af21715c75aaa0625312b3c5542bf8d236d1..97570bbb8f21d8d4a5573654712d78756e217137 100644 (file)
@@ -49,6 +49,7 @@ enum {
   ARG_OUTPUT,
   ARG_PATTERN,
   ARG_NUM_BUFFERS,
+  ARG_EOS,
   ARG_SILENT
 };
 
@@ -125,6 +126,8 @@ gst_fakesrc_class_init (GstFakeSrcClass *klass)
                            GTK_ARG_READWRITE, ARG_PATTERN);
   gtk_object_add_arg_type ("GstFakeSrc::num_buffers", GTK_TYPE_INT,
                            GTK_ARG_READWRITE, ARG_NUM_BUFFERS);
+  gtk_object_add_arg_type ("GstFakeSrc::eos", GTK_TYPE_BOOL,
+                           GTK_ARG_READWRITE, ARG_EOS);
   gtk_object_add_arg_type ("GstFakeSrc::silent", GTK_TYPE_BOOL,
                            GTK_ARG_READWRITE, ARG_SILENT);
 
@@ -222,6 +225,10 @@ gst_fakesrc_set_arg (GtkObject *object, GtkArg *arg, guint id)
     case ARG_NUM_BUFFERS:
       src->num_buffers = GTK_VALUE_INT (*arg);
       break;
+    case ARG_EOS:
+      src->eos = GTK_VALUE_BOOL (*arg);
+GST_INFO (0, "will EOS on next buffer");
+      break;
     case ARG_SILENT:
       src->silent = GTK_VALUE_BOOL (*arg);
       break;
@@ -256,6 +263,8 @@ gst_fakesrc_get_arg (GtkObject *object, GtkArg *arg, guint id)
     case ARG_NUM_BUFFERS:
       GTK_VALUE_INT (*arg) = src->num_buffers;
       break;
+    case ARG_EOS:
+      GTK_VALUE_BOOL (*arg) = src->eos;
     case ARG_SILENT:
       GTK_VALUE_BOOL (*arg) = src->silent;
       break;
@@ -295,6 +304,12 @@ gst_fakesrc_get(GstPad *pad)
       src->num_buffers--;
   }
 
+  if (src->eos) {
+    GST_INFO (0, "fakesrc is setting eos on pad");
+    gst_pad_set_eos (pad);
+    return NULL;
+  }
+
   if (!src->silent)
     g_print("fakesrc: ******* (%s:%s)> \n",GST_DEBUG_PAD_NAME(pad));
   buf = gst_buffer_new();
@@ -336,7 +351,13 @@ gst_fakesrc_loop(GstElement *element)
       }
       else {
       if (src->num_buffers > 0)
-        src->num_buffers--;
+         src->num_buffers--;
+      }
+
+      if (src->eos) {
+        GST_INFO (0, "fakesrc is setting eos on pad");
+        gst_pad_set_eos (pad);
+        return;
       }
 
       buf = gst_buffer_new();