gst/elements/gsttypefindelement.c: Handle EOS events when doing the transition from typefind to data passing. This sh...

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.
This commit is contained in:
Wim Taymans 2004-10-08 09:36:50 +00:00
parent 625722ecdc
commit b2db2cd1c8
3 changed files with 20 additions and 0 deletions

View file

@ -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),

View 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);
}

View 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);
}