Sync common with product code 57/130757/1
authorMinje Ahn <minje.ahn@samsung.com>
Wed, 24 May 2017 01:11:45 +0000 (10:11 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Wed, 24 May 2017 01:11:45 +0000 (10:11 +0900)
Change-Id: I8b92e9c2a69681296981c4223a1b7112c4db52f6
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
include/media_bookmark.h
include/media_info_private.h
include_product/media_audio.h
include_product/media_info.h
include_product/media_info_private.h
include_product/media_storage.h
include_product/media_video.h
src/media_content.c

index d30745f..f4c52b0 100755 (executable)
@@ -183,13 +183,13 @@ int media_bookmark_get_bookmark_id(media_bookmark_h bookmark, int *bookmark_id);
 
 /**
  * @brief Gets the bookmark time marked parameter.
- * @details This function returns time offset in milliseconds from beginning of the movie on which bookmark
+ * @details This function returns time offset in seconds from beginning of the movie on which bookmark
  *          was placed.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  bookmark    The handle to media bookmark
- * @param[out] marked_time The bookmark time offset (in milliseconds)
+ * @param[out] marked_time The bookmark time offset (in seconds)
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
index 6d623d6..912a4f1 100755 (executable)
@@ -528,6 +528,7 @@ typedef struct _media_content_cb_data {
 #define DB_FIELD_STORAGE_PATH          "storage_path"
 
 /* DB field for Face */
+#define DB_FIELD_FACE_ID                               "face_uuid"
 #define DB_FIELD_FACE_TAG                      "face_tag"
 
 /* DB Query Keyword */
index 2b8fd7f..ff80926 100755 (executable)
@@ -390,7 +390,7 @@ int audio_meta_get_duration(audio_meta_h audio, int *duration);
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
  */
-int audio_meta_get_played_count(audio_meta_h audio, int *played_count);
+int audio_meta_get_played_count(audio_meta_h audio, int *played_count) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif. [Use media_info_get_played_time() instead]
@@ -408,7 +408,7 @@ int audio_meta_get_played_count(audio_meta_h audio, int *played_count);
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
  */
-int audio_meta_get_played_time(audio_meta_h audio, time_t *played_time);
+int audio_meta_get_played_time(audio_meta_h audio, time_t *played_time) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif.
@@ -428,7 +428,7 @@ int audio_meta_get_played_time(audio_meta_h audio, time_t *played_time);
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
  */
-int audio_meta_get_played_position(audio_meta_h audio, int *played_position);
+int audio_meta_get_played_position(audio_meta_h audio, int *played_position) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif. [Use media_info_increase_played_count() instead]
@@ -447,7 +447,7 @@ int audio_meta_get_played_position(audio_meta_h audio, int *played_position);
  *
  * @post audio_meta_update_to_db().
  */
-int audio_meta_set_played_count(audio_meta_h audio, int played_count);
+int audio_meta_set_played_count(audio_meta_h audio, int played_count) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif. [Use media_info_set_played_time() instead]
@@ -466,7 +466,7 @@ int audio_meta_set_played_count(audio_meta_h audio, int played_count);
  *
  * @post audio_meta_update_to_db().
  */
-int audio_meta_set_played_time(audio_meta_h audio, time_t played_time);
+int audio_meta_set_played_time(audio_meta_h audio, time_t played_time) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif.
@@ -488,7 +488,7 @@ int audio_meta_set_played_time(audio_meta_h audio, time_t played_time);
  *
  * @post audio_meta_update_to_db().
  */
-int audio_meta_set_played_position(audio_meta_h audio, int played_position);
+int audio_meta_set_played_position(audio_meta_h audio, int played_position) TIZEN_DEPRECATED_API;
 
 /**
  * @brief Updates an audio metadata with modified attributes in the media database.
index c959f73..0cd83ff 100755 (executable)
@@ -29,9 +29,9 @@ extern "C" {
 /**
  * @file media_info.h
  * @brief This file contains the media info API and related functions to proceed with it. \n
- *        You can use the functions to insert, clone, delete, get the number and content of files from DB. \n
- *        You can get and set properties and parameters such as storage type, provider, and category of media info, \n
- *        handling with thumbnail and updating media info to DB.
+ *        You can use the functions to insert, delete, count and get list of content files from media database. \n
+ *        You can get properties of content file such as size, mime_type, modified_time etc. And you can set properties such as provider, favorite etc. \n
+ *        And you can get bookmark, face, tag info related the content file.
  */
 
 
@@ -41,11 +41,9 @@ extern "C" {
  */
 
 /**
- * @brief  Inserts a media file into the media database.
- * @details This function inserts a media item into the content storage.
- *          Normally, inserting a media file in database is done automatically by the media server, without calling this function.
- *          This function is only called when the media server is busy and the user needs to get quick result of inserting
- *          e.g. Taking a photo while media server is busy and the user wants to see the quick snapshot of the photo taken.
+ * @brief  Inserts the content file into the media database.
+ * @details In general, you can use this API to insert content files into the media database. \n
+ *                You can use media_content_scan_file()/media_content_scan_folder() API instead of this API.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
@@ -60,8 +58,8 @@ extern "C" {
  *                   Or if you want to access only external storage by using  this API, you should add privilege http://tizen.org/privilege/externalstorage. \n
  *                   If you can access both storage, you must add all privilege.
  *
- * @param[in]  path The path to the media file
- * @param[out] info The handle to the media info
+ * @param[in]  path The path of the content file to add
+ * @param[out] info The handle of the inserted content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -78,14 +76,14 @@ extern "C" {
  * @pre This function requires opened connection to content service by media_content_connect().
  *
  * @see media_content_connect()
+ * @see media_content_scan_file()
+ * @see media_content_scan_folder()
  */
 int media_info_insert_to_db(const char *path, media_info_h *info);
 
 /**
- * @brief Inserts media files into the media database, asynchronously.
- * @details This function inserts media items into the content storage.
- *          Normally, inserting a media file in database is done automatically by the media server, without calling this function.
- *          This function invokes media_insert_completed_cb() callback function when insertion to the media database is finished.
+ * @brief Inserts content files into the media database, asynchronously.
+ * @details This function can insert multiple content files into the media database.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
@@ -99,7 +97,7 @@ int media_info_insert_to_db(const char *path, media_info_h *info);
  *                   Or if you want to access only external storage by using  this API, you should add privilege http://tizen.org/privilege/externalstorage. \n
  *                   If you can access both storage, you must add all privilege.
  *
- * @param[in] path_array   The path array to the media files
+ * @param[in] path_array   The path array of the content files to add
  * @param[in] array_length The length of the array
  * @param[in] callback     The callback to be invoked when media items inserted completely
  * @param[in] user_data    The user data to be passed to the callback function
@@ -125,7 +123,7 @@ int media_info_insert_batch_to_db(const char **path_array, unsigned int array_le
 
 /**
  * @brief Inserts the burst shot images into the media database, asynchronously.
- * @details This function inserts burst images into the content storage.
+ * @details This function inserts burst images into the media database.
  *          media_insert_burst_shot_completed_cb() will be called when insertion to media database is finished.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
@@ -140,7 +138,7 @@ int media_info_insert_batch_to_db(const char **path_array, unsigned int array_le
  *                   Or if you want to access only external storage with this API, you should add privilege http://tizen.org/privilege/externalstorage. \n
  *                   If you can access both storage, you must add all privilege.
  *
- * @param[in] path_array   The path array to the burst shot images
+ * @param[in] path_array   The path array of the burst shot images to add
  * @param[in] array_length The length of the array
  * @param[in] callback     The callback to be invoked when the images are inserted completely
  * @param[in] user_data    The user data to be passed to the callback function
@@ -165,17 +163,16 @@ int media_info_insert_batch_to_db(const char **path_array, unsigned int array_le
 int media_info_insert_burst_shot_to_db(const char **path_array, unsigned int array_length, media_insert_burst_shot_completed_cb callback, void *user_data);
 
 /**
- * @brief Deletes a media file from the media database.
- * @details This function deletes a media item from the content storage.
- *          Normally, deleting a media file in the database is done automatically by the media server, without calling this function.
- *          This function is only called when the media server is busy and user needs to get quick result of deleting.
+ * @brief Deletes the media information from the media database.
+ * @details This function only remove media information in the media database. \n
+ *               You can use media_content_scan_file()/media_content_scan_folder() API instead of this API if file is removed from the file system.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @privlevel public
  * @privilege %http://tizen.org/privilege/content.write
  *
- * @param[in] media_id  The ID to the media file
+ * @param[in] media_id  The media ID. It can get from media info handle.
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -191,22 +188,21 @@ int media_info_insert_burst_shot_to_db(const char **path_array, unsigned int arr
  * @pre This function requires opened connection to content service by media_content_connect().
  *
  * @see media_content_connect()
+ * @see media_content_scan_file()
+ * @see media_content_scan_folder()
  */
 int media_info_delete_from_db(const char *media_id);
 
 /**
- * @brief Deletes media files from the media database.
- *        The media files for deletion can be specified as a condition in a filter.
- * @details This function deletes the media items from the content storage.
- *          Normally, deleting  media files in the database are done automatically by the media server, without calling this function.
- *          This function is only called when the media server is busy and user needs to get quick result of deleting.
+ * @brief Deletes media information that meets the conditions of the filter from the media database.
+ * @details This function can delete multiple media information from the media database.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @privlevel public
  * @privilege %http://tizen.org/privilege/content.write
  *
- * @param[in] filter  The handle to filter
+ * @param[in] filter  The filter handle
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -222,6 +218,7 @@ int media_info_delete_from_db(const char *media_id);
  * @pre This function requires opened connection to content service by media_content_connect().
  *
  * @see media_content_connect()
+ * @see media_filter_create()
  */
 int media_info_delete_batch_from_db(filter_h filter);
 
@@ -254,7 +251,7 @@ int media_info_destroy(media_info_h media);
  *
  * @details This function copies the media info handle from a source to the destination.
  *          There is no media_info_create() function. The media_info_h is created internally and
- *          available through media info foreach function such as media_info_foreach_media_from_db().
+ *          available through media info foreach function such as media_info_foreach_media_from_db() or media_info_insert_to_db().
  *          To use this handle outside of these foreach functions, use this function.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
@@ -275,17 +272,21 @@ int media_info_destroy(media_info_h media);
  * @see media_info_destroy()
  * @see media_album_foreach_media_from_db()
  * @see media_playlist_foreach_media_from_db()
- * @see media_group_foreach_media_from_db
+ * @see media_group_foreach_media_from_db()
  * @see media_tag_foreach_media_from_db()
  * @see media_info_foreach_media_from_db()
+ * @see media_info_insert_to_db()
  * @see media_folder_foreach_media_from_db()
  */
 int media_info_clone(media_info_h *dst, media_info_h src);
 
 /**
  * @brief Gets the count of media info for the passed @a filter from the media database.
+ * @details If @c NULL is passed to the @a filter, then no filtering is applied.
+ *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
+ *
  * @param[in]  filter      The handle to filter
  * @param[out] media_count The count of media
  *
@@ -301,6 +302,7 @@ int media_info_clone(media_info_h *dst, media_info_h src);
  * @pre This function requires opened connection to content service by media_content_connect().
  *
  * @see media_content_connect()
+ * @see media_filter_create()
  */
 int media_info_get_media_count_from_db(filter_h filter, int *media_count);
 
@@ -342,6 +344,8 @@ int media_info_foreach_media_from_db(filter_h filter, media_info_cb callback, vo
 
 /**
  * @brief Gets the count of media tags for the passed @a filter in the given @a media_id from the media database.
+ * @details If @c NULL is passed to the @a filter, then no filtering is applied.
+ *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media_id  The ID of the media info
@@ -360,12 +364,14 @@ int media_info_foreach_media_from_db(filter_h filter, media_info_cb callback, vo
  * @pre This function requires opened connection to content service by media_content_connect().
  *
  * @see media_content_connect()
+ * @see media_filter_create()
  */
 int media_info_get_tag_count_from_db(const char *media_id, filter_h filter, int *tag_count);
 
 /**
  * @brief Iterates through the media tag in the given media info from the media database.
- * @details This function gets all the media tags associated with the given @a media_id and calls registered callback function for every retrieved media tag.
+ * @details This function gets all the media tags associated with the given @a media_id and calls registered callback function for every retrieved media tag. \n
+ *               If @c NULL is passed to the @a filter, then no filtering is applied.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
@@ -389,11 +395,14 @@ int media_info_get_tag_count_from_db(const char *media_id, filter_h filter, int
  *
  * @see media_content_connect()
  * @see #media_tag_cb
+ * @see media_filter_create()
  */
 int media_info_foreach_tag_from_db(const char *media_id, filter_h filter, media_tag_cb callback, void *user_data);
 
 /**
  * @brief Gets the number of bookmarks for the passed @a filter in the given media ID from the media database.
+ * @defails If @c NULL is passed to the @a filter, then no filtering is applied.
+ *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media_id        The ID of the media info
@@ -412,12 +421,14 @@ int media_info_foreach_tag_from_db(const char *media_id, filter_h filter, media_
  * @pre This function requires opened connection to content service by media_content_connect().
  *
  * @see media_content_connect()
+ * @see media_filter_create()
  */
 int media_info_get_bookmark_count_from_db(const char *media_id, filter_h filter, int *bookmark_count);
 
 /**
  * @brief Iterates through the media bookmark in the given media info from the media database.
  * @details This function gets all media bookmarks associated with the given media and calls registered callback function for every retrieved media bookmark.
+ *                If @c NULL is passed to the @a filter, then no filtering is applied.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
@@ -441,22 +452,30 @@ int media_info_get_bookmark_count_from_db(const char *media_id, filter_h filter,
  *
  * @see media_content_connect()
  * @see media_bookmark_cb()
+ * @see media_filter_create()
  */
 int media_info_foreach_bookmark_from_db(const char *media_id, filter_h filter, media_bookmark_cb callback, void *user_data);
 
 /**
  * @brief Gets the number of face for the passed @a media_id from the media database.
+ * @defails If @c NULL is passed to the @a filter, then no filtering is applied.
+ *
  * @since_tizen 3.0
+ *
  * @param[in] media_id media id
  * @param[in]  filter          The handle to the media filter
  * @param[out] face_count The count of media face
+ *
  * @return 0 on success, otherwise a negative error value.
+ *
  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED DB operation failed
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
  * @pre This function requires opened connection to content service by media_content_connect().
  * @see media_content_connect()
+ * @see media_filter_create()
  *
  */
 int media_info_get_face_count_from_db(const char *media_id, filter_h filter, int *face_count);
@@ -466,16 +485,21 @@ int media_info_get_face_count_from_db(const char *media_id, filter_h filter, int
  * @details This function gets all media face info associated with the given media id and
  * meeting desired filter option and calls registered callback function for
  * every retrieved media face info. If NULL is passed to the @a filter, no filtering is applied.
+ *
  * @since_tizen 3.0
+ *
  * @param [in] media_id media id
  * @param[in]  filter          The handle to the media filter
  * @param [in] callback The callback function to invoke
  * @param [in] user_data The user data to be passed to the callback function
+ *
  * @return 0 on success, otherwise a negative error value.
+ *
  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
  * @pre This function requires opened connection to content service by media_content_connect().
  * @see media_content_connect()
  * @see media_filter_create()
@@ -484,7 +508,7 @@ int media_info_get_face_count_from_db(const char *media_id, filter_h filter, int
 int media_info_foreach_face_from_db(const char *media_id, filter_h filter, media_face_cb callback, void *user_data);
 
 /**
- * @brief Gets the image metadata for a given media info.
+ * @brief Gets the image metadata handle for a given media info
  * @details This function returns an image metadata handle retrieved from the media info.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
@@ -506,7 +530,7 @@ int media_info_foreach_face_from_db(const char *media_id, filter_h filter, media
 int media_info_get_image(media_info_h media, image_meta_h *image);
 
 /**
- * @brief Gets a video metadata for a given media info.
+ * @brief Gets a video metadata handle for a given media info.
  * @details This function returns a video metadata handle retrieved from the media info handle.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
@@ -529,7 +553,7 @@ int media_info_get_image(media_info_h media, image_meta_h *image);
 int media_info_get_video(media_info_h media, video_meta_h *video);
 
 /**
- * @brief Gets an audio metadata for a given media info.
+ * @brief Gets an audio metadata handle for a given media info.
  * @details This function returns an audio metadata handle retrieved from the media info handle.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
@@ -552,11 +576,11 @@ int media_info_get_video(media_info_h media, video_meta_h *video);
 int media_info_get_audio(media_info_h media, audio_meta_h *audio);
 
 /**
- * @brief Gets the tag ID for the media info.
+ * @brief Gets the media ID
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media The media info handle
- * @param[out] media_id     The ID of the media info
+ * @param[out] media_id     The media ID
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -568,13 +592,13 @@ int media_info_get_audio(media_info_h media, audio_meta_h *audio);
 int media_info_get_media_id(media_info_h media, char **media_id);
 
 /**
- * @brief Gets the path to the media info.
+ * @brief Gets the full path of the content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a path using free().
  *
  * @param[in]  media The media info handle
- * @param[out] path  The path of the media info
+ * @param[out] path  The full path of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -588,13 +612,13 @@ int media_info_get_media_id(media_info_h media, char **media_id);
 int media_info_get_file_path(media_info_h media, char **path);
 
 /**
- * @brief Gets the name of the media info.
+ * @brief Gets the file name including the extension of the content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a name using free().
  *
  * @param[in]  media The media info handle
- * @param[out] name  The name of media info
+ * @param[out] name  The file name including the extension of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -607,11 +631,11 @@ int media_info_get_file_path(media_info_h media, char **path);
 int media_info_get_display_name(media_info_h media, char **name);
 
 /**
- * @brief Gets the content type of the media info.
+ * @brief Gets the content type of the content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media The media info handle
- * @param[out] type  The type of the media content (#media_content_type_e)
+ * @param[out] type  The content type of the content file (#media_content_type_e)
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -619,17 +643,19 @@ int media_info_get_display_name(media_info_h media, char **name);
  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
+ * @see #media_content_type_e
  */
 int media_info_get_media_type(media_info_h media, media_content_type_e *type);
 
 /**
- * @brief Gets the MIME type from the media info.
+ * @brief Gets the MIME type of the content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a mime_type using free().
  *
  * @param[in]  media     The media info handle
- * @param[out] mime_type The MIME type of the media info
+ * @param[out] mime_type The MIME type of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -642,11 +668,11 @@ int media_info_get_media_type(media_info_h media, media_content_type_e *type);
 int media_info_get_mime_type(media_info_h media, char **mime_type);
 
 /**
- * @brief Gets the media file size.
+ * @brief Gets the content file size.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media The media info handle
- * @param[out] size  The type of the media content
+ * @param[out] size  The content file size
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -658,11 +684,12 @@ 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);
 
 /**
- * @brief Gets the addition time of the media.
+ * @brief Gets the added time of the content file.
+ * @details The added time refers to the time that content file was first added to media database.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media      The media info handle
- * @param[out] added_time The added time to the DB
+ * @param[out] added_time The added time to the media database
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -674,12 +701,12 @@ int media_info_get_size(media_info_h media, unsigned long long *size);
 int media_info_get_added_time(media_info_h media, time_t *added_time);
 
 /**
- * @brief Gets the date of modification of media info.
+ * @brief Gets the modified time of the content file.
+ * @details The modified time refers to the last modification time provided by the file system.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media The media info handle
- * @param[out] time  The date of modification of the file \n
- *                   Get from the file.
+ * @param[out] time  The last modification time of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -691,13 +718,13 @@ int media_info_get_added_time(media_info_h media, time_t *added_time);
 int media_info_get_modified_time(media_info_h media, time_t *time);
 
 /**
- * @brief Gets the timeline of media info.
- * @details If the image file has the creation time, the value of the timeline is the creation time.\n
- *          Otherwise, the value of the timeline is the same as modified time.
+ * @brief Gets the timeline of content file.
+ * @details If the content file has the creation time information (like Content recored date or Image creation date), that value is timeline. \n
+ *               Otherwise, timeline value is the same as modified time.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media The media info handle
- * @param[out] time  The date of the timeline
+ * @param[out] time  The timeline of content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -709,7 +736,7 @@ int media_info_get_modified_time(media_info_h media, time_t *time);
 int media_info_get_timeline(media_info_h media, time_t *time);
 
 /**
- * @brief Gets the thumbnail of media info.
+ * @brief Gets the thumbnail path of content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a path using free(). \n
@@ -717,7 +744,7 @@ int media_info_get_timeline(media_info_h media, time_t *time);
  *                   Since 3.0, this function returns an empty string if media_info_create_thumbnail() has failed to create a thumbnail for the given media.
  *
  * @param[in]  media The media info handle
- * @param[out] path  The path to the thumbnail of the media info
+ * @param[out] path  The thumbnail path
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -730,7 +757,7 @@ int media_info_get_timeline(media_info_h media, time_t *time);
 int media_info_get_thumbnail_path(media_info_h media, char **path);
 
 /**
- * @brief Gets the description of media info.
+ * @brief Gets the description of content file.
  * @details If the value is an empty string, the method returns "Unknown". \n
  *                Since 3.0, if the media info has no description, the method returns empty string.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
@@ -738,7 +765,7 @@ int media_info_get_thumbnail_path(media_info_h media, char **path);
  * @remarks You must release @a description using free().
  *
  * @param[in]  media       The media info handle
- * @param[out] description The description of the media info
+ * @param[out] description The description of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -751,11 +778,11 @@ int media_info_get_thumbnail_path(media_info_h media, char **path);
 int media_info_get_description(media_info_h media, char **description);
 
 /**
- * @brief Gets the longitude of media info.
+ * @brief Gets the longitude of content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media     The media info handle
- * @param[out] longitude The longitude of the media info
+ * @param[out] longitude The longitude of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -767,11 +794,11 @@ int media_info_get_description(media_info_h media, char **description);
 int media_info_get_longitude(media_info_h media, double* longitude);
 
 /**
- * @brief Gets the latitude of media info.
+ * @brief Gets the latitude of content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media    The media info handle
- * @param[out] latitude The latitude of the media info
+ * @param[out] latitude The latitude of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -784,11 +811,11 @@ int media_info_get_longitude(media_info_h media, double* longitude);
 int media_info_get_latitude(media_info_h media, double* latitude);
 
 /**
- * @brief Gets the altitude of media info.
+ * @brief Gets the altitude of content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media    The media info handle
- * @param[out] altitude The altitude of the media info
+ * @param[out] altitude The altitude of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -800,11 +827,11 @@ int media_info_get_latitude(media_info_h media, double* latitude);
 int media_info_get_altitude(media_info_h media, double* altitude);
 
 /**
- * @brief Gets the weather of media info.
+ * @brief Gets the weather of content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media   The media info handle
- * @param[out] weather The weather of the media info
+ * @param[out] weather The weather of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -816,11 +843,11 @@ int media_info_get_altitude(media_info_h media, double* altitude);
 int media_info_get_weather(media_info_h media, char **weather);
 
 /**
- * @brief Gets the rating of media info.
+ * @brief Gets the rating of content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media  The media info handle
- * @param[out] rating The rating of the media info
+ * @param[out] rating The rating of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -832,12 +859,12 @@ int media_info_get_weather(media_info_h media, char **weather);
 int media_info_get_rating(media_info_h media, int *rating);
 
 /**
- * @brief Gets the favorite status of media info.
+ * @brief Gets the favorite status of content file which User set.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media     The media info handle
- * @param[out] favorite  @c true if media info is set as favorite,
- *                       otherwise @c false if media info is not set as favorite
+ * @param[out] favorite  @c true if content file is set as favorite,
+ *                       otherwise @c false if content file is not set as favorite
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -845,17 +872,19 @@ int media_info_get_rating(media_info_h media, int *rating);
  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
+ * @see media_info_set_favorite()
  */
 int media_info_get_favorite(media_info_h media, bool* favorite);
 
 /**
- * @brief Gets the author of media info.
+ * @brief Gets the author of content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a author using free().
  *
  * @param[in]  media  The media info handle
- * @param[out] author The author of the media info
+ * @param[out] author The author of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -868,13 +897,13 @@ int media_info_get_favorite(media_info_h media, bool* favorite);
 int media_info_get_author(media_info_h media, char **author);
 
 /**
- * @brief Gets the provider of media info.
+ * @brief Gets the provider of content file which User set.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a provider using free().
  *
  * @param[in]  media    The media info handle
- * @param[out] provider The provider of the media info
+ * @param[out] provider The provider of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -883,17 +912,19 @@ int media_info_get_author(media_info_h media, char **author);
  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
+ * @see media_info_set_provider()
  */
 int media_info_get_provider(media_info_h media, char **provider);
 
 /**
- * @brief Gets the content name of media info.
+ * @brief Gets the content name of content file which User set.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a content_name using free().
  *
  * @param[in]  media        The media info handle
- * @param[out] content_name The content name of the media info
+ * @param[out] content_name The content name of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -902,20 +933,22 @@ int media_info_get_provider(media_info_h media, char **provider);
  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
+ * @see media_info_set_content_name()
  */
 int media_info_get_content_name(media_info_h media, char **content_name);
 
 /**
- * @brief Gets the title of media info.
+ * @brief Gets the title of content file.
  * @details If the value is an empty string, the method returns "Unknown". \n
- *                Since 3.0, if the media info has no title, the method returns empty string.
+ *                Since 3.0, if the content file has no title, the method returns empty string.
  *
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a title using free().
  *
  * @param[in]  media  The media info handle
- * @param[out] title  The title of the media info
+ * @param[out] title  The title of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -928,13 +961,13 @@ int media_info_get_content_name(media_info_h media, char **content_name);
 int media_info_get_title(media_info_h media, char **title);
 
 /**
- * @brief Gets the category of media info.
+ * @brief Gets the category of content file which User set.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a category using free().
  *
  * @param[in]  media    The media info handle
- * @param[out] category The category of the media info
+ * @param[out] category The category of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -943,17 +976,19 @@ int media_info_get_title(media_info_h media, char **title);
  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
+ * @see media_info_set_category()
  */
 int media_info_get_category(media_info_h media, char **category);
 
 /**
- * @brief Gets the location tag of media info.
+ * @brief Gets the location tag of content file which User set.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a location_tag using free().
  *
  * @param[in]  media        The media info handle
- * @param[out] location_tag The location of the media info
+ * @param[out] location_tag The location of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -962,17 +997,19 @@ int media_info_get_category(media_info_h media, char **category);
  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
+ * @see media_info_set_location_tag()
  */
 int media_info_get_location_tag(media_info_h media, char **location_tag);
 
 /**
- * @brief Gets the age_rating of media info.
+ * @brief Gets the age_rating of content file which User set.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a age_rating using free().
  *
  * @param[in]  media      The media info handle
- * @param[out] age_rating The age rating of the media info
+ * @param[out] age_rating The age rating of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -981,17 +1018,19 @@ int media_info_get_location_tag(media_info_h media, char **location_tag);
  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
+ * @see media_info_set_age_rating()
  */
 int media_info_get_age_rating(media_info_h media, char **age_rating);
 
 /**
- * @brief Gets the keyword of media info.
+ * @brief Gets the keyword of content file which User set.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @remarks You must release @a keyword using free().
  *
  * @param[in]  media   The media info handle
- * @param[out] keyword The keyword of the media info
+ * @param[out] keyword The keyword of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -1000,17 +1039,19 @@ int media_info_get_age_rating(media_info_h media, char **age_rating);
  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
+ *
+ * @see media_info_set_keyword()
  */
 int media_info_get_keyword(media_info_h media, char **keyword);
 
 /**
- * @brief Gets the storage id of media info.
+ * @brief Gets the storage id of content file.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
  * @remarks You must release @a storage_id using free().
  *
  * @param[in]  media   The media info handle
- * @param[out] storage_id The storage id of the media info
+ * @param[out] storage_id The storage id of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -1040,7 +1081,7 @@ 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);
 
 /**
- * @brief Checks whether the media is 360 content.
+ * @brief Checks whether the content file is 360 content.
  * @since_tizen 3.0
  *
  * @param[in]  media  The media info handle
@@ -1056,11 +1097,11 @@ int media_info_is_drm(media_info_h media, bool *is_drm);
 int media_info_is_360_content(media_info_h media, bool *is_360);
 
 /**
- * @brief Gets the storage type of media info.
+ * @brief Gets the storage type of content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in]  media        The media info handle
- * @param[out] storage_type The storage type of the media info
+ * @param[out] storage_type The storage type of the content file
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -1132,7 +1173,7 @@ int media_info_get_media_from_db(const char *media_id, media_info_h *media);
 
 /**
  * @brief Increments the played count to content meta handle.
- * @details You can increase the played(opened) count of the media file.
+ * @details You can increase the played(opened) count of the content file.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
  * @param [in] media The handle to media info
@@ -1149,7 +1190,7 @@ int media_info_increase_played_count(media_info_h media);
 
 /**
  * @brief Sets the played time to content meta handle.
- * @details You can set the latest played(opened) time of the media file. the latest played time to be set the current time on the system.
+ * @details You can set the latest played(opened) time of the content file. the latest played time to be set the current time on the system.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
  * @param [in] media The handle to media info
@@ -1165,11 +1206,11 @@ int media_info_increase_played_count(media_info_h media);
 int media_info_set_played_time(media_info_h media);
 
 /**
- * @brief Sets the display name of media info.
+ * @brief Sets the file name including the extension of the content file.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @param[in] media        The media info handle
- * @param[in] display_name The display name of the media info
+ * @param[in] display_name The file name including the extension of the content file.
  *
  * @return @c 0 on success,
  *         otherwise a negative error value
@@ -1587,8 +1628,8 @@ int media_info_set_added_time(media_info_h media, time_t added_time);
 int media_info_move_to_db(media_info_h media, const char* dst_path);
 
 /**
- * @brief Creates a thumbnail image for the given media, asynchronously.
- * @details This function creates an thumbnail image for given media item and calls registered callback function for completion of creating the thumbnail.
+ * @brief Creates a thumbnail file for the given media, asynchronously.
+ * @details This function creates an thumbnail file for given media item and calls registered callback function for completion of creating the thumbnail.
  *          If a thumbnail already exists for the given media, then the path of thumbnail will be returned in callback function. \n
  *          Since 3.0, a thumbnail is not automatically extracted during media scanning. \n
  *          Therefore, if there exists no thumbnail for the given media, you MUST call this function to create a thumbnail.
@@ -1625,7 +1666,7 @@ int media_info_move_to_db(media_info_h media, const char* dst_path);
 int media_info_create_thumbnail(media_info_h media, media_thumbnail_completed_cb callback, void *user_data);
 
 /**
- * @brief Cancels the creation of image's thumbnail for the given media.
+ * @brief Cancels the creation of thumbnail file for the given media.
  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
  *
  * @privlevel public
index 259f24e..db59240 100755 (executable)
@@ -631,6 +631,7 @@ typedef struct _media_content_scan_cb_data_v2 {
 #define DB_FIELD_STORAGE_PATH          "storage_path"
 
 /* DB field for Face */
+#define DB_FIELD_FACE_ID                               "face_uuid"
 #define DB_FIELD_FACE_TAG                      "face_tag"
 
 /* DB field for PVR*/
index 9a4a7b0..b6f337a 100755 (executable)
@@ -245,6 +245,7 @@ int media_storage_clone(media_storage_h *dst, media_storage_h src);
 int media_storage_get_id(media_storage_h storage, char **storage_id);
 
 /**
+ * @deprecated Deprecated since 4.0.
  * @brief Gets the storage name of media storage.
  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
  *
@@ -261,7 +262,7 @@ int media_storage_get_id(media_storage_h storage, char **storage_id);
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
  */
-int media_storage_get_name(media_storage_h storage, char **storage_name);
+int media_storage_get_name(media_storage_h storage, char **storage_name) TIZEN_DEPRECATED_API;
 
 /**
  * @brief Gets the storage path of media storage.
index 9b465e6..9d8da34 100755 (executable)
@@ -375,7 +375,6 @@ int video_meta_get_height(video_meta_h video, int *height);
  */
 int video_meta_get_rotation(video_meta_h video, int *rotation);
 
-
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif. [Use media_info_get_played_count() instead]
  * @brief Gets the played count of the video.
@@ -391,7 +390,7 @@ int video_meta_get_rotation(video_meta_h video, int *rotation);
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
  */
-int video_meta_get_played_count(video_meta_h video, int *played_count);
+int video_meta_get_played_count(video_meta_h video, int *played_count) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif. [Use media_info_get_played_time() instead]
@@ -408,7 +407,7 @@ int video_meta_get_played_count(video_meta_h video, int *played_count);
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
  */
-int video_meta_get_played_time(video_meta_h video, time_t *played_time);
+int video_meta_get_played_time(video_meta_h video, time_t *played_time) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif.
@@ -428,7 +427,7 @@ int video_meta_get_played_time(video_meta_h video, time_t *played_time);
  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
  */
-int video_meta_get_played_position(video_meta_h video, int *played_position);
+int video_meta_get_played_position(video_meta_h video, int *played_position) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif. [Use media_info_increase_played_count() instead]
@@ -447,7 +446,7 @@ int video_meta_get_played_position(video_meta_h video, int *played_position);
  *
  * @post video_meta_update_to_db().
  */
-int video_meta_set_played_count(video_meta_h video, int played_count);
+int video_meta_set_played_count(video_meta_h video, int played_count) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif. [Use media_info_set_played_time() instead]
@@ -466,7 +465,7 @@ int video_meta_set_played_count(video_meta_h video, int played_count);
  *
  * @post video_meta_update_to_db().
  */
-int video_meta_set_played_time(video_meta_h video, time_t played_time);
+int video_meta_set_played_time(video_meta_h video, time_t played_time) TIZEN_DEPRECATED_API;
 
 /**
  * @deprecated Deprecated since @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif.
@@ -488,7 +487,7 @@ int video_meta_set_played_time(video_meta_h video, time_t played_time);
  *
  * @post video_meta_update_to_db().
  */
-int video_meta_set_played_position(video_meta_h video, int played_position);
+int video_meta_set_played_position(video_meta_h video, int played_position) TIZEN_DEPRECATED_API;
 
 /**
  * @brief Updates an video metadata with modified attributes in the media database.
index 395415a..b592b21 100755 (executable)
@@ -236,6 +236,9 @@ static int __media_content_create_attr_handle(void)
        media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        /* Playlist*/
+       ret = _media_filter_attribute_add(g_attr_handle, PLAYLIST_ID, DB_FIELD_PLAYLIST_ID);
+       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
        ret = _media_filter_attribute_add(g_attr_handle, PLAYLIST_NAME, DB_FIELD_PLAYLIST_NAME);
        media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
@@ -247,6 +250,9 @@ static int __media_content_create_attr_handle(void)
        media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        /* Tag*/
+       ret = _media_filter_attribute_add(g_attr_handle, TAG_ID, DB_FIELD_TAG_ID);
+       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
        ret = _media_filter_attribute_add(g_attr_handle, TAG_NAME, DB_FIELD_TAG_NAME);
        media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
@@ -255,6 +261,9 @@ static int __media_content_create_attr_handle(void)
        media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        /* Bookmark*/
+       ret = _media_filter_attribute_add(g_attr_handle, BOOKMARK_ID, DB_FIELD_BOOKMARK_ID);
+       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
        ret = _media_filter_attribute_add(g_attr_handle, BOOKMARK_MARKED_TIME, DB_FIELD_BOOKMARK_MARKED_TIME);
        media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
@@ -274,6 +283,10 @@ static int __media_content_create_attr_handle(void)
        /* Face */
        ret = _media_filter_attribute_add(g_attr_handle, MEDIA_FACE_TAG, DB_FIELD_FACE_TAG);
        media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+       ret = _media_filter_attribute_add(g_attr_handle, MEDIA_FACE_ID, DB_FIELD_FACE_ID);
+       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
 #ifdef _USE_SENIOR_MODE
        if (_media_content_is_support_senior_mode()) {
                ret = _media_filter_attribute_add(g_attr_handle, MEDIA_CONTACT, DB_FIELD_MEDIA_CONTACT);