From de79cf1d758ce1758ad896e47b3181109065482e Mon Sep 17 00:00:00 2001 From: Minje Ahn Date: Wed, 7 Apr 2021 08:37:19 +0900 Subject: [PATCH] Fix GPS bug 1. Changed to return error if there is no GPS information in image file. 2. Fixed the issue where 'content_info' is not initialized if there is no EXIF information. Change-Id: Ib0e9f26b14d4948d6ce282a6ff26b4448991f62d Signed-off-by: Minje Ahn --- packaging/libmedia-service.spec | 2 +- src/common/media-svc-util.c | 33 ++++++++++++++++----------------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/packaging/libmedia-service.spec b/packaging/libmedia-service.spec index 465f9b5..a0879ac 100644 --- a/packaging/libmedia-service.spec +++ b/packaging/libmedia-service.spec @@ -1,6 +1,6 @@ Name: libmedia-service Summary: Media information service library for multimedia applications -Version: 0.4.16 +Version: 0.4.17 Release: 0 Group: Multimedia/Libraries License: Apache-2.0 and PD diff --git a/src/common/media-svc-util.c b/src/common/media-svc-util.c index 7bf0b5b..9c873bd 100644 --- a/src/common/media-svc-util.c +++ b/src/common/media-svc-util.c @@ -210,15 +210,15 @@ static int __media_svc_get_exif_gps_double(ExifData *ed, double *value, long tag media_svc_retv_if(!value, MS_MEDIA_ERR_INVALID_PARAMETER); entry = exif_data_get_entry(ed, tagtype); - if (entry) { - exif_entry_get_value(entry, gps_buf, sizeof(gps_buf)); - gps_buf[strlen(gps_buf)] = '\0'; + media_svc_retv_if(!entry, MS_MEDIA_ERR_INTERNAL); - ret = __media_svc_split_to_double(gps_buf, tmp_arr); - media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret); + exif_entry_get_value(entry, gps_buf, sizeof(gps_buf)); + gps_buf[strlen(gps_buf)] = '\0'; - *value = tmp_arr[0] + tmp_arr[1] / 60 + tmp_arr[2] / 3600; - } + ret = __media_svc_split_to_double(gps_buf, tmp_arr); + media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret); + + *value = tmp_arr[0] + tmp_arr[1] / 60 + tmp_arr[2] / 3600; return MS_MEDIA_ERR_NONE; } @@ -939,16 +939,6 @@ int _media_svc_extract_image_metadata(media_svc_content_info_s *content_info) path = content_info->path; content_info->media_meta.title = __media_svc_get_title(NULL, path); - /* Load an ExifData object from an EXIF file */ - ed = exif_data_new_from_file(path); - - if (!ed) { - media_svc_sec_debug("There is no exif data in [ %s ]", path); - goto GET_WIDTH_HEIGHT; - } - - content_info->media_meta.is_360 = __image_360_check(path); - content_info->media_meta.latitude = MEDIA_SVC_DEFAULT_GPS_VALUE; content_info->media_meta.longitude = MEDIA_SVC_DEFAULT_GPS_VALUE; content_info->media_meta.altitude = MEDIA_SVC_DEFAULT_GPS_VALUE; @@ -963,6 +953,15 @@ int _media_svc_extract_image_metadata(media_svc_content_info_s *content_info) content_info->media_meta.copyright = g_strdup(MEDIA_SVC_TAG_UNKNOWN); content_info->media_meta.track_num = g_strdup(MEDIA_SVC_TAG_UNKNOWN); + /* Load an ExifData object from an EXIF file */ + ed = exif_data_new_from_file(path); + if (!ed) { + media_svc_sec_debug("There is no exif data in [ %s ]", path); + goto GET_WIDTH_HEIGHT; + } + + content_info->media_meta.is_360 = __image_360_check(path); + memset(buf, 0x00, sizeof(buf)); if (__media_svc_get_exif_gps_double(ed, &value, EXIF_TAG_GPS_LATITUDE) == MS_MEDIA_ERR_NONE) { if (__media_svc_get_exif_gps_str(ed, buf, EXIF_TAG_GPS_LATITUDE_REF) == MS_MEDIA_ERR_NONE) { -- 2.7.4