finish everything typefinding related (like seeking to correct offset) _before_ pushi...
authorBenjamin Otte <otte@gnome.org>
Sun, 7 Dec 2003 19:02:30 +0000 (19:02 +0000)
committerBenjamin Otte <otte@gnome.org>
Sun, 7 Dec 2003 19:02:30 +0000 (19:02 +0000)
Original commit message from CVS:
finish everything typefinding related (like seeking to correct offset) _before_ pushing the first buffer

gst/elements/gsttypefind.c
gst/elements/gsttypefindelement.c
plugins/elements/gsttypefind.c
plugins/elements/gsttypefindelement.c

index 7d38b0f..97f0626 100644 (file)
@@ -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);
 }
index 7d38b0f..97f0626 100644 (file)
@@ -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);
 }
index 7d38b0f..97f0626 100644 (file)
@@ -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);
 }
index 7d38b0f..97f0626 100644 (file)
@@ -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);
 }