gst/elements/gsttypefindelement.c: Handle EOS events when doing the transition from...
authorWim Taymans <wim.taymans@gmail.com>
Fri, 8 Oct 2004 09:36:50 +0000 (09:36 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Fri, 8 Oct 2004 09:36:50 +0000 (09:36 +0000)
Original commit message from CVS:
* gst/elements/gsttypefindelement.c:
(gst_type_find_element_handle_event):
Handle EOS events when doing the transition from
typefind to data passing. This should fix the
infinite loops in short files.

ChangeLog
gst/elements/gsttypefindelement.c
plugins/elements/gsttypefindelement.c

index bddb5e3..25287ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2004-10-08  Wim Taymans  <wim at fluendo dot com>
+
+       * gst/elements/gsttypefindelement.c:
+       (gst_type_find_element_handle_event):
+       Handle EOS events when doing the transition from
+       typefind to data passing. This should fix the
+       infinite loops in short files.
+
 2004-10-07  Wim Taymans  <wim at fluendo dot com>
 
        * gst/gstthread.c: (gst_thread_change_state),
index 52fb1be..daf33ba 100644 (file)
@@ -434,6 +434,9 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event)
   TypeFindEntry *entry;
   GstTypeFindElement *typefind = GST_TYPE_FIND_ELEMENT (GST_PAD_PARENT (pad));
 
+  GST_DEBUG_OBJECT (typefind, "got event %d in mode %d", GST_EVENT_TYPE (event),
+      typefind->mode);
+
   switch (typefind->mode) {
     case MODE_TYPEFIND:
       switch (GST_EVENT_TYPE (event)) {
@@ -478,6 +481,9 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event)
             gst_event_unref (event);
           }
         }
+      } else if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
+        push_buffer_store (typefind);
+        gst_pad_event_default (pad, event);
       } else {
         gst_event_unref (event);
       }
index 52fb1be..daf33ba 100644 (file)
@@ -434,6 +434,9 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event)
   TypeFindEntry *entry;
   GstTypeFindElement *typefind = GST_TYPE_FIND_ELEMENT (GST_PAD_PARENT (pad));
 
+  GST_DEBUG_OBJECT (typefind, "got event %d in mode %d", GST_EVENT_TYPE (event),
+      typefind->mode);
+
   switch (typefind->mode) {
     case MODE_TYPEFIND:
       switch (GST_EVENT_TYPE (event)) {
@@ -478,6 +481,9 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event)
             gst_event_unref (event);
           }
         }
+      } else if (GST_EVENT_TYPE (event) == GST_EVENT_EOS) {
+        push_buffer_store (typefind);
+        gst_pad_event_default (pad, event);
       } else {
         gst_event_unref (event);
       }