From f17824d0d1c0c30815cbcf3bcae7997773e367c5 Mon Sep 17 00:00:00 2001 From: Edgard Lima Date: Fri, 2 Nov 2007 16:50:42 +0000 Subject: Added support for PNG/XMP. Indentation. And fixed pull mode to parse the file. Original commit message from CVS: Added support for PNG/XMP. Indentation. And fixed pull mode to parse the file. --- ext/metadata/metadataparseutil.c | 58 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 56 insertions(+), 2 deletions(-) (limited to 'ext/metadata/metadataparseutil.c') diff --git a/ext/metadata/metadataparseutil.c b/ext/metadata/metadataparseutil.c index dfab579f..ff1b8826 100644 --- a/ext/metadata/metadataparseutil.c +++ b/ext/metadata/metadataparseutil.c @@ -44,8 +44,8 @@ #include "metadataparseutil.h" void -metadataparse_tag_list_add_chunk (GstTagList * taglist, GstTagMergeMode mode, - const gchar * name, GstAdapter * adapter) +metadataparse_util_tag_list_add_chunk (GstTagList * taglist, + GstTagMergeMode mode, const gchar * name, GstAdapter * adapter) { GstBuffer *buf; guint size; @@ -62,3 +62,57 @@ metadataparse_tag_list_add_chunk (GstTagList * taglist, GstTagMergeMode mode, } } + +int +metadataparse_util_hold_chunk (guint32 * read, guint8 ** buf, + guint32 * bufsize, guint8 ** next_start, + guint32 * next_size, GstAdapter ** adapter) +{ + int ret; + + if (*read > *bufsize) { + *next_start = *buf; + *next_size = *read; + ret = 1; + } else { + GstBuffer *gst_buf; + + if (NULL == *adapter) { + *adapter = gst_adapter_new (); + } + gst_buf = gst_buffer_new_and_alloc (*read); + memcpy (GST_BUFFER_DATA (gst_buf), *buf, *read); + gst_adapter_push (*adapter, gst_buf); + + *next_start = *buf + *read; + *buf += *read; + *bufsize -= *read; + *read = 0; + ret = 0; + } + + return ret; +} + +int +metadataparse_util_jump_chunk (guint32 * read, guint8 ** buf, + guint32 * bufsize, guint8 ** next_start, guint32 * next_size) +{ + int ret; + + if (*read > *bufsize) { + *read -= *bufsize; + *next_size = 2; + *next_start = *buf + *bufsize + *read; + *read = 0; + *bufsize = 0; + ret = 1; + } else { + *next_start = *buf + *read; + *buf += *read; + *bufsize -= *read; + *read = 0; + ret = 0; + } + return ret; +} -- cgit v1.2.1