Cleanup _media_svc_extract_audio_metadata 81/307481/4
authorminje.ahn <minje.ahn@samsung.com>
Mon, 11 Mar 2024 02:44:45 +0000 (11:44 +0900)
committerminje.ahn <minje.ahn@samsung.com>
Mon, 11 Mar 2024 23:07:31 +0000 (08:07 +0900)
Change-Id: I45048ea1491a1f1cc41a5e114eb068c9d330bafb
Signed-off-by: minje.ahn <minje.ahn@samsung.com>
src/common/media-svc-util.c
src/common/media-svc.c
src/include/common/media-svc-util.h

index 2a2f0e2..1db380d 100644 (file)
@@ -561,11 +561,36 @@ static char * __media_svc_get_tag_str_value(MMHandleType tag, const char *tag_na
        return g_strdup(MEDIA_SVC_TAG_UNKNOWN);
 }
 
-int _media_svc_extract_audio_metadata(sqlite3 *handle, bool is_direct, media_svc_content_info_s *content_info, uid_t uid)
+static char * __media_svc_extract_albumart(MMHandleType tag, const char *path, uid_t uid)
+{
+       int ret = FILEINFO_ERROR_NONE;
+       unsigned char *image = NULL;
+       unsigned int size = 0;
+       char *mimetype = NULL;
+       char thumb_path[MEDIA_SVC_PATHNAME_SIZE] = { 0, };
+       unsigned int mime_size = 0;
+
+       ret = mm_file_get_attrs(tag, MM_FILE_TAG_ARTWORK, &image, &size, NULL);
+       media_svc_retvm_if(ret != FILEINFO_ERROR_NONE, NULL, "Failed to get tag artwork[%d]", ret);
+       media_svc_retvm_if(!image || size == 0, NULL, "Invalid artwork");
+
+       ret = mm_file_get_attrs(tag, MM_FILE_TAG_ARTWORK_MIME, &mimetype, &mime_size, NULL);
+       media_svc_retvm_if(ret != FILEINFO_ERROR_NONE, NULL, "Failed to get tag mime[%d]", ret);
+       media_svc_retvm_if(mime_size == 0, NULL, "Invalid mimetype");
+
+       ret = __media_svc_get_thumbnail_path(thumb_path, path, mimetype, uid);
+       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, NULL, "Failed to get thumbnail path");
+
+       ret = __media_svc_save_image(image, size, thumb_path, uid);
+       media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, NULL, "Fail to save thumbnail");
+
+       return g_strdup(thumb_path);
+}
+
+void _media_svc_extract_audio_metadata(sqlite3 *handle, bool is_direct, media_svc_content_info_s *content_info, uid_t uid)
 {
        MMHandleType tag = 0;
        char *p = NULL;
-       unsigned char *image = NULL;
        unsigned int size = 0;
        int mmf_error = FILEINFO_ERROR_NONE;
        int album_id = 0;
@@ -578,94 +603,57 @@ int _media_svc_extract_audio_metadata(sqlite3 *handle, bool is_direct, media_svc
        else
                mmf_error = mm_file_create_tag_attrs_no_albumart(&tag, content_info->path);
 
-       if (mmf_error == FILEINFO_ERROR_NONE) {
-               content_info->media_meta.title = __media_svc_get_title(tag, content_info->file_name);
-               content_info->media_meta.album = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_ALBUM);
-               content_info->media_meta.artist = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_ARTIST);
-               content_info->media_meta.album_artist = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_ALBUM_ARTIST);
-               content_info->media_meta.genre = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_GENRE);
-               content_info->media_meta.track_num = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_TRACK_NUM);
-               content_info->media_meta.copyright = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_COPYRIGHT);
+       if (mmf_error != FILEINFO_ERROR_NONE) {
+               content_info->media_meta.title = __media_svc_get_title_from_filename(content_info->file_name);
+               content_info->album_id = 0;
+               return;
+       }
 
