From 0058a7b30cc203cef07e1e4dea3e4eb8fa0f1ce6 Mon Sep 17 00:00:00 2001 From: Edgard Lima Date: Mon, 17 Dec 2007 12:37:36 +0000 Subject: Added "parse-only" property to metadatademux. Original commit message from CVS: Added "parse-only" property to metadatademux. --- ext/metadata/metadataparsejpeg.c | 76 ++++++++++++++++++++++++++-------------- 1 file changed, 49 insertions(+), 27 deletions(-) (limited to 'ext/metadata/metadataparsejpeg.c') diff --git a/ext/metadata/metadataparsejpeg.c b/ext/metadata/metadataparsejpeg.c index 54d9b26d..f2482c72 100644 --- a/ext/metadata/metadataparsejpeg.c +++ b/ext/metadata/metadataparsejpeg.c @@ -83,7 +83,8 @@ metadataparse_jpeg_lazy_update (JpegParseData * jpeg_data) void metadataparse_jpeg_init (JpegParseData * jpeg_data, GstAdapter ** exif_adpt, GstAdapter ** iptc_adpt, GstAdapter ** xmp_adpt, - MetadataChunkArray * strip_chunks, MetadataChunkArray * inject_chunks) + MetadataChunkArray * strip_chunks, MetadataChunkArray * inject_chunks, + gboolean parse_only) { jpeg_data->state = JPEG_PARSE_NULL; jpeg_data->exif_adapter = exif_adpt; @@ -95,6 +96,8 @@ metadataparse_jpeg_init (JpegParseData * jpeg_data, GstAdapter ** exif_adpt, jpeg_data->strip_chunks = strip_chunks; jpeg_data->inject_chunks = inject_chunks; + jpeg_data->parse_only = parse_only; + } void @@ -258,12 +261,17 @@ metadataparse_jpeg_reading (JpegParseData * jpeg_data, guint8 ** buf, if (0 == memcmp (ExifHeader, *buf, 6)) { MetadataChunk chunk; - memset (&chunk, 0x00, sizeof (MetadataChunk)); - chunk.offset_orig = (*buf - step_buf) + offset - 4; /* maker + size */ - chunk.size = chunk_size + 2; /* chunk size plus app marker */ - chunk.type = MD_CHUNK_EXIF; + if (!jpeg_data->parse_only) { + + memset (&chunk, 0x00, sizeof (MetadataChunk)); + chunk.offset_orig = (*buf - step_buf) + offset - 4; /* maker + size */ + chunk.size = chunk_size + 2; /* chunk size plus app marker */ + chunk.type = MD_CHUNK_EXIF; - metadata_chunk_array_append_sorted (jpeg_data->strip_chunks, &chunk); + metadata_chunk_array_append_sorted (jpeg_data->strip_chunks, + &chunk); + + } if (!jpeg_data->jfif_found) { /* only inject if no JFIF has been found */ @@ -275,16 +283,19 @@ metadataparse_jpeg_reading (JpegParseData * jpeg_data, guint8 ** buf, 0x00, 0x00 }; + if (!jpeg_data->parse_only) { - memset (&chunk, 0x00, sizeof (MetadataChunk)); - chunk.offset_orig = 2; - chunk.size = 18; - chunk.type = MD_CHUNK_UNKNOWN; - chunk.data = g_new (guint8, 18); - memcpy (chunk.data, segment, 18); + memset (&chunk, 0x00, sizeof (MetadataChunk)); + chunk.offset_orig = 2; + chunk.size = 18; + chunk.type = MD_CHUNK_UNKNOWN; + chunk.data = g_new (guint8, 18); + memcpy (chunk.data, segment, 18); - metadata_chunk_array_append_sorted (jpeg_data->inject_chunks, - &chunk); + metadata_chunk_array_append_sorted (jpeg_data->inject_chunks, + &chunk); + + } } @@ -304,15 +315,20 @@ metadataparse_jpeg_reading (JpegParseData * jpeg_data, guint8 ** buf, } if (0 == memcmp (XmpHeader, *buf, 29)) { - MetadataChunk chunk; - memset (&chunk, 0x00, sizeof (MetadataChunk)); - chunk.offset_orig = (*buf - step_buf) + offset - 4; /* maker + size */ - chunk.size = chunk_size + 2; /* chunk size plus app marker */ - chunk.type = MD_CHUNK_XMP; + if (!jpeg_data->parse_only) { - metadata_chunk_array_append_sorted (jpeg_data->strip_chunks, - &chunk); + MetadataChunk chunk; + + memset (&chunk, 0x00, sizeof (MetadataChunk)); + chunk.offset_orig = (*buf - step_buf) + offset - 4; /* maker + size */ + chunk.size = chunk_size + 2; /* chunk size plus app marker */ + chunk.type = MD_CHUNK_XMP; + + metadata_chunk_array_append_sorted (jpeg_data->strip_chunks, + &chunk); + + } /* if adapter has been provided, prepare to hold chunk */ if (jpeg_data->xmp_adapter) { @@ -339,14 +355,20 @@ metadataparse_jpeg_reading (JpegParseData * jpeg_data, guint8 ** buf, if (0 == memcmp (IptcHeader, *buf, 14)) { - MetadataChunk chunk; - memset (&chunk, 0x00, sizeof (MetadataChunk)); - chunk.offset_orig = (*buf - step_buf) + offset - 4; /* maker + size */ - chunk.size = chunk_size + 2; /* chunk size plus app marker */ - chunk.type = MD_CHUNK_IPTC; + if (!jpeg_data->parse_only) { + + MetadataChunk chunk; - metadata_chunk_array_append_sorted (jpeg_data->strip_chunks, &chunk); + memset (&chunk, 0x00, sizeof (MetadataChunk)); + chunk.offset_orig = (*buf - step_buf) + offset - 4; /* maker + size */ + chunk.size = chunk_size + 2; /* chunk size plus app marker */ + chunk.type = MD_CHUNK_IPTC; + + metadata_chunk_array_append_sorted (jpeg_data->strip_chunks, + &chunk); + + } /* if adapter has been provided, prepare to hold chunk */ if (jpeg_data->iptc_adapter) { -- cgit v1.2.1