summaryrefslogtreecommitdiffstats
path: root/ext/metadata/metadata.c
diff options
context:
space:
mode:
authorEdgard Lima <edgard.lima@indt.org.br>2007-12-21 09:45:56 +0000
committerEdgard Lima <edgard.lima@indt.org.br>2007-12-21 09:45:56 +0000
commit0f2ac9fe8b5c7f37e61f3eef95299098ce953f1e (patch)
tree80ecd68c91efd8f1e03825664f66f7bd0d0da63e /ext/metadata/metadata.c
parentbb4e1d10e99c206fdf0ca22a43ef20efa24236ef (diff)
downloadgst-plugins-bad-0f2ac9fe8b5c7f37e61f3eef95299098ce953f1e.tar.gz
gst-plugins-bad-0f2ac9fe8b5c7f37e61f3eef95299098ce953f1e.tar.bz2
gst-plugins-bad-0f2ac9fe8b5c7f37e61f3eef95299098ce953f1e.zip
Removed gstmetadatacommon.
Original commit message from CVS: Removed gstmetadatacommon.
Diffstat (limited to 'ext/metadata/metadata.c')
-rw-r--r--ext/metadata/metadata.c78
1 files changed, 46 insertions, 32 deletions
diff --git a/ext/metadata/metadata.c b/ext/metadata/metadata.c
index 8e0c06b2..fa5409ca 100644
--- a/ext/metadata/metadata.c
+++ b/ext/metadata/metadata.c
@@ -68,28 +68,36 @@ metadata_parse_none (MetaData * meta_data, const guint8 * buf,
* Look at 'MetaOptions' to see the available options.
*/
void
-metadata_init (MetaData * meta_data, const MetaOptions options)
+metadata_init (MetaData ** meta_data, const MetaOptions options)
{
- meta_data->state = STATE_NULL;
- meta_data->img_type = IMG_NONE;
- meta_data->options = options;
- meta_data->offset_orig = 0;
- meta_data->exif_adapter = NULL;
- meta_data->iptc_adapter = NULL;
- meta_data->xmp_adapter = NULL;
- if (meta_data->options & META_OPT_DEMUX) {
+ if (meta_data == NULL)
+ return;
+ if ((*meta_data))
+ metadata_dispose (meta_data);
+
+ (*meta_data) = g_new (MetaData, 1);
+
+ (*meta_data)->state = STATE_NULL;
+ (*meta_data)->img_type = IMG_NONE;
+ (*meta_data)->options = options;
+ (*meta_data)->offset_orig = 0;
+ (*meta_data)->exif_adapter = NULL;
+ (*meta_data)->iptc_adapter = NULL;
+ (*meta_data)->xmp_adapter = NULL;
+
+ if ((*meta_data)->options & META_OPT_DEMUX) {
/* when parsing we will probably strip only 3 chunk (exif, iptc and xmp)
so we use 4 just in case there is more than one chunk of them.
But this is just for convinience, 'cause the chunk_array incriases dinamically */
- metadata_chunk_array_init (&meta_data->strip_chunks, 4);
+ metadata_chunk_array_init (&(*meta_data)->strip_chunks, 4);
/* at most 1 chunk will be injected (JPEG JFIF) */
- metadata_chunk_array_init (&meta_data->inject_chunks, 1);
+ metadata_chunk_array_init (&(*meta_data)->inject_chunks, 1);
} else {
/* at most 1 chunk will be striped (JPEG JFIF) */
- metadata_chunk_array_init (&meta_data->strip_chunks, 1);
+ metadata_chunk_array_init (&(*meta_data)->strip_chunks, 1);
/* at most 3 chunk will be injected (EXIF, IPTC, XMP) */
- metadata_chunk_array_init (&meta_data->inject_chunks, 3);
+ metadata_chunk_array_init (&(*meta_data)->inject_chunks, 3);
}
}
@@ -99,42 +107,48 @@ metadata_init (MetaData * meta_data, const MetaOptions options)
* Call this function to free any resource allocated by 'metadata_init'
*/
void
-metadata_dispose (MetaData * meta_data)
+metadata_dispose (MetaData ** meta_data)
{
- switch (meta_data->img_type) {
+ if (meta_data == NULL || (*meta_data) == NULL)
+ return;
+
+ switch ((*meta_data)->img_type) {
case IMG_JPEG:
- if (G_LIKELY (meta_data->options & META_OPT_DEMUX))
- metadataparse_jpeg_dispose (&meta_data->format_data.jpeg_parse);
+ if (G_LIKELY ((*meta_data)->options & META_OPT_DEMUX))
+ metadataparse_jpeg_dispose (&(*meta_data)->format_data.jpeg_parse);
else
- metadatamux_jpeg_dispose (&meta_data->format_data.jpeg_mux);
+ metadatamux_jpeg_dispose (&(*meta_data)->format_data.jpeg_mux);
break;
case IMG_PNG:
- if (G_LIKELY (meta_data->options & META_OPT_DEMUX))
- metadataparse_png_dispose (&meta_data->format_data.png_parse);
+ if (G_LIKELY ((*meta_data)->options & META_OPT_DEMUX))
+ metadataparse_png_dispose (&(*meta_data)->format_data.png_parse);
else
- metadatamux_png_dispose (&meta_data->format_data.png_mux);
+ metadatamux_png_dispose (&(*meta_data)->format_data.png_mux);
break;
}
- metadata_chunk_array_free (&meta_data->strip_chunks);
- metadata_chunk_array_free (&meta_data->inject_chunks);
+ metadata_chunk_array_free (&(*meta_data)->strip_chunks);
+ metadata_chunk_array_free (&(*meta_data)->inject_chunks);
- if (meta_data->xmp_adapter) {
- gst_object_unref (meta_data->xmp_adapter);
- meta_data->xmp_adapter = NULL;
+ if ((*meta_data)->xmp_adapter) {
+ gst_object_unref ((*meta_data)->xmp_adapter);
+ (*meta_data)->xmp_adapter = NULL;
}
- if (meta_data->iptc_adapter) {
- gst_object_unref (meta_data->iptc_adapter);
- meta_data->iptc_adapter = NULL;
+ if ((*meta_data)->iptc_adapter) {
+ gst_object_unref ((*meta_data)->iptc_adapter);
+ (*meta_data)->iptc_adapter = NULL;
}
- if (meta_data->exif_adapter) {
- gst_object_unref (meta_data->exif_adapter);
- meta_data->exif_adapter = NULL;
+ if ((*meta_data)->exif_adapter) {
+ gst_object_unref ((*meta_data)->exif_adapter);
+ (*meta_data)->exif_adapter = NULL;
}
+ g_free (*meta_data);
+ *meta_data = NULL;
+
}
/*