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;
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)