mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-04-26 06:54:49 +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>
|
2004-10-07 Wim Taymans <wim at fluendo dot com>
|
||||||
|
|
||||||
* gst/gstthread.c: (gst_thread_change_state),
|
* gst/gstthread.c: (gst_thread_change_state),
|
||||||
|
|
|
@ -434,6 +434,9 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event)
|
||||||
TypeFindEntry *entry;
|
TypeFindEntry *entry;
|
||||||
GstTypeFindElement *typefind = GST_TYPE_FIND_ELEMENT (GST_PAD_PARENT (pad));
|
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) {
|
switch (typefind->mode) {
|
||||||
case MODE_TYPEFIND:
|
case MODE_TYPEFIND:
|
||||||
switch (GST_EVENT_TYPE (event)) {
|
switch (GST_EVENT_TYPE (event)) {
|
||||||
|
@ -478,6 +481,9 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event)
|
||||||
gst_event_unref (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 {
|
} else {
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
}
|
}
|
||||||
|
|
|
@ -434,6 +434,9 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event)
|
||||||
TypeFindEntry *entry;
|
TypeFindEntry *entry;
|
||||||
GstTypeFindElement *typefind = GST_TYPE_FIND_ELEMENT (GST_PAD_PARENT (pad));
|
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) {
|
switch (typefind->mode) {
|
||||||
case MODE_TYPEFIND:
|
case MODE_TYPEFIND:
|
||||||
switch (GST_EVENT_TYPE (event)) {
|
switch (GST_EVENT_TYPE (event)) {
|
||||||
|
@ -478,6 +481,9 @@ gst_type_find_element_handle_event (GstPad * pad, GstEvent * event)
|
||||||
gst_event_unref (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 {
|
} else {
|
||||||
gst_event_unref (event);
|
gst_event_unref (event);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue