gst/matroska/matroska-mux.*: Remove internal taglist and fully use tagsetter interface.
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 6 Jan 2009 17:48:10 +0000 (17:48 +0000)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Tue, 6 Jan 2009 17:48:10 +0000 (17:48 +0000)
Original commit message from CVS:
* gst/matroska/matroska-mux.c: (gst_matroska_mux_reset),
(gst_matroska_mux_handle_sink_event), (gst_matroska_mux_finish):
* gst/matroska/matroska-mux.h:
Remove internal taglist and fully use tagsetter interface.

ChangeLog
gst/matroska/matroska-mux.c
gst/matroska/matroska-mux.h

index 2c97e71..dd60601 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,12 @@
 2009-01-06  Mark Nauwelaerts  <mark.nauwelaerts@collabora.co.uk>
 
+       * gst/matroska/matroska-mux.c: (gst_matroska_mux_reset),
+       (gst_matroska_mux_handle_sink_event), (gst_matroska_mux_finish):
+       * gst/matroska/matroska-mux.h:
+       Remove internal taglist and fully use tagsetter interface.
+
+2009-01-06  Mark Nauwelaerts  <mark.nauwelaerts@collabora.co.uk>
+
        * gst/avi/gstavimux.c: (gst_avi_mux_reset),
        (gst_avi_mux_riff_get_avi_header):
        * gst/avi/gstavimux.h:
index 3299d5f..e16b935 100644 (file)
@@ -463,10 +463,7 @@ gst_matroska_mux_reset (GstElement * element)
   mux->cluster_pos = 0;
 
   /* reset tags */
-  if (mux->tags) {
-    gst_tag_list_free (mux->tags);
-    mux->tags = NULL;
-  }
+  gst_tag_setter_reset_tags (GST_TAG_SETTER (mux));
 }
 
 /**
@@ -518,7 +515,9 @@ gst_matroska_mux_handle_sink_event (GstPad * pad, GstEvent * event)
 
   switch (GST_EVENT_TYPE (event)) {
     case GST_EVENT_TAG:
+      GST_DEBUG_OBJECT (mux, "received tag event");
       gst_event_parse_tag (event, &list);
+
       collect_pad = (GstMatroskaPad *) gst_pad_get_element_private (pad);
       g_assert (collect_pad);
       context = collect_pad->track;
@@ -528,12 +527,8 @@ gst_matroska_mux_handle_sink_event (GstPad * pad, GstEvent * event)
        * 639-2 according to matroska specs, but it will have to do for now */
       gst_tag_list_get_string (list, GST_TAG_LANGUAGE_CODE, &context->language);
 
-      if (mux->tags) {
-        gst_tag_list_insert (mux->tags, list, GST_TAG_MERGE_PREPEND);
-      } else {
-        mux->tags = gst_tag_list_copy (list);
-      }
-
+      gst_tag_setter_merge_tags (GST_TAG_SETTER (mux), list,
+          gst_tag_setter_get_tag_merge_mode (GST_TAG_SETTER (mux)));
       break;
     case GST_EVENT_NEWSEGMENT:
       /* We don't support NEWSEGMENT events */
@@ -1801,7 +1796,7 @@ gst_matroska_mux_finish (GstMatroskaMux * mux)
   guint64 pos;
   guint64 duration = 0;
   GSList *collected;
-  GstTagList *tags;
+  const GstTagList *tags;
 
   /* finish last cluster */
   if (mux->cluster) {
@@ -1838,10 +1833,9 @@ gst_matroska_mux_finish (GstMatroskaMux * mux)
   }
 
   /* tags */
-  tags = gst_tag_list_merge (gst_tag_setter_get_tag_list (GST_TAG_SETTER (mux)),
-      mux->tags, GST_TAG_MERGE_APPEND);
+  tags = gst_tag_setter_get_tag_list (GST_TAG_SETTER (mux));
 
-  if (tags != NULL) {
+  if (tags != NULL && !gst_tag_list_is_empty (tags)) {
     guint64 master_tags, master_tag;
 
     GST_DEBUG ("Writing tags");
@@ -1853,7 +1847,6 @@ gst_matroska_mux_finish (GstMatroskaMux * mux)
     gst_tag_list_foreach (tags, gst_matroska_mux_write_simple_tag, ebml);
     gst_ebml_write_master_finish (ebml, master_tag);
     gst_ebml_write_master_finish (ebml, master_tags);
-    gst_tag_list_free (tags);
   }
 
   /* update seekhead. We know that:
index 5782803..4ca0035 100644 (file)
@@ -131,8 +131,6 @@ typedef struct _GstMatroskaMux {
                  cluster_time,
                  cluster_pos;
 
-  /* tags */
-  GstTagList     *tags;
 } GstMatroskaMux;
 
 typedef struct _GstMatroskaMuxClass {