ext/ogg/gstoggdemux.c: Segment done must include stream time.
authorWim Taymans <wim.taymans@gmail.com>
Wed, 16 Nov 2005 19:32:50 +0000 (19:32 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 16 Nov 2005 19:32:50 +0000 (19:32 +0000)
Original commit message from CVS:
* ext/ogg/gstoggdemux.c: (gst_ogg_demux_configure_segment),
(gst_ogg_demux_perform_seek):
Segment done must include stream time.

* ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init),
(gst_ogg_mux_clear), (gst_ogg_mux_init), (gst_ogg_mux_finalize),
(gst_ogg_mux_change_state):
Fix ogg muxer again.

ChangeLog
ext/ogg/gstoggdemux.c
ext/ogg/gstoggmux.c

index 83fc425..2ee32e9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,16 @@
 2005-11-16  Wim Taymans  <wim@fluendo.com>
 
+       * ext/ogg/gstoggdemux.c: (gst_ogg_demux_configure_segment),
+       (gst_ogg_demux_perform_seek):
+       Segment done must include stream time.
+
+       * ext/ogg/gstoggmux.c: (gst_ogg_mux_class_init),
+       (gst_ogg_mux_clear), (gst_ogg_mux_init), (gst_ogg_mux_finalize),
+       (gst_ogg_mux_change_state):
+       Fix ogg muxer again.
+
+2005-11-16  Wim Taymans  <wim@fluendo.com>
+
        * ext/ogg/gstogmparse.c: (gst_ogm_audio_parse_init):
        Fix compile again.
 
index be92b6c..9cbf503 100644 (file)
@@ -1777,7 +1777,7 @@ gst_ogg_demux_perform_seek (GstOggDemux * ogg)
     if (ogg->segment_flags & GST_SEEK_FLAG_SEGMENT) {
       gst_element_post_message (GST_ELEMENT (ogg),
           gst_message_new_segment_start (GST_OBJECT (ogg), GST_FORMAT_TIME,
-              ogg->segment_start));
+              start));
     }
     /* restart our task since it might have been stopped when we did the 
      * flush. */
index 79e14a7..35f7f6f 100644 (file)
@@ -163,6 +163,7 @@ static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink_%d",
 static void gst_ogg_mux_base_init (gpointer g_class);
 static void gst_ogg_mux_class_init (GstOggMuxClass * klass);
 static void gst_ogg_mux_init (GstOggMux * ogg_mux);
+static void gst_ogg_mux_finalize (GObject * object);
 
 static GstFlowReturn
 gst_ogg_mux_collected (GstCollectPads * pads, GstOggMux * ogg_mux);
@@ -229,6 +230,7 @@ gst_ogg_mux_class_init (GstOggMuxClass * klass)
 
   parent_class = g_type_class_ref (GST_TYPE_ELEMENT);
 
+  gobject_class->finalize = gst_ogg_mux_finalize;
   gobject_class->get_property = gst_ogg_mux_get_property;
   gobject_class->set_property = gst_ogg_mux_set_property;
 
@@ -269,21 +271,6 @@ gst_ogg_mux_clear (GstOggMux * ogg_mux)
   ogg_mux->max_delay = DEFAULT_MAX_DELAY;
   ogg_mux->max_page_delay = DEFAULT_MAX_PAGE_DELAY;
   ogg_mux->delta_pad = NULL;
-
-  if (ogg_mux->collect) {
-    gst_object_unref (ogg_mux->collect);
-    ogg_mux->collect = NULL;
-  }
-}
-
-static void
-gst_ogg_mux_reset (GstOggMux * ogg_mux)
-{
-  gst_ogg_mux_clear (ogg_mux);
-
-  ogg_mux->collect = gst_collectpads_new ();
-  gst_collectpads_set_function (ogg_mux->collect,
-      (GstCollectPadsFunction) gst_ogg_mux_collected, ogg_mux);
 }
 
 static void
@@ -302,11 +289,28 @@ gst_ogg_mux_init (GstOggMux * ogg_mux)
   /* seed random number generator for creation of serial numbers */
   srand (time (NULL));
 
-  ogg_mux->collect = NULL;
+  ogg_mux->collect = gst_collectpads_new ();
+  gst_collectpads_set_function (ogg_mux->collect,
+      (GstCollectPadsFunction) gst_ogg_mux_collected, ogg_mux);
 
   gst_ogg_mux_clear (ogg_mux);
 }
 
+static void
+gst_ogg_mux_finalize (GObject * object)
+{
+  GstOggMux *ogg_mux;
+
+  ogg_mux = GST_OGG_MUX (object);
+
+  if (ogg_mux->collect) {
+    gst_object_unref (ogg_mux->collect);
+    ogg_mux->collect = NULL;
+  }
+
+  G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
 static GstPadLinkReturn
 gst_ogg_mux_sinkconnect (GstPad * pad, GstPad * peer)
 {
@@ -1382,13 +1386,13 @@ gst_ogg_mux_change_state (GstElement * element, GstStateChange transition)
 
   switch (transition) {
     case GST_STATE_CHANGE_NULL_TO_READY:
-      gst_ogg_mux_reset (ogg_mux);
       break;
     case GST_STATE_CHANGE_READY_TO_PAUSED:
       ogg_mux->next_ts = 0;
       ogg_mux->offset = 0;
       ogg_mux->pulling = NULL;
       gst_collectpads_start (ogg_mux->collect);
+      gst_ogg_mux_clear (ogg_mux);
       break;
     case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
       break;
@@ -1403,10 +1407,9 @@ gst_ogg_mux_change_state (GstElement * element, GstStateChange transition)
       break;
     case GST_STATE_CHANGE_PAUSED_TO_READY:
       gst_collectpads_stop (ogg_mux->collect);
-      gst_ogg_mux_clear_collectpads (ogg_mux->collect);
       break;
     case GST_STATE_CHANGE_READY_TO_NULL:
-      gst_ogg_mux_clear (ogg_mux);
+      gst_ogg_mux_clear_collectpads (ogg_mux->collect);
       break;
     default:
       break;