-               mmf_error = mm_file_get_attrs(tag, MM_FILE_TAG_RECDATE, &p, &size, NULL);
-               if ((mmf_error == FILEINFO_ERROR_NONE) && (size > 0)) {
-                       if (g_str_has_suffix(content_info->mime_type, "mp4") || g_str_has_suffix(content_info->mime_type, "3gpp")) {
-                               /*Creation time format is 20130101 00:00:00 +0000. change it to 2013:01:01 00:00:00  +0000 like exif time format*/
-                               char *p_value = g_strdelimit(g_strdup(p), "-", ':');
-                               content_info->media_meta.recorded_date = g_strdup_printf("%s +0000", p_value);
-                               g_free(p_value);
-                       } else {
-                               content_info->media_meta.recorded_date = g_strdup(p);
-                       }
+       content_info->media_meta.title = __media_svc_get_title(tag, content_info->file_name);
+       content_info->media_meta.album = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_ALBUM);
+       content_info->media_meta.artist = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_ARTIST);
+       content_info->media_meta.album_artist = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_ALBUM_ARTIST);
+       content_info->media_meta.genre = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_GENRE);
+       content_info->media_meta.track_num = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_TRACK_NUM);
+       content_info->media_meta.copyright = __media_svc_get_tag_str_value(tag, MM_FILE_TAG_COPYRIGHT);
+
+       mmf_error = mm_file_get_attrs(tag, MM_FILE_TAG_RECDATE, &p, &size, NULL);
+       if ((mmf_error == FILEINFO_ERROR_NONE) && (size > 0)) {
+               if (g_str_has_suffix(content_info->mime_type, "mp4") || g_str_has_suffix(content_info->mime_type, "3gpp")) {
+                       /*Creation time format is 20130101 00:00:00 +0000. change it to 2013:01:01 00:00:00  +0000 like exif time format*/
+                       char *p_value = g_strdelimit(g_strdup(p), "-", ':');
+                       content_info->media_meta.recorded_date = g_strdup_printf("%s +0000", p_value);
+                       g_free(p_value);
+               } else {
+                       content_info->media_meta.recorded_date = g_strdup(p);
                }
+       }
 
-               if (content_info->media_meta.recorded_date == NULL)
-                       content_info->media_meta.recorded_date = g_strdup(MEDIA_SVC_TAG_UNKNOWN);
+       if (content_info->media_meta.recorded_date == NULL)
+               content_info->media_meta.recorded_date = g_strdup(MEDIA_SVC_TAG_UNKNOWN);
 
-               mmf_error = mm_file_get_attrs(tag, MM_FILE_TAG_DATE, &p, &size, NULL);
-               if (mmf_error == FILEINFO_ERROR_NONE && size == 4)
-                       content_info->media_meta.year = g_strdup(p);
-               else
-                       content_info->media_meta.year = g_strdup(MEDIA_SVC_TAG_UNKNOWN);
-
-               /*Do not extract artwork for the USB Storage content*/
-               if (support_albumart) {
-                       mmf_error = mm_file_get_attrs(tag, MM_FILE_TAG_ARTWORK, &image, &size, NULL);
-                       if (mmf_error != FILEINFO_ERROR_NONE)
-                               media_svc_error("fail to get tag artwork - err(%x)", mmf_error);
-
-                       mmf_error = mm_file_get_attrs(tag, MM_FILE_TAG_ARTWORK_SIZE, &size, NULL);
-                       if (mmf_error != FILEINFO_ERROR_NONE)
-                               media_svc_error("fail to get artwork size - err(%x)", mmf_error);
-
-                       if (image != NULL && size > 0) {
-                               char thumb_path[MEDIA_SVC_PATHNAME_SIZE] = "\0";
-                               int artwork_mime_size = -1;
-
-                               mmf_error = mm_file_get_attrs(tag, MM_FILE_TAG_ARTWORK_MIME, &p, &artwork_mime_size, NULL);
-                               if ((mmf_error == FILEINFO_ERROR_NONE) && (artwork_mime_size > 0)) {
-                                       ret = __media_svc_get_thumbnail_path(thumb_path, content_info->path, p, uid);
-                                       if (ret != MS_MEDIA_ERR_NONE) {
-                                               media_svc_error("Fail to Get Thumbnail Path");
-                                       } else {
-                                               ret = __media_svc_save_image(image, size, thumb_path, uid);
-                                               if (ret != MS_MEDIA_ERR_NONE) {
-                                                       media_svc_error("Fail to Save Image");
-                                               } else {
-                                                       content_info->thumbnail_path = g_strdup(thumb_path);
-                                               }
-                                       }
-                               }
-                       }
-               }
+       mmf_error = mm_file_get_attrs(tag, MM_FILE_TAG_DATE, &p, &size, NULL);
+       if (mmf_error == FILEINFO_ERROR_NONE && size == 4)
+               content_info->media_meta.year = g_strdup(p);
+       else
+               content_info->media_meta.year = g_strdup(MEDIA_SVC_TAG_UNKNOWN);
 
-               /*Initialize album_id to 0. below code will set the album_id*/
-               content_info->album_id = album_id;
-               ret = _media_svc_get_album_id(handle, content_info->media_meta.album, content_info->media_meta.artist, &album_id);
-               if (ret != MS_MEDIA_ERR_NONE) {
-                       if (ret == MS_MEDIA_ERR_DB_NO_RECORD) {
-                               media_svc_debug("album does not exist. So start to make album art");
-                               if ((g_strcmp0(content_info->media_meta.album, MEDIA_SVC_TAG_UNKNOWN)) &&
-                                       (g_strcmp0(content_info->media_meta.artist, MEDIA_SVC_TAG_UNKNOWN)))
-                                       ret = _media_svc_append_album(handle, is_direct, content_info->media_meta.album, content_info->media_meta.artist, content_info->thumbnail_path, &album_id, uid);
-                               else
-                                       ret = _media_svc_append_album(handle, is_direct, content_info->media_meta.album, content_info->media_meta.artist, NULL, &album_id, uid);
-
-                               content_info->album_id = album_id;
-                       }
-               } else {
-                       content_info->album_id = album_id;
-               }
+       /*Do not extract artwork for the USB Storage content*/
+       if (support_albumart)
+               content_info->thumbnail_path = __media_svc_extract_albumart(tag, content_info->path, uid);
 
