-}
-
-int media_info_update_to_db(media_info_h media)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- media_info_s *_media = (media_info_s*)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;
- char *author_pinyin = NULL;
- char *provider_pinyin = NULL;
- char *content_name_pinyin = NULL;
- char *category_pinyin = NULL;
- char *location_tag_pinyin = NULL;
- char *age_rating_pinyin = NULL;
- char *keyword_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);
- if (STRING_VALID(_media->author))
- media_svc_get_pinyin(_media->author, &author_pinyin);
- if (STRING_VALID(_media->provider))
- media_svc_get_pinyin(_media->provider, &provider_pinyin);
- if (STRING_VALID(_media->content_name))
- media_svc_get_pinyin(_media->content_name, &content_name_pinyin);
- if (STRING_VALID(_media->category))
- media_svc_get_pinyin(_media->category, &category_pinyin);
- if (STRING_VALID(_media->location_tag))
- media_svc_get_pinyin(_media->location_tag, &location_tag_pinyin);
- if (STRING_VALID(_media->age_rating))
- media_svc_get_pinyin(_media->age_rating, &age_rating_pinyin);
- if (STRING_VALID(_media->keyword))
- media_svc_get_pinyin(_media->keyword, &keyword_pinyin);
- }
-
- char *album = NULL;
- char *artist = NULL;
- char *genre = NULL;
- char *recorded_date = NULL;
-
- if (_media->media_type == MEDIA_CONTENT_TYPE_VIDEO) {
- if (_media->video_meta->album != NULL)
- album = strdup(_media->video_meta->album);
- if (_media->video_meta->artist != NULL)
- artist = strdup(_media->video_meta->artist);
- if (_media->video_meta->genre != NULL)
- genre = strdup(_media->video_meta->genre);
- if (_media->video_meta->recorded_date != NULL)
- recorded_date = strdup(_media->video_meta->recorded_date);
- } else if ((_media->media_type == MEDIA_CONTENT_TYPE_MUSIC) || (_media->media_type == MEDIA_CONTENT_TYPE_SOUND)) {
- if (_media->audio_meta->album != NULL)
- album = strdup(_media->audio_meta->album);
- if (_media->audio_meta->artist != NULL)
- artist = strdup(_media->audio_meta->artist);
- if (_media->audio_meta->genre != NULL)
- genre = strdup(_media->audio_meta->genre);
- if (_media->audio_meta->recorded_date != NULL)
- recorded_date = strdup(_media->audio_meta->recorded_date);
- }
-
-#ifdef _USE_SENIOR_MODE
- if (_media_content_is_support_senior_mode()) {
- set_sql = sqlite3_mprintf("file_name=%Q, added_time=%d, description=%Q, longitude=%f, latitude=%f, altitude=%f, \
- played_count=%d, last_played_time=%d, last_played_position=%d, \
- rating=%d, favourite=%d, author=%Q, provider=%Q, content_name=%Q, category=%Q, location_tag=%Q, age_rating=%Q, keyword=%Q, weather=%Q, sync_status=%d, \
- file_name_pinyin=%Q, description_pinyin=%Q, author_pinyin=%Q, provider_pinyin=%Q, content_name_pinyin=%Q, category_pinyin=%Q, location_tag_pinyin=%Q, age_rating_pinyin=%Q, keyword_pinyin=%Q, title=%Q, contact=%Q, app_data=%Q",
- _media->display_name, _media->added_time, _media->description, _media->longitude, _media->latitude, _media->altitude, _media->played_count, _media->played_time, _media->played_position, _media->rating, _media->favourite,
- _media->author, _media->provider, _media->content_name, _media->category, _media->location_tag, _media->age_rating, _media->keyword, _media->weather, _media->sync_status,
- file_name_pinyin, description_pinyin, author_pinyin, provider_pinyin, content_name_pinyin, category_pinyin, location_tag_pinyin, age_rating_pinyin, keyword_pinyin, _media->title, _media->contact, _media->app_data);
- } else
-#endif
- {
- set_sql = sqlite3_mprintf("file_name=%Q, added_time=%d, description=%Q, longitude=%f, latitude=%f, altitude=%f, \
- played_count=%d, last_played_time=%d, last_played_position=%d, \
- rating=%d, favourite=%d, author=%Q, provider=%Q, content_name=%Q, category=%Q, location_tag=%Q, age_rating=%Q, keyword=%Q, weather=%Q, sync_status=%d, \
- file_name_pinyin=%Q, description_pinyin=%Q, author_pinyin=%Q, provider_pinyin=%Q, content_name_pinyin=%Q, category_pinyin=%Q, location_tag_pinyin=%Q, age_rating_pinyin=%Q, keyword_pinyin=%Q, title=%Q, \
- album=%Q, artist=%Q, genre=%Q, recorded_date=%Q",
- _media->display_name, _media->added_time, _media->description, _media->longitude, _media->latitude, _media->altitude, _media->played_count, _media->played_time, _media->played_position, _media->rating, _media->favourite,
- _media->author, _media->provider, _media->content_name, _media->category, _media->location_tag, _media->age_rating, _media->keyword, _media->weather, _media->sync_status,
- file_name_pinyin, description_pinyin, author_pinyin, provider_pinyin, content_name_pinyin, category_pinyin, location_tag_pinyin, age_rating_pinyin, keyword_pinyin, _media->title,
- album, artist, genre, recorded_date);
- }
-
- sql = sqlite3_mprintf("UPDATE %Q SET %s WHERE media_uuid=%Q", _media->storage_uuid, set_sql, _media->media_id);
-
- ret = _content_query_sql(sql);
- SQLITE3_SAFE_FREE(set_sql);
- SQLITE3_SAFE_FREE(sql);
-
- SAFE_FREE(file_name_pinyin);
- SAFE_FREE(description_pinyin);
- SAFE_FREE(author_pinyin);
- SAFE_FREE(provider_pinyin);
- SAFE_FREE(content_name_pinyin);
- SAFE_FREE(category_pinyin);
- SAFE_FREE(location_tag_pinyin);
- SAFE_FREE(age_rating_pinyin);
- SAFE_FREE(keyword_pinyin);
-
- SAFE_FREE(album);
- SAFE_FREE(artist);
- SAFE_FREE(genre);
- SAFE_FREE(recorded_date);
-
- if (ret == MEDIA_CONTENT_ERROR_NONE) {
- /* Send notification for this update */
- media_content_debug("Update is successfull. Send notification for this");
- if (_media->file_path && _media->mime_type)
- media_svc_publish_noti(MS_MEDIA_ITEM_FILE, MS_MEDIA_ITEM_UPDATE, _media->file_path, _media->media_type, _media->media_id, _media->mime_type);
- else
- media_content_error("Can't Send Noti : path or mime type is NULL");
- }
- } else {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- return ret;
-}
-
-int media_info_refresh_metadata_to_db(const char *media_id)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- media_content_warn("DEPRECATION WARNING: media_info_refresh_metadata_to_db() is deprecated and will be removed from next release.");
- media_info_h media = NULL;
- char *file_path = NULL;
- media_content_storage_e storage_type = 0;
- char storage_id[MEDIA_CONTENT_UUID_SIZE+1] = {0, };
- char repl_path[MAX_PATH_LEN] = {0, };
-
- if (!STRING_VALID(media_id)) {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- ret = media_info_get_media_from_db(media_id, &media);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- media_info_destroy(media);
- return ret;
- }
-
- ret = media_info_get_storage_type(media, &storage_type);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- media_info_destroy(media);
- return ret;
- }
-
- ret = media_info_get_file_path(media, &file_path);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- media_info_destroy(media);
- return ret;
- }
- memset(repl_path, 0, sizeof(repl_path));
- ret = _media_content_replace_path(file_path, repl_path);
-
- ret = _media_util_check_file_exist(repl_path);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- SAFE_FREE(file_path);
- media_info_destroy(media);
- return ret;
- }
-
- memset(storage_id, 0x00, sizeof(storage_id));
- ret = media_svc_get_storage_id(_content_get_db_handle(), repl_path, storage_id, _content_get_uid());
- if (ret != MS_MEDIA_ERR_NONE) {
- media_content_error("media_svc_get_storage_id failed : %d", ret);
- SAFE_FREE(file_path);
- media_info_destroy(media);
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
- }
-
- ret = media_svc_refresh_item(_content_get_db_handle(), storage_id, storage_type, repl_path, _content_get_uid());
- if (ret != MS_MEDIA_ERR_NONE)
- ret = _content_error_capi(MEDIA_CONTENT_TYPE, ret);
-
- SAFE_FREE(file_path);
- media_info_destroy(media);
-
- return ret;
-}
-
-int media_info_move_to_db(media_info_h media, const char* dst_path)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- media_svc_storage_type_e src_storage_type = 0;
- media_svc_storage_type_e dst_storage_type = 0;
- char storage_id[MEDIA_CONTENT_UUID_SIZE+1] = {0, };
- char repl_path[MAX_PATH_LEN] = {0, };
- char org_repl_path[MAX_PATH_LEN] = {0, };
-
- media_content_retvm_if(media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid media");
- media_content_retvm_if(!STRING_VALID(dst_path), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "invalid dst_path");
- memset(repl_path, 0, sizeof(repl_path));
- memset(org_repl_path, 0, sizeof(org_repl_path));
- ret = _media_content_replace_path(dst_path, repl_path);
- media_content_retvm_if(!STRING_VALID(repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
-
- media_info_s *_media = (media_info_s*)media;
-
- ret = _media_content_replace_path(_media->file_path, org_repl_path);
- media_content_retvm_if(!STRING_VALID(org_repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
-
- /* If the two paths are the same, do nothing */
- media_content_retvm_if(g_strcmp0(repl_path, org_repl_path) == 0, MEDIA_CONTENT_ERROR_NONE, "Same path");
-
- ret = __media_info_check_file_validity(repl_path);
- media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-
- ret = media_svc_get_storage_type(org_repl_path, &src_storage_type, _content_get_uid());
- if (ret != MS_MEDIA_ERR_NONE) {
- media_content_sec_error("media_svc_get_storage_type failed : %d", ret);
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
- }
-
- ret = media_svc_get_storage_type(repl_path, &dst_storage_type, _content_get_uid());
- if (ret != MS_MEDIA_ERR_NONE) {
- media_content_sec_error("media_svc_get_storage_type failed : %d", ret);
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
- }
-
- if (src_storage_type == MEDIA_SVC_STORAGE_EXTERNAL_USB || dst_storage_type == MEDIA_SVC_STORAGE_EXTERNAL_USB) {
- media_content_sec_error("Unsupported storage type src[%d] dst[%d]", src_storage_type, dst_storage_type);
- return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- memset(storage_id, 0x00, sizeof(storage_id));
- ret = media_svc_get_storage_id(_content_get_db_handle(), org_repl_path, storage_id, _content_get_uid());
- if (ret != MS_MEDIA_ERR_NONE) {
- media_content_error("media_svc_get_storage_id failed : %d", ret);
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
- }
-
- /*Delete the media info of the dest_path if it already exists.*/
- ret = media_svc_check_item_exist_by_path(_content_get_db_handle(), storage_id, repl_path);
- if (ret == MS_MEDIA_ERR_NONE) {
- /* Exists */
- ret = media_svc_delete_item_by_path(_content_get_db_handle(), storage_id, repl_path, _content_get_uid());
- if (ret != MS_MEDIA_ERR_NONE) {
- media_content_error("media_svc_delete_item_by_path failed : %d", ret);
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
- }
- } else if (ret != MS_MEDIA_ERR_NONE && ret != MS_MEDIA_ERR_DB_NO_RECORD) {
- media_content_error("media_svc_check_item_exist_by_path failed : %d", ret);
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
- }
-
- ret = media_svc_move_item(_content_get_db_handle(), storage_id, src_storage_type, org_repl_path, dst_storage_type, repl_path, _content_get_uid());
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
-}
-
-int media_info_create_thumbnail(media_info_h media, media_thumbnail_completed_cb callback, void *user_data)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- static unsigned int req_id = 0;
- char repl_path[MAX_PATH_LEN] = {0, };
- media_info_s *_media = (media_info_s*)media;
-
- if (_media != NULL && STRING_VALID(_media->media_id) && STRING_VALID(_media->file_path)) {
- memset(repl_path, 0, sizeof(repl_path));
- ret = _media_content_replace_path(_media->file_path, repl_path);
- media_content_retvm_if(!STRING_VALID(repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
-
- media_thumbnail_cb_s *_thumb_cb = (media_thumbnail_cb_s*)calloc(1, sizeof(media_thumbnail_cb_s));
- media_content_retvm_if(_thumb_cb == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- req_id++;
- _media->request_id = req_id;
-
- _thumb_cb->handle = _media;
- _thumb_cb->user_data = user_data;
- _thumb_cb->thumbnail_completed_cb = callback;
-
- ret = thumbnail_request_from_db_async(_media->request_id, repl_path, (ThumbFunc)__media_info_thumbnail_completed_cb, (void *)_thumb_cb, _content_get_uid());
- ret = _content_error_capi(MEDIA_THUMBNAIL_TYPE, ret);
- } else {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- return ret;
-}
-
-int media_info_cancel_thumbnail(media_info_h media)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- 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(MEDIA_THUMBNAIL_TYPE, ret);
- } else {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- return ret;
-}
-
-int media_info_start_face_detection(media_info_h media, media_face_detection_completed_cb callback, void *user_data)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- static unsigned int req_id = 0;
- media_info_s *_media = (media_info_s*)media;
- char repl_path[MAX_PATH_LEN] = {0, };
-
- if (!__media_info_isFaceRecognition_feature_supported()) {
- media_content_error("NOT_SUPPORTED(0x%08x)", MEDIA_CONTENT_ERROR_NOT_SUPPORTED);
- return MEDIA_CONTENT_ERROR_NOT_SUPPORTED;
- }
-
- if (_media != NULL && STRING_VALID(_media->media_id) && STRING_VALID(_media->file_path)) {
- memset(repl_path, 0, sizeof(repl_path));
- ret = _media_content_replace_path(_media->file_path, repl_path);
- media_content_retvm_if(!STRING_VALID(repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
- media_face_cb_s *_face_cb = (media_face_cb_s*)calloc(1, sizeof(media_face_cb_s));
- media_content_retvm_if(_face_cb == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- req_id++;
- _media->face_request_id = req_id;
-
- _face_cb->handle = _media;
- _face_cb->user_data = user_data;
- _face_cb->face_completed_cb = callback;
-
- ret = dcm_request_extract_face_async(_media->face_request_id, repl_path, (FaceFunc)__media_info_face_completed_cb, (void *)_face_cb, _content_get_uid());
- ret = _content_error_capi(MEDIA_THUMBNAIL_TYPE, ret);
- } else {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- return ret;
-}
-
-int media_info_cancel_face_detection(media_info_h media)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- media_info_s *_media = (media_info_s*)media;
- char repl_path[MAX_PATH_LEN] = {0, };
-
- if (!__media_info_isFaceRecognition_feature_supported()) {
- media_content_error("NOT_SUPPORTED(0x%08x)", MEDIA_CONTENT_ERROR_NOT_SUPPORTED);
- return MEDIA_CONTENT_ERROR_NOT_SUPPORTED;
- }
-
- if (_media != NULL && STRING_VALID(_media->media_id) && STRING_VALID(_media->file_path) && _media->face_request_id > 0) {
- memset(repl_path, 0, sizeof(repl_path));
- ret = _media_content_replace_path(_media->file_path, repl_path);
- media_content_retvm_if(!STRING_VALID(repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
- ret = dcm_request_cancel_face(_media->face_request_id, repl_path);
- ret = _content_error_capi(MEDIA_THUMBNAIL_TYPE, ret);
- } else {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- return ret;
-}
-
-static int __media_info_map_data_usr_to_svc(media_info_s *media, media_svc_content_info_s **service_content, media_content_storage_e storage_type)
-{
- media_content_retvm_if(media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid handle");
- char repl_path[MAX_PATH_LEN] = {0, };
- char *tmp_path = NULL;
-
- media_svc_content_info_s *svc_content_info = calloc(1, sizeof(media_svc_content_info_s));
- media_content_retvm_if(svc_content_info == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
-
- memset(repl_path, 0, sizeof(repl_path));
- tmp_path = g_strdup(media->file_path);
- _media_content_replace_path(tmp_path, repl_path);
- svc_content_info->path = g_strdup(repl_path);
- SAFE_FREE(tmp_path);
-
- svc_content_info->file_name = g_strdup(media->display_name);
- svc_content_info->media_type = media->media_type;
- svc_content_info->mime_type = g_strdup(media->mime_type);
- svc_content_info->size = media->size;
- svc_content_info->storage_type = storage_type;
- svc_content_info->storage_uuid = g_strdup(media->storage_uuid);
-
- svc_content_info->added_time = media->added_time;
- svc_content_info->modified_time = media->modified_time;
- svc_content_info->thumbnail_path = g_strdup(media->thumbnail_path);
- svc_content_info->is_drm = media->is_drm;
- svc_content_info->last_played_time = media->played_time;
- svc_content_info->played_count = media->played_count;
- svc_content_info->favourate = media->favourite;
-
-#ifdef _USE_SENIOR_MODE
- if (_media_content_is_support_senior_mode()) {
- svc_content_info->contact = g_strdup(media->contact);
- svc_content_info->app_data = g_strdup(media->app_data);
- }
-#endif
-
- svc_content_info->media_meta.title = g_strdup(media->title);
- svc_content_info->media_meta.rating = media->rating;
- svc_content_info->media_meta.description = g_strdup(media->description);
- svc_content_info->media_meta.longitude = media->longitude;
- svc_content_info->media_meta.latitude = media->latitude;
- svc_content_info->media_meta.altitude = media->altitude;
- svc_content_info->media_meta.weather = g_strdup(media->weather);
- svc_content_info->media_meta.category = g_strdup(media->category);
- svc_content_info->media_meta.keyword = g_strdup(media->keyword);
- svc_content_info->media_meta.location_tag = g_strdup(media->location_tag);
- svc_content_info->media_meta.content_name = g_strdup(media->content_name);
- svc_content_info->media_meta.age_rating = g_strdup(media->age_rating);
- svc_content_info->media_meta.author = g_strdup(media->author);
- svc_content_info->media_meta.provider = g_strdup(media->provider);
-
- svc_content_info->media_meta.album = g_strdup(media->audio_meta->album);
- svc_content_info->media_meta.artist = g_strdup(media->audio_meta->artist);
- svc_content_info->media_meta.genre = g_strdup(media->audio_meta->genre);
- svc_content_info->media_meta.recorded_date = g_strdup(media->audio_meta->recorded_date);
-
- *service_content = svc_content_info;
-
- return MEDIA_CONTENT_ERROR_NONE;
-}
-
-static int __media_info_set_str_data(media_info_h media, media_info_item_e data_type, const char *str_data)
-{
- media_info_s *_media = (media_info_s*)media;
-
- media_content_retvm_if(_media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid media");
-
- switch (data_type) {
- case MEDIA_INFO_PATH:
- SAFE_FREE(_media->file_path);
- if (STRING_VALID(str_data)) {
- _media->file_path = strdup(str_data);
- media_content_retvm_if(_media->file_path == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- } else {
- _media->file_path = NULL;
- }
- break;
- case MEDIA_INFO_MIME_TYPE:
- SAFE_FREE(_media->mime_type);
- if (STRING_VALID(str_data)) {
- _media->mime_type = strdup(str_data);
- media_content_retvm_if(_media->mime_type == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- } else {
- _media->mime_type = NULL;
- }
- break;
- case MEDIA_INFO_THUMBNAIL_PATH:
- SAFE_FREE(_media->thumbnail_path);
- if (STRING_VALID(str_data)) {
- _media->thumbnail_path = strdup(str_data);
- media_content_retvm_if(_media->thumbnail_path == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- } else {
- _media->thumbnail_path = NULL;
- }
- break;
- case MEDIA_INFO_TITLE:
- SAFE_FREE(_media->title);
- if (STRING_VALID(str_data)) {
- _media->title = strdup(str_data);
- media_content_retvm_if(_media->title == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- } else {
- _media->title = NULL;
- }
- break;
- case MEDIA_INFO_STORAGE_UUID:
- SAFE_FREE(_media->storage_uuid);
- if (STRING_VALID(str_data)) {
- _media->storage_uuid = strdup(str_data);
- media_content_retvm_if(_media->storage_uuid == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- } else {
- _media->storage_uuid = NULL;
- }
- break;
- case MEDIA_INFO_ALBUM:
- if (STRING_VALID(_media->media_id)) {
- if (_media->media_type == MEDIA_CONTENT_TYPE_VIDEO) {
- SAFE_FREE(_media->video_meta->album);
- if (str_data != NULL) {
- _media->video_meta->album = strdup(str_data);
- media_content_retvm_if(_media->video_meta->album == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- } else if ((_media->media_type == MEDIA_CONTENT_TYPE_MUSIC) || (_media->media_type == MEDIA_CONTENT_TYPE_SOUND)) {
- SAFE_FREE(_media->audio_meta->album);
- if (str_data != NULL) {
- _media->audio_meta->album = strdup(str_data);
- media_content_retvm_if(_media->audio_meta->album == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- }
- } else {
- SAFE_FREE(_media->video_meta->album);
- if (str_data != NULL) {
- _media->video_meta->album = strdup(str_data);
- media_content_retvm_if(_media->video_meta->album == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
-
- SAFE_FREE(_media->audio_meta->album);
- if (str_data != NULL) {
- _media->audio_meta->album = strdup(str_data);
- media_content_retvm_if(_media->audio_meta->album == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- }
- break;
- case MEDIA_INFO_ARTIST:
- if (STRING_VALID(_media->media_id)) {
- if (_media->media_type == MEDIA_CONTENT_TYPE_VIDEO) {
- SAFE_FREE(_media->video_meta->artist);
- if (str_data != NULL) {
- _media->video_meta->artist = strdup(str_data);
- media_content_retvm_if(_media->video_meta->artist == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- } else if ((_media->media_type == MEDIA_CONTENT_TYPE_MUSIC) || (_media->media_type == MEDIA_CONTENT_TYPE_SOUND)) {
- SAFE_FREE(_media->audio_meta->artist);
- if (str_data != NULL) {
- _media->audio_meta->artist = strdup(str_data);
- media_content_retvm_if(_media->audio_meta->artist == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- }
- } else {
- SAFE_FREE(_media->video_meta->artist);
- if (str_data != NULL) {
- _media->video_meta->artist = strdup(str_data);
- media_content_retvm_if(_media->video_meta->artist == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
-
- SAFE_FREE(_media->audio_meta->artist);
- if (str_data != NULL) {
- _media->audio_meta->artist = strdup(str_data);
- media_content_retvm_if(_media->audio_meta->artist == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- }
- break;
- case MEDIA_INFO_GENRE:
- if (STRING_VALID(_media->media_id)) {
- if (_media->media_type == MEDIA_CONTENT_TYPE_VIDEO) {
- SAFE_FREE(_media->video_meta->genre);
- if (str_data != NULL) {
- _media->video_meta->genre = strdup(str_data);
- media_content_retvm_if(_media->video_meta->genre == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- } else if ((_media->media_type == MEDIA_CONTENT_TYPE_MUSIC) || (_media->media_type == MEDIA_CONTENT_TYPE_SOUND)) {
- SAFE_FREE(_media->audio_meta->genre);
- if (str_data != NULL) {
- _media->audio_meta->genre = strdup(str_data);
- media_content_retvm_if(_media->audio_meta->genre == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- }
- } else {
- SAFE_FREE(_media->video_meta->genre);
- if (str_data != NULL) {
- _media->video_meta->genre = strdup(str_data);
- media_content_retvm_if(_media->video_meta->genre == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
-
- SAFE_FREE(_media->audio_meta->genre);
- if (str_data != NULL) {
- _media->audio_meta->genre = strdup(str_data);
- media_content_retvm_if(_media->audio_meta->genre == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- }
- break;
- case MEDIA_INFO_RECORDED_DATE:
- if (STRING_VALID(_media->media_id)) {
- if (_media->media_type == MEDIA_CONTENT_TYPE_VIDEO) {
- SAFE_FREE(_media->video_meta->recorded_date);
- if (str_data != NULL) {
- _media->video_meta->recorded_date = strdup(str_data);
- media_content_retvm_if(_media->video_meta->recorded_date == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- } else if ((_media->media_type == MEDIA_CONTENT_TYPE_MUSIC) || (_media->media_type == MEDIA_CONTENT_TYPE_SOUND)) {
- SAFE_FREE(_media->audio_meta->recorded_date);
- if (str_data != NULL) {
- _media->audio_meta->recorded_date = strdup(str_data);
- media_content_retvm_if(_media->audio_meta->recorded_date == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- }
- } else {
- SAFE_FREE(_media->video_meta->recorded_date);
- if (str_data != NULL) {
- _media->video_meta->recorded_date = strdup(str_data);
- media_content_retvm_if(_media->video_meta->recorded_date == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
-
- SAFE_FREE(_media->audio_meta->recorded_date);
- if (str_data != NULL) {
- _media->audio_meta->recorded_date = strdup(str_data);
- media_content_retvm_if(_media->audio_meta->recorded_date == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
- }
- }
- break;
- default:
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- return MEDIA_CONTENT_ERROR_NONE;
-}
-
-static int __media_info_destroy(media_info_h media)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- media_info_s *_media = (media_info_s*)media;
-
- if (_media) {
- SAFE_FREE(_media->media_id);
- SAFE_FREE(_media->file_path);
- SAFE_FREE(_media->display_name);
- SAFE_FREE(_media->mime_type);
- SAFE_FREE(_media->thumbnail_path);
- SAFE_FREE(_media->description);
- SAFE_FREE(_media->author);
- SAFE_FREE(_media->provider);
- SAFE_FREE(_media->content_name);
- SAFE_FREE(_media->category);
- SAFE_FREE(_media->location_tag);
- SAFE_FREE(_media->age_rating);
- SAFE_FREE(_media->keyword);
- SAFE_FREE(_media->title);
- SAFE_FREE(_media->weather);
- SAFE_FREE(_media->storage_uuid);
-
- if (_media->image_meta) {
- SAFE_FREE(_media->image_meta->media_id);
- SAFE_FREE(_media->image_meta->date_taken);
- SAFE_FREE(_media->image_meta->burst_id);
- SAFE_FREE(_media->image_meta->exposure_time);
- SAFE_FREE(_media->image_meta->model);
- SAFE_FREE(_media->image_meta->title);
- SAFE_FREE(_media->image_meta->weather);
-
- SAFE_FREE(_media->image_meta);
- }
-
- if (_media->video_meta) {
- SAFE_FREE(_media->video_meta->media_id);
- SAFE_FREE(_media->video_meta->title);
- SAFE_FREE(_media->video_meta->album);
- SAFE_FREE(_media->video_meta->artist);
- SAFE_FREE(_media->video_meta->album_artist);
- SAFE_FREE(_media->video_meta->genre);
- SAFE_FREE(_media->video_meta->composer);
- SAFE_FREE(_media->video_meta->year);
- SAFE_FREE(_media->video_meta->recorded_date);
- SAFE_FREE(_media->video_meta->copyright);
- SAFE_FREE(_media->video_meta->track_num);
-
- SAFE_FREE(_media->video_meta);
- }
-
- if (_media->audio_meta) {
- SAFE_FREE(_media->audio_meta->media_id);
- SAFE_FREE(_media->audio_meta->title);
- SAFE_FREE(_media->audio_meta->album);
- SAFE_FREE(_media->audio_meta->artist);
- SAFE_FREE(_media->audio_meta->album_artist);
- SAFE_FREE(_media->audio_meta->genre);
- SAFE_FREE(_media->audio_meta->composer);
- SAFE_FREE(_media->audio_meta->year);
- SAFE_FREE(_media->audio_meta->recorded_date);
- SAFE_FREE(_media->audio_meta->copyright);
- SAFE_FREE(_media->audio_meta->track_num);
-
- SAFE_FREE(_media->audio_meta);
- }
-
- ret = MEDIA_CONTENT_ERROR_NONE;
- } else {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- }
-
- return ret;
-}
-
-int media_info_insert_to_db_with_data(media_info_h media)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- int ret_cnt = 0;
- char repl_path[MAX_PATH_LEN] = {0, };
-
- media_content_warn("DEPRECATION WARNING: media_info_insert_to_db_with_data() is deprecated and will be removed from next release. Use media_info_insert_to_db() instead.");
-
- media_info_s *_media = (media_info_s*)media;
-
- media_content_retvm_if(_media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid media");
- media_content_retvm_if(!STRING_VALID(_media->file_path), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid file_path");
- media_content_retvm_if(!STRING_VALID(_media->storage_uuid), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid storage_uuid");
- media_content_retvm_if(_media->storage_type < 0, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid storage_type [%d]", _media->storage_type);
-
- media_content_sec_debug("storage[%d], path[%s], media_type[%d]", _media->storage_type, _media->file_path, _media->media_type);
-
- media_svc_content_info_s *svc_content_info = NULL;
-
- ret = __media_info_map_data_usr_to_svc(_media, &svc_content_info, _media->storage_type);
- media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "__media_info_map_data_usr_to_svc fail");
-
- ret = media_svc_insert_item_immediately_with_data(_content_get_db_handle(), svc_content_info, _content_get_uid());
- if (ret != MS_MEDIA_ERR_NONE) {
- media_content_sec_error("media_svc_insert_item_immediately_with_data failed : %d (%s)", ret, _media->file_path);
- media_svc_destroy_content_info(svc_content_info);
- SAFE_FREE(svc_content_info);
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
- }
- /*free the svc_content_info*/
- media_svc_destroy_content_info(svc_content_info);
- SAFE_FREE(svc_content_info);
-
- /*Fill out the handle*/
- memset(repl_path, 0, sizeof(repl_path));
- ret = _media_content_replace_path(_media->file_path, repl_path);
- char *media_file_path = g_strdup(repl_path);
-
- char *media_string_uuid = g_strdup(_media->storage_uuid);
-
- __media_info_destroy(media);
-RETRY:
- ret = _media_info_get_media_info_from_db(media_file_path, media_string_uuid, media);
- if (ret != MEDIA_CONTENT_ERROR_NONE) {
- media_content_error("_media_info_get_media_info_from_db fail [%d]", ret);
- if (ret == MEDIA_CONTENT_ERROR_DB_FAILED && ret_cnt < 5) {
- ret_cnt++;
- media_content_error("RETRY GETTING DATA");
- goto RETRY;
- }
- }
-
- SAFE_FREE(media_file_path);
- SAFE_FREE(media_string_uuid);
-
- return ret;
-}
-
-int media_info_create(const char *path, media_info_h *media)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- char storage_id[MEDIA_CONTENT_UUID_SIZE+1] = {0, };
- media_svc_storage_type_e storage_type = 0;
- char repl_path[MAX_PATH_LEN] = {0, };
- media_content_warn("DEPRECATION WARNING: media_info_create() is deprecated and will be removed from next release. Use media_info_insert_to_db() instead.");
-
- media_content_retvm_if(!STRING_VALID(path), MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid path");
- media_content_retvm_if(media == NULL, MEDIA_CONTENT_ERROR_INVALID_PARAMETER, "Invalid media");
- memset(repl_path, 0, sizeof(repl_path));
- ret = _media_content_replace_path(path, repl_path);
- media_content_retvm_if(!STRING_VALID(repl_path), MEDIA_CONTENT_ERROR_INVALID_OPERATION, "path replacement failed");
-
- memset(storage_id, 0x00, sizeof(storage_id));
-
- ret = __media_info_check_file_validity(repl_path);
- media_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());
- if (ret != MS_MEDIA_ERR_NONE) {
- media_content_error("media_svc_get_storage_id failed : %d", ret);
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
- }
-
- ret = media_svc_get_storage_type(repl_path, &storage_type, _content_get_uid());
- if (ret != MS_MEDIA_ERR_NONE) {
- media_content_sec_error("media_svc_get_storage_type failed : %d", ret);
- return _content_error_capi(MEDIA_CONTENT_TYPE, ret);
- }
-
- media_info_s *_media = (media_info_s*)calloc(1, sizeof(media_info_s));
- media_content_retvm_if(_media == NULL, MEDIA_CONTENT_ERROR_OUT_OF_MEMORY, "OUT_OF_MEMORY");
-
- _media->audio_meta = (audio_meta_s *)calloc(1, sizeof(audio_meta_s));
- if (_media->audio_meta == NULL) {
- SAFE_FREE(_media);
- media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
- return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
- }
-
- _media->video_meta = (video_meta_s *)calloc(1, sizeof(video_meta_s));
- if (_media->video_meta == NULL) {
- SAFE_FREE(_media->audio_meta);
- SAFE_FREE(_media);
- media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
- return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
- }
-
- _media->image_meta = (image_meta_s *)calloc(1, sizeof(image_meta_s));
- if (_media->image_meta == NULL) {
- SAFE_FREE(_media->audio_meta);
- SAFE_FREE(_media->video_meta);
- SAFE_FREE(_media);
- media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
- return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
- }
-
- _media->file_path = g_strdup(path);
- _media->storage_type = -1;
- _media->media_type = 0;
- _media->modified_time = 0;
- _media->size = 0;
- _media->request_id = 0;
- _media->longitude = MEDIA_SVC_DEFAULT_GPS_VALUE;
- _media->latitude = MEDIA_SVC_DEFAULT_GPS_VALUE;
- _media->altitude = MEDIA_SVC_DEFAULT_GPS_VALUE;
-
- if (STRING_VALID(storage_id)) {
- _media->storage_uuid = g_strdup(storage_id);
- _media->storage_type = storage_type;
- }
-
- *media = (media_info_h)_media;
-
- return ret;
-}
-
-int media_info_set_title(media_info_h media, const char *title)
-{
- media_content_warn("DEPRECATION WARNING: media_info_set_title() is deprecated and will be removed from next release.");
-
- return __media_info_set_str_data(media, MEDIA_INFO_TITLE, title);
-}
-
-int media_info_set_album(media_info_h media, const char *album)
-{
- media_content_warn("DEPRECATION WARNING: media_info_set_album() is deprecated and will be removed from next release.");
-
- return __media_info_set_str_data(media, MEDIA_INFO_ALBUM, album);
-}
-
-int media_info_set_artist(media_info_h media, const char *artist)
-{
- media_content_warn("DEPRECATION WARNING: media_info_set_artist() is deprecated and will be removed from next release.");
-
- return __media_info_set_str_data(media, MEDIA_INFO_ARTIST, artist);
-}
-
-int media_info_set_genre(media_info_h media, const char *genre)
-{
- media_content_warn("DEPRECATION WARNING: media_info_set_genre() is deprecated and will be removed from next release.");
-
- return __media_info_set_str_data(media, MEDIA_INFO_GENRE, genre);
-}
-
-int media_info_set_recorded_date(media_info_h media, const char *recorded_date)
-{
- media_content_warn("DEPRECATION WARNING: media_info_set_recorded_date() is deprecated and will be removed from next release.");
-
- return __media_info_set_str_data(media, MEDIA_INFO_RECORDED_DATE, recorded_date);
-}