Fix GPS bug 48/256548/3 accepted/tizen/unified/20210407.100449 submit/tizen/20210407.002142
authorMinje Ahn <minje.ahn@samsung.com>
Tue, 6 Apr 2021 23:37:19 +0000 (08:37 +0900)
committerMinje ahn <minje.ahn@samsung.com>
Wed, 7 Apr 2021 00:03:52 +0000 (00:03 +0000)
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 <minje.ahn@samsung.com>
packaging/libmedia-service.spec
src/common/media-svc-util.c

index 465f9b5..a0879ac 100644 (file)
@@ -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
index 7bf0b5b..9c873bd 100644 (file)
@@ -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) {