qtmux: Accept non-paired uint tags
authorThiago Santos <thiago.sousa.santos@collabora.co.uk>
Mon, 21 Dec 2009 16:58:30 +0000 (13:58 -0300)
committerTim-Philipp Müller <tim.muller@collabora.co.uk>
Tue, 12 Apr 2011 19:32:14 +0000 (20:32 +0100)
Adds support for unpaired unsigned interger tags

gst/quicktime/gstqtmux.c

index c7dc08e..a602e63 100644 (file)
@@ -410,19 +410,28 @@ gst_qt_mux_add_mp4_tag (GstQTMux * qtmux, const GstTagList * list,
       atom_moov_add_uint_tag (qtmux->moov, fourcc, 21, (gint) value);
       break;
     }
-      /* paired unsigned integers */
     case G_TYPE_UINT:
     {
       guint value;
-      guint count;
-
-      if (!gst_tag_list_get_uint (list, tag, &value) ||
-          !gst_tag_list_get_uint (list, tag2, &count))
-        break;
-      GST_DEBUG_OBJECT (qtmux, "Adding tag %" GST_FOURCC_FORMAT " -> %u/%u",
-          GST_FOURCC_ARGS (fourcc), value, count);
-      atom_moov_add_uint_tag (qtmux->moov, fourcc, 0,
-          value << 16 | (count & 0xFFFF));
+      if (tag2) {
+        /* paired unsigned integers */
+        guint count;
+
+        if (!gst_tag_list_get_uint (list, tag, &value) ||
+            !gst_tag_list_get_uint (list, tag2, &count))
+          break;
+        GST_DEBUG_OBJECT (qtmux, "Adding tag %" GST_FOURCC_FORMAT " -> %u/%u",
+            GST_FOURCC_ARGS (fourcc), value, count);
+        atom_moov_add_uint_tag (qtmux->moov, fourcc, 0,
+            value << 16 | (count & 0xFFFF));
+      } else {
+        /* unpaired unsigned integers */
+        if (!gst_tag_list_get_uint (list, tag, &value))
+          break;
+        GST_DEBUG_OBJECT (qtmux, "Adding tag %" GST_FOURCC_FORMAT " -> %u",
+            GST_FOURCC_ARGS (fourcc), value);
+        atom_moov_add_uint_tag (qtmux->moov, fourcc, 1, value);
+      }
       break;
     }
     default: