summaryrefslogtreecommitdiffstats
path: root/ext/metadata/metadataparseutil.c
diff options
context:
space:
mode:
authorEdgard Lima <edgard.lima@indt.org.br>2007-11-02 16:50:42 +0000
committerEdgard Lima <edgard.lima@indt.org.br>2007-11-02 16:50:42 +0000
commitf17824d0d1c0c30815cbcf3bcae7997773e367c5 (patch)
tree39e0b76ca41fae844d906e42bdab3034a3129215 /ext/metadata/metadataparseutil.c
parent05e1fdf681397cc6b3f5ed115cf4e3519272f2b2 (diff)
downloadgst-plugins-bad-f17824d0d1c0c30815cbcf3bcae7997773e367c5.tar.gz
gst-plugins-bad-f17824d0d1c0c30815cbcf3bcae7997773e367c5.tar.bz2
gst-plugins-bad-f17824d0d1c0c30815cbcf3bcae7997773e367c5.zip
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.
Diffstat (limited to 'ext/metadata/metadataparseutil.c')
-rw-r--r--ext/metadata/metadataparseutil.c58
1 files changed, 56 insertions, 2 deletions
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;
+}