X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=src%2Fmedia_info.c;h=4441e692c103eb74efb325d0bb7bb16d478a0ffd;hb=6f19706b4d7711bd5f0bbf6bed105b5004b7eaf0;hp=3cb6688373011a02c2953e945f0382d610031489;hpb=4930f2cdfd845fc59941eb475b031c829bce73bd;p=platform%2Fcore%2Fapi%2Fmedia-content.git diff --git a/src/media_info.c b/src/media_info.c index 3cb6688..4441e69 100644 --- a/src/media_info.c +++ b/src/media_info.c @@ -33,7 +33,7 @@ static int __media_info_get_media_path_by_id_from_db(const char *media_id, char sqlite3_stmt *stmt = NULL; char *select_query = NULL; - content_retvm_if(!STRING_VALID(media_id), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid media_id"); + content_retip_if_fail(STRING_VALID(media_id)); select_query = sqlite3_mprintf(SELECT_MEDIA_PATH_BY_ID, media_id); @@ -110,7 +110,7 @@ static void __media_info_thumbnail_completed_cb(int error, const char *path, voi return; } -static bool __media_info_isFaceRecognition_feature_supported() +static bool __media_info_isFaceRecognition_feature_supported(void) { bool isFaceRecognitionSupported = false; @@ -160,7 +160,7 @@ static int __media_info_insert_batch(const char **path_array, memset(list_path, 0x00, sizeof(list_path)); continue; } else { - content_debug("The request file list path : %s", list_path); + content_sec_debug("The request file list path : %s", list_path); break; } } @@ -172,7 +172,7 @@ static int __media_info_insert_batch(const char **path_array, fp = fopen(list_path, "w"); if (fp == NULL) { - content_error("failed to open file : [%s]", list_path); + content_sec_error("failed to open file : [%s]", list_path); content_stderror("failed to open file"); return MEDIA_CONTENT_ERROR_INVALID_OPERATION; } @@ -242,7 +242,7 @@ static int __media_info_check_file_validity(const char *path) char *folder_path = NULL; int ret = MEDIA_CONTENT_ERROR_NONE; - content_retvm_if(!STRING_VALID(path), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid path"); + content_retip_if_fail(path); content_retvm_if(_media_util_is_ignorable_file(path), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid ignore path"); @@ -343,7 +343,13 @@ void _media_info_item_get_detail(sqlite3_stmt* stmt, media_info_h media) _media->audio_meta->duration = sqlite3_column_int(stmt, MEDIA_INFO_DURATION); _media->audio_meta->samplerate = sqlite3_column_int(stmt, MEDIA_INFO_SAMPLERATE); _media->audio_meta->channel = sqlite3_column_int(stmt, MEDIA_INFO_CHANNEL); + } else if (_media->media_type == MEDIA_CONTENT_TYPE_BOOK) { + _media->book_meta = g_new0(book_meta_s, 1); + _media->book_meta->subject = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_INFO_GENRE)); + _media->book_meta->author = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_INFO_COMPOSER)); + _media->book_meta->date = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_INFO_RECORDED_DATE)); + _media->book_meta->publisher = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_INFO_COPYRIGHT)); } } #ifdef _USE_TVPD_MODE @@ -354,7 +360,7 @@ int _media_info_get_media_info_from_db(const char *path, const char *storage_id, char *select_query = NULL; media_info_s *_media = (media_info_s*)media; - content_retvm_if(_media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid media"); + content_retip_if_fail(media); select_query = sqlite3_mprintf(SELECT_MEDIA_BY_PATH, storage_id, path); @@ -381,7 +387,8 @@ int _media_info_get_media_info_from_db(const char *path, media_info_h media) char *select_query = NULL; media_info_s *_media = (media_info_s*)media; - content_retvm_if(_media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid media"); + content_retip_if_fail(path); + content_retip_if_fail(media); select_query = sqlite3_mprintf(SELECT_MEDIA_BY_PATH, path); @@ -405,7 +412,6 @@ int _media_info_get_media_info_from_db(const char *path, media_info_h media) int media_info_insert_to_db(const char *path, media_info_h *info) { char storage_id[MEDIA_CONTENT_UUID_SIZE+1] = {0, }; - char repl_path[MAX_PATH_LEN] = {0, }; int ret = MEDIA_CONTENT_ERROR_NONE; ms_user_storage_type_e storage_type = MS_USER_STORAGE_INTERNAL; int modified_time = 0; @@ -413,52 +419,49 @@ int media_info_insert_to_db(const char *path, media_info_h *info) content_retip_if_fail(STRING_VALID(path)); content_retip_if_fail(info); - ret = _media_content_replace_path(path, repl_path); - content_retvm_if(!STRING_VALID(repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed"); - - ret = __media_info_check_file_validity(repl_path); + ret = __media_info_check_file_validity(path); content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); - ret = media_svc_get_storage_id(_content_get_db_handle(), repl_path, storage_id, _content_get_uid()); + ret = media_svc_get_storage_id(_content_get_db_handle(), path, storage_id, _content_get_uid()); if (ret != MS_MEDIA_ERR_NONE) { content_error("media_svc_get_storage_id failed : %d", ret); return _content_error_capi(ret); } - ret = ms_user_get_storage_type(_content_get_uid(), repl_path, &storage_type); + ret = ms_user_get_storage_type(_content_get_uid(), path, &storage_type); if (ret != MS_MEDIA_ERR_NONE) { content_sec_error("ms_user_get_storage_type failed : %d", ret); return _content_error_capi(ret); } /* Get modified time for check exists */ - ret = media_svc_get_modified_time(_content_get_db_handle(), storage_id, repl_path, &modified_time); + ret = media_svc_get_modified_time(_content_get_db_handle(), storage_id, path, &modified_time); if (ret == MS_MEDIA_ERR_NONE) { /* Refresh if need */ - if (modified_time != _media_util_get_file_time(repl_path)) { - ret = media_svc_refresh_item(_content_get_db_handle(), false, storage_id, storage_type, repl_path, _content_get_uid()); + if (modified_time != _media_util_get_file_time(path)) { + ret = media_svc_refresh_item(_content_get_db_handle(), false, storage_id, storage_type, path, _content_get_uid()); if (ret != MS_MEDIA_ERR_NONE) { content_error("media_svc_refresh_item failed : %d", ret); return _content_error_capi(ret); } } } else if (ret == MS_MEDIA_ERR_DB_NO_RECORD) { - content_sec_debug("media_svc_check_item_exist_by_path : no record : %s", repl_path); - content_retvm_if(!_media_util_check_support_media_type(repl_path), MEDIA_CONTENT_ERROR_NOT_SUPPORTED, "Unsupported media type"); + content_sec_debug("media_svc_check_item_exist_by_path : no record : %s", path); + content_retvm_if(!_media_util_check_support_media_type(path), MEDIA_CONTENT_ERROR_NOT_SUPPORTED, "Unsupported media type"); - ret = media_svc_insert_item_immediately(_content_get_db_handle(), storage_id, storage_type, repl_path, _content_get_uid()); + ret = media_svc_insert_item_immediately(_content_get_db_handle(), storage_id, storage_type, path, _content_get_uid()); if (ret != MS_MEDIA_ERR_NONE) { if (ret == MS_MEDIA_ERR_DB_CONSTRAINT_FAIL) { - content_sec_error("This item is already inserted. This may be normal operation because other process already did this (%s)", repl_path); + content_sec_error("This item is already inserted. This may be normal operation because other process already did this (%s)", path); ret = MEDIA_CONTENT_ERROR_NONE; } else { - content_sec_error("media_svc_insert_item_immediately failed : %d (%s)", ret, repl_path); + content_sec_error("media_svc_insert_item_immediately failed : %d (%s)", ret, path); } return _content_error_capi(ret); } } else { - content_sec_error("media_svc_get_modified_time failed : %d (%s)", ret, repl_path); + content_sec_error("media_svc_get_modified_time failed : %d (%s)", ret, path); return _content_error_capi(ret); } @@ -466,13 +469,13 @@ int media_info_insert_to_db(const char *path, media_info_h *info) #ifdef _USE_TVPD_MODE if (STRING_VALID(storage_id)) - ret = _media_info_get_media_info_from_db(repl_path, storage_id, (media_info_h)_media); + ret = _media_info_get_media_info_from_db(path, storage_id, (media_info_h)_media); else - ret = _media_info_get_media_info_from_db(repl_path, DB_TABLE_MEDIA, (media_info_h)_media); + ret = _media_info_get_media_info_from_db(path, DB_TABLE_MEDIA, (media_info_h)_media); *info = (media_info_h)_media; #else - ret = _media_info_get_media_info_from_db(repl_path, (media_info_h)_media); + ret = _media_info_get_media_info_from_db(path, (media_info_h)_media); *info = (media_info_h)_media; #endif @@ -481,43 +484,21 @@ int media_info_insert_to_db(const char *path, media_info_h *info) int media_info_insert_batch_to_db(const char **path_array, unsigned int array_length, media_insert_completed_cb completed_cb, void *user_data) { - char **repl_path_array = NULL; - int idx = 0; - int ret = MS_MEDIA_ERR_NONE; - char repl_path[MAX_PATH_LEN] = {0, }; - content_retip_if_fail(path_array); content_retip_if_fail(array_length > 0); content_retip_if_fail(completed_cb); - repl_path_array = g_malloc0(sizeof(char *) * array_length); - - for (idx = 0; idx < array_length; idx++) { - if (STRING_VALID(path_array[idx])) { - memset(repl_path, 0, sizeof(repl_path)); - _media_content_replace_path(path_array[idx], repl_path); - repl_path_array[idx] = g_strndup(repl_path, strlen(repl_path)); - } else { - content_error("path[%d] is invalid string", idx); - } - } - - ret = __media_info_insert_batch((const char **)repl_path_array, array_length, completed_cb, user_data); - for (idx = 0; idx < array_length; idx++) - g_free(repl_path_array[idx]); - - g_free(repl_path_array); - - return ret; + return __media_info_insert_batch(path_array, array_length, completed_cb, user_data); } + #ifdef _USE_TVPD_MODE int media_info_get_media_info_by_path_from_db(const char* path, media_info_h* media) { int ret = MEDIA_CONTENT_ERROR_NONE; char storage_id[MEDIA_CONTENT_UUID_SIZE+1] = {0, }; - content_retvm_if(!STRING_VALID(path), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid path"); - content_retvm_if(media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid info"); + content_retip_if_fail(STRING_VALID(path)); + content_retip_if_fail(media); ret = media_svc_get_storage_id(_content_get_db_handle(), path, storage_id, tzplatform_getuid(TZ_USER_NAME)); if (ret != MS_MEDIA_ERR_NONE) { @@ -541,10 +522,7 @@ int media_info_delete_from_db(const char *media_id) char *storage_id = NULL; content_warn("DEPRECATION WARNING: media_info_delete_from_db() is deprecated and will be removed from next release. Use media_content_scan_file() instead."); - if (!STRING_VALID(media_id)) { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(STRING_VALID(media_id)); ret = __media_info_get_media_path_by_id_from_db(media_id, &path); if (ret != MEDIA_CONTENT_ERROR_NONE) { @@ -570,7 +548,8 @@ int media_info_delete_from_db(const char *media_id) int media_info_destroy(media_info_h media) { media_info_s *_media = (media_info_s*)media; - content_retvm_if(_media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Handle is null"); + + content_retip_if_fail(media); g_free(_media->media_id); g_free(_media->file_path); @@ -583,10 +562,6 @@ int media_info_destroy(media_info_h media) g_free(_media->modified_month); #endif g_free(_media->storage_uuid); -#ifdef _USE_SENIOR_MODE - g_free(_media->contact); - g_free(_media->app_data); -#endif if (_media->image_meta) { g_free(_media->image_meta->media_id); @@ -627,6 +602,16 @@ int media_info_destroy(media_info_h media) g_free(_media->audio_meta); } + if (_media->book_meta) { + g_free(_media->book_meta->media_id); + g_free(_media->book_meta->author); + g_free(_media->book_meta->date); + g_free(_media->book_meta->publisher); + g_free(_media->book_meta->subject); + + g_free(_media->book_meta); + } + g_free(_media); return MEDIA_CONTENT_ERROR_NONE; @@ -652,11 +637,6 @@ int media_info_clone(media_info_h *dst, media_info_h src) #ifdef _USE_TVPD_MODE _dst->modified_month = g_strdup(_src->modified_month); #endif -#ifdef _USE_SENIOR_MODE - _dst->contact = g_strdup(_src->contact); - _dst->app_data = g_strdup(_src->app_data); -#endif - _dst->media_type = _src->media_type; _dst->size = _src->size; _dst->added_time = _src->added_time; @@ -730,6 +710,14 @@ int media_info_clone(media_info_h *dst, media_info_h src) _dst->audio_meta->duration = _src->audio_meta->duration; _dst->audio_meta->bitrate = _src->audio_meta->bitrate; _dst->audio_meta->bitpersample = _src->audio_meta->bitpersample; + } else if (_src->media_type == MEDIA_CONTENT_TYPE_BOOK && _src->book_meta) { + _dst->book_meta = g_new0(book_meta_s, 1); + + _dst->book_meta->media_id = g_strdup(_src->book_meta->media_id); + _dst->book_meta->author = g_strdup(_src->book_meta->author); + _dst->book_meta->date = g_strdup(_src->book_meta->date); + _dst->book_meta->publisher = g_strdup(_src->book_meta->publisher); + _dst->book_meta->subject = g_strdup(_src->book_meta->subject); } *dst = (media_info_h)_dst; @@ -739,113 +727,64 @@ int media_info_clone(media_info_h *dst, media_info_h src) int media_info_get_media_count_from_db(filter_h filter, int *media_count) { - int ret = MEDIA_CONTENT_ERROR_NONE; + content_retip_if_fail(media_count); - if (media_count == NULL) { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - - return ret; - } - - ret = _media_db_get_group_item_count(NULL, filter, MEDIA_GROUP_NONE, media_count); - - return ret; + return _media_db_get_group_item_count(NULL, filter, MEDIA_GROUP_NONE, media_count); } int media_info_foreach_media_from_db(filter_h filter, media_info_cb callback, void *user_data) { - int ret = MEDIA_CONTENT_ERROR_NONE; - - content_retvm_if(callback == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid callback"); - - ret = _media_db_get_group_item(NULL, filter, callback, user_data, MEDIA_GROUP_NONE); + content_retip_if_fail(callback); - return ret; + return _media_db_get_group_item(NULL, filter, callback, user_data, MEDIA_GROUP_NONE); } int media_info_get_tag_count_from_db(const char *media_id, filter_h filter, int *tag_count) { - int ret = MEDIA_CONTENT_ERROR_NONE; - - if (STRING_VALID(media_id) && tag_count) { - ret = _media_db_get_group_item_count(media_id, filter, MEDIA_GROUP_TAG_BY_MEDIA_ID, tag_count); - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(STRING_VALID(media_id)); + content_retip_if_fail(tag_count); - return ret; + return _media_db_get_group_item_count(media_id, filter, MEDIA_GROUP_TAG_BY_MEDIA_ID, tag_count); } int media_info_foreach_tag_from_db(const char *media_id, filter_h filter, media_tag_cb callback, void *user_data) { - int ret = MEDIA_CONTENT_ERROR_NONE; - - if ((callback != NULL) && STRING_VALID(media_id)) { - ret = _media_db_get_tag(media_id, filter, callback, user_data); - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(STRING_VALID(media_id)); + content_retip_if_fail(callback); - return ret; + return _media_db_get_tag(media_id, filter, callback, user_data); } int media_info_get_bookmark_count_from_db(const char *media_id, filter_h filter, int *bookmark_count) { - int ret = MEDIA_CONTENT_ERROR_NONE; - - if (STRING_VALID(media_id) && bookmark_count) { - ret = _media_db_get_group_item_count(media_id, filter, MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID, bookmark_count); - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(STRING_VALID(media_id)); + content_retip_if_fail(bookmark_count); - return ret; + return _media_db_get_group_item_count(media_id, filter, MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID, bookmark_count); } int media_info_foreach_bookmark_from_db(const char *media_id, filter_h filter, media_bookmark_cb callback, void *user_data) { - int ret = MEDIA_CONTENT_ERROR_NONE; - - if ((callback != NULL) && STRING_VALID(media_id)) { - ret = _media_db_get_bookmark(media_id, filter, callback, user_data); - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(STRING_VALID(media_id)); + content_retip_if_fail(callback); - return ret; + return _media_db_get_bookmark(media_id, filter, callback, user_data); } int media_info_get_face_count_from_db(const char *media_id, filter_h filter, int *face_count) { - int ret = MEDIA_CONTENT_ERROR_NONE; - - if (STRING_VALID(media_id) && face_count) { - ret = _media_db_get_group_item_count(media_id, filter, MEDIA_GROUP_FACE_BY_MEDIA_ID, face_count); - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(STRING_VALID(media_id)); + content_retip_if_fail(face_count); - return ret; + return _media_db_get_group_item_count(media_id, filter, MEDIA_GROUP_FACE_BY_MEDIA_ID, face_count); } int media_info_foreach_face_from_db(const char *media_id, filter_h filter, media_face_cb callback, void *user_data) { - int ret = MEDIA_CONTENT_ERROR_NONE; - - if ((callback != NULL) && STRING_VALID(media_id)) { - ret = _media_db_get_face(media_id, filter, callback, user_data); - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(STRING_VALID(media_id)); + content_retip_if_fail(callback); - return ret; + return _media_db_get_face(media_id, filter, callback, user_data); } int media_info_get_image(media_info_h media, image_meta_h *image) @@ -946,6 +885,29 @@ int media_info_get_audio(media_info_h media, audio_meta_h *audio) return ret; } +int media_info_get_book(media_info_h media, book_meta_h *book) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + + media_info_s *_media = (media_info_s*)media; + + content_retip_if_fail(media); + content_retip_if_fail(_media->media_type == MEDIA_CONTENT_TYPE_BOOK); + content_retip_if_fail(book); + + book_meta_s *_book = g_new0(book_meta_s, 1); + + _book->media_id = g_strdup(_media->media_id); + _book->author = g_strdup(_media->book_meta->author); + _book->publisher = g_strdup(_media->book_meta->publisher); + _book->date = g_strdup(_media->book_meta->date); + _book->subject = g_strdup(_media->book_meta->subject); + + *book = (book_meta_h)_book; + + return ret; +} + int media_info_get_media_id(media_info_h media, char **media_id) { media_info_s *_media = (media_info_s*)media; @@ -984,17 +946,14 @@ int media_info_get_display_name(media_info_h media, char **name) int media_info_get_media_type(media_info_h media, media_content_type_e *type) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && type) { - *type = _media->media_type; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - return ret; + content_retip_if_fail(media); + content_retip_if_fail(type); + + *type = _media->media_type; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_mime_type(media_info_h media, char **mime_type) @@ -1011,63 +970,50 @@ int media_info_get_mime_type(media_info_h media, char **mime_type) int media_info_get_size(media_info_h media, unsigned long long *size) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && size) { - *size = _media->size; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(size); - return ret; + *size = _media->size; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_added_time(media_info_h media, time_t *added_time) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && added_time) { - *added_time = _media->added_time; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - return ret; + content_retip_if_fail(media); + content_retip_if_fail(added_time); + + *added_time = _media->added_time; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_modified_time(media_info_h media, time_t* time) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && time) { - *time = _media->modified_time; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - return ret; + content_retip_if_fail(media); + content_retip_if_fail(time); + + *time = _media->modified_time; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_timeline(media_info_h media, time_t* time) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && time) { - *time = _media->timeline; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - return ret; + content_retip_if_fail(media); + content_retip_if_fail(time); + + *time = _media->timeline; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_thumbnail_path(media_info_h media, char **path) @@ -1108,81 +1054,61 @@ int media_info_get_description(media_info_h media, char **description) int media_info_get_longitude(media_info_h media, double* longitude) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && longitude) { - *longitude = _media->longitude; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(longitude); - return ret; + *longitude = _media->longitude; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_latitude(media_info_h media, double* latitude) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && latitude) { - *latitude = _media->latitude; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(latitude); - return ret; + *latitude = _media->latitude; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_altitude(media_info_h media, double *altitude) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && altitude) { - *altitude = _media->altitude; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(altitude); - return ret; + *altitude = _media->altitude; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_rating(media_info_h media, int *rating) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && rating) { - *rating = _media->rating; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(rating); - return ret; + *rating = _media->rating; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_favorite(media_info_h media, bool* favorite) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media && favorite) { - *favorite = _media->favourite; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(favorite); - return ret; + *favorite = _media->favourite; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_storage_id(media_info_h media, char **storage_id) @@ -1200,334 +1126,149 @@ int media_info_get_storage_id(media_info_h media, char **storage_id) int media_info_is_drm(media_info_h media, bool *is_drm) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media) { - *is_drm = _media->is_drm; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(is_drm); - return ret; + *is_drm = _media->is_drm; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_is_360_content(media_info_h media, bool *is_360) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media) { - *is_360 = _media->is_360; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(is_360); - return ret; + *is_360 = _media->is_360; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_storage_type(media_info_h media, media_content_storage_e *storage_type) { - int ret = MEDIA_CONTENT_ERROR_NONE; content_warn("DEPRECATION WARNING: media_info_get_storage_type() is deprecated and will be removed from next release. Use storage_get_type_dev() instead."); media_info_s *_media = (media_info_s*)media; - if (_media && storage_type) { - *storage_type = _media->storage_type; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - - return ret; -} - -#ifdef _USE_SENIOR_MODE -int media_info_set_contact(media_info_h media, const char *contact) -{ - media_info_s *_media = (media_info_s*)media; - content_retip_if_fail(media); + content_retip_if_fail(storage_type); - g_free(_media->contact); - _media->contact = g_strdup(contact); + *storage_type = _media->storage_type; return MEDIA_CONTENT_ERROR_NONE; } -int media_info_set_app_data(media_info_h media, const char *app_data) +#ifdef _USE_TVPD_MODE +int media_info_get_played_count(media_info_h media, int *played_count) { media_info_s *_media = (media_info_s*)media; content_retip_if_fail(media); + content_retip_if_fail(played_count); - g_free(_media->app_data); - _media->app_data = g_strdup(app_data); + *played_count = _media->played_count; return MEDIA_CONTENT_ERROR_NONE; } -int media_info_insert_to_db_with_contact_data(const char *path, const char* contact, const char* app_data, media_info_h *info) -{ - int ret = media_info_insert_to_db(path, info); - content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "media_info_insert_to_db [%s] failed", path); - - ret = media_info_set_contact(*info, contact); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - content_error("media_info_set_contact [%s] failed", contact); - - media_info_s* _media_info = (media_info_s*)*info; - ret = media_info_delete_from_db(_media_info->media_id); - content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "media_info_delete_from_db [%s] failed", _media_info->media_id); - - media_info_destroy(*info); - return ret; - } - - ret = media_info_set_app_data(*info, app_data); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - content_error("media_info_set_app_data [%s] failed", app_data); - - media_info_s* _media_info = (media_info_s*)*info; - ret = media_info_delete_from_db(_media_info->media_id); - content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "media_info_delete_from_db [%s] failed", _media_info->media_id); - - media_info_destroy(*info); - return ret; - } - - ret = media_info_update_to_db(*info); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - content_error("media_info_update_to_db [] failed"); - - media_info_s* _media_info = (media_info_s*)*info; - ret = media_info_delete_from_db(_media_info->media_id); - content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "media_info_delete_from_db [%s] failed", _media_info->media_id); - - media_info_destroy(*info); - return ret; - } - - return ret; -} - -int media_info_delete_contact_from_db(const char* contact, const char* storage_id) -{ - return -1; -} - -int media_info_delete_item(const char *media_id) -{ - int ret = MEDIA_CONTENT_ERROR_NONE; - char *path = NULL; - char *storage_id = NULL; - - if (!STRING_VALID(media_id)) { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - return MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - - ret = __media_info_get_media_path_by_id_from_db(media_id, &path); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - content_error("__media_info_get_media_path_by_id_from_db failed : %d", ret); - g_free(path); - return ret; - } - - ret = _media_db_get_storage_id_by_media_id(media_id, &storage_id); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - content_error("_media_db_get_storage_id_by_media_id failed : %d", ret); - g_free(path); - return ret; - } - - ret = media_svc_delete_item_by_path(_content_get_db_handle(), storage_id, path, tzplatform_getuid(TZ_USER_NAME)); - g_free(storage_id); - if (ret != MEDIA_CONTENT_ERROR_NONE) { - content_error("remove from DB failed : %d", ret); - g_free(path); - return ret; - } - - ret = media_svc_remove_file(path); - g_free(path); - - return _content_error_capi(ret); -} - -int media_info_get_contact(media_info_h media, char **contact) +int media_info_set_played_count(media_info_h media, int played_count) { media_info_s *_media = (media_info_s*)media; content_retip_if_fail(media); - content_retip_if_fail(contact); - *contact = g_strdup(_media->contact); + _media->played_count = played_count; return MEDIA_CONTENT_ERROR_NONE; } -int media_info_get_app_data(media_info_h media, char **app_data) +int media_info_set_played_position(media_info_h media, int played_position) { media_info_s *_media = (media_info_s*)media; content_retip_if_fail(media); - content_retip_if_fail(app_data); + content_retip_if_fail(played_position >= 0); - *app_data = g_strdup(_media->app_data); + _media->played_position = played_position; return MEDIA_CONTENT_ERROR_NONE; } -#endif -#ifdef _USE_TVPD_MODE -int media_info_get_played_count(media_info_h media, int *played_count) -{ - int ret = MEDIA_CONTENT_ERROR_NONE; - media_info_s *_media = (media_info_s*)media; - - if (_media) { - *played_count = _media->played_count; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - - return ret; -} - -int media_info_set_played_count(media_info_h media, int played_count) -{ - int ret = MEDIA_CONTENT_ERROR_NONE; - - media_info_s *_media = (media_info_s*)media; - - if (_media) { - _media->played_count = played_count; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - - return ret; -} - -int media_info_set_played_position(media_info_h media, int played_position) -{ - int ret = MEDIA_CONTENT_ERROR_NONE; - media_info_s *_media = (media_info_s*)media; - - if ((_media != NULL) && (played_position >= 0)) { - _media->played_position = played_position; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } - - return ret; -} int media_info_get_played_position(media_info_h media, int *played_position) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media) { - *played_position = _media->played_position; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(played_position); - return ret; + *played_position = _media->played_position; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_set_played_time(media_info_h media) { - int ret = MEDIA_CONTENT_ERROR_NONE; time_t current_time; media_info_s *_media = (media_info_s*)media; - if (_media != NULL) { - time(¤t_time); - _media->played_time = current_time; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); - return ret; + time(¤t_time); + _media->played_time = current_time; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_played_time(media_info_h media, time_t* played_time) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media) { - *played_time = _media->played_time; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(played_time); - return ret; + *played_time = _media->played_time; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_extract_flag(media_info_h media, int *extract_flag) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s *)media; - if (_media && extract_flag) { - *extract_flag = _media->extract_flag; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(extract_flag); - return ret; + *extract_flag = _media->extract_flag; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_stitched_state(media_info_h media, int *stitched_info) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media) { - *stitched_info = (_media->stitched_info & 0xFFFF0000) >> 16; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(stitched_info); - return ret; + *stitched_info = (_media->stitched_info & 0xFFFF0000) >> 16; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_stitched_engine(media_info_h media, int *stitched_info) { - int ret = MEDIA_CONTENT_ERROR_NONE; media_info_s *_media = (media_info_s*)media; - if (_media) { - *stitched_info = _media->stitched_info & 0x0000FFFF; - ret = MEDIA_CONTENT_ERROR_NONE; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(stitched_info); - return ret; + *stitched_info = _media->stitched_info & 0x0000FFFF; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_get_modified_month(media_info_h media, char **modified_month) @@ -1583,24 +1324,57 @@ int media_info_get_media_from_db(const char *media_id, media_info_h *media) return ret; } -int media_info_set_favorite(media_info_h media, bool favorite) +int media_info_get_media_from_db_by_path(const char *path, media_info_h *media) { int ret = MEDIA_CONTENT_ERROR_NONE; - media_info_s *_media = (media_info_s*)media; + media_info_s *_media = NULL; - if (_media != NULL) { - if (favorite == TRUE) - time(&_media->favourite); - else - _media->favourite = 0; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + content_retip_if_fail(STRING_VALID(path)); + content_retip_if_fail(media); + ret = _media_util_check_file_exist(path); + content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "_media_util_check_file_exist failed : %d", ret); + +#ifdef _USE_TVPD_MODE + char storage_id[MEDIA_CONTENT_UUID_SIZE + 1] = {0, }; + + ret = media_svc_get_storage_id(_content_get_db_handle(), path, storage_id, _content_get_uid()); + if (ret != MS_MEDIA_ERR_NONE) { + content_error("media_svc_get_storage_id failed : %d", ret); + return _content_error_capi(ret); + } +#endif + + _media = g_new0(media_info_s, 1); + +#ifdef _USE_TVPD_MODE + ret = _media_info_get_media_info_from_db(path, STRING_VALID(storage_id) ? storage_id : DB_TABLE_MEDIA, (media_info_h)_media); +#else + ret = _media_info_get_media_info_from_db(path, (media_info_h)_media); +#endif + if (ret != MEDIA_CONTENT_ERROR_NONE) { + g_free(_media); + _media = NULL; } + *media = (media_info_h)_media; + return ret; } +int media_info_set_favorite(media_info_h media, bool favorite) +{ + media_info_s *_media = (media_info_s*)media; + + content_retip_if_fail(media); + + if (favorite == TRUE) + time(&_media->favourite); + else + _media->favourite = 0; + + return MEDIA_CONTENT_ERROR_NONE; +} + int media_info_update_to_db(media_info_h media) { int ret = MEDIA_CONTENT_ERROR_NONE; @@ -1608,62 +1382,52 @@ int media_info_update_to_db(media_info_h media) char *set_sql = NULL; char *sql = NULL; - if (_media != NULL && STRING_VALID(_media->media_id)) { - /* This sql is due to sqlite3_mprintf's wrong operation when using floating point in the text format */ - /* This code will be removed when sqlite3_mprintf works clearly */ - char *test_sql = sqlite3_mprintf("%f, %f, %f", _media->longitude, _media->latitude, _media->altitude); - SQLITE3_SAFE_FREE(test_sql); - - /*Update Pinyin If Support Pinyin*/ - char *file_name_pinyin = NULL; - char *description_pinyin = NULL; - bool pinyin_support = FALSE; - - /*Update Pinyin If Support Pinyin*/ - media_svc_check_pinyin_support(&pinyin_support); - if (pinyin_support) { - if (STRING_VALID(_media->display_name)) - media_svc_get_pinyin(_media->display_name, &file_name_pinyin); - if (STRING_VALID(_media->description)) - media_svc_get_pinyin(_media->description, &description_pinyin); - } + content_retip_if_fail(media); + content_retip_if_fail(STRING_VALID(_media->media_id)); + + /* This sql is due to sqlite3_mprintf's wrong operation when using floating point in the text format */ + /* This code will be removed when sqlite3_mprintf works clearly */ + char *test_sql = sqlite3_mprintf("%f, %f, %f", _media->longitude, _media->latitude, _media->altitude); + SQLITE3_SAFE_FREE(test_sql); + + /*Update Pinyin If Support Pinyin*/ + char *file_name_pinyin = NULL; + char *description_pinyin = NULL; + bool pinyin_support = FALSE; + + /*Update Pinyin If Support Pinyin*/ + media_svc_check_pinyin_support(&pinyin_support); + if (pinyin_support) { + if (STRING_VALID(_media->display_name)) + media_svc_get_pinyin(_media->display_name, &file_name_pinyin); + if (STRING_VALID(_media->description)) + media_svc_get_pinyin(_media->description, &description_pinyin); + } #ifdef _USE_TVPD_MODE -#ifdef _USE_SENIOR_MODE - if (_media_content_is_support_senior_mode()) { - set_sql = sqlite3_mprintf("media_display_name=%Q, media_description=%Q, media_longitude=%f, media_latitude=%f, media_file_name_pinyin=%Q, media_description_pinyin=%Q, played_count=%d, last_played_time=%d, last_played_position=%d, media_rating=%d, media_favourite=%d, contact=%Q, app_data=%Q", - _media->display_name, _media->description, _media->longitude, _media->latitude, file_name_pinyin, description_pinyin, _media->played_count, _media->played_time, _media->played_position, _media->rating, _media->favourite, _media->contact, _media->app_data); - } else -#endif - { - set_sql = sqlite3_mprintf("media_display_name=%Q, media_description=%Q, media_longitude=%f, media_latitude=%f, media_file_name_pinyin=%Q, media_description_pinyin=%Q, played_count=%d, last_played_time=%d, last_played_position=%d, media_rating=%d, media_favourite=%d", - _media->display_name, _media->description, _media->longitude, _media->latitude, file_name_pinyin, description_pinyin, _media->played_count, _media->played_time, _media->played_position, _media->rating, _media->favourite); - } + set_sql = sqlite3_mprintf("media_display_name=%Q, media_description=%Q, media_longitude=%f, media_latitude=%f, media_file_name_pinyin=%Q, media_description_pinyin=%Q, played_count=%d, last_played_time=%d, last_played_position=%d, media_rating=%d, media_favourite=%d", + _media->display_name, _media->description, _media->longitude, _media->latitude, file_name_pinyin, description_pinyin, _media->played_count, _media->played_time, _media->played_position, _media->rating, _media->favourite); #else - set_sql = sqlite3_mprintf("media_display_name=%Q, media_description=%Q, media_longitude=%f, media_latitude=%f, media_file_name_pinyin=%Q, media_description_pinyin=%Q, media_rating=%d, media_favourite=%d", _media->display_name, _media->description, _media->longitude, _media->latitude, file_name_pinyin, description_pinyin, _media->rating, _media->favourite); + set_sql = sqlite3_mprintf("media_display_name=%Q, media_description=%Q, media_longitude=%f, media_latitude=%f, media_file_name_pinyin=%Q, media_description_pinyin=%Q, media_rating=%d, media_favourite=%d", _media->display_name, _media->description, _media->longitude, _media->latitude, file_name_pinyin, description_pinyin, _media->rating, _media->favourite); #endif #ifdef _USE_TVPD_MODE - sql = sqlite3_mprintf("UPDATE %Q SET %s WHERE media_id=%Q", _media->storage_uuid, set_sql, _media->media_id); + sql = sqlite3_mprintf("UPDATE %Q SET %s WHERE media_id=%Q", _media->storage_uuid, set_sql, _media->media_id); #else - sql = sqlite3_mprintf("UPDATE %q SET %s WHERE media_id=%Q", DB_TABLE_MEDIA, set_sql, _media->media_id); + sql = sqlite3_mprintf("UPDATE %q SET %s WHERE media_id=%Q", DB_TABLE_MEDIA, set_sql, _media->media_id); #endif - ret = _content_query_sql(sql); - SQLITE3_SAFE_FREE(set_sql); - SQLITE3_SAFE_FREE(sql); - - SAFE_FREE(file_name_pinyin); - SAFE_FREE(description_pinyin); - - if (ret == MEDIA_CONTENT_ERROR_NONE) { - /* Send notification for this update */ - content_debug("Update is successfull. Send notification for this"); - if (_media->file_path && _media->mime_type) - media_svc_publish_noti(MS_MEDIA_ITEM_UPDATE, _media->file_path, _media->media_type, _media->media_id, _media->mime_type); - else - content_error("Can't Send Noti : path or mime type is NULL"); - } - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; + ret = _content_query_sql(sql); + SQLITE3_SAFE_FREE(set_sql); + SQLITE3_SAFE_FREE(sql); + + SAFE_FREE(file_name_pinyin); + SAFE_FREE(description_pinyin); + + if (ret == MEDIA_CONTENT_ERROR_NONE) { + /* Send notification for this update */ + content_debug("Update is successful. Send notification for this"); + if (_media->file_path && _media->mime_type) + media_svc_publish_noti(MS_MEDIA_ITEM_UPDATE, _media->file_path, _media->media_type, _media->media_id, _media->mime_type); + else + content_error("Can't Send Noti : path or mime type is NULL"); } return ret; @@ -1673,16 +1437,19 @@ int media_info_move_to_db(media_info_h media, const char* dst_path) { int ret = MEDIA_CONTENT_ERROR_NONE; char repl_path[MAX_PATH_LEN] = {0, }; + media_info_s *_info = NULL; +#ifdef _USE_TVPD_MODE + char storage_id[MEDIA_CONTENT_UUID_SIZE + 1] = {0, }; +#endif - content_retvm_if(media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid media"); - content_retvm_if(!STRING_VALID(dst_path), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid dst_path"); - - ret = _media_content_replace_path(dst_path, repl_path); - content_retvm_if(!STRING_VALID(repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed"); + content_retip_if_fail(media); + content_retip_if_fail(STRING_VALID(dst_path)); media_info_s *_media = (media_info_s*)media; /* If dst_path is folder, append file_name */ + SAFE_STRLCPY(repl_path, dst_path, sizeof(repl_path)); + if (g_file_test(repl_path, G_FILE_TEST_IS_DIR)) { if (repl_path[strlen(repl_path) - 1] != '/') SAFE_STRLCAT(repl_path, "/", sizeof(repl_path)); @@ -1697,7 +1464,34 @@ int media_info_move_to_db(media_info_h media, const char* dst_path) content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); ret = media_svc_move_item(_content_get_db_handle(), _media->file_path, repl_path, _media->media_id, _media->media_type, _media->mime_type, _content_get_uid()); - return _content_error_capi(ret); + ret = _content_error_capi(ret); + content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); + + /* Update media_info handle */ + _info = g_new0(media_info_s, 1); + +#ifdef _USE_TVPD_MODE + ret = media_svc_get_storage_id(_content_get_db_handle(), repl_path, storage_id, _content_get_uid()); + content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret); + + ret = _media_info_get_media_info_from_db(repl_path, storage_id, (media_info_h)_info); +#else + ret = _media_info_get_media_info_from_db(repl_path, (media_info_h)_info); +#endif + + SAFE_FREE(_media->display_name); + _media->display_name = g_strdup(_info->display_name); + SAFE_FREE(_media->file_path); + _media->file_path = g_strdup(_info->file_path); + _media->storage_type = _info->storage_type; + SAFE_FREE(_media->storage_uuid); + _media->storage_uuid = g_strdup(_info->storage_uuid); + SAFE_FREE(_media->thumbnail_path); + _media->thumbnail_path = NULL; + + media_info_destroy((media_info_h)_info); + + return ret; } int media_info_create_thumbnail(media_info_h media, media_thumbnail_completed_cb callback, void *user_data) @@ -1761,15 +1555,12 @@ int media_info_cancel_thumbnail(media_info_h media) content_warn("DEPRECATION WARNING: media_info_cancel_thumbnail() is deprecated and will be removed from next release."); media_info_s *_media = (media_info_s*)media; - if (_media != NULL && STRING_VALID(_media->media_id) && _media->request_id > 0) { - ret = thumbnail_request_cancel_media(_media->request_id); - ret = _content_error_capi(ret); - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(STRING_VALID(_media->media_id)); + content_retip_if_fail(_media->request_id > 0); - return ret; + ret = thumbnail_request_cancel_media(_media->request_id); + return _content_error_capi(ret); } int media_info_start_face_detection(media_info_h media, media_face_detection_completed_cb callback, void *user_data) @@ -1817,15 +1608,12 @@ int media_info_cancel_face_detection(media_info_h media) return MEDIA_CONTENT_ERROR_NOT_SUPPORTED; } - if (_media != NULL && STRING_VALID(_media->media_id) && _media->face_request_id > 0) { - ret = dcm_request_cancel_face(_media->face_request_id); - ret = _content_error_capi(ret); - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); + content_retip_if_fail(STRING_VALID(_media->media_id)); + content_retip_if_fail(_media->face_request_id > 0); - return ret; + ret = dcm_request_cancel_face(_media->face_request_id); + return _content_error_capi(ret); } int media_info_set_description(media_info_h media, const char *description) @@ -1843,50 +1631,38 @@ int media_info_set_description(media_info_h media, const char *description) int media_info_set_longitude(media_info_h media, double longitude) { - int ret = MEDIA_CONTENT_ERROR_NONE; content_warn("DEPRECATION WARNING: media_info_set_longitude() is deprecated and will be removed from next release."); media_info_s *_media = (media_info_s*)media; - if (_media != NULL) { - _media->longitude = longitude; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); - return ret; + _media->longitude = longitude; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_set_latitude(media_info_h media, double latitude) { - int ret = MEDIA_CONTENT_ERROR_NONE; content_warn("DEPRECATION WARNING: media_info_set_latitude() is deprecated and will be removed from next release."); media_info_s *_media = (media_info_s*)media; - if (_media != NULL) { - _media->latitude = latitude; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); - return ret; + _media->latitude = latitude; + + return MEDIA_CONTENT_ERROR_NONE; } int media_info_set_rating(media_info_h media, int rating) { - int ret = MEDIA_CONTENT_ERROR_NONE; content_warn("DEPRECATION WARNING: media_info_set_rating() is deprecated and will be removed from next release."); media_info_s *_media = (media_info_s*)media; - if (_media != NULL) { - _media->rating = rating; - } else { - content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER); - ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER; - } + content_retip_if_fail(media); - return ret; + _media->rating = rating; + + return MEDIA_CONTENT_ERROR_NONE; } #ifdef TIZEN_FEATURE_COMPATIBILITY