Fix batch remove API
[platform/core/api/media-content.git] / include_product / media_info.h
1 /*
2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17
18 #ifndef __TIZEN_MEDIA_INFORMATION_H__
19 #define __TIZEN_MEDIA_INFORMATION_H__
20
21 #include <media_content_type.h>
22
23
24
25 #ifdef __cplusplus
26 extern "C" {
27 #endif /* __cplusplus */
28
29 /**
30  * @file media_info.h
31  * @brief This file contains the media info API and related functions to proceed with it. \n
32  *        You can use the functions to insert, delete, count and get list of content files from media database. \n
33  *        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
34  *        And you can get bookmark, face, tag info related the content file.
35  */
36
37
38 /**
39  * @addtogroup CAPI_CONTENT_MEDIA_INFO_MODULE
40  * @{
41  */
42
43 /**
44  * @brief  Inserts the content file into the media database.
45  * @details In general, you can use this API to insert content files into the media database. \n
46  *                You can use media_content_scan_file()/media_content_scan_folder() API instead of this API.
47  *
48  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
49  *
50  * @privlevel public
51  * @privilege %http://tizen.org/privilege/content.write \n
52  *                   %http://tizen.org/privilege/mediastorage \n
53  *                   %http://tizen.org/privilege/externalstorage
54  *
55  * @remarks You must release the handle using media_info_destroy(). \n
56  *                   You must add privilege http://tizen.org/privilege/content.write. And You add more privilege depending on your choice of contents path. \n
57  *                   If you want to access only internal storage by using  this API, you should add privilege http://tizen.org/privilege/mediastorage. \n
58  *                   Or if you want to access only external storage by using  this API, you should add privilege http://tizen.org/privilege/externalstorage. \n
59  *                   If you can access both storage, you must add all privilege.
60  *
61  * @param[in]  path The path of the content file to add
62  * @param[out] info The handle of the inserted content file
63  *
64  * @return @c 0 on success,
65  *         otherwise a negative error value
66  *
67  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
68  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
69  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
70  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
71  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
72  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
73  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
74  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
75  *
76  * @pre This function requires opened connection to content service by media_content_connect().
77  *
78  * @see media_content_connect()
79  * @see media_content_scan_file()
80  * @see media_content_scan_folder()
81  */
82 int media_info_insert_to_db(const char *path, media_info_h *info);
83
84 /**
85  * @brief Inserts content files into the media database, asynchronously.
86  * @details This function can insert multiple content files into the media database.
87  *
88  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
89  *
90  * @privlevel public
91  * @privilege %http://tizen.org/privilege/content.write \n
92  *                   %http://tizen.org/privilege/mediastorage \n
93  *                   %http://tizen.org/privilege/externalstorage
94  *
95  * @remarks You must add privilege http://tizen.org/privilege/content.write. And You add more privilege depending on your choice of contents path. \n
96  *                   If you want to access only internal storage by using  this API, you should add privilege http://tizen.org/privilege/mediastorage. \n
97  *                   Or if you want to access only external storage by using  this API, you should add privilege http://tizen.org/privilege/externalstorage. \n
98  *                   If you can access both storage, you must add all privilege.
99  *
100  * @param[in] path_array   The path array of the content files to add
101  * @param[in] array_length The length of the array
102  * @param[in] callback     The callback to be invoked when media items inserted completely
103  * @param[in] user_data    The user data to be passed to the callback function
104  *
105  * @return @c 0 on success,
106  *         otherwise a negative error value
107  *
108  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
109  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
110  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
111  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
112  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
113  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
114  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
115  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
116  *
117  * @pre This function requires opened connection to content service by media_content_connect().
118  *
119  * @see media_content_connect()
120  * @see media_insert_completed_cb()
121  */
122 int media_info_insert_batch_to_db(const char **path_array, unsigned int array_length, media_insert_completed_cb callback, void *user_data);
123
124 /**
125  * @brief Inserts the burst shot images into the media database, asynchronously.
126  * @details This function inserts burst images into the media database.
127  *          media_insert_burst_shot_completed_cb() will be called when insertion to media database is finished.
128  *
129  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
130  *
131  * @privlevel public
132  * @privilege %http://tizen.org/privilege/content.write \n
133  *                   %http://tizen.org/privilege/mediastorage \n
134  *                   %http://tizen.org/privilege/externalstorage
135  *
136  * @remarks You must add privilege http://tizen.org/privilege/content.write. And You add more privilege depending on your choice of contents path. \n
137  *                   If you want to access only internal storage with this API, you should add privilege http://tizen.org/privilege/mediastorage. \n
138  *                   Or if you want to access only external storage with this API, you should add privilege http://tizen.org/privilege/externalstorage. \n
139  *                   If you can access both storage, you must add all privilege.
140  *
141  * @param[in] path_array   The path array of the burst shot images to add
142  * @param[in] array_length The length of the array
143  * @param[in] callback     The callback to be invoked when the images are inserted completely
144  * @param[in] user_data    The user data to be passed to the callback function
145  *
146  * @return @c 0 on success,
147  *         otherwise a negative error value
148  *
149  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
150  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
151  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
152  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
153  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
154  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
155  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
156  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
157  *
158  * @pre This function requires opened connection to content service by media_content_connect().
159  *
160  * @see media_content_connect()
161  * @see media_insert_burst_shot_completed_cb()
162  */
163 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);
164
165 /**
166  * @brief Deletes the media information from the media database.
167  * @details This function only remove media information in the media database. \n
168  *               You can use media_content_scan_file()/media_content_scan_folder() API instead of this API if file is removed from the file system.
169  *
170  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
171  *
172  * @privlevel public
173  * @privilege %http://tizen.org/privilege/content.write
174  *
175  * @param[in] media_id  The media ID. It can get from media info handle.
176  *
177  * @return @c 0 on success,
178  *         otherwise a negative error value
179  *
180  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
181  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
182  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
183  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
184  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
185  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
186  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
187  *
188  * @pre This function requires opened connection to content service by media_content_connect().
189  *
190  * @see media_content_connect()
191  * @see media_content_scan_file()
192  * @see media_content_scan_folder()
193  */
194 int media_info_delete_from_db(const char *media_id);
195
196 /**
197  * @brief Deletes media information that meets the conditions of the filter from the media database.
198  * @details This function can delete multiple media information from the media database.
199  *
200  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
201  *
202  * @privlevel public
203  * @privilege %http://tizen.org/privilege/content.write
204  *
205  * @param[in] filter  The filter handle
206  *
207  * @return @c 0 on success,
208  *         otherwise a negative error value
209  *
210  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
211  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
212  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
213  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
214  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
215  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
216  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
217  *
218  * @pre This function requires opened connection to content service by media_content_connect().
219  *
220  * @see media_content_connect()
221  * @see media_filter_create()
222  */
223 int media_info_delete_batch_from_db(filter_h filter);
224
225
226 /**
227  * @brief Destroys media info.
228  * @details The function frees all resources related to the media info handle. This handle
229  *          can no longer be used to perform any operation. New media info handle has to
230  *          be created before the next usage.
231  *
232  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
233  *
234  * @param[in]  media  The media info handle
235  *
236  * @return @c 0 on success,
237  *         otherwise a negative error value
238  *
239  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
240  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
241  *
242  * @pre Get copy of media_info handle by calling media_info_clone().
243  *
244  * @see media_info_clone()
245  */
246 int media_info_destroy(media_info_h media);
247
248 /**
249  * @brief Clones the media info handle.
250  *
251  * @details This function copies the media info handle from a source to the destination.
252  *          There is no media_info_create() function. The media_info_h is created internally and
253  *          available through media info foreach function such as media_info_foreach_media_from_db() or media_info_insert_to_db().
254  *          To use this handle outside of these foreach functions, use this function.
255  *
256  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
257  *
258  * @remarks You must release the destination handle using media_info_destroy().
259  *
260  * @param[out] dst  The destination handle to the media info
261  * @param[in]  src  The source handle to media info
262  *
263  * @return @c 0 on success,
264  *         otherwise a negative error value
265  *
266  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
267  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
268  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
269  *
270  * @see media_info_destroy()
271  * @see media_album_foreach_media_from_db()
272  * @see media_playlist_foreach_media_from_db()
273  * @see media_group_foreach_media_from_db()
274  * @see media_tag_foreach_media_from_db()
275  * @see media_info_foreach_media_from_db()
276  * @see media_info_insert_to_db()
277  * @see media_folder_foreach_media_from_db()
278  */
279 int media_info_clone(media_info_h *dst, media_info_h src);
280
281 /**
282  * @brief Gets the count of media info for the passed @a filter from the media database.
283  * @details If @c NULL is passed to the @a filter, then no filtering is applied.
284  *
285  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
286  *
287  *
288  * @param[in]  filter      The handle to filter
289  * @param[out] media_count The count of media
290  *
291  * @return @c 0 on success,
292  *         otherwise a negative error value
293  *
294  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
295  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
296  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
297  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
298  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
299  *
300  * @pre This function requires opened connection to content service by media_content_connect().
301  *
302  * @see media_content_connect()
303  * @see media_filter_create()
304  */
305 int media_info_get_media_count_from_db(filter_h filter, int *media_count);
306
307 /**
308  * @brief Iterates through media info from the media database.
309  * @details This function gets all media info handles meeting the given @a filter.
310  *          The @a callback function will be invoked for every retrieved media info.
311  *          If @c NULL is passed to the @a filter, then no filtering is applied.
312  *
313  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
314  *
315  * @remarks Do not call updating DB function like media_info_update_to_db(), media_info_refresh_metadata_to_db(), audio_meta_update_to_db(), image_meta_update_to_db() and video_meta_update_to_db()  in your callback function,
316  *                   your callback function is invoked as inline function.
317  *                   So, your callback function is in read state in SQLite. When you are in read state, sometimes you do not update DB.
318  *                   We do not recommend you call updating DB function in callback of foreach function.
319  *
320  * @param[in] filter    The media info handle filter
321  * @param[in] callback  The callback function to be invoked
322  * @param[in] user_data The user data to be passed to the callback function
323  *
324  * @return @c 0 on success,
325  *         otherwise a negative error value
326  *
327  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
328  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
329  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
330  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
331  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
332  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
333  *
334  * @pre  This function requires opened connection to content service by media_content_connect().
335  * @post This function invokes media_info_cb().
336  *
337  * @see media_content_connect()
338  * @see #media_info_cb
339  * @see media_info_filter_create()
340  */
341 int media_info_foreach_media_from_db(filter_h filter, media_info_cb callback, void *user_data);
342
343 /**
344  * @brief Gets the count of media tags for the passed @a filter in the given @a media_id from the media database.
345  * @details If @c NULL is passed to the @a filter, then no filtering is applied.
346  *
347  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
348  *
349  * @param[in]  media_id  The ID of the media info
350  * @param[in]  filter    The handle to the media filter
351  * @param[out] tag_count The count of the media tag
352  *
353  * @return @c 0 on success,
354  *         otherwise a negative error value
355  *
356  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
357  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
358  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
359  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
360  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
361  *
362  * @pre This function requires opened connection to content service by media_content_connect().
363  *
364  * @see media_content_connect()
365  * @see media_filter_create()
366  */
367 int media_info_get_tag_count_from_db(const char *media_id, filter_h filter, int *tag_count);
368
369 /**
370  * @brief Iterates through the media tag in the given media info from the media database.
371  * @details This function gets all the media tags associated with the given @a media_id and calls @a callback for every retrieved media tag. \n
372  *               If @c NULL is passed to the @a filter, then no filtering is applied.
373  *
374  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
375  *
376  * @param[in] media_id  The ID of the media info
377  * @param[in] filter    The handle to the media filter
378  * @param[in] callback  The callback function to be invoked
379  * @param[in] user_data The user data to be passed to the callback function
380  *
381  * @return @c 0 on success,
382  *         otherwise a negative error value
383  *
384  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
385  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
386  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
387  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
388  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
389  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
390  *
391  * @pre  This function requires opened connection to content service by media_content_connect().
392  * @post This function invokes media_tag_cb().
393  *
394  * @see media_content_connect()
395  * @see #media_tag_cb
396  * @see media_filter_create()
397  */
398 int media_info_foreach_tag_from_db(const char *media_id, filter_h filter, media_tag_cb callback, void *user_data);
399
400 /**
401  * @brief Gets the number of bookmarks for the passed @a filter in the given media ID from the media database.
402  * @details If @c NULL is passed to the @a filter, then no filtering is applied.
403  *
404  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
405  *
406  * @param[in]  media_id        The ID of the media info
407  * @param[in]  filter          The handle to the media filter
408  * @param[out] bookmark_count  The count of the media tag
409  *
410  * @return @c 0 on success,
411  *         otherwise a negative error value
412  *
413  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
414  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
415  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
416  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
417  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
418  *
419  * @pre This function requires opened connection to content service by media_content_connect().
420  *
421  * @see media_content_connect()
422  * @see media_filter_create()
423  */
424 int media_info_get_bookmark_count_from_db(const char *media_id, filter_h filter, int *bookmark_count);
425
426 /**
427  * @brief Iterates through the media bookmark in the given media info from the media database.
428  * @details This function gets all media bookmarks associated with the given media and calls @a callback for every retrieved media bookmark.
429  *                If @c NULL is passed to the @a filter, then no filtering is applied.
430  *
431  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
432  *
433  * @param[in] media_id  The ID of the media info
434  * @param[in] filter    The handle to the media filter
435  * @param[in] callback  The callback function to be invoked
436  * @param[in] user_data The user data to be passed to the callback function
437  *
438  * @return @c 0 on success,
439  *         otherwise a negative error value
440  *
441  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
442  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
443  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
444  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
445  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
446  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
447  *
448  * @pre  This function requires opened connection to content service by media_content_connect().
449  * @post This function invokes media_bookmark_cb().
450  *
451  * @see media_content_connect()
452  * @see media_bookmark_cb()
453  * @see media_filter_create()
454  */
455 int media_info_foreach_bookmark_from_db(const char *media_id, filter_h filter, media_bookmark_cb callback, void *user_data);
456
457 /**
458  * @brief Gets the number of face for the passed @a media_id from the media database.
459  * @details If @c NULL is passed to the @a filter, then no filtering is applied.
460  *
461  * @since_tizen 3.0
462  *
463  * @param[in] media_id media id
464  * @param[in]  filter          The handle to the media filter
465  * @param[out] face_count The count of media face
466  *
467  * @return 0 on success, otherwise a negative error value.
468  *
469  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
470  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
471  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED DB operation failed
472  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
473  *
474  * @pre This function requires opened connection to content service by media_content_connect().
475  * @see media_content_connect()
476  * @see media_filter_create()
477  *
478  */
479 int media_info_get_face_count_from_db(const char *media_id, filter_h filter, int *face_count);
480
481 /**
482  * @brief Iterates through the media files with optional @a media_id in the given @a face @a face from the media database.
483  * @details This function gets all media face info associated with the given media id and
484  * meeting desired filter option and calls @a callback for
485  * every retrieved media face info. If NULL is passed to the @a filter, no filtering is applied.
486  *
487  * @since_tizen 3.0
488  *
489  * @param [in] media_id media id
490  * @param[in]  filter          The handle to the media filter
491  * @param [in] callback The callback function to invoke
492  * @param [in] user_data The user data to be passed to the callback function
493  *
494  * @return 0 on success, otherwise a negative error value.
495  *
496  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
497  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
498  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY Out of memory
499  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
500  *
501  * @pre This function requires opened connection to content service by media_content_connect().
502  * @see media_content_connect()
503  * @see media_filter_create()
504  *
505  */
506 int media_info_foreach_face_from_db(const char *media_id, filter_h filter, media_face_cb callback, void *user_data);
507
508 /**
509  * @brief Gets the image metadata handle for a given media info
510  * @details This function returns an image metadata handle retrieved from the media info.
511  *
512  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
513  *
514  * @remarks You must release the @a image handle using image_meta_destroy().
515  *
516  * @param[in]  media  The media info handle
517  * @param[out] image  A handle to image metadata
518  *
519  * @return @c 0 on success,
520  *         otherwise a negative error value
521  *
522  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
523  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
524  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
525  *
526  * @see image_meta_destroy()
527  */
528 int media_info_get_image(media_info_h media, image_meta_h *image);
529
530 /**
531  * @brief Gets a video metadata handle for a given media info.
532  * @details This function returns a video metadata handle retrieved from the media info handle.
533  *
534  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
535  *
536  * @remarks You must release the @a video handle using video_meta_destroy().
537  *
538  * @param[in]  media The media info handle
539  * @param[out] video A handle to the video meta
540  *
541  * @return @c 0 on success,
542  *         otherwise a negative error value
543  *
544  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
545  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
546  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
547  *
548  * @see video_meta_destroy()
549  */
550 int media_info_get_video(media_info_h media, video_meta_h *video);
551
552 /**
553  * @brief Gets an audio metadata handle for a given media info.
554  * @details This function returns an audio metadata handle retrieved from the media info handle.
555  *
556  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
557  *
558  * @remarks You must release the @a audio handle using audio_meta_destroy().
559  *
560  * @param[in]  media The media info handle
561  * @param[out] audio A handle to the audio meta
562  *
563  * @return @c 0 on success,
564  *         otherwise a negative error value
565  *
566  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
567  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
568  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
569  *
570  * @see audio_meta_destroy()
571  */
572 int media_info_get_audio(media_info_h media, audio_meta_h *audio);
573
574 /**
575  * @brief Gets the media ID
576  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
577  *
578  * @param[in]  media The media info handle
579  * @param[out] media_id     The media ID
580  *
581  * @return @c 0 on success,
582  *         otherwise a negative error value
583  *
584  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
585  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
586  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
587  */
588 int media_info_get_media_id(media_info_h media, char **media_id);
589
590 /**
591  * @brief Gets the full path of the content file.
592  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
593  *
594  * @remarks You must release @a path using free().
595  *
596  * @param[in]  media The media info handle
597  * @param[out] path  The full path of the content file
598  *
599  * @return @c 0 on success,
600  *         otherwise a negative error value
601  *
602  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
603  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
604  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
605  *
606  */
607 int media_info_get_file_path(media_info_h media, char **path);
608
609 /**
610  * @brief Gets the file name including the extension of the content file.
611  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
612  *
613  * @remarks You must release @a name using free().
614  *
615  * @param[in]  media The media info handle
616  * @param[out] name  The file name including the extension of the content file
617  *
618  * @return @c 0 on success,
619  *         otherwise a negative error value
620  *
621  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
622  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
623  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
624  */
625 int media_info_get_display_name(media_info_h media, char **name);
626
627 /**
628  * @brief Gets the content type of the content file.
629  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
630  *
631  * @param[in]  media The media info handle
632  * @param[out] type  The content type of the content file (#media_content_type_e)
633  *
634  * @return @c 0 on success,
635  *         otherwise a negative error value
636  *
637  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
638  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
639  *
640  * @see #media_content_type_e
641  */
642 int media_info_get_media_type(media_info_h media, media_content_type_e *type);
643
644 /**
645  * @brief Gets the MIME type of the content file.
646  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
647  *
648  * @remarks You must release @a mime_type using free().
649  *
650  * @param[in]  media     The media info handle
651  * @param[out] mime_type The MIME type of the content file
652  *
653  * @return @c 0 on success,
654  *         otherwise a negative error value
655  *
656  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
657  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
658  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
659  */
660 int media_info_get_mime_type(media_info_h media, char **mime_type);
661
662 /**
663  * @brief Gets the content file size.
664  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
665  *
666  * @param[in]  media The media info handle
667  * @param[out] size  The content file size
668  *
669  * @return @c 0 on success,
670  *         otherwise a negative error value
671  *
672  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
673  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
674  */
675 int media_info_get_size(media_info_h media, unsigned long long *size);
676
677 /**
678  * @brief Gets the added time of the content file.
679  * @details The added time refers to the time that content file was first added to media database.
680  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
681  *
682  * @param[in]  media      The media info handle
683  * @param[out] added_time The added time to the media database
684  *
685  * @return @c 0 on success,
686  *         otherwise a negative error value
687  *
688  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
689  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
690  */
691 int media_info_get_added_time(media_info_h media, time_t *added_time);
692
693 /**
694  * @brief Gets the modified time of the content file.
695  * @details The modified time refers to the last modification time provided by the file system.
696  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
697  *
698  * @param[in]  media The media info handle
699  * @param[out] time  The last modification time of the content file
700  *
701  * @return @c 0 on success,
702  *         otherwise a negative error value
703  *
704  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
705  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
706  */
707 int media_info_get_modified_time(media_info_h media, time_t *time);
708
709 /**
710  * @brief Gets the timeline of content file.
711  * @details If the content file has the creation time information (like Content recored date or Image creation date), that value is timeline. \n
712  *               Otherwise, timeline value is the same as modified time.
713  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
714  *
715  * @param[in]  media The media info handle
716  * @param[out] time  The timeline of content file
717  *
718  * @return @c 0 on success,
719  *         otherwise a negative error value
720  *
721  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
722  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
723  */
724 int media_info_get_timeline(media_info_h media, time_t *time);
725
726 /**
727  * @brief Gets the thumbnail path of content file.
728  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
729  *
730  * @remarks You must release @a path using free(). \n
731  *                   If the thumbnail extraction for the given media has not been requested yet, this API returns NULL. To create a thumbnail, you should use media_info_create_thumbnail() API. \n
732  *                   Since 3.0, this function returns an empty string if media_info_create_thumbnail() has failed to create a thumbnail for the given media.
733  *
734  * @param[in]  media The media info handle
735  * @param[out] path  The thumbnail path
736  *
737  * @return @c 0 on success,
738  *         otherwise a negative error value
739  *
740  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
741  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
742  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
743  */
744 int media_info_get_thumbnail_path(media_info_h media, char **path);
745
746 /**
747  * @brief Gets the description of content file.
748  * @details If the value is an empty string, the method returns "Unknown". \n
749  *                Since 3.0, if the media info has no description, the method returns empty string.
750  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
751  *
752  * @remarks You must release @a description using free().
753  *
754  * @param[in]  media       The media info handle
755  * @param[out] description The description of the content file
756  *
757  * @return @c 0 on success,
758  *         otherwise a negative error value
759  *
760  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
761  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
762  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
763  */
764 int media_info_get_description(media_info_h media, char **description);
765
766 /**
767  * @brief Gets the longitude of content file.
768  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
769  *
770  * @param[in]  media     The media info handle
771  * @param[out] longitude The longitude of the content file
772  *
773  * @return @c 0 on success,
774  *         otherwise a negative error value
775  *
776  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
777  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
778  */
779 int media_info_get_longitude(media_info_h media, double *longitude);
780
781 /**
782  * @brief Gets the latitude of content file.
783  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
784  *
785  * @param[in]  media    The media info handle
786  * @param[out] latitude The latitude of the content file
787  *
788  * @return @c 0 on success,
789  *         otherwise a negative error value
790  *
791  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
792  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
793  *
794  */
795 int media_info_get_latitude(media_info_h media, double* latitude);
796
797 /**
798  * @brief Gets the altitude of content file.
799  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
800  *
801  * @param[in]  media    The media info handle
802  * @param[out] altitude The altitude of the content file
803  *
804  * @return @c 0 on success,
805  *         otherwise a negative error value
806  *
807  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
808  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
809  */
810 int media_info_get_altitude(media_info_h media, double* altitude);
811
812 /**
813  * @brief Gets the weather of content file.
814  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
815  *
816  * @param[in]  media   The media info handle
817  * @param[out] weather The weather of the content file
818  *
819  * @return @c 0 on success,
820  *         otherwise a negative error value
821  *
822  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
823  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
824  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
825  */
826 int media_info_get_weather(media_info_h media, char **weather);
827
828 /**
829  * @brief Gets the rating of content file.
830  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
831  *
832  * @param[in]  media  The media info handle
833  * @param[out] rating The rating of the content file
834  *
835  * @return @c 0 on success,
836  *         otherwise a negative error value
837  *
838  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
839  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
840  */
841 int media_info_get_rating(media_info_h media, int *rating);
842
843 /**
844  * @brief Gets the favorite status of content file which User set.
845  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
846  *
847  * @param[in]  media     The media info handle
848  * @param[out] favorite  @c true if content file is set as favorite,
849  *                       otherwise @c false if content file is not set as favorite
850  *
851  * @return @c 0 on success,
852  *         otherwise a negative error value
853  *
854  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
855  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
856  *
857  * @see media_info_set_favorite()
858  */
859 int media_info_get_favorite(media_info_h media, bool* favorite);
860
861 /**
862  * @brief Gets the author of content file.
863  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
864  *
865  * @remarks You must release @a author using free().
866  *
867  * @param[in]  media  The media info handle
868  * @param[out] author The author of the content file
869  *
870  * @return @c 0 on success,
871  *         otherwise a negative error value
872  *
873  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
874  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
875  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
876  */
877 int media_info_get_author(media_info_h media, char **author);
878
879 /**
880  * @brief Gets the provider of content file which User set.
881  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
882  *
883  * @remarks You must release @a provider using free().
884  *
885  * @param[in]  media    The media info handle
886  * @param[out] provider The provider of the content file
887  *
888  * @return @c 0 on success,
889  *         otherwise a negative error value
890  *
891  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
892  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
893  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
894  *
895  * @see media_info_set_provider()
896  */
897 int media_info_get_provider(media_info_h media, char **provider);
898
899 /**
900  * @deprecated Deprecated since 4.0. Redundant, use media_info_get_display_name() instead.
901  * @brief Gets the content name of content file which User set.
902  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
903  *
904  * @remarks You must release @a content_name using free().
905  *
906  * @param[in]  media        The media info handle
907  * @param[out] content_name The content name of the content file
908  *
909  * @return @c 0 on success,
910  *         otherwise a negative error value
911  *
912  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
913  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
914  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
915  *
916  * @see media_info_set_content_name()
917  */
918 int media_info_get_content_name(media_info_h media, char **content_name) TIZEN_DEPRECATED_API;
919
920 /**
921  * @brief Gets the title of content file.
922  * @details If the value is an empty string, the method returns "Unknown". \n
923  *                Since 3.0, if the content file has no title, the method returns empty string.
924  *
925  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
926  *
927  * @remarks You must release @a title using free().
928  *
929  * @param[in]  media  The media info handle
930  * @param[out] title  The title of the content file
931  *
932  * @return @c 0 on success,
933  *         otherwise a negative error value
934  *
935  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
936  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
937  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
938  */
939 int media_info_get_title(media_info_h media, char **title);
940
941 /**
942  * @brief Gets the category of content file which User set.
943  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
944  *
945  * @remarks You must release @a category using free().
946  *
947  * @param[in]  media    The media info handle
948  * @param[out] category The category of the content file
949  *
950  * @return @c 0 on success,
951  *         otherwise a negative error value
952  *
953  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
954  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
955  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
956  *
957  * @see media_info_set_category()
958  */
959 int media_info_get_category(media_info_h media, char **category);
960
961 /**
962  * @brief Gets the location tag of content file which User set.
963  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
964  *
965  * @remarks You must release @a location_tag using free().
966  *
967  * @param[in]  media        The media info handle
968  * @param[out] location_tag The location of the content file
969  *
970  * @return @c 0 on success,
971  *         otherwise a negative error value
972  *
973  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
974  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
975  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
976  *
977  * @see media_info_set_location_tag()
978  */
979 int media_info_get_location_tag(media_info_h media, char **location_tag);
980
981 /**
982  * @brief Gets the age_rating of content file which User set.
983  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
984  *
985  * @remarks You must release @a age_rating using free().
986  *
987  * @param[in]  media      The media info handle
988  * @param[out] age_rating The age rating of the content file
989  *
990  * @return @c 0 on success,
991  *         otherwise a negative error value
992  *
993  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
994  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
995  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
996  *
997  * @see media_info_set_age_rating()
998  */
999 int media_info_get_age_rating(media_info_h media, char **age_rating);
1000
1001 /**
1002  * @deprecated Deprecated since 4.0. Use media_tag_insert_to_db() instead.
1003  * @brief Gets the keyword of content file which User set.
1004  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1005  *
1006  * @remarks You must release @a keyword using free().
1007  *
1008  * @param[in]  media   The media info handle
1009  * @param[out] keyword The keyword of the content file
1010  *
1011  * @return @c 0 on success,
1012  *         otherwise a negative error value
1013  *
1014  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1015  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1016  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1017  *
1018  * @see media_info_set_keyword()
1019  */
1020 int media_info_get_keyword(media_info_h media, char **keyword) TIZEN_DEPRECATED_API;
1021
1022 /**
1023  * @brief Gets the storage id of content file.
1024  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
1025  *
1026  * @remarks You must release @a storage_id using free().
1027  *
1028  * @param[in]  media   The media info handle
1029  * @param[out] storage_id The storage id of the content file
1030  *
1031  * @return @c 0 on success,
1032  *         otherwise a negative error value
1033  *
1034  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1035  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1036  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1037  */
1038 int media_info_get_storage_id(media_info_h media, char **storage_id);
1039
1040 /**
1041  * @brief Checks whether the media is protected via DRM.
1042  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1043  *
1044  * @param[in]  media  The media info handle
1045  * @param[out] is_drm @c true if media is DRM media,
1046  *                    otherwise @c false if media is not DRM media
1047  *
1048  * @return @c 0 on success,
1049  *         otherwise a negative error value
1050  *
1051  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1052  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1053  */
1054 int media_info_is_drm(media_info_h media, bool *is_drm);
1055
1056 /**
1057  * @brief Checks whether the content file is 360 content.
1058  * @since_tizen 3.0
1059  *
1060  * @param[in]  media  The media info handle
1061  * @param[out] is_360 @c true if media is 360 content,
1062  *                    otherwise @c false if media is not 360 content
1063  *
1064  * @return @c 0 on success,
1065  *         otherwise a negative error value
1066  *
1067  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1068  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1069  */
1070 int media_info_is_360_content(media_info_h media, bool *is_360);
1071
1072 /**
1073  * @brief Gets the storage type of content file.
1074  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1075  *
1076  * @param[in]  media        The media info handle
1077  * @param[out] storage_type The storage type of the content file
1078  *
1079  * @return @c 0 on success,
1080  *         otherwise a negative error value
1081  *
1082  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1083  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1084  */
1085 int media_info_get_storage_type(media_info_h media, media_content_storage_e *storage_type);
1086
1087 /**
1088  * @deprecated Deprecated since 4.0. \n
1089  *        This function does not guarantee independence of the played count value between applications. It is recommended that the value is managed by the application.
1090  * @brief Gets number which represents how many times given content has been played.
1091  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
1092  *
1093  * @param [in] media The handle to media info
1094  * @param [out] played_count The counter of content played
1095  *
1096  * @return 0 on success,
1097  *         otherwise a negative error value
1098  *
1099  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1100  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1101  */
1102 int media_info_get_played_count(media_info_h media, int *played_count) TIZEN_DEPRECATED_API;
1103
1104 /**
1105  * @deprecated Deprecated since 4.0. \n
1106  *        This function does not guarantee independence of the played time value between applications. It is recommended that the value is managed by the application.
1107  * @brief Gets the content's played time parameter.
1108  * @details Function returns content's elapsed playback time parameter as period
1109  *          starting from the beginning of the track.
1110  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
1111  *
1112  * @param [in] media The handle to media info
1113  * @param [out] played_time The elapsed time of the content
1114  *
1115  * @return 0 on success,
1116  *         otherwise a negative error value
1117  *
1118  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1119  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1120  */
1121 int media_info_get_played_time(media_info_h media, time_t *played_time) TIZEN_DEPRECATED_API;
1122
1123 /**
1124  * @brief Gets the media info from the media database.
1125  *
1126  * @details This function creates a new media handle from the media database by the given @a media_id.
1127  *          Media info will be created and filled with information.
1128  *
1129  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1130  *
1131  * @remarks You must release @a media using media_tag_destroy().
1132  *
1133  * @param[in]  media_id The ID of media info
1134  * @param[out] media    The media handle associated with the media ID
1135  *
1136  * @return @c 0 on success,
1137  *         otherwise a negative error value
1138  *
1139  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1140  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1141  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1142  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1143  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED DB Operation failed
1144  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY DB Operation busy
1145  *
1146  * @pre This function requires opened connection to content service by media_content_connect().
1147  *
1148  * @see media_content_connect()
1149  * @see media_info_destroy()
1150  */
1151 int media_info_get_media_from_db(const char *media_id, media_info_h *media);
1152
1153 /**
1154  * @deprecated Deprecated since 4.0. \n
1155  *        This function does not guarantee independence of the played count value between applications. It is recommended that the value is managed by the application.
1156  * @brief Increments the played count to content meta handle.
1157  * @details You can increase the played(opened) count of the content file.
1158  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
1159  *
1160  * @param [in] media The handle to media info
1161  *
1162  * @return 0 on success,
1163  *         otherwise a negative error value
1164  *
1165  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1166  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1167  *
1168  * @post media_info_update_to_db()
1169  */
1170 int media_info_increase_played_count(media_info_h media) TIZEN_DEPRECATED_API;
1171
1172 /**
1173  * @deprecated Deprecated since 4.0. \n
1174  *        This function does not guarantee independence of the played time value between applications. It is recommended that the value is managed by the application.
1175  * @brief Sets the played time to content meta handle.
1176  * @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.
1177  * @since_tizen @if MOBILE 2.4 @elseif WEARABLE 3.0 @endif
1178  *
1179  * @param [in] media The handle to media info
1180  *
1181  * @return 0 on success,
1182  *         otherwise a negative error value
1183  *
1184  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1185  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1186  *
1187  * @post media_info_update_to_db()
1188  */
1189 int media_info_set_played_time(media_info_h media) TIZEN_DEPRECATED_API;
1190
1191 /**
1192  * @deprecated Deprecated since 4.0. Redundant, use media_info_move_to_db() instead.
1193  * @brief Sets the file name including the extension of the content file.
1194  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1195  *
1196  * @param[in] media        The media info handle
1197  * @param[in] display_name The file name including the extension of the content file.
1198  *
1199  * @return @c 0 on success,
1200  *         otherwise a negative error value
1201  *
1202  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1203  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1204  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1205  *
1206  * @post media_info_update_to_db().
1207  *
1208  */
1209 int media_info_set_display_name(media_info_h media, const char *display_name) TIZEN_DEPRECATED_API;
1210
1211 /**
1212  * @deprecated Deprecated since 4.0. This data cannot be saved to the file.
1213  * @brief Sets the description of media info.
1214  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1215  *
1216  * @param[in] media       The media info handle
1217  * @param[in] description The description of the media info
1218  *
1219  * @return @c 0 on success,
1220  *         otherwise a negative error value
1221  *
1222  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1223  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1224  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1225  *
1226  * @post media_info_update_to_db().
1227  *
1228  */
1229 int media_info_set_description(media_info_h media, const char *description) TIZEN_DEPRECATED_API;
1230
1231 /**
1232  * @deprecated Deprecated since 4.0. This data cannot be saved to the file.
1233  * @brief Sets the longitude of media info.
1234  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1235  *
1236  * @param[in] media     The media info handle
1237  * @param[in] longitude The longitude of the media info
1238  *
1239  * @return @c 0 on success,
1240  *         otherwise a negative error value
1241  *
1242  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1243  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1244  *
1245  * @post media_info_update_to_db().
1246  */
1247 int media_info_set_longitude(media_info_h media, double longitude) TIZEN_DEPRECATED_API;
1248
1249 /**
1250  * @deprecated Deprecated since 4.0. This data cannot be saved to the file.
1251  * @brief Sets the latitude of media info.
1252  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1253  *
1254  * @param[in] media    The media info handle
1255  * @param[in] latitude The latitude of the media info
1256  *
1257  * @return @c 0 on success,
1258  *         otherwise a negative error value
1259  *
1260  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1261  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1262  *
1263  * @post media_info_update_to_db().
1264  */
1265 int media_info_set_latitude(media_info_h media, double latitude) TIZEN_DEPRECATED_API;
1266
1267 /**
1268  * @deprecated Deprecated since 4.0. This data cannot be saved to the file.
1269  * @brief Sets the altitude of media info.
1270  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1271  *
1272  * @param[in] media    The media info handle
1273  * @param[in] altitude The altitude of the media info
1274  *
1275  * @return @c 0 on success,
1276  *         otherwise a negative error value
1277  *
1278  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1279  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1280  *
1281  * @post media_info_update_to_db().
1282  */
1283 int media_info_set_altitude(media_info_h media, double altitude) TIZEN_DEPRECATED_API;
1284
1285 /**
1286  * @brief Sets the weather of media info.
1287  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1288  *
1289  * @param[in] media   The media info handle
1290  * @param[in] weather The weather of the media info
1291  *
1292  * @return @c 0 on success,
1293  *         otherwise a negative error value
1294  *
1295  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1296  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1297  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1298  *
1299  * @post media_info_update_to_db().
1300  *
1301  */
1302 int media_info_set_weather(media_info_h media, const char *weather);
1303
1304 /**
1305  * @deprecated Deprecated since 4.0. This data cannot be saved to the file.
1306  * @brief Sets the rating of media info.
1307  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1308  *
1309  * @param[in] media  The media info handle
1310  * @param[in] rating The rating of the media info
1311  *
1312  * @return @c 0 on success,
1313  *         otherwise a negative error value
1314  *
1315  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1316  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1317  *
1318  * @post media_info_update_to_db().
1319  */
1320 int media_info_set_rating(media_info_h media, int rating) TIZEN_DEPRECATED_API;
1321
1322 /**
1323  * @brief Sets the favorite of media info.
1324  * @details This function can mark favorite of the media. If set to @c true, this fuction record the time of the change moment. \n
1325  *                So, If you use it in order parameter, you can sort the order of the time was a favorite. \n
1326  *                Or, if you use it in condition parameter, you can get the result of the favorite media.
1327  *
1328  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1329  *
1330  * @param[in] media    The media info handle
1331  * @param[in] favorite Set @c true to set the media info as favorite,
1332  *                     otherwise set @c false to not set the media info as favorite
1333  *
1334  * @return @c 0 on success,
1335  *         otherwise a negative error value
1336  *
1337  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1338  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1339  */
1340 int media_info_set_favorite(media_info_h media, bool favorite);
1341
1342 /**
1343  * @deprecated Deprecated since 4.0. This data cannot be saved to the file.
1344  * @brief Sets the author of media info.
1345  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1346  *
1347  * @param[in] media  The media info handle
1348  * @param[in] author The author of the media info
1349  *
1350  * @return @c 0 on success,
1351  *         otherwise a negative error value
1352  *
1353  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1354  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1355  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1356  */
1357 int media_info_set_author(media_info_h media, const char *author) TIZEN_DEPRECATED_API;
1358
1359 /**
1360  * @brief Sets the provider of media info.
1361  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1362  *
1363  * @param[in] media    The media info handle
1364  * @param[in] provider The provider of the media info
1365  *
1366  * @return @c 0 on success,
1367  *         otherwise a negative error value
1368  *
1369  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1370  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1371  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1372  */
1373 int media_info_set_provider(media_info_h media, const char *provider);
1374
1375 /**
1376  * @deprecated Deprecated since 4.0. Redundant, use media_info_move_to_db() instead.
1377  * @brief Sets the content name of media info.
1378  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1379  *
1380  * @param[in] media        The media info handle
1381  * @param[in] content_name The content name of the media info
1382  *
1383  * @return @c 0 on success,
1384  *         otherwise a negative error value
1385  *
1386  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1387  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1388  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1389  *
1390  * @post media_info_update_to_db()
1391  */
1392 int media_info_set_content_name(media_info_h media, const char *content_name) TIZEN_DEPRECATED_API;
1393
1394 /**
1395  * @brief Sets the category of media info.
1396  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1397  *
1398  * @param[in] media    The media info handle
1399  * @param[in] category The category of the media info
1400  *
1401  * @return @c 0 on success,
1402  *         otherwise a negative error value
1403  *
1404  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1405  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1406  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1407  *
1408  * @post media_info_update_to_db()
1409  */
1410 int media_info_set_category(media_info_h media, const char *category);
1411
1412 /**
1413  * @brief Sets the location tag of media info.
1414  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1415  *
1416  * @param[in] media        The media info handle
1417  * @param[in] location_tag The location of the media info
1418  *
1419  * @return @c 0 on success,
1420  *         otherwise a negative error value
1421  *
1422  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1423  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1424  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1425  *
1426  * @post media_info_update_to_db()
1427  */
1428 int media_info_set_location_tag(media_info_h media, const char *location_tag);
1429
1430 /**
1431  * @brief Sets the age rating of media info.
1432  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1433  *
1434  * @param[in] media      The media info handle
1435  * @param[in] age_rating The age rating of the media info
1436  *
1437  * @return @c 0 on success,
1438  *         otherwise a negative error value
1439  *
1440  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1441  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1442  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1443  *
1444  * @post media_info_update_to_db()
1445  */
1446 int media_info_set_age_rating(media_info_h media, const char *age_rating);
1447
1448 /**
1449  * @deprecated Deprecated since 4.0. Use media_tag_insert_to_db() instead.
1450  * @brief Sets the keyword of media info.
1451  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1452  *
1453  * @param[in] media   The media info handle
1454  * @param[in] keyword The keyword of the media info
1455  *
1456  * @return @c 0 on success,
1457  *         otherwise a negative error value
1458  *
1459  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1460  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1461  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1462  *
1463  * @post media_info_update_to_db()
1464  */
1465 int media_info_set_keyword(media_info_h media, const char *keyword) TIZEN_DEPRECATED_API;
1466
1467 /**
1468  * @brief Updates the media info to the media database.
1469  *
1470  * @details The function updates the given media info in the media database.
1471  *
1472  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1473  * @privlevel public
1474  * @privilege %http://tizen.org/privilege/content.write
1475  *
1476  * @remarks The function should be called after any change in media, to be updated to the media
1477  *          database. For example, after using media_info_set_favorite()
1478  *          for setting the name of the media, the media_info_update_to_db() function should be called so as to update
1479  *          the given media info attributes in the media database.
1480  *
1481  * @param[in] media The media info handle
1482  *
1483  * @return @c 0 on success,
1484  *         otherwise a negative error value
1485  *
1486  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1487  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1488  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1489  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
1490  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
1491  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
1492  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
1493  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1494  *
1495  * @pre This function requires opened connection to content service by media_content_connect().
1496  *
1497  * @see media_content_connect()
1498  * @see media_info_set_favorite()
1499  * @see media_info_set_provider()
1500  * @see media_info_set_category()
1501  * @see media_info_set_location_tag()
1502  * @see media_info_set_age_rating()
1503  */
1504 int media_info_update_to_db(media_info_h media);
1505
1506 /**
1507  * @deprecated Deprecated since 4.0. Use media_content_scan_file() instead.
1508  * @brief Refreshes the media metadata to the media database.
1509  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1510  *
1511  * @privlevel public
1512  * @privilege %http://tizen.org/privilege/content.write \n
1513  *                   %http://tizen.org/privilege/mediastorage \n
1514  *                   %http://tizen.org/privilege/externalstorage
1515  *
1516  * @remarks You must add privilege http://tizen.org/privilege/content.write. And You add more privilege depending on your choice of contents path. \n
1517  *                   If you want to access only internal storage by using  this API, you should add privilege http://tizen.org/privilege/mediastorage. \n
1518  *                   Or if you want to access only external storage by using  this API, you should add privilege http://tizen.org/privilege/externalstorage. \n
1519  *                   If you can access both storage, you should add all privilege.
1520  *
1521  * @param[in] media_id The ID of the media info
1522  *
1523  * @return @c 0 on success,
1524  *         otherwise a negative error value
1525  *
1526  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1527  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1528  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1529  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
1530  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
1531  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
1532  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
1533  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1534  *
1535  * @pre This function requires opened connection to content service by media_content_connect().
1536  *
1537  * @see media_content_connect()
1538  */
1539 int media_info_refresh_metadata_to_db(const char *media_id) TIZEN_DEPRECATED_API;
1540
1541 /**
1542  * @deprecated Deprecated since 4.0. This data cannot be saved to the file.
1543  * @brief Sets the added time of media info.
1544  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1545  *
1546  * @param[in] media      The media info handle
1547  * @param[in] added_time The added time of the media info
1548  *
1549  * @return @c 0 on success,
1550  *         otherwise a negative error value
1551  *
1552  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1553  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1554  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1555  *
1556  * @post media_info_update_to_db()
1557  */
1558 int media_info_set_added_time(media_info_h media, time_t added_time) TIZEN_DEPRECATED_API;
1559
1560 /**
1561  * @brief Moves the media info to the given destination path in the media database.
1562  * @details After moving or renaming a file in the filesystem, call this function to update the database.
1563  *
1564  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1565  *
1566  * @privlevel public
1567  * @privilege %http://tizen.org/privilege/content.write \n
1568  *                   %http://tizen.org/privilege/mediastorage \n
1569  *                   %http://tizen.org/privilege/externalstorage
1570  *
1571  * @remarks You must add privilege http://tizen.org/privilege/content.write. And You add more privilege depending on your choice of contents path. \n
1572  *                   If you want to access only internal storage by using  this API, you should add privilege http://tizen.org/privilege/mediastorage. \n
1573  *                   Or if you want to access only external storage by using this API, you should add privilege http://tizen.org/privilege/externalstorage. \n
1574  *                   If you can access both storage, you should add all privilege.
1575  *
1576  * @param[in] media    The media info handle
1577  * @param[in] dst_path The path of destination
1578  *
1579  * @return @c 0 on success,
1580  *         otherwise a negative error value
1581  *
1582  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1583  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter (Especially, if the request is duplicated, this error returns.)
1584  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1585  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
1586  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
1587  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
1588  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
1589  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1590  *
1591  * @pre This function requires opened connection to content service by media_content_connect().
1592  *
1593  * @see media_content_connect()
1594  * @see media_content_scan_folder()
1595  */
1596 int media_info_move_to_db(media_info_h media, const char* dst_path);
1597
1598 /**
1599  * @brief Creates a thumbnail file for the given media, asynchronously.
1600  * @details This function creates an thumbnail file for given media item and calls @a callback for completion of creating the thumbnail.
1601  *          If a thumbnail already exists for the given media, then the path of thumbnail will be returned in callback function. \n
1602  *          Since 3.0, a thumbnail is not automatically extracted during media scanning. \n
1603  *          Therefore, if there exists no thumbnail for the given media, you MUST call this function to create a thumbnail.
1604  *
1605  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1606  *
1607  * @privlevel public
1608  * @privilege %http://tizen.org/privilege/content.write
1609  *
1610  * @remarks If you want to destroy media handle before callback invoked, you must cancel thumbnail request by using media_info_cancel_thumbnail() \n
1611  *          Since 3.0, if creation of a thumbnail is failed, empty string will be passed through media_thumbnail_completed_cb().
1612  *          Items in external storage except MMC not supported.
1613  *
1614  * @param[in] media     The media info handle
1615  * @param[in] callback  The callback function to be invoked
1616  * @param[in] user_data The user data to be passed to the callback function
1617  *
1618  * @return @c 0 on success,
1619  *         otherwise a negative error value
1620  *
1621  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1622  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1623  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1624  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
1625  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
1626  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
1627  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
1628  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1629  *
1630  * @pre This function requires opened connection to content service by media_content_connect().
1631  *
1632  * @see media_content_connect()
1633  */
1634 int media_info_create_thumbnail(media_info_h media, media_thumbnail_completed_cb callback, void *user_data);
1635
1636 /**
1637  * @brief Cancels the creation of thumbnail file for the given media.
1638  * @since_tizen @if MOBILE 2.3 @elseif WEARABLE 2.3.1 @endif
1639  *
1640  * @privlevel public
1641  * @privilege %http://tizen.org/privilege/content.write
1642  *
1643  * @remarks If you request cancel for the already thumbnail created media, this API return MEDIA_CONTENT_ERROR_INVALID_OPERATION
1644  *
1645  * @param[in] media The media info handle
1646  *
1647  * @return @c 0 on success,
1648  *         otherwise a negative error value
1649  *
1650  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1651  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1652  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1653  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
1654  *
1655  * @pre This function requires opened connection to content service by media_content_connect().
1656  * @see media_content_connect()
1657  */
1658 int media_info_cancel_thumbnail(media_info_h media);
1659
1660 /**
1661  * @ingroup CAPI_CONTENT_MEDIA_FACE_DETECTION_MODULE
1662  * @brief Starts face detection for the given image, asynchronously.
1663  * @details This function detects faces for given image item and calls the given callback function when the detection is completed. \n
1664  *          The given callback function is called when the detection is completed. \n
1665  *          To obtain the detected faces, call the media_info_foreach_face_from_db() function.
1666  *
1667  * @since_tizen 3.0
1668  *
1669  * @privlevel public
1670  * @privilege %http://tizen.org/privilege/content.write \n
1671  *                   %http://tizen.org/privilege/mediastorage
1672  *
1673  * @remarks If you want to destroy the media handle before callback invoked, you must cancel the face detection request by using media_info_cancel_face_detection(). \n
1674  *          If face detection fails, the @a face_count argument in media_face_detection_completed_cb() will be set to 0.
1675  *          Media items in external storage are not supported, with the exception of MMC items.
1676  *
1677  * @param[in] media     The media info handle
1678  * @param[in] callback  The callback function to be invoked when detection is completed
1679  * @param[in] user_data The user data to be passed to the callback function
1680  *
1681  * @return @c 0 on success,
1682  *         otherwise a negative error value
1683  *
1684  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1685  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1686  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1687  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
1688  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED         DB Operation failed
1689  * @retval #MEDIA_CONTENT_ERROR_DB_BUSY           DB Operation busy
1690  * @retval #MEDIA_CONTENT_ERROR_NETWORK           Network fail
1691  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1692  * @retval #MEDIA_CONTENT_ERROR_NOT_SUPPORTED     Not supported
1693  *
1694  * @pre This function requires opened connection to content service by media_content_connect().
1695  *
1696  * @see media_content_connect()
1697  * @see media_info_cancel_face_detection()
1698  */
1699 int media_info_start_face_detection(media_info_h media, media_face_detection_completed_cb callback, void *user_data);
1700
1701 /**
1702  * @ingroup CAPI_CONTENT_MEDIA_FACE_DETECTION_MODULE
1703  * @brief Cancels face detection of image for the given media.
1704  * @details This function cancels face detection for given media item. \n
1705  *          If you cancel face detection request before callback is invoked, the callback registered by media_info_start_face_detection() API will not be invoked.
1706  *
1707  * @since_tizen 3.0
1708  *
1709  * @privlevel public
1710  * @privilege %http://tizen.org/privilege/content.write
1711  *
1712  * @remarks If face detection is already done when you request the cancellation, this API return MEDIA_CONTENT_ERROR_INVALID_OPERATION
1713  *
1714  * @param[in] media The media info handle
1715  *
1716  * @return @c 0 on success,
1717  *         otherwise a negative error value
1718  *
1719  * @retval #MEDIA_CONTENT_ERROR_NONE              Successful
1720  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1721  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1722  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION Invalid operation
1723  *
1724  * @pre This function requires opened connection to content service by media_content_connect().
1725  *
1726  * @see media_content_connect()
1727  * @see media_info_start_face_detection()
1728  */
1729 int media_info_cancel_face_detection(media_info_h media);
1730
1731 /**
1732  * @deprecated Deprecated since 4.0. Use media_info_insert_to_db() instead.
1733  * @brief Creates the media info handle.
1734  * @details If the information about the file that is already known, you can use this API to generate empty handler.
1735  * @since_tizen 3.0
1736  *
1737  *
1738  * @privilege %http://tizen.org/privilege/mediastorage \n
1739  *                      %http://tizen.org/privilege/externalstorage
1740  *
1741  * @remarks If you want to access only internal storage with this API, you should add privilege http://tizen.org/privilege/mediastorage. \n
1742  *                   Or if you want to access only external storage with this API, you should add privilege http://tizen.org/privilege/externalstorage. \n
1743  *                   If you can access both storage, you must add all privilege.
1744  *
1745  * @param[in] path The path to create the media info handle
1746  * @param[out] media The media info handle
1747  *
1748  * @return @c 0 on success,
1749  *           otherwise a negative error value
1750  *
1751  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1752  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1753  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED                DB operation failed
1754  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1755  * @retval #MEDIA_CONTENT_ERROR_INVALID_OPERATION       Invalid operation
1756  *
1757  * @see media_info_destroy()
1758  */
1759 int media_info_create(const char *path, media_info_h *media) TIZEN_DEPRECATED_API;
1760
1761 /**
1762  * @deprecated Deprecated since 4.0. Use media_info_insert_to_db() instead.
1763  * @brief Inserts media info to database with media info data.
1764  * @since_tizen 3.0
1765  *
1766  * @remarks You must release @a info using media_info_destroy().
1767  *
1768  * @privlevel public
1769  * @privilege %http://tizen.org/privilege/content.write
1770  *
1771  * @param[in] media The media info handle to be inserted
1772  *
1773  * @return @c 0 on success,
1774  *           otherwise a negative error value
1775  *
1776  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1777  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1778  * @retval #MEDIA_CONTENT_ERROR_DB_FAILED                DB operation failed
1779  * @retval #MEDIA_CONTENT_ERROR_PERMISSION_DENIED Permission denied
1780  */
1781 int media_info_insert_to_db_with_data(media_info_h media) TIZEN_DEPRECATED_API;
1782
1783 /**
1784  * @deprecated Deprecated since 4.0.
1785  * @brief Sets the title of media info handle.
1786  * @since_tizen 3.0
1787  *
1788  * @param[in] media The media info handle
1789  * @param[in] title The title of media info handle
1790  *
1791  * @return @c 0 on success,
1792  *           otherwise a negative error value
1793  *
1794  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1795  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1796  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1797  */
1798 int media_info_set_title(media_info_h media, const char *title) TIZEN_DEPRECATED_API;
1799
1800 /**
1801  * @deprecated Deprecated since 4.0.
1802  * @brief Sets the album of media info handle.
1803  * @since_tizen 3.0
1804  *
1805  * @param[in] media The media info handle
1806  * @param[in] album The album of media info handle
1807  *
1808  * @return @c 0 on success,
1809  *           otherwise a negative error value
1810  *
1811  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1812  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1813  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1814  */
1815 int media_info_set_album(media_info_h media, const char *album) TIZEN_DEPRECATED_API;
1816
1817 /**
1818  * @deprecated Deprecated since 4.0.
1819  * @brief Sets the artist of media info handle.
1820  * @since_tizen 3.0
1821  *
1822  * @param[in] media The media info handle
1823  * @param[in] artist The artist of media info handle
1824  *
1825  * @return @c 0 on success,
1826  *           otherwise a negative error value
1827  *
1828  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1829  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1830  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1831  */
1832 int media_info_set_artist(media_info_h media, const char *artist) TIZEN_DEPRECATED_API;
1833
1834 /**
1835  * @deprecated Deprecated since 4.0.
1836  * @brief Sets the genre of media info handle.
1837  * @since_tizen 3.0
1838  *
1839  * @param[in] media The media info handle
1840  * @param[in] genre The genre of media info handle
1841  *
1842  * @return @c 0 on success,
1843  *           otherwise a negative error value
1844  *
1845  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1846  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1847  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1848  */
1849 int media_info_set_genre(media_info_h media, const char *genre) TIZEN_DEPRECATED_API;
1850
1851 /**
1852  * @deprecated Deprecated since 4.0.
1853  * @brief Sets the recorded date of media info handle.
1854  * @since_tizen 3.0
1855  *
1856  * @param[in] media The media info handle
1857  * @param[in] recorded_date The recorded date of media info handle
1858  *
1859  * @return @c 0 on success,
1860  *           otherwise a negative error value
1861  *
1862  * @retval #MEDIA_CONTENT_ERROR_NONE Successful
1863  * @retval #MEDIA_CONTENT_ERROR_OUT_OF_MEMORY     Out of memory
1864  * @retval #MEDIA_CONTENT_ERROR_INVALID_PARAMETER Invalid parameter
1865  */
1866 int media_info_set_recorded_date(media_info_h media, const char *recorded_date) TIZEN_DEPRECATED_API;
1867
1868
1869 /**
1870  * @}
1871  */
1872
1873
1874 #ifdef __cplusplus
1875 }
1876 #endif /* __cplusplus */
1877
1878 #endif /* __TIZEN_MEDIA_INFORMATION_H__ */