2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
21 #include <media_content.h>
22 #include <media_info_private.h>
26 #include <tzplatform_config.h>
28 filter_h g_filter = NULL;
29 filter_h g_filter_g = NULL; //filter for group like folder, tag, playlist, album, year ...
31 GMainLoop *g_loop = NULL;
33 static int g_media_cnt = 0;
35 #define test_audio_id "0f999626-6218-450c-a4ad-181a3bab6ebf"
36 #define test_video_id "c1a92494-cc5b-4d74-aa7d-253199234548"
37 #define test_image_id "db1c184c-6f31-43b4-b924-8c00ac5b6197"
39 bool get_audio_meta(audio_meta_h audio)
44 int ret = MEDIA_CONTENT_ERROR_NONE;
46 media_content_debug("=== audio meta ===");
48 ret = audio_meta_get_media_id(audio, &c_value);
49 if(ret != MEDIA_CONTENT_ERROR_NONE)
50 media_content_error("error when get meta : [%d]", ret);
51 media_content_debug("audio_id : [%s]", c_value);
54 ret = audio_meta_get_album(audio, &c_value);
55 if(ret != MEDIA_CONTENT_ERROR_NONE)
56 media_content_error("error when get meta : [%d]", ret);
57 media_content_debug("album : [%s]", c_value);
60 ret = audio_meta_get_artist(audio, &c_value);
61 if(ret != MEDIA_CONTENT_ERROR_NONE)
62 media_content_error("error when get meta : [%d]", ret);
63 media_content_debug("artist : [%s]", c_value);
66 ret = audio_meta_get_genre(audio, &c_value);
67 if(ret != MEDIA_CONTENT_ERROR_NONE)
68 media_content_error("error when get meta : [%d]", ret);
69 media_content_debug("genre : [%s]", c_value);
72 ret = audio_meta_get_composer(audio, &c_value);
73 if(ret != MEDIA_CONTENT_ERROR_NONE)
74 media_content_error("error when get meta : [%d]", ret);
75 media_content_debug("composer : [%s]", c_value);
78 ret = audio_meta_get_year(audio, &c_value);
79 if(ret != MEDIA_CONTENT_ERROR_NONE)
80 media_content_error("error when get meta : [%d]", ret);
81 media_content_debug("year : [%s]", c_value);
84 ret = audio_meta_get_recorded_date(audio, &c_value);
85 if(ret != MEDIA_CONTENT_ERROR_NONE)
86 media_content_error("error when get meta : [%d]", ret);
87 media_content_debug("recorded_date : [%s]", c_value);
90 ret = audio_meta_get_copyright(audio, &c_value);
91 if(ret != MEDIA_CONTENT_ERROR_NONE)
92 media_content_error("error when get meta : [%d]", ret);
93 media_content_debug("copyright : [%s]", c_value);
96 ret = audio_meta_get_track_num(audio, &c_value);
97 if(ret != MEDIA_CONTENT_ERROR_NONE)
98 media_content_error("error when get meta : [%d]", ret);
99 media_content_debug("track_num : [%s]", c_value);
102 ret = audio_meta_get_bit_rate(audio, &i_value);
103 if(ret != MEDIA_CONTENT_ERROR_NONE)
104 media_content_error("error when get meta : [%d]", ret);
105 media_content_debug("bitrate : [%d]", i_value);
107 ret = audio_meta_get_sample_rate(audio, &i_value);
108 if(ret != MEDIA_CONTENT_ERROR_NONE)
109 media_content_error("error when get meta : [%d]", ret);
110 media_content_debug("samplerate : [%d]", i_value);
112 ret = audio_meta_get_channel(audio, &i_value);
113 if(ret != MEDIA_CONTENT_ERROR_NONE)
114 media_content_error("error when get meta : [%d]", ret);
115 media_content_debug("channel : [%d]", i_value);
117 ret = audio_meta_get_duration(audio, &i_value);
118 if(ret != MEDIA_CONTENT_ERROR_NONE)
119 media_content_error("error when get meta : [%d]", ret);
120 media_content_debug("duration : [%d]", i_value);
122 ret = audio_meta_get_played_count(audio, &i_value);
123 if(ret != MEDIA_CONTENT_ERROR_NONE)
124 media_content_error("error when get meta : [%d]", ret);
125 media_content_debug("played_count : [%d]", i_value);
127 ret = audio_meta_get_played_time(audio, &t_value);
128 if(ret != MEDIA_CONTENT_ERROR_NONE)
129 media_content_error("error when get meta : [%d]", ret);
130 media_content_debug("played_time : [%d]", t_value);
132 ret = audio_meta_get_played_position(audio, &i_value);
133 if(ret != MEDIA_CONTENT_ERROR_NONE)
134 media_content_error("error when get meta : [%d]", ret);
135 media_content_debug("played_position : [%d]", i_value);
140 bool get_video_meta(video_meta_h video)
142 char *c_value = NULL;
145 int ret = MEDIA_CONTENT_ERROR_NONE;
147 media_content_debug("=== video meta ===");
149 ret = video_meta_get_media_id(video, &c_value);
150 if(ret != MEDIA_CONTENT_ERROR_NONE)
151 media_content_error("error when get meta : [%d]", ret);
152 media_content_debug("video_id : [%s]", c_value);
155 ret = video_meta_get_album(video, &c_value);
156 if(ret != MEDIA_CONTENT_ERROR_NONE)
157 media_content_error("error when get meta : [%d]", ret);
158 media_content_debug("album : [%s]", c_value);
161 ret = video_meta_get_artist(video, &c_value);
162 if(ret != MEDIA_CONTENT_ERROR_NONE)
163 media_content_error("error when get meta : [%d]", ret);
164 media_content_debug("artist : [%s]", c_value);
167 ret = video_meta_get_genre(video, &c_value);
168 if(ret != MEDIA_CONTENT_ERROR_NONE)
169 media_content_error("error when get meta : [%d]", ret);
170 media_content_debug("genre : [%s]", c_value);
173 ret = video_meta_get_composer(video, &c_value);
174 if(ret != MEDIA_CONTENT_ERROR_NONE)
175 media_content_error("error when get meta : [%d]", ret);
176 media_content_debug("omposer : [%s]", c_value);
179 ret = video_meta_get_year(video, &c_value);
180 if(ret != MEDIA_CONTENT_ERROR_NONE)
181 media_content_error("error when get meta : [%d]", ret);
182 media_content_debug("year : [%s]", c_value);
185 ret = video_meta_get_recorded_date(video, &c_value);
186 if(ret != MEDIA_CONTENT_ERROR_NONE)
187 media_content_error("error when get meta : [%d]", ret);
188 media_content_debug("recorded_date : [%s]", c_value);
191 ret = video_meta_get_copyright(video, &c_value);
192 if(ret != MEDIA_CONTENT_ERROR_NONE)
193 media_content_error("error when get meta : [%d]", ret);
194 media_content_debug("copyright : [%s]", c_value);
197 ret = video_meta_get_track_num(video, &c_value);
198 if(ret != MEDIA_CONTENT_ERROR_NONE)
199 media_content_error("error when get meta : [%d]", ret);
200 media_content_debug("track_num : [%s]", c_value);
203 ret = video_meta_get_bit_rate(video, &i_value);
204 if(ret != MEDIA_CONTENT_ERROR_NONE)
205 media_content_error("error when get meta : [%d]", ret);
206 media_content_debug("bitrate : [%d]", i_value);
208 ret = video_meta_get_duration(video, &i_value);
209 if(ret != MEDIA_CONTENT_ERROR_NONE)
210 media_content_error("error when get meta : [%d]", ret);
211 media_content_debug("duration : [%d]", i_value);
213 ret = video_meta_get_width(video, &i_value);
214 if(ret != MEDIA_CONTENT_ERROR_NONE)
215 media_content_error("error when get meta : [%d]", ret);
216 media_content_debug("width : [%d]", i_value);
218 ret = video_meta_get_height(video, &i_value);
219 if(ret != MEDIA_CONTENT_ERROR_NONE)
220 media_content_error("error when get meta : [%d]", ret);
221 media_content_debug("height : [%d]", i_value);
223 ret = video_meta_get_played_count(video, &i_value);
224 if(ret != MEDIA_CONTENT_ERROR_NONE)
225 media_content_error("error when get meta : [%d]", ret);
226 media_content_debug("played_count : [%d]", i_value);
228 ret = video_meta_get_played_time(video, &t_value);
229 if(ret != MEDIA_CONTENT_ERROR_NONE)
230 media_content_error("error when get meta : [%d]", ret);
231 media_content_debug("played_time : [%d]", t_value);
233 ret = video_meta_get_played_position(video, &i_value);
234 if(ret != MEDIA_CONTENT_ERROR_NONE)
235 media_content_error("error when get meta : [%d]", ret);
236 media_content_debug("played_position : [%d]", i_value);
241 bool gallery_folder_list_cb(media_folder_h folder, void *user_data)
243 media_folder_h new_folder = NULL;
244 media_folder_clone(&new_folder, folder);
246 GList **list = (GList**)user_data;
247 *list = g_list_append(*list, new_folder);
252 bool gallery_media_item_cb(media_info_h media, void *user_data)
254 media_info_h new_media = NULL;
255 media_info_clone(&new_media, media);
257 GList **list = (GList**)user_data;
258 *list = g_list_append(*list, new_media);
263 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
265 media_tag_h new_tag = NULL;
266 media_tag_clone(&new_tag, tag);
268 GList **list = (GList**)user_data;
269 *list = g_list_append(*list, new_tag);
274 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
276 media_bookmark_h new_bm = NULL;
277 int ret = MEDIA_CONTENT_ERROR_NONE;
279 ret = media_bookmark_clone(&new_bm, bookmark);
280 if(ret != MEDIA_CONTENT_ERROR_NONE)
281 media_content_error("error media_bookmark_clone : [%d]", ret);
283 GList **list = (GList**)user_data;
284 *list = g_list_append(*list, new_bm);
289 bool media_item_cb(media_info_h media, void *user_data)
291 char *c_value = NULL;
292 char *media_id = NULL;
295 bool b_value = false;
296 media_content_type_e media_type = 0;
297 unsigned long long size = 0;
298 int ret = MEDIA_CONTENT_ERROR_NONE;
302 media_content_debug("NO Item");
306 ret = media_info_get_media_type(media, &media_type);
307 if(ret != MEDIA_CONTENT_ERROR_NONE)
308 media_content_error("error when get info : [%d]", ret);
309 media_content_debug("media_type : [%d]", media_type);
311 ret = media_info_get_media_id(media, &media_id);
312 if(ret != MEDIA_CONTENT_ERROR_NONE)
313 media_content_error("error when get info : [%d]", ret);
314 media_content_debug("media_id : [%s]", media_id);
317 if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
321 if(media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE)
323 get_audio_meta(audio);
324 ret = audio_meta_destroy(audio);
325 if(ret != MEDIA_CONTENT_ERROR_NONE)
326 media_content_error("error audio_meta_destroy : [%d]", ret);
329 media_content_error("[audio_error]");
332 else if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
335 media_content_orientation_e orientation = 0;
336 bool is_burst_shot = false;
337 char *burst_id = NULL;
339 if(media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE)
341 ret = image_meta_get_orientation(image, &orientation);
342 if(ret != MEDIA_CONTENT_ERROR_NONE)
343 media_content_error("error image_meta_get_orientation : [%d]", ret);
345 media_content_debug("[image] orientation : %d", orientation);
347 ret = image_meta_is_burst_shot(image, &is_burst_shot);
348 if(ret != MEDIA_CONTENT_ERROR_NONE)
349 media_content_error("error image_meta_is_burst_shot : [%d]", ret);
352 ret = image_meta_get_burst_id(image, &burst_id);
353 if(ret != MEDIA_CONTENT_ERROR_NONE)
354 media_content_error("error image_meta_get_burst_id : [%d]", ret);
356 media_content_debug("[image] burst_id : [%s]", burst_id);
361 ret = image_meta_destroy(image);
362 if(ret != MEDIA_CONTENT_ERROR_NONE)
363 media_content_error("error image_meta_destroy : [%d]", ret);
366 media_content_error("[image_error]");
369 else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
373 if(media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE)
375 get_video_meta(video);
376 ret = video_meta_destroy(video);
377 if(ret != MEDIA_CONTENT_ERROR_NONE)
378 media_content_error("error video_meta_destroy : [%d]", ret);
381 media_content_error("[video_error]");
386 media_content_debug("Other Content");
389 media_content_debug("=== media_info ===");
390 ret = media_info_get_file_path(media, &c_value);
391 if(ret != MEDIA_CONTENT_ERROR_NONE)
392 media_content_error("error when get info : [%d]", ret);
393 media_content_debug("file_path : [%s]", c_value);
396 ret = media_info_get_display_name(media, &c_value);
397 if(ret != MEDIA_CONTENT_ERROR_NONE)
398 media_content_error("error when get info : [%d]", ret);
399 media_content_debug("display_name : [%s]", c_value);
402 ret = media_info_get_mime_type(media, &c_value);
403 if(ret != MEDIA_CONTENT_ERROR_NONE)
404 media_content_error("error when get info : [%d]", ret);
405 media_content_debug("mime_type : [%s]", c_value);
408 ret = media_info_get_thumbnail_path(media, &c_value);
409 if(ret != MEDIA_CONTENT_ERROR_NONE)
410 media_content_error("error when get info : [%d]", ret);
411 media_content_debug("thumbnail_path : [%s]", c_value);
414 ret = media_info_get_description(media, &c_value);
415 if(ret != MEDIA_CONTENT_ERROR_NONE)
416 media_content_error("error when get info : [%d]", ret);
417 media_content_debug("description : [%s]", c_value);
420 ret = media_info_get_author(media, &c_value);
421 if(ret != MEDIA_CONTENT_ERROR_NONE)
422 media_content_error("error when get info : [%d]", ret);
423 media_content_debug("author : [%s]", c_value);
426 ret = media_info_get_provider(media, &c_value);
427 if(ret != MEDIA_CONTENT_ERROR_NONE)
428 media_content_error("error when get info : [%d]", ret);
429 media_content_debug("provider : [%s]", c_value);
432 ret = media_info_get_content_name(media, &c_value);
433 if(ret != MEDIA_CONTENT_ERROR_NONE)
434 media_content_error("error when get info : [%d]", ret);
435 media_content_debug("content_name : [%s]", c_value);
438 ret = media_info_get_category(media, &c_value);
439 if(ret != MEDIA_CONTENT_ERROR_NONE)
440 media_content_error("error when get info : [%d]", ret);
441 media_content_debug("category : [%s]", c_value);
444 ret = media_info_get_location_tag(media, &c_value);
445 if(ret != MEDIA_CONTENT_ERROR_NONE)
446 media_content_error("error when get info : [%d]", ret);
447 media_content_debug("location_tag : [%s]", c_value);
450 ret = media_info_get_age_rating(media, &c_value);
451 if(ret != MEDIA_CONTENT_ERROR_NONE)
452 media_content_error("error when get info : [%d]", ret);
453 media_content_debug("age_rating : [%s]", c_value);
456 ret = media_info_get_keyword(media, &c_value);
457 if(ret != MEDIA_CONTENT_ERROR_NONE)
458 media_content_error("error when get info : [%d]", ret);
459 media_content_debug("keyword : [%s]", c_value);
462 ret = media_info_get_size(media, &size);
463 if(ret != MEDIA_CONTENT_ERROR_NONE)
464 media_content_error("error when get info : [%d]", ret);
465 media_content_debug("size : [%lld]", size);
467 ret = media_info_get_added_time(media, &t_value);
468 if(ret != MEDIA_CONTENT_ERROR_NONE)
469 media_content_error("error when get info : [%d]", ret);
470 media_content_debug("added_time : [%d]", t_value);
472 ret = media_info_get_modified_time(media, &t_value);
473 if(ret != MEDIA_CONTENT_ERROR_NONE)
474 media_content_error("error when get info : [%d]", ret);
475 media_content_debug("modified_time : [%d]", t_value);
477 ret = media_info_get_rating(media, &i_value);
478 if(ret != MEDIA_CONTENT_ERROR_NONE)
479 media_content_error("error when get info : [%d]", ret);
480 media_content_debug("rating : [%d]", i_value);
482 ret = media_info_get_favorite(media, &b_value);
483 if(ret != MEDIA_CONTENT_ERROR_NONE)
484 media_content_error("error when get info : [%d]", ret);
485 media_content_debug("favorite : [%d]", b_value);
487 ret = media_info_is_drm(media, &b_value);
488 if(ret != MEDIA_CONTENT_ERROR_NONE)
489 media_content_error("error when get info : [%d]", ret);
490 media_content_debug("is_drm : [%d]", b_value);
492 /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
493 //ret = media_info_set_location_tag(media, "Test location tag");
494 //media_info_update_to_db(media);
500 bool folder_list_cb(media_folder_h folder, void *user_data)
503 char *folder_id = NULL;
504 char *folder_path = NULL;
505 char *folder_name = NULL;
506 media_content_storage_e storage_type;
508 media_folder_h *_folder = (media_folder_h*)user_data;
512 media_folder_clone(_folder, folder);
514 if(media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE)
516 media_content_error("[ERROR] media_folder_get_folder_id is failed");
519 media_content_debug("folder_id = [%s]", folder_id);
521 if(media_folder_get_path(folder, &folder_path) != MEDIA_CONTENT_ERROR_NONE)
523 SAFE_FREE(folder_id);
524 media_content_error("[ERROR] media_folder_get_path is failed");
527 media_content_debug("folder_path = [%s]", folder_path);
528 SAFE_FREE(folder_path);
530 if(media_folder_get_name(folder, &folder_name) != MEDIA_CONTENT_ERROR_NONE)
532 SAFE_FREE(folder_id);
533 SAFE_FREE(folder_path);
534 media_content_error("[ERROR] media_folder_get_name is failed");
537 media_content_debug("folder_name = [%s]", folder_name);
538 SAFE_FREE(folder_name);
540 if(media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE)
542 SAFE_FREE(folder_id);
543 SAFE_FREE(folder_path);
544 SAFE_FREE(folder_name);
545 media_content_error("[ERROR] media_folder_get_storage_type is failed");
548 media_content_debug("storage_type = [%d]", storage_type);
550 if(media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE)
552 SAFE_FREE(folder_id);
553 SAFE_FREE(folder_path);
554 SAFE_FREE(folder_name);
555 media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
559 if(media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
561 SAFE_FREE(folder_id);
562 SAFE_FREE(folder_path);
563 SAFE_FREE(folder_name);
564 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
568 SAFE_FREE(folder_id);
569 SAFE_FREE(folder_path);
570 SAFE_FREE(folder_name);
582 bool test_album_from_db(int album_id)
584 int ret = MEDIA_CONTENT_ERROR_NONE;
585 media_album_h album_h;
586 int test_album_id = 0;
587 char *album_name = NULL;
590 ret = media_album_get_album_from_db(album_id, &album_h);
591 if(ret != MEDIA_CONTENT_ERROR_NONE)
593 media_content_error("error when get album");
597 if(media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE)
599 media_album_destroy(album_h);
603 media_content_debug("test_album_id : [%d]", test_album_id);
605 if(media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE)
607 media_album_destroy(album_h);
611 media_content_debug("album_name : [%s]", album_name);
613 if(media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE)
615 media_album_destroy(album_h);
619 media_content_debug("artist : [%s]", artist);
621 SAFE_FREE(album_name);
624 media_album_destroy(album_h);
629 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
632 char *playlist_name = NULL;
633 media_playlist_h playlist_h;
634 char *playlist_thumbnail_path = NULL;
636 media_content_debug("playlist_list_cb ======");
638 GList **list = (GList**)user_data;
642 media_content_debug(" playlist handle is NULL");
646 media_playlist_get_playlist_id(playlist, &playlist_id);
647 media_content_debug("playlist_id : %d", playlist_id);
649 if(user_data != NULL)
650 *list = g_list_append(*list, (gpointer)playlist_id);
652 media_playlist_get_name(playlist, &playlist_name);
653 media_content_debug("playlist_name : %s", playlist_name);
654 SAFE_FREE(playlist_name);
656 media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
657 media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
658 SAFE_FREE(playlist_thumbnail_path);
660 media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
662 media_playlist_destroy(playlist_h);
667 bool tag_list_cb(media_tag_h tag, void *user_data)
670 char *tag_name = NULL;
671 int ret = MEDIA_CONTENT_ERROR_NONE;
675 media_content_debug(" tag handle is NULL");
679 ret = media_tag_get_tag_id(tag, &tag_id);
680 if(ret != MEDIA_CONTENT_ERROR_NONE)
681 media_content_error("error media_tag_get_tag_id : [%d]", ret);
683 media_content_debug("tag_id : %d", tag_id);
685 ret = media_tag_get_name(tag, &tag_name);
686 if(ret != MEDIA_CONTENT_ERROR_NONE)
687 media_content_error("error media_tag_get_name : [%d]", ret);
689 media_content_debug("tag_name : %s", tag_name);
695 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
697 media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
698 int ret = MEDIA_CONTENT_ERROR_NONE;
700 if(_bookmark != NULL)
706 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
707 if(ret != MEDIA_CONTENT_ERROR_NONE)
708 media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
710 media_content_debug("bookmark_id : %d", bookmark_id);
712 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
713 if(ret != MEDIA_CONTENT_ERROR_NONE)
714 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
716 media_content_debug("bookmark thumbnail_path : %s", name);
719 ret = media_bookmark_get_marked_time(bookmark, &time);
720 if(ret != MEDIA_CONTENT_ERROR_NONE)
721 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
723 media_content_debug("bookmark marked_time : %d", time);
729 bool album_list_cb(media_album_h album, void *user_data)
732 char *album_name = NULL;
734 char *album_art = NULL;
736 int ret = MEDIA_CONTENT_ERROR_NONE;
737 filter_h filter = NULL;
740 char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
742 ret = media_filter_create(&filter);
743 if(ret != MEDIA_CONTENT_ERROR_NONE) {
744 media_content_error("Fail to create filter");
747 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
748 if(ret != MEDIA_CONTENT_ERROR_NONE) {
749 media_filter_destroy(filter);
750 media_content_error("Fail to set condition");
753 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
754 if(ret != MEDIA_CONTENT_ERROR_NONE) {
755 media_filter_destroy(filter);
756 media_content_error("Fail to set order");
762 if(media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE)
764 media_filter_destroy(filter);
768 media_content_debug("album_id : [%d]", album_id);
770 if(media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE)
772 media_filter_destroy(filter);
776 media_content_debug("album_name : [%s]", album_name);
778 if(media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE)
780 media_filter_destroy(filter);
784 media_content_debug("artist : [%s]", artist);
786 if(media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE)
788 media_filter_destroy(filter);
792 media_content_debug("album_art : [%s]", album_art);
794 SAFE_FREE(album_name);
796 SAFE_FREE(album_art);
798 if(media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
800 media_filter_destroy(filter);
804 media_content_debug("media_count : [%d]", media_count);
806 if(media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
808 media_filter_destroy(filter);
812 test_album_from_db(album_id);
816 media_content_error("album item not Found!!");
819 media_filter_destroy(filter);
824 bool group_list_cb(const char *group_name, void *user_data)
827 int *idx = user_data;
829 media_content_debug("group item : [%s] [%d]", group_name, *idx);
831 if(media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
834 media_content_debug("media_count : [%d]", media_count);
836 if(media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
842 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
844 media_content_debug("playlist_member_id : [%d]", playlist_member_id);
846 GList **list = (GList**)user_data;
847 *list = g_list_append(*list, (gpointer)playlist_member_id);
849 //media_item_cb(media, user_data);
854 int test_filter_create(void)
856 media_content_debug("\n============Filter Create============\n\n");
858 int ret = MEDIA_CONTENT_ERROR_NONE;
860 /* Filter for media */
861 char *condition = "MEDIA_TYPE=0"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
862 //char *condition = "MEDIA_TYPE IS NOT 0 AND MEDIA_DESCRIPTION IS NOT NULL"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
864 ret = media_filter_create(&g_filter);
866 /* Set condition and collate
867 * Condition string : You can make where statement of sql.
868 * Colation : You can use collation when comparing.
869 * Ex) In case of FILE_NAME='Samsung' as condition string,
870 * if you want to compare with NOCASE collation,
871 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
872 * if you want to compare in case-sensitive,
873 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
875 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
877 /* Collation of ordering
878 * If you want to get list, which is sorted by NOCASE,
879 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
881 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
883 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
885 /* Filter for group */
886 char *g_condition = "TAG_NAME like \"\%my\%\"";
887 //char *g_condition = "BOOKMARK_MARKED_TIME > 300";
889 ret = media_filter_create(&g_filter_g);
891 ret = media_filter_set_condition(g_filter_g, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
892 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
897 int test_filter_destroy(void)
899 media_content_debug("\n============Filter Create============\n\n");
901 int ret = MEDIA_CONTENT_ERROR_NONE;
903 ret = media_filter_destroy(g_filter);
908 int test_connect_database(void)
910 int ret = MEDIA_CONTENT_ERROR_NONE;
912 media_content_debug("\n============DB Connection Test============\n\n");
914 ret = media_content_connect();
916 if(ret == MEDIA_CONTENT_ERROR_NONE)
918 media_content_debug("connection is success\n\n");
921 media_content_error("connection is failed\n\n");
926 int test_gallery_scenario(void)
928 int ret = MEDIA_CONTENT_ERROR_NONE;
930 filter_h filter = NULL;
933 GList *folder_list = NULL;
934 media_folder_h folder_handle = NULL;
936 /* First, Get folder list */
937 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
938 if(ret != MEDIA_CONTENT_ERROR_NONE) {
939 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
942 media_content_debug("media_folder_foreach_folder_from_db success!!");
943 char *folder_id = NULL;
944 char *folder_name = NULL;
945 char *folder_path = NULL;
947 for(i = 0; i < g_list_length(folder_list); i++) {
948 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
950 ret = media_folder_get_folder_id(folder_handle, &folder_id);
951 if(ret != MEDIA_CONTENT_ERROR_NONE)
952 media_content_error("media_folder_get_folder_id failed: %d", ret);
953 ret = media_folder_get_name(folder_handle, &folder_name);
954 if(ret != MEDIA_CONTENT_ERROR_NONE)
955 media_content_error("media_folder_get_name failed: %d", ret);
956 ret = media_folder_get_path(folder_handle, &folder_path);
957 if(ret != MEDIA_CONTENT_ERROR_NONE)
958 media_content_error("media_folder_get_path failed: %d", ret);
960 media_content_debug("folder_id [%d] : %s", i, folder_id);
961 media_content_debug("folder_name [%d] : %s", i, folder_name);
962 media_content_debug("folder_path [%d] : %s", i, folder_path);
965 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
966 /* User should free these string */
967 SAFE_FREE(folder_id);
968 SAFE_FREE(folder_name);
969 SAFE_FREE(folder_path);
970 if(ret != MEDIA_CONTENT_ERROR_NONE) {
971 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
974 media_content_debug("media count [%d] : %d", i, count);
979 /* To check performance */
980 struct timeval start, end;
981 gettimeofday(&start, NULL);
983 /* Second, Get all item list */
984 media_info_h media_handle = NULL;
985 GList *all_item_list = NULL;
987 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
988 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
989 ret = media_filter_create(&filter);
990 if(ret != MEDIA_CONTENT_ERROR_NONE) {
991 media_content_error("Fail to create filter");
994 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
995 if(ret != MEDIA_CONTENT_ERROR_NONE) {
996 media_filter_destroy(filter);
997 media_content_error("Fail to set condition");
1000 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1001 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1002 media_filter_destroy(filter);
1003 media_content_error("Fail to set order");
1007 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1008 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1009 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1010 media_filter_destroy(filter);
1013 media_content_debug("media_info_foreach_media_from_db success");
1014 media_content_type_e media_type;
1015 char *media_id = NULL;
1016 char *media_name = NULL;
1017 char *media_path = NULL;
1019 for(i = 0; i < g_list_length(all_item_list); i++) {
1020 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1022 ret = media_info_get_media_id(media_handle, &media_id);
1023 if(ret != MEDIA_CONTENT_ERROR_NONE)
1024 media_content_error("media_info_get_media_id failed: %d", ret);
1025 ret = media_info_get_media_type(media_handle, &media_type);
1026 if(ret != MEDIA_CONTENT_ERROR_NONE)
1027 media_content_error("media_info_get_media_type failed: %d", ret);
1028 ret = media_info_get_display_name(media_handle, &media_name);
1029 if(ret != MEDIA_CONTENT_ERROR_NONE)
1030 media_content_error("media_info_get_display_name failed: %d", ret);
1031 ret = media_info_get_file_path(media_handle, &media_path);
1032 if(ret != MEDIA_CONTENT_ERROR_NONE)
1033 media_content_error("media_info_get_file_path failed: %d", ret);
1035 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1036 image_meta_h image_handle;
1037 int width = 0, height = 0;
1038 media_content_orientation_e orientation = 0;
1039 char *datetaken = NULL;
1040 char *burst_id = NULL;
1042 ret = media_info_get_image(media_handle, &image_handle);
1043 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1044 media_content_error("media_info_get_image failed: %d", ret);
1046 ret = image_meta_get_width(image_handle, &width);
1047 if(ret != MEDIA_CONTENT_ERROR_NONE)
1048 media_content_error("error image_meta_get_width : [%d]", ret);
1049 ret = image_meta_get_height(image_handle, &height);
1050 if(ret != MEDIA_CONTENT_ERROR_NONE)
1051 media_content_error("error image_meta_get_height : [%d]", ret);
1052 ret = image_meta_get_orientation(image_handle, &orientation);
1053 if(ret != MEDIA_CONTENT_ERROR_NONE)
1054 media_content_error("error image_meta_get_orientation : [%d]", ret);
1055 ret = image_meta_get_date_taken(image_handle, &datetaken);
1056 if(ret != MEDIA_CONTENT_ERROR_NONE)
1057 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1058 ret = image_meta_get_burst_id(image_handle, &burst_id);
1059 if(ret != MEDIA_CONTENT_ERROR_NONE)
1060 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1062 media_content_debug("This is Image");
1063 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1066 SAFE_FREE(datetaken);
1067 SAFE_FREE(burst_id);
1068 ret = image_meta_destroy(image_handle);
1069 if(ret != MEDIA_CONTENT_ERROR_NONE)
1070 media_content_error("error image_meta_destroy : [%d]", ret);
1072 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1073 video_meta_h video_handle;
1074 char *title = NULL, *artist = NULL, *album = NULL;
1076 time_t time_played = 0;
1078 ret = media_info_get_video(media_handle, &video_handle);
1079 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1080 media_content_error("media_info_get_video failed: %d", ret);
1082 ret = video_meta_get_artist(video_handle, &artist);
1083 if(ret != MEDIA_CONTENT_ERROR_NONE)
1084 media_content_error("error video_meta_get_artist : [%d]", ret);
1085 ret = video_meta_get_album(video_handle, &album);
1086 if(ret != MEDIA_CONTENT_ERROR_NONE)
1087 media_content_error("error video_meta_get_album : [%d]", ret);
1088 ret = video_meta_get_duration(video_handle, &duration);
1089 if(ret != MEDIA_CONTENT_ERROR_NONE)
1090 media_content_error("error video_meta_get_duration : [%d]", ret);
1091 ret = video_meta_get_played_time(video_handle, &time_played);
1092 if(ret != MEDIA_CONTENT_ERROR_NONE)
1093 media_content_error("error video_meta_get_played_time : [%d]", ret);
1095 media_content_debug("This is Video");
1096 media_content_debug("Title: %s, Album: %s, Artist: %s\nDuration: %d, Played time: %d", title, artist, album, duration, time_played);
1103 ret = video_meta_destroy(video_handle);
1104 if(ret != MEDIA_CONTENT_ERROR_NONE)
1105 media_content_error("error video_meta_destroy : [%d]", ret);
1107 //media_content_debug("media_id [%d] : %s", i, media_id);
1108 //media_content_debug("media_name [%d] : %s", i, media_name);
1109 //media_content_debug("media_path [%d] : %s", i, media_path);
1111 SAFE_FREE(media_id);
1112 SAFE_FREE(media_name);
1113 SAFE_FREE(media_path);
1117 media_filter_destroy(filter);
1120 /* To check performance */
1121 gettimeofday(&end, NULL);
1122 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1123 printf("Time : %ld\n", time);
1125 /* Third, Get item list of a folder */
1126 GList *item_list = NULL;
1128 for(i = 0; i < g_list_length(folder_list); i++) {
1130 char *folder_id = NULL;
1131 char *folder_name = NULL;
1132 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1134 media_folder_get_folder_id(folder_handle, &folder_id);
1135 media_folder_get_name(folder_handle, &folder_name);
1137 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1138 SAFE_FREE(folder_id);
1139 SAFE_FREE(folder_name);
1141 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1142 media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1145 media_content_error("media_folder_foreach_media_from_db success!", ret);
1146 char *media_id = NULL;
1147 char *media_name = NULL;
1148 char *media_path = NULL;
1149 media_content_type_e media_type = 0;
1151 for(j = 0; j < g_list_length(item_list); j++) {
1152 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1154 ret = media_info_get_media_id(media_handle, &media_id);
1155 if(ret != MEDIA_CONTENT_ERROR_NONE)
1156 media_content_error("media_info_get_media_id failed: %d", ret);
1157 ret = media_info_get_display_name(media_handle, &media_name);
1158 if(ret != MEDIA_CONTENT_ERROR_NONE)
1159 media_content_error("media_info_get_display_name failed: %d", ret);
1160 ret = media_info_get_file_path(media_handle, &media_path);
1161 if(ret != MEDIA_CONTENT_ERROR_NONE)
1162 media_content_error("media_info_get_file_path failed: %d", ret);
1163 ret = media_info_get_media_type(media_handle, &media_type);
1164 if(ret != MEDIA_CONTENT_ERROR_NONE)
1165 media_content_error("media_info_get_media_type failed: %d", ret);
1167 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1168 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1169 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1170 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1172 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1173 image_meta_h image_handle;
1174 int width = 0, height = 0;
1175 media_content_orientation_e orientation = 0;
1176 char *datetaken = NULL;
1178 ret = media_info_get_image(media_handle, &image_handle);
1179 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1180 media_content_error("media_info_get_image failed: %d", ret);
1182 ret = image_meta_get_width(image_handle, &width);
1183 if(ret != MEDIA_CONTENT_ERROR_NONE)
1184 media_content_error("error image_meta_get_width : [%d]", ret);
1185 ret = image_meta_get_height(image_handle, &height);
1186 if(ret != MEDIA_CONTENT_ERROR_NONE)
1187 media_content_error("error image_meta_get_height : [%d]", ret);
1188 ret = image_meta_get_orientation(image_handle, &orientation);
1189 if(ret != MEDIA_CONTENT_ERROR_NONE)
1190 media_content_error("error image_meta_get_orientation : [%d]", ret);
1191 ret = image_meta_get_date_taken(image_handle, &datetaken);
1192 if(ret != MEDIA_CONTENT_ERROR_NONE)
1193 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1195 media_content_debug("This is Image");
1196 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1199 SAFE_FREE(datetaken);
1200 ret = image_meta_destroy(image_handle);
1201 if(ret != MEDIA_CONTENT_ERROR_NONE)
1202 media_content_error("error image_meta_destroy : [%d]", ret);
1204 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1205 video_meta_h video_handle;
1206 char *title = NULL, *artist = NULL, *album = NULL;
1210 ret = media_info_get_video(media_handle, &video_handle);
1211 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1212 media_content_error("media_info_get_video failed: %d", ret);
1214 ret = video_meta_get_artist(video_handle, &artist);
1215 if(ret != MEDIA_CONTENT_ERROR_NONE)
1216 media_content_error("error video_meta_get_artist : [%d]", ret);
1217 ret = video_meta_get_album(video_handle, &album);
1218 if(ret != MEDIA_CONTENT_ERROR_NONE)
1219 media_content_error("error video_meta_get_album : [%d]", ret);
1220 ret = video_meta_get_duration(video_handle, &duration);
1221 if(ret != MEDIA_CONTENT_ERROR_NONE)
1222 media_content_error("error video_meta_get_duration : [%d]", ret);
1223 ret = video_meta_get_played_time(video_handle, &time_played);
1224 if(ret != MEDIA_CONTENT_ERROR_NONE)
1225 media_content_error("error video_meta_get_played_time : [%d]", ret);
1227 media_content_debug("This is Video");
1228 media_content_debug("Title: %s, Album: %s, Artist: %s\nDuration: %d, Played time: %d\n", title, artist, album, duration, time_played);
1235 ret = video_meta_destroy(video_handle);
1236 if(ret != MEDIA_CONTENT_ERROR_NONE)
1237 media_content_error("error video_meta_destroy : [%d]", ret);
1239 /* Get bookmar list in case of video */
1240 media_bookmark_h bm_handle;
1241 GList *bm_list = NULL;
1243 ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1244 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1245 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1247 media_content_debug("media_info_foreach_bookmark_from_db success");
1251 for(k = 0; k < g_list_length(bm_list); k++) {
1252 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1254 char *thumb_path = NULL;
1256 ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1257 if(ret != MEDIA_CONTENT_ERROR_NONE)
1258 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1259 ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1260 if(ret != MEDIA_CONTENT_ERROR_NONE)
1261 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1263 media_content_debug("Bookmark time : %d\nBookmar thumb: %s", marked_time, thumb_path);
1264 SAFE_FREE(thumb_path);
1267 /* Remove bookmark list */
1270 for(l = 0; l < g_list_length(bm_list); l++) {
1271 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1272 ret = media_bookmark_destroy(bm_handle);
1273 if(ret != MEDIA_CONTENT_ERROR_NONE)
1274 media_content_error("error media_bookmark_destroy : [%d]", ret);
1277 g_list_free(bm_list);
1283 SAFE_FREE(media_id);
1284 SAFE_FREE(media_name);
1285 SAFE_FREE(media_path);
1291 media_tag_h tag_handle = NULL;
1292 GList *tag_list = NULL;
1293 GList *media_list_in_tag = NULL;
1295 ret = media_tag_foreach_tag_from_db (filter, gallery_tag_item_cb, &tag_list);
1297 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1298 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1301 media_content_error("media_tag_foreach_tag_from_db success");
1302 char *tag_name = NULL;
1305 for(i = 0; i < g_list_length(tag_list); i++) {
1306 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1307 media_tag_get_tag_id(tag_handle, &tag_id);
1308 media_tag_get_name(tag_handle, &tag_name);
1310 printf("[%d] %s", tag_id, tag_name);
1312 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1313 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1314 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1317 media_content_error("media_tag_foreach_media_from_db success");
1319 media_info_h tag_media_handle;
1320 char *media_id = NULL;
1321 char *media_name = NULL;
1322 char *media_path = NULL;
1323 media_content_type_e media_type = 0;
1325 for(j = 0; j < g_list_length(media_list_in_tag); j++) {
1326 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1327 ret = media_info_get_media_id(tag_media_handle, &media_id);
1328 if(ret != MEDIA_CONTENT_ERROR_NONE)
1329 media_content_error("media_info_get_media_id failed: %d", ret);
1330 ret = media_info_get_display_name(tag_media_handle, &media_name);
1331 if(ret != MEDIA_CONTENT_ERROR_NONE)
1332 media_content_error("media_info_get_display_name failed: %d", ret);
1333 ret = media_info_get_file_path(tag_media_handle, &media_path);
1334 if(ret != MEDIA_CONTENT_ERROR_NONE)
1335 media_content_error("media_info_get_file_path failed: %d", ret);
1336 ret = media_info_get_media_type(tag_media_handle, &media_type);
1337 if(ret != MEDIA_CONTENT_ERROR_NONE)
1338 media_content_error("media_info_get_media_type failed: %d", ret);
1340 media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1341 media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1342 media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1343 media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1345 SAFE_FREE(media_id);
1346 SAFE_FREE(media_name);
1347 SAFE_FREE(media_path);
1349 SAFE_FREE(tag_name);
1353 /* Remove folder list */
1355 for(i = 0; i < g_list_length(folder_list); i++) {
1356 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1357 media_folder_destroy(folder_handle);
1360 g_list_free(folder_list);
1363 /* Remove all items list */
1365 for(i = 0; i < g_list_length(all_item_list); i++) {
1366 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1367 ret = media_info_destroy(media_handle);
1368 if(ret != MEDIA_CONTENT_ERROR_NONE)
1369 media_content_error("media_info_destroy failed: %d", ret);
1372 g_list_free(all_item_list);
1375 /* Remove items list */
1377 for(i = 0; i < g_list_length(item_list); i++) {
1378 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1379 ret = media_info_destroy(media_handle);
1380 if(ret != MEDIA_CONTENT_ERROR_NONE)
1381 media_content_error("media_info_destroy failed: %d", ret);
1384 g_list_free(item_list);
1387 /* Remove tag list */
1389 for(i = 0; i < g_list_length(tag_list); i++) {
1390 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1391 ret = media_tag_destroy(tag_handle);
1392 if(ret != MEDIA_CONTENT_ERROR_NONE)
1393 media_content_error("error media_tag_destroy : [%d]", ret);
1396 g_list_free(tag_list);
1399 /* Remove media list in a tag */
1400 if(media_list_in_tag) {
1401 for(i = 0; i < g_list_length(media_list_in_tag); i++) {
1402 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1403 ret = media_info_destroy(media_handle);
1404 if(ret != MEDIA_CONTENT_ERROR_NONE)
1405 media_content_error("media_info_destroy failed: %d", ret);
1408 g_list_free(media_list_in_tag);
1411 return MEDIA_CONTENT_ERROR_NONE;
1414 /*Get All Music file. sort by Title and not case sensitive*/
1415 int test_get_all_music_files(void)
1417 int ret = MEDIA_CONTENT_ERROR_NONE;
1418 int media_count = 0;
1422 char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1424 ret = media_filter_create(&filter);
1425 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1426 media_content_error("Fail to create filter");
1429 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1430 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1431 media_filter_destroy(filter);
1432 media_content_error("Fail to set condition");
1435 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
1436 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1437 media_filter_destroy(filter);
1438 media_content_error("Fail to set order");
1443 ret = media_info_get_media_count_from_db(filter, &media_count);
1444 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1445 media_filter_destroy(filter);
1446 media_content_error("Fail to get media count");
1450 media_content_debug("media_count : [%d]", media_count);
1452 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1453 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1454 media_filter_destroy(filter);
1455 media_content_error("Fail to get media");
1459 ret = media_filter_destroy(filter);
1464 int test_media_info_operation(void)
1466 int ret = MEDIA_CONTENT_ERROR_NONE;
1467 int media_count = 0;
1469 media_content_debug("\n============Media info Test============\n\n");
1471 test_filter_create();
1473 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1474 if(ret != MEDIA_CONTENT_ERROR_NONE)
1475 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1477 media_content_debug("media_count : [%d]", media_count);
1479 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1480 if(ret == MEDIA_CONTENT_ERROR_NONE)
1481 media_content_debug("media_info_foreach_media_from_db is success");
1483 media_content_error("media_info_foreach_media_from_db is failed");
1485 test_filter_destroy();
1490 int test_media_info_operation_2(void)
1492 int ret = MEDIA_CONTENT_ERROR_NONE;
1493 int bookmark_count = 0;
1495 media_content_debug("\n============Media info Test 2============\n\n");
1497 test_filter_create();
1501 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
1502 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1503 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1505 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1507 media_content_debug("bookmark_count : [%d]", bookmark_count);
1509 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1513 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1514 if(ret != MEDIA_CONTENT_ERROR_NONE)
1515 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1517 media_content_debug("tag_count : [%d]", bookmark_count);
1519 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1520 if(ret != MEDIA_CONTENT_ERROR_NONE)
1521 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1523 test_filter_destroy();
1528 int test_folder_operation(void)
1530 int ret = MEDIA_CONTENT_ERROR_NONE;
1532 media_folder_h folder = NULL;
1533 char *folder_id = NULL;
1534 int folder_count = 0;
1536 media_content_debug("\n============Folder Test============\n\n");
1538 test_filter_create();
1540 ret = media_filter_create(&filter);
1541 if(ret != MEDIA_CONTENT_ERROR_NONE)
1543 media_content_error("[ERROR] media_folder_filter_create is failed");
1547 media_filter_set_condition(filter, "(MEDIA_TYPE = 0 or MEDIA_TYPE = 1) and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT); /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1548 media_filter_set_offset(filter, 0,5);
1549 media_filter_set_order(filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1551 ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1552 media_content_debug("Folder count : %d", folder_count);
1554 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1556 //test.3 get the media list in first folder
1557 filter_h m_filter = NULL;
1558 ret = media_filter_create(&m_filter);
1559 if(ret != MEDIA_CONTENT_ERROR_NONE)
1561 test_filter_destroy();
1562 media_filter_destroy(filter);
1563 media_content_error("[ERROR] media_info_filter_create is failed");
1567 media_filter_set_condition(m_filter, "MEDIA_TYPE=1 and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT); /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1568 media_filter_set_offset(m_filter, 0,5);
1569 media_filter_set_order(m_filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1571 media_folder_get_folder_id(folder, &folder_id);
1572 media_content_debug("folder_id : %s", folder_id);
1574 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1576 if(ret != MEDIA_CONTENT_ERROR_NONE)
1578 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1581 media_filter_destroy(filter);
1582 media_filter_destroy(m_filter);
1584 test_filter_destroy();
1589 int test_playlist_operation(void)
1591 int ret = MEDIA_CONTENT_ERROR_NONE;
1592 media_playlist_h playlist_1 = NULL;
1593 media_playlist_h playlist_2 = NULL;
1594 media_playlist_h playlist_3 = NULL;
1595 int playlist_id_1 = 0;
1596 int playlist_id_2 = 0;
1597 int playlist_id_3 = 0;
1598 char *playlist_name_1 = "myPlaylist_1";
1599 char *playlist_name_2 = "myPlaylist_2";
1600 char *playlist_name_3 = "myPlaylist_3";
1601 int playlist_count = 0;
1602 int media_count = 0;
1608 filter_h filter = NULL;
1609 filter_h m_filter = NULL;
1611 media_content_debug("\n============Playlist Test============\n\n");
1613 /* Filter for playlist */
1615 char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1617 ret = media_filter_create(&filter);
1618 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1619 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1621 /* Create Playlist */
1622 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1623 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1624 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1626 if(playlist_1 != NULL)
1628 /* Add media to Playlist */
1629 media_playlist_add_media(playlist_1, test_audio_id);
1630 media_playlist_add_media(playlist_1, test_audio_id);
1631 media_playlist_add_media(playlist_1, test_video_id);
1634 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
1635 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1638 media_playlist_update_to_db(playlist_1);
1641 if(playlist_2 != NULL)
1643 media_playlist_add_media(playlist_2, test_audio_id);
1644 media_playlist_add_media(playlist_2, test_audio_id);
1645 media_playlist_update_to_db(playlist_2);
1648 /* Get Playlist Count*/
1649 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1651 media_content_debug("playlist_count [%d]", playlist_count);
1654 GList *playlist_id_list = NULL;
1655 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1657 /* Get Playlist id*/
1658 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1659 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1660 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1661 media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1662 media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1663 media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1665 /* Filter for media*/
1666 ret = media_filter_create(&m_filter);
1668 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1670 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1672 /* Get media count */
1673 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1674 media_content_debug("playlist_1_media_count [%d]", media_count);
1676 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1677 media_content_debug("playlist_2_media_count [%d]", media_count);
1679 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1680 media_content_debug("playlist_3_media_count [%d]", media_count);
1682 /* Get media of playlist */
1683 GList *playlist_member_id_list = NULL;
1684 GList *playlist_member_id_list_1 = NULL;
1686 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1687 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1689 int playlist_member_id_1_1 =0;
1690 int playlist_member_id_1_2 =0;
1691 int playlist_member_id_1_3 =0;
1692 int playlist_member_id_2_1 =0;
1693 int playlist_member_id_2_2 =0;
1695 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1696 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1697 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1698 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1699 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1701 media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1702 media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1703 media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1704 media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1705 media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1707 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1708 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1709 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1710 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1711 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1712 media_content_debug("order_1 [%d] order_2 [%d] order_3 [%d] order_4 [%d] order_5 [%d]", order_1, order_2, order_3, order_4, order_5);
1714 /* Update Playlist */
1715 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1716 media_playlist_add_media(playlist_2, test_video_id);
1717 media_playlist_set_name(playlist_2, "test_playlist");
1718 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1719 media_playlist_update_to_db(playlist_2);
1721 /* Get Updated Playlist*/
1722 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1724 /* deletes the playlist */
1725 //media_playlist_delete_from_db(playlist_id_1);
1726 //media_playlist_delete_from_db(playlist_id_2);
1728 if(playlist_1 != NULL)
1729 media_playlist_destroy(playlist_1);
1730 if(playlist_2 != NULL)
1731 media_playlist_destroy(playlist_2);
1732 if(playlist_3 != NULL)
1733 media_playlist_destroy(playlist_3);
1735 g_list_free(playlist_id_list);
1736 g_list_free(playlist_member_id_list);
1737 g_list_free(playlist_member_id_list_1);
1740 ret = media_filter_destroy(filter);
1741 if(m_filter != NULL)
1742 ret = media_filter_destroy(m_filter);
1747 int test_tag_operation(void)
1749 int ret = MEDIA_CONTENT_ERROR_NONE;
1756 char *tag_name_1 = "myTag_1";
1757 char *tag_name_2 = "myTag_2";
1758 char *tag_name_3 = "myTag_3";
1760 int media_count = 0;
1763 media_content_debug("\n============Tag Test============\n\n");
1765 char *g_condition = "TAG_NAME like \"%%my%%\"";
1767 ret = media_filter_create(&filter);
1769 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1771 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1774 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1775 if(ret != MEDIA_CONTENT_ERROR_NONE)
1776 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1777 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1778 if(ret != MEDIA_CONTENT_ERROR_NONE)
1779 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1780 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1781 if(ret != MEDIA_CONTENT_ERROR_NONE)
1782 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1784 /* Add media to Tag */
1785 ret = media_tag_add_media(tag_1, test_audio_id);
1786 if(ret != MEDIA_CONTENT_ERROR_NONE)
1787 media_content_error("error media_tag_add_media : [%d]", ret);
1788 ret = media_tag_add_media(tag_1, test_video_id);
1789 if(ret != MEDIA_CONTENT_ERROR_NONE)
1790 media_content_error("error media_tag_add_media : [%d]", ret);
1791 ret = media_tag_update_to_db(tag_1);
1792 if(ret != MEDIA_CONTENT_ERROR_NONE)
1793 media_content_error("error media_tag_update_to_db : [%d]", ret);
1795 ret = media_tag_add_media(tag_2, test_audio_id);
1796 if(ret != MEDIA_CONTENT_ERROR_NONE)
1797 media_content_error("error media_tag_add_media : [%d]", ret);
1798 ret = media_tag_update_to_db(tag_2);
1799 if(ret != MEDIA_CONTENT_ERROR_NONE)
1800 media_content_error("error media_tag_update_to_db : [%d]", ret);
1803 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1804 if(ret != MEDIA_CONTENT_ERROR_NONE)
1805 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1807 media_content_debug("tag_count [%d]", tag_count);
1810 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1811 if(ret != MEDIA_CONTENT_ERROR_NONE)
1812 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1815 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1816 if(ret != MEDIA_CONTENT_ERROR_NONE)
1817 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1819 media_content_debug("tag_id_1 [%d]", tag_id_1);
1821 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1822 if(ret != MEDIA_CONTENT_ERROR_NONE)
1823 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1825 media_content_debug("tag_id_2 [%d]", tag_id_2);
1827 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1828 if(ret != MEDIA_CONTENT_ERROR_NONE)
1829 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1831 media_content_debug("tag_id_3 [%d]", tag_id_3);
1833 /* Get media count */
1834 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1835 if(ret != MEDIA_CONTENT_ERROR_NONE)
1836 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1838 media_content_debug("tag_1_media_count [%d]", media_count);
1840 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1841 if(ret != MEDIA_CONTENT_ERROR_NONE)
1842 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1844 media_content_debug("tag_2_media_count [%d]", media_count);
1846 /* Get media of Tag */
1847 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1848 if(ret != MEDIA_CONTENT_ERROR_NONE)
1849 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1851 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1852 if(ret != MEDIA_CONTENT_ERROR_NONE)
1853 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1856 ret = media_tag_add_media(tag_2, test_video_id);
1857 if(ret != MEDIA_CONTENT_ERROR_NONE)
1858 media_content_error("error media_tag_add_media : [%d]", ret);
1859 ret = media_tag_set_name(tag_2, "test_tag");
1860 if(ret != MEDIA_CONTENT_ERROR_NONE)
1861 media_content_error("error media_tag_set_name : [%d]", ret);
1862 ret = media_tag_update_to_db(tag_2);
1863 if(ret != MEDIA_CONTENT_ERROR_NONE)
1864 media_content_error("error media_tag_update_to_db : [%d]", ret);
1866 /* Get Updated Tag*/
1867 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1868 if(ret != MEDIA_CONTENT_ERROR_NONE)
1869 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1871 /* deletes the tag */
1872 ret = media_tag_delete_from_db(tag_id_1);
1873 if(ret != MEDIA_CONTENT_ERROR_NONE)
1874 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1875 ret = media_tag_delete_from_db(tag_id_2);
1876 if(ret != MEDIA_CONTENT_ERROR_NONE)
1877 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1879 ret = media_tag_destroy(tag_1);
1880 if(ret != MEDIA_CONTENT_ERROR_NONE)
1881 media_content_error("error media_tag_destroy : [%d]", ret);
1882 ret = media_tag_destroy(tag_2);
1883 if(ret != MEDIA_CONTENT_ERROR_NONE)
1884 media_content_error("error media_tag_destroy : [%d]", ret);
1885 ret = media_filter_destroy(filter);
1886 if(ret != MEDIA_CONTENT_ERROR_NONE)
1887 media_content_error("error media_filter_destroy : [%d]", ret);
1893 int test_bookmark_operation(void)
1895 //bookmark is only supported for video information.
1896 int ret = MEDIA_CONTENT_ERROR_NONE;
1897 int bookmark_count = 0;
1900 media_content_debug("\n============Bookmark Test============\n\n");
1902 char *g_condition = "BOOKMARK_MARKED_TIME > 300";
1904 ret = media_filter_create(&filter);
1905 if(ret != MEDIA_CONTENT_ERROR_NONE)
1906 media_content_error("error media_filter_create : [%d]", ret);
1908 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1909 if(ret != MEDIA_CONTENT_ERROR_NONE)
1910 media_content_error("error media_filter_set_condition : [%d]", ret);
1912 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
1913 if(ret != MEDIA_CONTENT_ERROR_NONE)
1914 media_content_error("error media_filter_set_order : [%d]", ret);
1916 //insert bookmark to video
1917 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
1919 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
1920 if(ret != MEDIA_CONTENT_ERROR_NONE)
1921 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
1923 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
1924 if(ret != MEDIA_CONTENT_ERROR_NONE)
1925 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
1927 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
1928 if(ret != MEDIA_CONTENT_ERROR_NONE)
1929 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
1931 media_content_debug("bookmark_count = [%d]", bookmark_count);
1933 ret = media_filter_destroy(filter);
1934 if(ret != MEDIA_CONTENT_ERROR_NONE)
1935 media_content_error("error media_filter_destroy : [%d]", ret);
1940 int test_album_list(void)
1942 media_content_debug("\n============Album Test============\n\n");
1944 int ret = MEDIA_CONTENT_ERROR_NONE;
1945 int album_count = 0;
1949 char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1951 ret = media_filter_create(&filter);
1952 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1953 media_content_error("Fail to create filter");
1956 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1957 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1958 media_filter_destroy(filter);
1959 media_content_error("Fail to set condition");
1962 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
1963 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1964 media_filter_destroy(filter);
1965 media_content_error("Fail to set order");
1969 ret = media_album_get_album_count_from_db(filter, &album_count);
1970 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1971 media_filter_destroy(filter);
1974 media_content_debug("album_count [%d]", album_count);
1977 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
1978 if(ret != MEDIA_CONTENT_ERROR_NONE)
1979 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
1981 ret = media_filter_destroy(filter);
1982 if(ret != MEDIA_CONTENT_ERROR_NONE)
1983 media_content_error("error media_filter_destroy : [%d]", ret);
1988 int test_group_operation(void)
1990 media_content_debug("\n============Group Test============\n\n");
1992 int ret = MEDIA_CONTENT_ERROR_NONE;
1993 int group_count = 0;
1996 ret = test_filter_create();
1997 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1998 media_content_error("[%d]error(0x%08x)", __LINE__, ret);
2002 for(idx = 0; idx <= MEDIA_CONTENT_GROUP_KEYWORD; idx++)
2004 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2005 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2006 test_filter_destroy();
2007 media_content_error("media_group_get_group_count_from_db fail. idx=[%d]", ret, idx);
2010 media_content_debug("[%2d]group_count [%d]", idx, group_count);
2013 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2015 ret = test_filter_destroy();
2020 int test_update_operation()
2022 int ret = MEDIA_CONTENT_ERROR_NONE;
2024 media_info_h media_handle = NULL;
2025 GList *all_item_list = NULL;
2027 /* Get all item list */
2028 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2029 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2030 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2033 media_content_debug("media_info_foreach_media_from_db success");
2034 char *media_id = NULL;
2035 char *media_path = NULL;
2036 media_content_type_e media_type = 0;
2038 for(i = 0; i < g_list_length(all_item_list); i++) {
2039 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2041 ret = media_info_get_media_id(media_handle, &media_id);
2042 if(ret != MEDIA_CONTENT_ERROR_NONE)
2043 media_content_error("media_info_get_media_id failed: %d", ret);
2044 ret = media_info_get_file_path(media_handle, &media_path);
2045 if(ret != MEDIA_CONTENT_ERROR_NONE)
2046 media_content_error("media_info_get_file_path failed: %d", ret);
2047 ret = media_info_get_media_type(media_handle, &media_type);
2048 if(ret != MEDIA_CONTENT_ERROR_NONE)
2049 media_content_error("media_info_get_media_type failed: %d", ret);
2051 media_content_debug("media_id [%d] : %s", i, media_id);
2052 media_content_debug("media_type [%d] : %d", i, media_type);
2053 media_content_debug("media_path [%d] : %s", i, media_path);
2055 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2056 image_meta_h image_handle;
2057 media_content_orientation_e orientation;
2059 ret = media_info_get_image(media_handle, &image_handle);
2060 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2061 media_content_error("media_info_get_image failed: %d", ret);
2063 media_content_debug("media_info_get_image success");
2066 orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2067 image_meta_set_orientation(image_handle, orientation);
2069 ret = image_meta_update_to_db(image_handle);
2070 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2071 media_content_error("image_meta_update_to_db failed: %d", ret);
2073 media_content_debug("image_meta_update_to_db success");
2077 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2078 video_meta_h video_handle;
2080 ret = media_info_get_video(media_handle, &video_handle);
2081 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2082 media_content_error("media_info_get_video failed: %d", ret);
2084 media_content_debug("media_info_get_video success");
2087 video_meta_set_played_count(video_handle,5);
2088 video_meta_set_played_time(video_handle,5);
2089 video_meta_set_played_position(video_handle,5);
2090 video_meta_update_to_db(video_handle);
2092 ret = video_meta_update_to_db(video_handle);
2093 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2094 media_content_error("video_meta_update_to_db failed: %d", ret);
2096 media_content_debug("video_meta_update_to_db success");
2099 } else if(media_type == MEDIA_CONTENT_TYPE_MUSIC) {//update audio meta
2100 audio_meta_h audio_handle = NULL;
2101 ret = media_info_get_audio(media_handle, &audio_handle);
2102 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2103 media_content_error("media_info_get_audio failed: %d", ret);
2105 media_content_debug("media_info_get_audio success");
2107 audio_meta_set_played_count(audio_handle,5);
2108 audio_meta_set_played_time(audio_handle,1000);
2109 audio_meta_set_played_position(audio_handle,180);
2111 ret = audio_meta_update_to_db(audio_handle);
2112 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2113 media_content_error("audio_meta_update_to_db failed: %d", ret);
2115 media_content_debug("audio_meta_update_to_db success");
2124 return MEDIA_CONTENT_ERROR_NONE;
2127 int test_insert(void)
2129 int ret = MEDIA_CONTENT_ERROR_NONE;
2130 //char *path = "/opt/media/Images/Default.jpg";
2131 char *path = tzplatform_mkpath(TZ_USER_CONTENT, "Others/other.txt");
2132 //char *path = NULL;
2133 media_info_h media_item = NULL;
2134 media_content_debug("\n============DB Insert Test============\n\n");
2136 ret = media_info_insert_to_db(path, &media_item);
2138 if((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL))
2140 media_content_debug("Insertion is success");
2144 media_content_error("Insertion is failed");
2145 ret = media_info_destroy(media_item);
2149 char *media_id = NULL;
2151 ret = media_info_get_media_id(media_item, &media_id);
2152 if(ret != MEDIA_CONTENT_ERROR_NONE)
2153 media_content_error("media_info_get_media_id failed: %d", ret);
2155 media_content_debug("Media ID: %s", media_id);
2157 SAFE_FREE(media_id);
2159 ret = media_info_update_to_db(media_item);
2160 if(ret == MEDIA_CONTENT_ERROR_NONE)
2161 media_content_debug("media_info_update_to_db is success");
2163 media_content_error("media_info_update_to_db is failed");
2165 ret = media_info_destroy(media_item);
2166 if(ret != MEDIA_CONTENT_ERROR_NONE)
2167 media_content_error("media_info_destroy failed: %d", ret);
2174 int ret = MEDIA_CONTENT_ERROR_NONE;
2175 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2176 char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
2177 media_info_h move_media = NULL;
2179 ret = media_info_get_media_from_db(move_media_id, &move_media);
2180 if(ret == MEDIA_CONTENT_ERROR_NONE)
2181 media_content_debug("media_info_get_media_from_db success");
2183 media_content_error("media_info_get_media_from_db failed: %d", ret);
2185 media_content_debug("\n============DB Move Test============\n\n");
2188 ret = media_info_move_to_db(move_media, dst_path);
2190 if(ret == MEDIA_CONTENT_ERROR_NONE)
2191 media_content_debug("Move is success");
2193 media_content_error("Move is failed");
2195 ret = media_info_destroy(move_media);
2197 media_content_debug("There is no item : %s", move_media_id);
2203 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2205 char *thumbnail_path = NULL;
2206 int ret = MEDIA_CONTENT_ERROR_NONE;
2209 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2210 media_content_debug("error_code [%d]", error);
2211 media_content_debug("thumbnail_path [%s]", path);
2212 if(user_data != NULL)
2214 media_info_h media = (media_info_h)user_data;
2215 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2216 if(ret != MEDIA_CONTENT_ERROR_NONE)
2217 media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2219 media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2220 SAFE_FREE(thumbnail_path);
2221 ret = media_info_destroy(media);
2222 if(ret != MEDIA_CONTENT_ERROR_NONE)
2223 media_content_error("media_info_destroy failed: %d", ret);
2226 if(g_cnt == g_media_cnt)
2227 g_main_loop_quit(g_loop);
2232 bool thumbnail_create_cb(media_info_h media, void *user_data)
2234 char *media_id = NULL;
2235 media_info_h dst = NULL;
2236 int ret = MEDIA_CONTENT_ERROR_NONE;
2240 media_content_debug("NO Item");
2244 ret = media_info_get_media_id(media, &media_id);
2245 if(ret != MEDIA_CONTENT_ERROR_NONE)
2246 media_content_error("media_info_get_media_id failed: %d", ret);
2248 media_content_debug("media_id : [%s]", media_id);
2250 ret = media_info_clone(&dst, media);
2251 if(ret != MEDIA_CONTENT_ERROR_NONE)
2252 media_content_error("media_info_clone failed: %d", ret);
2255 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2256 if(ret != MEDIA_CONTENT_ERROR_NONE)
2257 media_content_error("media_info_create_thumbnail failed: %d", ret);
2263 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2265 int ret = MEDIA_CONTENT_ERROR_NONE;
2267 char *media_id = NULL;
2268 media_info_h dst = NULL;
2274 media_content_debug("NO Item");
2278 ret = media_info_get_media_id(media, &media_id);
2279 if(ret != MEDIA_CONTENT_ERROR_NONE)
2280 media_content_error("media_info_get_media_id failed: %d", ret);
2282 media_content_debug("media_id : [%s]", media_id);
2284 ret = media_info_clone(&dst, media);
2285 if(ret != MEDIA_CONTENT_ERROR_NONE)
2286 media_content_error("media_info_clone failed: %d", ret);
2288 ret = media_info_cancel_thumbnail(dst);
2289 if(ret != MEDIA_CONTENT_ERROR_NONE)
2290 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2292 ret = media_info_destroy(dst);
2293 if(ret != MEDIA_CONTENT_ERROR_NONE)
2294 media_content_error("media_info_destroy failed: %d", ret);
2296 if(g_cnt == g_media_cnt)
2297 g_main_loop_quit(g_loop);
2302 gboolean create_thumbnail_start(gpointer data)
2304 int ret = MEDIA_CONTENT_ERROR_NONE;
2306 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2308 if(ret == MEDIA_CONTENT_ERROR_NONE)
2309 media_content_debug("media_info_foreach_media_from_db is success");
2311 media_content_error("media_info_foreach_media_from_db is failed");
2316 gboolean cancel_thumbnail_start(gpointer data)
2318 int ret = MEDIA_CONTENT_ERROR_NONE;
2320 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2322 if(ret == MEDIA_CONTENT_ERROR_NONE)
2323 media_content_debug("media_info_foreach_media_from_db is success");
2325 media_content_error("media_info_foreach_media_from_db is failed");
2330 int test_create_thumbnail(int cancel)
2332 int ret = MEDIA_CONTENT_ERROR_NONE;
2333 GSource *source = NULL;
2334 GMainContext *context = NULL;
2336 test_filter_create();
2338 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2339 if(ret != MEDIA_CONTENT_ERROR_NONE)
2340 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2342 media_content_debug("media_count : [%d]", g_media_cnt);
2344 g_loop = g_main_loop_new(NULL, FALSE);
2345 context = g_main_loop_get_context(g_loop);
2346 source = g_idle_source_new();
2347 g_source_set_callback (source, create_thumbnail_start, NULL, NULL);
2348 g_source_attach (source, context);
2350 /* Logic to cancel */
2352 GSource *cancel_src = NULL;
2353 cancel_src = g_idle_source_new();
2354 g_source_set_callback (cancel_src, cancel_thumbnail_start, NULL, NULL);
2355 g_source_attach (cancel_src, context);
2358 g_main_loop_run(g_loop);
2359 g_main_loop_unref(g_loop);
2361 test_filter_destroy();
2366 int test_disconnect_database(void)
2368 int ret = MEDIA_CONTENT_ERROR_NONE;
2369 media_content_debug("\n============DB Disconnection Test============\n\n");
2371 ret = media_content_disconnect();
2373 if(ret == MEDIA_CONTENT_ERROR_NONE)
2374 media_content_debug("disconnection is success");
2376 media_content_error("disconnection is failed");
2381 int test_request_update_db(void)
2383 int ret = MEDIA_CONTENT_ERROR_NONE;
2384 media_info_h media = NULL;
2386 //get the content of Over the horizon
2387 ret = media_info_get_media_from_db("0f999626-6218-450c-a4ad-181a3bab6ebf", &media);
2388 if(ret != MEDIA_CONTENT_ERROR_NONE)
2389 media_content_error("media_info_get_media_from_db failed: %d", ret);
2391 test_disconnect_database();
2393 ret = media_info_set_content_name(media, "TEST_content_name");
2394 if(ret != MEDIA_CONTENT_ERROR_NONE)
2395 media_content_error("media_info_set_content_name failed: %d", ret);
2397 ret = media_info_update_to_db(media);
2398 if(ret == MEDIA_CONTENT_ERROR_NONE)
2399 media_content_debug("media_info_update_to_db is success");
2401 media_content_error("media_info_update_to_db is failed");
2404 media_info_destroy(media);
2409 int g_total_photo_size = 0;
2410 int g_total_video_size = 0;
2411 int g_total_mp3_size = 0;
2412 int g_total_voice_memo_size = 0;
2414 bool dft_cb(media_info_h media, void *user_data)
2416 unsigned long long file_size = 0;
2417 media_content_type_e media_type = -1;
2418 char *mime_type = NULL;
2419 int ret = MEDIA_CONTENT_ERROR_NONE;
2426 ret = media_info_get_media_type(media, &media_type);
2427 if(ret != MEDIA_CONTENT_ERROR_NONE)
2428 media_content_error("media_info_get_media_type failed: %d", ret);
2429 ret = media_info_get_size(media, &file_size);
2430 if(ret != MEDIA_CONTENT_ERROR_NONE)
2431 media_content_error("media_info_get_size failed: %d", ret);
2432 ret = media_info_get_mime_type(media, &mime_type);
2433 if(ret != MEDIA_CONTENT_ERROR_NONE)
2434 media_content_error("media_info_get_mime_type failed: %d", ret);
2436 if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
2438 g_total_photo_size += file_size;
2440 else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
2442 g_total_video_size += file_size;
2444 else if(media_type == MEDIA_CONTENT_TYPE_SOUND)
2446 g_total_voice_memo_size += file_size;
2448 else if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
2450 if((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2452 g_total_mp3_size += file_size;
2456 g_total_voice_memo_size += file_size;
2461 printf("invalid media_type");
2464 if(mime_type != NULL)
2473 int ret = MEDIA_CONTENT_ERROR_NONE;
2474 printf("\n============DFT_test============\n\n");
2476 filter_h filter = NULL;
2479 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2481 ret = media_filter_create(&filter);
2484 printf("[Internal Memory]\n");
2485 /*1. Photo ============================================================*/
2486 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2489 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2490 printf("Photo count = [%d]\n", media_cnt);
2493 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2494 printf("Photo size = [%d]\n", g_total_photo_size);
2496 /*2. Video ============================================================*/
2497 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2500 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2501 printf("Video count = [%d]\n", media_cnt);
2504 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2505 printf("Video size = [%d]\n", g_total_video_size);
2507 /*3. MP3 ============================================================*/
2508 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2511 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2512 printf("MP3 count = [%d]\n", media_cnt);
2515 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2516 printf("MP3 size = [%d]\n", g_total_mp3_size);
2518 /*4. Voice Memo ============================================================*/
2519 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND (MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2521 /*Get Voice Memo Count*/
2522 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2523 printf("Voice Memo count = [%d]\n", media_cnt);
2525 /*Get Voice Memo Size*/
2526 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2527 printf("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2529 g_total_photo_size = 0;
2530 g_total_video_size = 0;
2531 g_total_mp3_size = 0;
2532 g_total_voice_memo_size = 0;
2535 printf("\n[External Memory]\n");
2536 /*1. Photo ============================================================*/
2537 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2540 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2541 printf("Photo count = [%d]\n", media_cnt);
2544 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2545 printf("Photo size = [%d]\n", g_total_photo_size);
2547 /*2. Video ============================================================*/
2548 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2551 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2552 printf("Video count = [%d]\n", media_cnt);
2555 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2556 printf("Video size = [%d]\n", g_total_video_size);
2558 /*3. MP3 ============================================================*/
2559 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2562 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2563 printf("MP3 count = [%d]\n", media_cnt);
2566 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2567 printf("MP3 size = [%d]\n", g_total_mp3_size);
2569 /*4. Voice Memo ============================================================*/
2570 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND (MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2572 /*Get Voice Memo Count*/
2573 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2574 printf("Voice Memo count = [%d]\n", media_cnt);
2576 /*Get Voice Memo Size*/
2577 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2578 printf("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2579 ret = media_filter_destroy(filter);
2584 void insert_batch_cb(media_content_error_e error, void * user_data)
2586 printf("media_info_insert_batch_to_db completed!\n");
2589 int test_batch_operations()
2593 char *file_list[10];
2595 for (i = 0; i < 10; i++) {
2596 char filepath[255] = {0,};
2597 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2598 media_content_debug("File : %s\n", filepath);
2599 file_list[i] = strdup(filepath);
2602 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2603 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2604 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2608 char *condition = "MEDIA_PATH LIKE \'";
2609 strncat (condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2610 ret = media_filter_create(&filter);
2611 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2612 media_content_error("Fail to create filter");
2616 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2617 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2618 media_filter_destroy(filter);
2619 media_content_error("Fail to set condition");
2623 ret = media_info_delete_batch_from_db(filter);
2624 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2625 media_filter_destroy(filter);
2626 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2630 ret = media_filter_destroy(filter);
2635 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
2637 printf("media_info_insert_burst_shot_to_db completed![%d]\n", error);
2638 g_main_loop_quit(g_loop);
2641 gboolean test_insert_burst_shot_to_db_start(gpointer data)
2643 int ret = MEDIA_CONTENT_ERROR_NONE;
2645 char *file_list[10];
2647 for (i = 0; i < 10; i++) {
2648 char filepath[255] = {0,};
2649 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2650 media_content_debug("File : %s\n", filepath);
2651 file_list[i] = strdup(filepath);
2654 ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
2655 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2656 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
2662 int test_insert_burst_shot_to_db(void)
2664 GSource *source = NULL;
2665 GMainContext *context = NULL;
2667 g_loop = g_main_loop_new(NULL, FALSE);
2668 context = g_main_loop_get_context(g_loop);
2669 source = g_idle_source_new();
2670 g_source_set_callback (source, test_insert_burst_shot_to_db_start, NULL, NULL);
2671 g_source_attach (source, context);
2673 g_main_loop_run(g_loop);
2674 g_main_loop_unref(g_loop);
2679 void _scan_cb(media_content_error_e err, void *user_data)
2681 printf("scan callback is called : %d\n", err);
2682 g_main_loop_quit(g_loop);
2687 int test_scan_file()
2691 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2692 ret = media_content_scan_file(file_path);
2693 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2694 media_content_error("Fail to media_content_scan_file : %d", ret);
2701 gboolean test_scan_dir_start(gpointer data)
2705 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2707 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2709 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2710 media_content_error("Fail to media_content_scan_file : %d", ret);
2719 GSource *source = NULL;
2720 GMainContext *context = NULL;
2722 g_loop = g_main_loop_new(NULL, FALSE);
2723 context = g_main_loop_get_context(g_loop);
2724 source = g_idle_source_new();
2725 g_source_set_callback (source, test_scan_dir_start, NULL, NULL);
2726 g_source_attach (source, context);
2728 g_main_loop_run(g_loop);
2729 g_main_loop_unref(g_loop);
2734 void _noti_cb(media_content_error_e error,
2736 media_content_db_update_item_type_e update_item,
2737 media_content_db_update_type_e update_type,
2738 media_content_type_e media_type,
2745 printf("noti success! : %d\n", error);
2747 printf("error occured! : %d\n", error);
2750 printf("Noti from PID(%d)\n", pid);
2752 if (update_item == MEDIA_ITEM_FILE) {
2753 printf("Noti item : MEDIA_ITEM_FILE\n");
2754 } else if (update_item == MEDIA_ITEM_DIRECTORY) {
2755 printf("Noti item : MEDIA_ITEM_DIRECTORY\n");
2758 if (update_type == MEDIA_CONTENT_INSERT) {
2759 printf("Noti type : MEDIA_CONTENT_INSERT\n");
2760 } else if (update_type == MEDIA_CONTENT_DELETE) {
2761 printf("Noti type : MEDIA_CONTENT_DELETE\n");
2762 } else if (update_type == MEDIA_CONTENT_UPDATE) {
2763 printf("Noti type : MEDIA_CONTENT_UPDATE\n");
2766 printf("content type : %d\n", media_type);
2769 printf("path : %s\n", path);
2771 printf("path not\n");
2774 printf("uuid : %s\n", uuid);
2776 printf("uuid not\n");
2779 printf("mime_type : %s\n", mime_type);
2781 printf("mime not\n");
2783 if (user_data) printf("String : %s\n", (char *)user_data);
2785 //g_main_loop_quit(g_loop);
2789 gboolean _send_noti_operations(gpointer data)
2791 int ret = MEDIA_CONTENT_ERROR_NONE;
2793 /* First of all, noti subscription */
2794 char *user_str = strdup("hi");
2795 media_content_set_db_updated_cb(_noti_cb, (void*)user_str);
2797 /* media_info_insert_to_db */
2798 media_info_h media_item = NULL;
2799 char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2801 ret = media_info_insert_to_db(path, &media_item);
2802 if (ret < MEDIA_CONTENT_ERROR_NONE) {
2803 media_content_error("media_info_insert_to_db failed : %d", ret);
2804 media_info_destroy(media_item);
2808 media_content_debug("media_info_insert_to_db success");
2810 /* media_info_delete_batch_from_db */
2812 char *condition = "MEDIA_PATH LIKE \'";
2813 strncat (condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2815 ret = media_filter_create(&filter);
2816 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2817 media_content_error("Fail to create filter");
2818 media_info_destroy(media_item);
2822 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2823 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2824 media_filter_destroy(filter);
2825 media_info_destroy(media_item);
2826 media_content_error("Fail to set condition");
2829 ret = media_info_delete_batch_from_db(filter);
2830 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2831 media_filter_destroy(filter);
2832 media_info_destroy(media_item);
2833 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2837 media_filter_destroy(filter);
2839 /* media_info_update_to_db */
2840 ret = media_info_update_to_db(media_item);
2841 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2842 media_content_error("media_info_update_to_db failed : %d\n", ret);
2843 media_info_destroy(media_item);
2847 media_info_destroy(media_item);
2854 int ret = MEDIA_CONTENT_ERROR_NONE;
2855 GSource *source = NULL;
2856 GMainContext *context = NULL;
2858 g_loop = g_main_loop_new(NULL, FALSE);
2859 context = g_main_loop_get_context(g_loop);
2860 source = g_idle_source_new();
2861 g_source_set_callback (source, _send_noti_operations, NULL, NULL);
2862 g_source_attach (source, context);
2864 g_main_loop_run(g_loop);
2865 g_main_loop_unref(g_loop);
2867 test_filter_destroy();
2868 media_content_unset_db_updated_cb();
2873 int main(int argc, char *argv[])
2875 int ret = MEDIA_CONTENT_ERROR_NONE;
2877 media_content_debug("--- content manager test start ---\n\n");
2879 ret = test_connect_database();
2880 if(ret != MEDIA_CONTENT_ERROR_NONE)
2881 return MEDIA_CONTENT_ERROR_NONE;
2885 if(ret != MEDIA_CONTENT_ERROR_NONE)
2888 ret = test_gallery_scenario();
2889 if(ret != MEDIA_CONTENT_ERROR_NONE)
2892 ret = test_get_all_music_files();
2893 if(ret != MEDIA_CONTENT_ERROR_NONE)
2896 ret = test_media_info_operation();
2897 if(ret != MEDIA_CONTENT_ERROR_NONE)
2900 ret = test_folder_operation();
2901 if(ret != MEDIA_CONTENT_ERROR_NONE)
2904 ret = test_playlist_operation();
2905 if(ret != MEDIA_CONTENT_ERROR_NONE)
2908 ret = test_tag_operation();
2909 if(ret != MEDIA_CONTENT_ERROR_NONE)
2912 ret = test_bookmark_operation();
2913 if(ret != MEDIA_CONTENT_ERROR_NONE)
2916 ret = test_album_list();
2917 if(ret != MEDIA_CONTENT_ERROR_NONE)
2920 ret = test_group_operation();
2921 if(ret != MEDIA_CONTENT_ERROR_NONE)
2924 ret = test_update_operation();
2925 if(ret != MEDIA_CONTENT_ERROR_NONE)
2928 ret = test_insert();
2929 if(ret != MEDIA_CONTENT_ERROR_NONE)
2933 if(ret != MEDIA_CONTENT_ERROR_NONE)
2936 ret = test_create_thumbnail(TRUE);
2937 if(ret != MEDIA_CONTENT_ERROR_NONE)
2940 ret = test_request_update_db();
2941 if(ret != MEDIA_CONTENT_ERROR_NONE)
2945 if(ret != MEDIA_CONTENT_ERROR_NONE)
2948 ret = test_batch_operations();
2949 if(ret != MEDIA_CONTENT_ERROR_NONE)
2950 return MEDIA_CONTENT_ERROR_NONE;
2952 ret = test_insert_burst_shot_to_db();
2953 if(ret != MEDIA_CONTENT_ERROR_NONE)
2954 return MEDIA_CONTENT_ERROR_NONE;
2956 ret = test_scan_file();
2957 if(ret != MEDIA_CONTENT_ERROR_NONE)
2958 return MEDIA_CONTENT_ERROR_NONE;
2960 ret = test_scan_dir();
2961 if(ret != MEDIA_CONTENT_ERROR_NONE)
2962 return MEDIA_CONTENT_ERROR_NONE;
2965 if(ret != MEDIA_CONTENT_ERROR_NONE)
2966 return MEDIA_CONTENT_ERROR_NONE;
2969 ret = test_disconnect_database();
2970 if(ret != MEDIA_CONTENT_ERROR_NONE)
2973 media_content_debug("--- content manager test end ---\n");