diff options
author | Justin Maggard <jmaggard@users.sourceforge.net> | 2009-11-06 02:15:29 +0300 |
---|---|---|
committer | Justin Maggard <jmaggard@users.sourceforge.net> | 2009-11-06 02:15:29 +0300 |
commit | a85605e8f0b197869ad626cc1654f7c527aa4891 (patch) | |
tree | 793e4bf349598f185238b17d21cf936ac10baacc /metadata.c | |
parent | b07bfa37142a948309f43f4a18cefc0df3128bf5 (diff) |
* Fall back to rudimentary XMP parsing when getting image dates from EXIF fails.
Diffstat (limited to 'metadata.c')
-rw-r--r-- | metadata.c | 16 |
1 files changed, 8 insertions, 8 deletions
@@ -406,7 +406,6 @@ GetImageMetadata(const char * path, char * name) ExifData *ed; ExifEntry *e = NULL; ExifLoader *l; - ExifTag tag; struct jpeg_decompress_struct cinfo; struct jpeg_error_mgr jerr; FILE *infile; @@ -436,9 +435,8 @@ GetImageMetadata(const char * path, char * name) if( !ed ) goto no_exifdata; - tag = EXIF_TAG_DATE_TIME_ORIGINAL; - e = exif_content_get_entry (ed->ifd[EXIF_IFD_EXIF], tag); - if( e || (e = exif_content_get_entry(ed->ifd[EXIF_IFD_0], EXIF_TAG_DATE_TIME)) ) { + e = exif_content_get_entry (ed->ifd[EXIF_IFD_EXIF], EXIF_TAG_DATE_TIME_ORIGINAL); + if( e || (e = exif_content_get_entry(ed->ifd[EXIF_IFD_EXIF], EXIF_TAG_DATE_TIME_DIGITIZED)) ) { date = strdup(exif_entry_get_value(e, b, sizeof(b))); if( strlen(date) > 10 ) { @@ -451,15 +449,17 @@ GetImageMetadata(const char * path, char * name) date = NULL; } } + else { + /* One last effort to get the date from XMP */ + image_get_jpeg_date_xmp(path, &date); + } //DEBUG DPRINTF(E_DEBUG, L_METADATA, " * date: %s\n", date); - tag = EXIF_TAG_MAKE; - e = exif_content_get_entry (ed->ifd[EXIF_IFD_0], tag); + e = exif_content_get_entry (ed->ifd[EXIF_IFD_0], EXIF_TAG_MAKE); if( e ) { strncpy(make, exif_entry_get_value(e, b, sizeof(b)), sizeof(make)); - tag = EXIF_TAG_MODEL; - e = exif_content_get_entry (ed->ifd[EXIF_IFD_0], tag); + e = exif_content_get_entry (ed->ifd[EXIF_IFD_0], EXIF_TAG_MODEL); if( e ) { strncpy(model, exif_entry_get_value(e, b, sizeof(b)), sizeof(model)); |