gst_date_time_unref (datetime);
}
- } else if (tag_type == GST_TYPE_DATE) {
+ } else if (tag_type == G_TYPE_DATE) {
GDate *date;
gint d, m, y;
* 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;
+ GstMapInfo info;
+ gchar *xps, *xp1, *xp2, *xpe, *ns, *ne;
+ gsize len, max_ft_len;
gboolean in_tag;
gchar *part, *pp;
guint i;
XmpTag *context_tag = NULL;
GstXmpNamespaceMap ns_map[] = {
- {"dc", NULL},
- {"exif", NULL},
- {"tiff", NULL},
- {"xap", NULL},
- {"photoshop", NULL},
- {"Iptc4xmpCore", NULL},
- {"Iptc4xmpExt", NULL},
+ {"dc", NULL}
+ ,
+ {"exif", NULL}
+ ,
+ {"tiff", NULL}
+ ,
+ {"xap", NULL}
+ ,
+ {"photoshop", NULL}
+ ,
+ {"Iptc4xmpCore", NULL}
+ ,
+ {"Iptc4xmpExt", NULL}
+ ,
{NULL, NULL}
};
xmp_tags_initialize ();
g_return_val_if_fail (GST_IS_BUFFER (buffer), NULL);
- g_return_val_if_fail (GST_BUFFER_SIZE (buffer) > 0, NULL);
GST_LOG ("Starting xmp parsing");
- xps = (const gchar *) GST_BUFFER_DATA (buffer);
- len = GST_BUFFER_SIZE (buffer);
+ gst_buffer_map (buffer, &info, GST_MAP_READ);
+ xps = (gchar *) info.data;
+ len = info.size;
+ g_return_val_if_fail (len > 0, NULL);
+
xpe = &xps[len + 1];
/* check header and footer */
/* no tag can be longer that the whole buffer */
part = g_malloc (xp2 - xp1);
- list = gst_tag_list_new ();
+ list = gst_tag_list_new_empty ();
/* parse data into a list of nodes */
/* data is between xp1..xp2 */
}
g_free (part);
+ gst_buffer_unmap (buffer, &info);
+
return list;
/* Errors */
break;
}
/* put non-switchable types here */
- if (G_VALUE_TYPE (value) == GST_TYPE_DATE) {
- const GDate *date = gst_value_get_date (value);
+ if (G_VALUE_TYPE (value) == G_TYPE_DATE) {
+ const GDate *date = g_value_get_boxed (value);
return g_strdup_printf ("%04d-%02d-%02d",
(gint) g_date_get_year (date), (gint) g_date_get_month (date),
XmpSerializationData serialization_data;
GString *data;
guint i;
+ gsize bsize;
+ gpointer bdata;
serialization_data.data = g_string_sized_new (4096);
serialization_data.schemas = schemas;
g_string_append_printf (data, "<?xpacket end=\"%c\"?>",
(read_only ? 'r' : 'w'));
+ bsize = data->len;
+ bdata = g_string_free (data, FALSE);
+
buffer = gst_buffer_new ();
- GST_BUFFER_SIZE (buffer) = data->len;
- GST_BUFFER_DATA (buffer) = (guint8 *) g_string_free (data, FALSE);
- GST_BUFFER_MALLOCDATA (buffer) = GST_BUFFER_DATA (buffer);
+ gst_buffer_take_memory (buffer, -1,
+ gst_memory_new_wrapped (0, bdata, bsize, 0, bsize, bdata, g_free));
return buffer;
}