Add GST_EVENT_LIVE_FLUSH.
authorAlessandro Decina <alessandro.decina@collabora.co.uk>
Fri, 6 May 2011 06:40:26 +0000 (08:40 +0200)
committerNikhil Devshatwar <a0132237@ti.com>
Wed, 15 May 2013 11:20:50 +0000 (16:50 +0530)
This is needed by live sources to unblock buffer_alloc going from PLAYING to
PAUSED.

Currently basesrc assumes that ::create can always be unblocked. When going from
PLAYING to PAUSED it can happen that a live source is blocked in a buffer_alloc
call and so we need a way to unblock it.

gst/gstevent.c
gst/gstevent.h

index 50218d23a5cb6afe75dee8e1a17c44c38141dab4..41f356d0aa261d516ada8cb0c0ec13be591f8d7f 100644 (file)
@@ -111,6 +111,7 @@ static GstEventQuarks event_quarks[] = {
   {GST_EVENT_UNKNOWN, "unknown", 0},
   {GST_EVENT_FLUSH_START, "flush-start", 0},
   {GST_EVENT_FLUSH_STOP, "flush-stop", 0},
+  {GST_EVENT_LIVE_FLUSH, "live-flush", 0},
   {GST_EVENT_EOS, "eos", 0},
   {GST_EVENT_NEWSEGMENT, "newsegment", 0},
   {GST_EVENT_TAG, "tag", 0},
@@ -462,6 +463,13 @@ gst_event_new_flush_stop (void)
   return gst_event_new (GST_EVENT_FLUSH_STOP);
 }
 
+
+GstEvent *
+gst_event_new_live_flush (void)
+{
+  return gst_event_new (GST_EVENT_LIVE_FLUSH);
+}
+
 /**
  * gst_event_new_eos:
  *
index 744cfb2548cb25e9908e28089bfc400dec091736..bbe28b924724a90478a3617d816535017a50cb82 100644 (file)
@@ -132,6 +132,7 @@ typedef enum {
   /* bidirectional events */
   GST_EVENT_FLUSH_START           = GST_EVENT_MAKE_TYPE (1, FLAG(BOTH)),
   GST_EVENT_FLUSH_STOP            = GST_EVENT_MAKE_TYPE (2, FLAG(BOTH) | FLAG(SERIALIZED)),
+  GST_EVENT_LIVE_FLUSH            = GST_EVENT_MAKE_TYPE (3, FLAG(BOTH)),
   /* downstream serialized events */
   GST_EVENT_EOS                   = GST_EVENT_MAKE_TYPE (5, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
   GST_EVENT_NEWSEGMENT            = GST_EVENT_MAKE_TYPE (6, FLAG(DOWNSTREAM) | FLAG(SERIALIZED)),
@@ -460,6 +461,7 @@ void            gst_event_set_seqnum            (GstEvent *event, guint32 seqnum
 /* flush events */
 GstEvent *      gst_event_new_flush_start       (void) G_GNUC_MALLOC;
 GstEvent *      gst_event_new_flush_stop        (void) G_GNUC_MALLOC;
+GstEvent *      gst_event_new_live_flush        (void) G_GNUC_MALLOC;
 
 /* EOS event */
 GstEvent *      gst_event_new_eos               (void) G_GNUC_MALLOC;