-               mmf_error = mm_file_destroy_tag_attrs(tag);
-               if (mmf_error != FILEINFO_ERROR_NONE)
-                       media_svc_error("fail to free tag attr - err(%x)", mmf_error);
-       }       else {
-               content_info->media_meta.title = __media_svc_get_title_from_filename(content_info->file_name);
-               content_info->album_id = album_id;
+       ret = _media_svc_get_album_id(handle, content_info->media_meta.album, content_info->media_meta.artist, &album_id);
+       if (ret == MS_MEDIA_ERR_DB_NO_RECORD) {
+               media_svc_debug("album does not exist. So start to make album art");
+               if (strlen(content_info->media_meta.album) > 0 && strlen(content_info->media_meta.artist) > 0)
+                       ret = _media_svc_append_album(handle, is_direct, content_info->media_meta.album, content_info->media_meta.artist, content_info->thumbnail_path, &album_id, uid);
+               else
+                       ret = _media_svc_append_album(handle, is_direct, content_info->media_meta.album, content_info->media_meta.artist, NULL, &album_id, uid);
        }
+       content_info->album_id = album_id;
 
-       return MS_MEDIA_ERR_NONE;
+       if (mm_file_destroy_tag_attrs(tag) != FILEINFO_ERROR_NONE)
+               media_svc_error("destroy failed");
 }
 
 int _media_svc_extract_video_metadata(media_svc_content_info_s *content_info)
index fffe105..cee35e1 100755 (executable)
@@ -210,7 +210,7 @@ int media_svc_insert_item_bulk(sqlite3 *handle, const char *storage_id, const ch
                break;
        case MEDIA_SVC_MEDIA_TYPE_SOUND:
        case MEDIA_SVC_MEDIA_TYPE_MUSIC:
-               ret = _media_svc_extract_audio_metadata(handle, true, &content_info, uid);
+               _media_svc_extract_audio_metadata(handle, true, &content_info, uid);
                break;
        case MEDIA_SVC_MEDIA_TYPE_BOOK:
                ret = _media_svc_extract_book_metadata(&content_info);
@@ -278,7 +278,7 @@ int media_svc_insert_item_immediately(sqlite3 *handle, const char *storage_id, c
                break;
        case MEDIA_SVC_MEDIA_TYPE_SOUND:
        case MEDIA_SVC_MEDIA_TYPE_MUSIC:
-               ret = _media_svc_extract_audio_metadata(handle, false, &content_info, uid);
+               _media_svc_extract_audio_metadata(handle, false, &content_info, uid);
                break;
        case MEDIA_SVC_MEDIA_TYPE_BOOK:
                ret = _media_svc_extract_book_metadata(&content_info);
@@ -486,7 +486,7 @@ int media_svc_refresh_item(sqlite3 *handle, bool is_direct, const char *storage_
                break;
        case MEDIA_SVC_MEDIA_TYPE_SOUND:
        case MEDIA_SVC_MEDIA_TYPE_MUSIC:
-               ret = _media_svc_extract_audio_metadata(handle, is_direct, &content_info, uid);
+               _media_svc_extract_audio_metadata(handle, is_direct, &content_info, uid);
                break;
        case MEDIA_SVC_MEDIA_TYPE_BOOK:
                ret = _media_svc_extract_book_metadata(&content_info);
index 1c99112..d38de2d 100755 (executable)
@@ -97,7 +97,7 @@ int _media_svc_get_file_time(const char *full_path);
 char * _media_svc_get_title_from_filename(const char *filename);
 int _media_svc_set_media_info(media_svc_content_info_s *content_info, const char *storage_id, const char *path, bool refresh);
 int _media_svc_extract_image_metadata(media_svc_content_info_s *content_info);
-int _media_svc_extract_audio_metadata(sqlite3 *handle, bool is_direct, media_svc_content_info_s *content_info, uid_t uid);
+void _media_svc_extract_audio_metadata(sqlite3 *handle, bool is_direct, media_svc_content_info_s *content_info, uid_t uid);
 int _media_svc_extract_video_metadata(media_svc_content_info_s *content_info);
 int _media_svc_extract_book_metadata(media_svc_content_info_s *content_info);
 void _media_svc_destroy_content_info(media_svc_content_info_s *content_info);