Merge branch 'master' into 0.11
[platform/upstream/gstreamer.git] / gst-libs / gst / tag / gstxmptag.c
index ca05895..7b0da72 100644 (file)
@@ -1200,11 +1200,11 @@ read_one_tag (GstTagList * list, const gchar * tag, XmpTag * xmptag,
  * Since: 0.10.29
  */
 GstTagList *
-gst_tag_list_from_xmp_buffer (const GstBuffer * buffer)
+gst_tag_list_from_xmp_buffer (GstBuffer * buffer)
 {
   GstTagList *list = NULL;
-  const gchar *xps, *xp1, *xp2, *xpe, *ns, *ne;
-  guint len, max_ft_len;
+  gchar *xps, *xp1, *xp2, *xpe, *ns, *ne;
+  gsize len, max_ft_len;
   gboolean in_tag;
   gchar *part, *pp;
   guint i;
@@ -1225,10 +1225,10 @@ gst_tag_list_from_xmp_buffer (const GstBuffer * buffer)
   xmp_tags_initialize ();
 
   g_return_val_if_fail (GST_IS_BUFFER (buffer), NULL);
-  g_return_val_if_fail (GST_BUFFER_SIZE (buffer) > 0, NULL);
 
-  xps = (const gchar *) GST_BUFFER_DATA (buffer);
-  len = GST_BUFFER_SIZE (buffer);
+  xps = gst_buffer_map (buffer, &len, NULL, GST_MAP_READ);
+  g_return_val_if_fail (len > 0, NULL);
+
   xpe = &xps[len + 1];
 
   /* check header and footer */
@@ -1433,6 +1433,8 @@ gst_tag_list_from_xmp_buffer (const GstBuffer * buffer)
   }
   g_free (part);
 
+  gst_buffer_unmap (buffer, xps, len);
+
   return list;
 
   /* Errors */
@@ -1608,6 +1610,8 @@ gst_tag_list_to_xmp_buffer_full (const GstTagList * list, gboolean read_only,
   XmpSerializationData serialization_data;
   GString *data;
   guint i;
+  gsize bsize;
+  gpointer bdata;
 
   serialization_data.data = g_string_sized_new (4096);
   serialization_data.schemas = schemas;
@@ -1655,10 +1659,12 @@ gst_tag_list_to_xmp_buffer_full (const GstTagList * list, gboolean read_only,
   g_string_append_printf (data, "<?xpacket end=\"%c\"?>\n",
       (read_only ? 'r' : 'w'));
 
+  bsize = data->len + 1;
+  bdata = g_string_free (data, FALSE);
+
   buffer = gst_buffer_new ();
-  GST_BUFFER_SIZE (buffer) = data->len + 1;
-  GST_BUFFER_DATA (buffer) = (guint8 *) g_string_free (data, FALSE);
-  GST_BUFFER_MALLOCDATA (buffer) = GST_BUFFER_DATA (buffer);
+  gst_buffer_take_memory (buffer,
+      gst_memory_new_wrapped (0, bdata, g_free, bsize, 0, bsize));
 
   return buffer;
 }