mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-03-29 20:35:40 +00:00
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:
parent
625722ecdc
commit
b2db2cd1c8
3 changed files with 20 additions and 0 deletions
|
@ -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),
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue