sync with tizen_2.0
[apps/core/preloaded/music-player.git] / src / common / include / mp-media-info.h
1 /*
2  * Copyright 2012         Samsung Electronics Co., Ltd
3  *
4  * Licensed under the Flora License, Version 1.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://floralicense.org/license/
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 #ifndef __MP_MEDIA_INFO_H__
18 #define __MP_MEDIA_INFO_H__
19
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23
24 #include <stdbool.h>
25
26 #define MAX_FILTER_LEN 4096
27
28 typedef struct mp_media_list_s *mp_media_list_h;
29 typedef struct mp_media_info_s *mp_media_info_h;
30 typedef struct filter_s *mp_filter_h;
31 typedef struct playlist_s *mp_playlist_h;
32
33 typedef bool(* mp_media_info_cb)(mp_media_info_h media, void *user_data);
34
35
36 typedef enum
37 {
38         MP_MEDIA_CONTENT_COLLATE_DEFAULT        = 0,            /**< default collation BINARY */
39         MP_MEDIA_CONTENT_COLLATE_NOCASE = 1,            /**< collation NOCASE, not case sensitive */
40         MP_MEDIA_CONTENT_COLLATE_RTRIM          = 2,            /**< collation RTRIM, trailing space characters are ignored */
41 } mp_media_content_collation_e;
42
43 typedef enum
44 {
45         MP_MEDIA_TYPE_MUSIC,
46         MP_MEDIA_TYPE_SOUND,
47 }mp_media_type_e;
48
49 typedef enum{
50         MP_TRACK_ALL,                                                   /**< All tracks*/
51         MP_TRACK_BY_ALBUM,                                      /**< Album tracks*/
52         MP_TRACK_BY_ARTIST_ALBUM,                               /** < Albums which has special artist condition */
53         MP_TRACK_BY_ARTIST,                                     /**< Artist tracks*/
54         MP_TRACK_BY_ARTIST_GENRE,                               /**< Genre tracks which has special artist condition*/
55         MP_TRACK_BY_GENRE,                                              /**< Genre tracks*/
56         MP_TRACK_BY_FOLDER,                                     /**< Genre tracks*/
57         MP_TRACK_BY_YEAR,                                               /**< Year tracks*/
58         MP_TRACK_BY_COMPOSER,                           /**< Author tracks*/
59         MP_TRACK_BY_FAVORITE,                           /**< Toprating tracks*/
60         MP_TRACK_BY_PLAYED_TIME,                                /**< Recently played tracks*/
61         MP_TRACK_BY_ADDED_TIME,                         /**< Recently added tracks*/
62         MP_TRACK_BY_PLAYED_COUNT,                               /**< Most played tracks*/
63         MP_TRACK_BY_PLAYLIST,                                   /**< User playlist tracks*/
64 }mp_track_type_e;
65
66 typedef enum{
67         MP_GROUP_NONE,
68         MP_GROUP_BY_ALBUM,                                      /**< Group by album*/
69         MP_GROUP_BY_ARTIST,                                     /**< Group by artist*/
70         MP_GROUP_BY_ARTIST_ALBUM,                       /**< Group by album which has special artist condition*/
71         MP_GROUP_BY_GENRE,                                      /**< Group by genre*/
72         MP_GROUP_BY_FOLDER,                                     /**< Group by folder*/
73         MP_GROUP_BY_YEAR,                                               /**< Group by year*/
74         MP_GROUP_BY_COMPOSER,                           /**< Group by author*/
75         MP_GROUP_BY_PLAYLIST,
76         MP_GROUP_BY_SYS_PLAYLIST,
77         MP_GROUP_BY_SQUARE,
78         MP_GROUP_BY_ALLSHARE,
79 }mp_group_type_e;
80
81 typedef enum{
82         MP_SYS_PLST_NONE = -4,
83         MP_SYS_PLST_MOST_PLAYED = -3,
84         MP_SYS_PLST_RECENTELY_ADDED = -2,
85         MP_SYS_PLST_RECENTELY_PLAYED = -1,
86         MP_SYS_PLST_QUICK_LIST = 0,
87 }mp_sys_playlsit_id;
88
89 /*connection*/
90 int mp_media_info_connect(void);
91 int mp_media_info_disconnect(void);
92
93 /*filter*/
94 int mp_media_filter_create(mp_filter_h *filter);
95 int mp_media_filter_destory(mp_filter_h filter);
96 int mp_media_filter_set_offset(mp_filter_h filter, int offset, int count);
97 int mp_media_filter_set_order(mp_filter_h filter, bool asc, const char *order_keyword, mp_media_content_collation_e collation);
98 int mp_media_filter_set_condition(mp_filter_h filter, const char *condition, mp_media_content_collation_e collation );
99
100 /*media infomation*/
101 int mp_media_info_get_media_id(mp_media_info_h media, char **media_id);
102 int mp_media_info_get_file_path(mp_media_info_h media, char **path);
103 int mp_media_info_get_thumbnail_path(mp_media_info_h media, char **path);
104 int mp_media_info_get_favorite(mp_media_info_h media, bool *favorite);
105 int mp_media_info_is_drm(mp_media_info_h media, bool *drm);
106 int mp_media_info_get_title(mp_media_info_h media, char **title);
107 int mp_media_info_get_album(mp_media_info_h media, char **album);
108 int mp_media_info_get_genre(mp_media_info_h media, char **genre);
109 int mp_media_info_get_artist(mp_media_info_h media, char **artist);
110 int mp_media_info_get_composer(mp_media_info_h media, char **composer);
111 int mp_media_info_get_year(mp_media_info_h media, char **year);
112 int mp_media_info_get_copyright(mp_media_info_h media, char **copyright);
113 int mp_media_info_get_track_num(mp_media_info_h media, char **track_num);
114 int mp_media_info_get_format(mp_media_info_h media, char **format);
115 int mp_media_info_get_media_type(mp_media_info_h media, int *media_type);
116 int mp_media_info_get_bit_rate(mp_media_info_h media, int *bitrate);
117 int mp_media_info_get_sample_rate(mp_media_info_h media, int *sample_rate);
118 int mp_media_info_get_duration(mp_media_info_h media, int *duration);
119 int mp_media_info_get_played_time(mp_media_info_h media, time_t *time);
120 int mp_media_info_get_played_count(mp_media_info_h media, int *count);
121 int mp_media_info_get_added_time(mp_media_info_h media, time_t *time);
122 int mp_media_info_get_playlist_member_id(mp_media_info_h media, int *member_id);
123
124 int mp_media_info_set_favorite(mp_media_info_h media, bool favorite);
125 int mp_media_info_set_played_time(mp_media_info_h media, time_t time);
126 int mp_media_info_set_played_count(mp_media_info_h media, int count);
127 int mp_media_info_set_added_time(mp_media_info_h media, time_t time);
128
129 /*media*/
130 int mp_media_info_create(mp_media_info_h *media_list, const char *media_id);
131 int mp_media_info_create_by_path(mp_media_info_h *media_info, const char *file_path);
132 int mp_media_info_destroy(mp_media_info_h media_info);
133
134 /*media list*/
135 int mp_media_info_list_count(mp_track_type_e track_type, const char *type_string,const char *type_string2, const char *filter_string, int playlist_id, int *count);
136 int mp_media_info_list_count_w_filter(mp_track_type_e track_type, const char *folder_id, int playlist_id, mp_filter_h filter, int *count);
137 int mp_media_info_list_create(mp_media_list_h *media_list, mp_track_type_e track_type, const char *type_string, const char *type_string2, const char *filter_string, int playlist_id, int offset, int count);
138 int mp_media_info_list_create_w_filter(mp_track_type_e track_type, const char *folder_id, int playlist_id, mp_filter_h filter, mp_media_list_h *media_list);
139 int mp_media_info_list_destroy(mp_media_list_h media_list);
140 mp_media_info_h mp_media_info_list_nth_item(mp_media_list_h media_list, int index);
141
142 /*group list*/
143 int mp_media_info_group_list_count(mp_group_type_e group_type, const char *type_string, const char *filter_string, int *count);
144 int mp_media_info_group_list_count_w_filter(mp_group_type_e group_type, mp_filter_h filter, int *count);
145 int mp_media_info_group_list_create(mp_media_list_h *media_list, mp_group_type_e group_type, const char *type_string, const char *filter_string, int offset, int count);
146 int mp_media_info_group_list_create_w_filter(mp_filter_h filter, mp_group_type_e group_type, mp_media_list_h *media_list);
147 int mp_media_info_group_list_destroy(mp_media_list_h media_list);
148 mp_media_info_h mp_media_info_group_list_nth_item(mp_media_list_h media_list, int index);
149
150 int mp_media_info_group_get_main_info(mp_media_info_h media, char **main_info);
151 int mp_media_info_group_get_sub_info(mp_media_info_h media, char **sub_info);
152 int mp_media_info_group_get_playlist_id(mp_media_info_h media, int *playlist_id);
153 int mp_media_info_group_get_folder_id(mp_media_info_h media, char **folder_id);
154 int mp_media_info_group_get_thumbnail_path(mp_media_info_h media, char **path);
155
156 /*playlist list*/
157 int mp_media_info_playlist_get_id_by_name(const char *playlist_name, int *playlist_id);
158 int mp_media_info_playlist_insert_to_db(const char * name, int *playlist_id, mp_playlist_h *playlist_handle);
159 int mp_media_info_playlist_handle_destroy(mp_playlist_h playlist_handle);
160 int mp_media_info_playlist_delete_from_db(int playlist_id);
161 int mp_media_info_playlist_add_media(int playlist_id, const char *media_id);
162 int mp_media_info_playlist_remove_media(mp_media_info_h playlist, int memeber_id);
163 int mp_media_info_playlist_set_play_order(mp_media_info_h playlist, int memeber_id, int play_order);
164 int mp_media_info_playlist_update_db(mp_media_info_h playlist);
165 int mp_media_info_playlist_is_exist(const char *playlist_name, bool *exist);
166 int mp_media_info_playlist_unique_name(const char *orig_name, char *unique_name, size_t max_unique_name_length);
167 int mp_media_info_playlist_rename(mp_media_info_h playlist, const char *new_name);
168 int mp_media_info_playlist_get_play_order(mp_media_info_h playlist, int playlist_member_id, int * play_order);
169
170 //db sync
171 int mp_media_info_delete_from_db(const char *path);
172
173 #ifdef __cplusplus
174 }
175 #endif
176
177 #endif
178