mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-23 10:11:08 +00:00
finish everything typefinding related (like seeking to correct offset) _before_ pushing the first buffer
Original commit message from CVS: finish everything typefinding related (like seeking to correct offset) _before_ pushing the first buffer
This commit is contained in:
parent
103c22dee3
commit
b9d7ea92ed
4 changed files with 24 additions and 20 deletions
|
@ -366,16 +366,17 @@ stop_typefinding (GstTypeFindElement *typefind)
|
|||
if (push_cached_buffers) {
|
||||
GstBuffer *buffer;
|
||||
guint size = gst_buffer_store_get_size (typefind->store, 0);
|
||||
if (size && (buffer = gst_buffer_store_get_buffer (typefind->store, 0, size))) {
|
||||
gst_pad_push (typefind->src, GST_DATA (buffer));
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
|
||||
GST_LOG_OBJECT (typefind, "seeking back to current position %u", size);
|
||||
if (!gst_pad_send_event (GST_PAD_PEER (typefind->sink),
|
||||
gst_event_new_seek (GST_SEEK_METHOD_SET | GST_FORMAT_BYTES, size))) {
|
||||
GST_WARNING_OBJECT (typefind, "could not seek to required position %u, hope for the best", size);
|
||||
}
|
||||
if (size && (buffer = gst_buffer_store_get_buffer (typefind->store, 0, size))) {
|
||||
gst_pad_push (typefind->src, GST_DATA (buffer));
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
}
|
||||
gst_buffer_store_clear (typefind->store);
|
||||
}
|
||||
|
|
|
@ -366,16 +366,17 @@ stop_typefinding (GstTypeFindElement *typefind)
|
|||
if (push_cached_buffers) {
|
||||
GstBuffer *buffer;
|
||||
guint size = gst_buffer_store_get_size (typefind->store, 0);
|
||||
if (size && (buffer = gst_buffer_store_get_buffer (typefind->store, 0, size))) {
|
||||
gst_pad_push (typefind->src, GST_DATA (buffer));
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
|
||||
GST_LOG_OBJECT (typefind, "seeking back to current position %u", size);
|
||||
if (!gst_pad_send_event (GST_PAD_PEER (typefind->sink),
|
||||
gst_event_new_seek (GST_SEEK_METHOD_SET | GST_FORMAT_BYTES, size))) {
|
||||
GST_WARNING_OBJECT (typefind, "could not seek to required position %u, hope for the best", size);
|
||||
}
|
||||
if (size && (buffer = gst_buffer_store_get_buffer (typefind->store, 0, size))) {
|
||||
gst_pad_push (typefind->src, GST_DATA (buffer));
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
}
|
||||
gst_buffer_store_clear (typefind->store);
|
||||
}
|
||||
|
|
|
@ -366,16 +366,17 @@ stop_typefinding (GstTypeFindElement *typefind)
|
|||
if (push_cached_buffers) {
|
||||
GstBuffer *buffer;
|
||||
guint size = gst_buffer_store_get_size (typefind->store, 0);
|
||||
if (size && (buffer = gst_buffer_store_get_buffer (typefind->store, 0, size))) {
|
||||
gst_pad_push (typefind->src, GST_DATA (buffer));
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
|
||||
GST_LOG_OBJECT (typefind, "seeking back to current position %u", size);
|
||||
if (!gst_pad_send_event (GST_PAD_PEER (typefind->sink),
|
||||
gst_event_new_seek (GST_SEEK_METHOD_SET | GST_FORMAT_BYTES, size))) {
|
||||
GST_WARNING_OBJECT (typefind, "could not seek to required position %u, hope for the best", size);
|
||||
}
|
||||
if (size && (buffer = gst_buffer_store_get_buffer (typefind->store, 0, size))) {
|
||||
gst_pad_push (typefind->src, GST_DATA (buffer));
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
}
|
||||
gst_buffer_store_clear (typefind->store);
|
||||
}
|
||||
|
|
|
@ -366,16 +366,17 @@ stop_typefinding (GstTypeFindElement *typefind)
|
|||
if (push_cached_buffers) {
|
||||
GstBuffer *buffer;
|
||||
guint size = gst_buffer_store_get_size (typefind->store, 0);
|
||||
if (size && (buffer = gst_buffer_store_get_buffer (typefind->store, 0, size))) {
|
||||
gst_pad_push (typefind->src, GST_DATA (buffer));
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
|
||||
GST_LOG_OBJECT (typefind, "seeking back to current position %u", size);
|
||||
if (!gst_pad_send_event (GST_PAD_PEER (typefind->sink),
|
||||
gst_event_new_seek (GST_SEEK_METHOD_SET | GST_FORMAT_BYTES, size))) {
|
||||
GST_WARNING_OBJECT (typefind, "could not seek to required position %u, hope for the best", size);
|
||||
}
|
||||
if (size && (buffer = gst_buffer_store_get_buffer (typefind->store, 0, size))) {
|
||||
gst_pad_push (typefind->src, GST_DATA (buffer));
|
||||
} else {
|
||||
size = 0;
|
||||
}
|
||||
}
|
||||
gst_buffer_store_clear (typefind->store);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue