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>
27 #include <media_content_internal.h>
30 static filter_h g_filter = NULL;
31 static filter_h g_filter_g = NULL; /*filter for group like folder, tag, playlist, album, year ... */
33 static GMainLoop *g_loop = NULL;
35 static int g_media_cnt = 0;
37 #define test_audio_id "3304285f-1070-41af-8b4e-f0086cc768f3"
38 #define test_video_id "53c43e7e-53d2-4194-80a6-55d5dcde0def"
39 #define test_image_id "db1c184c-6f31-43b4-b924-8c00ac5b6197"
41 static void get_audio_meta(media_info_h media)
43 audio_meta_h audio = NULL;
47 content_debug("=== audio meta ===");
48 if (media_info_get_audio(media, &audio) != MEDIA_CONTENT_ERROR_NONE)
51 if (audio_meta_get_media_id(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
52 content_debug("audio_id : [%s]", c_value);
56 if (audio_meta_get_album(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
57 content_debug("album : [%s]", c_value);
61 if (audio_meta_get_artist(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
62 content_debug("artist : [%s]", c_value);
66 if (audio_meta_get_album_artist(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
67 content_debug("album artist : [%s]", c_value);
71 if (audio_meta_get_genre(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
72 content_debug("genre : [%s]", c_value);
76 if (audio_meta_get_composer(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
77 content_debug("composer : [%s]", c_value);
81 if (audio_meta_get_year(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
82 content_debug("year : [%s]", c_value);
86 if (audio_meta_get_recorded_date(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
87 content_debug("recorded date : [%s]", c_value);
91 if (audio_meta_get_copyright(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
92 content_debug("copyright : [%s]", c_value);
96 if (audio_meta_get_track_num(audio, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
97 content_debug("track number : [%s]", c_value);
101 if (audio_meta_get_bit_rate(audio, &i_value) == MEDIA_CONTENT_ERROR_NONE)
102 content_debug("bitrate : [%d]", i_value);
104 if (audio_meta_get_sample_rate(audio, &i_value) == MEDIA_CONTENT_ERROR_NONE)
105 content_debug("samplerate : [%d]", i_value);
107 if (audio_meta_get_channel(audio, &i_value) == MEDIA_CONTENT_ERROR_NONE)
108 content_debug("channel : [%d]", i_value);
110 if (audio_meta_get_duration(audio, &i_value) == MEDIA_CONTENT_ERROR_NONE)
111 content_debug("duration : [%d]", i_value);
113 audio_meta_destroy(audio);
116 static void get_video_meta(media_info_h media)
118 video_meta_h video = NULL;
119 char *c_value = NULL;
122 content_debug("=== video meta ===");
123 if (media_info_get_video(media, &video) != MEDIA_CONTENT_ERROR_NONE)
126 if (video_meta_get_media_id(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
127 content_debug("video_id : [%s]", c_value);
131 if (video_meta_get_album(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
132 content_debug("album : [%s]", c_value);
136 if (video_meta_get_artist(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
137 content_debug("artist : [%s]", c_value);
141 if (video_meta_get_album_artist(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
142 content_debug("album artist : [%s]", c_value);
146 if (video_meta_get_genre(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
147 content_debug("genre : [%s]", c_value);
151 if (video_meta_get_composer(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
152 content_debug("composer : [%s]", c_value);
156 if (video_meta_get_year(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
157 content_debug("year : [%s]", c_value);
161 if (video_meta_get_recorded_date(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
162 content_debug("recorded date : [%s]", c_value);
166 if (video_meta_get_copyright(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
167 content_debug("copyright : [%s]", c_value);
171 if (video_meta_get_track_num(video, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
172 content_debug("track num : [%s]", c_value);
176 if (video_meta_get_bit_rate(video, &i_value) == MEDIA_CONTENT_ERROR_NONE)
177 content_debug("bitrate : [%d]", i_value);
179 if (video_meta_get_duration(video, &i_value) == MEDIA_CONTENT_ERROR_NONE)
180 content_debug("duration : [%d]", i_value);
182 if (video_meta_get_width(video, &i_value) == MEDIA_CONTENT_ERROR_NONE)
183 content_debug("width : [%d]", i_value);
185 if (video_meta_get_height(video, &i_value) == MEDIA_CONTENT_ERROR_NONE)
186 content_debug("height : [%d]", i_value);
188 video_meta_destroy(video);
191 static void get_image_meta(media_info_h media)
193 image_meta_h image = NULL;
194 char *c_value = NULL;
196 media_content_orientation_e orientation;
198 content_debug("=== image meta ===");
199 if (media_info_get_image(media, &image) != MEDIA_CONTENT_ERROR_NONE)
202 if (image_meta_get_width(image, &i_value) == MEDIA_CONTENT_ERROR_NONE)
203 content_debug("width : [%d]", i_value);
205 if (image_meta_get_height(image, &i_value) == MEDIA_CONTENT_ERROR_NONE)
206 content_debug("height : [%d]", i_value);
208 if (image_meta_get_orientation(image, &orientation) == MEDIA_CONTENT_ERROR_NONE)
209 content_debug("orientation : [%d]", orientation);
211 if (image_meta_get_date_taken(image, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
212 content_debug("datetaken : [%s]", c_value);
216 image_meta_destroy(image);
219 static void get_book_meta(media_info_h media)
221 book_meta_h book = NULL;
222 char *c_value = NULL;
224 content_debug("=== book meta ===");
225 if (media_info_get_book(media, &book) != MEDIA_CONTENT_ERROR_NONE)
228 if (book_meta_get_media_id(book, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
229 content_debug("media_id : [%s]", c_value);
233 if (book_meta_get_author(book, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
234 content_debug("author : [%s]", c_value);
238 if (book_meta_get_date(book, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
239 content_debug("date : [%s]", c_value);
243 if (book_meta_get_publisher(book, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
244 content_debug("publisher : [%s]", c_value);
248 if (book_meta_get_subject(book, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
249 content_debug("subject : [%s]", c_value);
253 book_meta_destroy(book);
256 static void get_album_meta(media_album_h album)
258 char *c_value = NULL;
261 content_debug("=== album meta ===");
262 if (media_album_get_album_id(album, &i_value) == MEDIA_CONTENT_ERROR_NONE)
263 content_debug("album id : [%d]", i_value);
265 if (media_album_get_name(album, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
266 content_debug("album name : [%s]", c_value);
270 if (media_album_get_artist(album, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
271 content_debug("album artist : [%s]", c_value);
276 static void get_bookmark_meta(media_bookmark_h bookmark)
278 char *c_value = NULL;
282 content_debug("=== bookmark meta ===");
283 if (media_bookmark_get_bookmark_id(bookmark, &i_value) == MEDIA_CONTENT_ERROR_NONE)
284 content_debug("bookmark_id : %d", i_value);
286 if (media_bookmark_get_thumbnail_path(bookmark, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
287 content_debug("bookmark thumbnail_path : %s", c_value);
291 if (media_bookmark_get_marked_time(bookmark, &time) == MEDIA_CONTENT_ERROR_NONE)
292 content_debug("bookmark marked_time : %ld", time);
294 if (media_bookmark_get_name(bookmark, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
295 content_debug("bookmark name : %s", c_value);
300 static void get_tag_meta(media_tag_h tag)
302 char *c_value = NULL;
305 content_debug("=== tag meta ===");
306 if (media_tag_get_tag_id(tag, &i_value) == MEDIA_CONTENT_ERROR_NONE)
307 content_debug("tag_id : %d", i_value);
309 if (media_tag_get_name(tag, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
310 content_debug("tag_name : %s", c_value);
315 static void get_face_meta(media_face_h face)
317 char *c_value = NULL;
318 unsigned int rect_x = 0;
319 unsigned int rect_y = 0;
320 unsigned int rect_w = 0;
321 unsigned int rect_h = 0;
322 media_content_orientation_e orientation = 0;
324 content_debug("=== face meta ===");
325 if (media_face_get_face_id(face, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
326 content_debug("face_id : %s", c_value);
330 if (media_face_get_media_id(face, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
331 content_debug("media_id : %s", c_value);
335 if (media_face_get_face_rect(face, &rect_x, &rect_y, &rect_w, &rect_h) == MEDIA_CONTENT_ERROR_NONE)
336 content_debug("face_rect x[%d] y[%d] w[%d] h[%d]", rect_x, rect_y, rect_w, rect_h);
338 if (media_face_get_orientation(face, &orientation) == MEDIA_CONTENT_ERROR_NONE)
339 content_debug("orientation : %d", orientation);
341 if (media_face_get_tag(face, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
342 content_debug("tag : %s", c_value);
347 static void get_folder_meta(media_folder_h folder, char **folder_id)
349 char *c_value = NULL;
351 content_debug("=== folder meta ===");
352 if (media_folder_get_folder_id(folder, &c_value) != MEDIA_CONTENT_ERROR_NONE) {
353 content_debug("folder_id : %s", c_value);
354 *folder_id = c_value;
357 if (media_folder_get_path(folder, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
358 content_debug("folder_path : %s", c_value);
362 if (media_folder_get_name(folder, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
363 content_debug("folder_name : %s", c_value);
368 static void get_media_meta(media_info_h media)
370 char *c_value = NULL;
373 bool b_value = false;
374 unsigned long long size = 0;
375 media_content_type_e media_type = 0;
377 content_debug("=== media meta ===");
378 if (media_info_get_media_type(media, &media_type) == MEDIA_CONTENT_ERROR_NONE)
379 content_debug("media_type : [%d]", media_type);
381 if (media_info_get_media_id(media, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
382 content_debug("media_id : [%s]", c_value);
386 if (media_info_get_file_path(media, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
387 content_debug("file_path : [%s]", c_value);
391 if (media_info_get_display_name(media, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
392 content_debug("display_name : [%s]", c_value);
396 if (media_info_get_mime_type(media, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
397 content_debug("mime_type : [%s]", c_value);
401 if (media_info_get_thumbnail_path(media, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
402 content_debug("thumbnail_path : [%s]", c_value);
406 if (media_info_get_description(media, &c_value) == MEDIA_CONTENT_ERROR_NONE) {
407 content_debug("description : [%s]", c_value);
411 if (media_info_get_size(media, &size) == MEDIA_CONTENT_ERROR_NONE)
412 content_debug("size : [%lld]", size);
414 if (media_info_get_added_time(media, &t_value) == MEDIA_CONTENT_ERROR_NONE)
415 content_debug("added_time : [%ld]", t_value);
417 if (media_info_get_modified_time(media, &t_value) == MEDIA_CONTENT_ERROR_NONE)
418 content_debug("modified_time : [%ld]", t_value);
420 if (media_info_get_timeline(media, &t_value) == MEDIA_CONTENT_ERROR_NONE)
421 content_debug("timeline : [%ld]", t_value);
423 if (media_info_get_rating(media, &i_value) == MEDIA_CONTENT_ERROR_NONE)
424 content_debug("rating : [%d]", i_value);
426 if (media_info_get_favorite(media, &b_value) == MEDIA_CONTENT_ERROR_NONE)
427 content_debug("favorite : [%d]", b_value);
429 if (media_info_is_drm(media, &b_value) == MEDIA_CONTENT_ERROR_NONE)
430 content_debug("is_drm : [%d]", b_value);
432 if (media_info_is_360_content(media, &b_value) == MEDIA_CONTENT_ERROR_NONE)
433 content_debug("is_360 : [%d]", b_value);
435 #ifdef _USE_TVPD_MODE
436 if (media_info_get_stitched_state(media, &i_value) == MEDIA_CONTENT_ERROR_NONE)
437 content_debug("360 stitched : [%d]", i_value);
439 if (media_info_get_stitched_engine(media, &i_value) == MEDIA_CONTENT_ERROR_NONE)
440 content_debug("360 engine : [%d]", i_value);
443 if (media_type == MEDIA_CONTENT_TYPE_MUSIC)
444 get_audio_meta(media);
446 if (media_type == MEDIA_CONTENT_TYPE_IMAGE)
447 get_image_meta(media);
449 if (media_type == MEDIA_CONTENT_TYPE_VIDEO)
450 get_video_meta(media);
452 if (media_type == MEDIA_CONTENT_TYPE_BOOK)
453 get_book_meta(media);
455 if (media_type == MEDIA_CONTENT_TYPE_OTHERS)
456 content_debug("Other type");
459 bool media_item_cb(media_info_h media, void *user_data)
462 content_debug("NO Item");
466 get_media_meta(media);
471 bool gallery_folder_list_cb(media_folder_h folder, void *user_data)
473 media_folder_h new_folder = NULL;
474 media_folder_clone(&new_folder, folder);
476 GList **list = (GList**)user_data;
477 *list = g_list_append(*list, new_folder);
482 bool gallery_media_item_cb(media_info_h media, void *user_data)
484 media_info_h new_media = NULL;
485 int ret = MEDIA_CONTENT_ERROR_NONE;
487 ret = media_info_clone(&new_media, media);
489 if (ret != MEDIA_CONTENT_ERROR_NONE) {
490 GList **list = (GList**)user_data;
491 *list = g_list_append(*list, new_media);
497 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
499 media_tag_h new_tag = NULL;
500 media_tag_clone(&new_tag, tag);
502 GList **list = (GList**)user_data;
503 *list = g_list_append(*list, new_tag);
508 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
510 media_bookmark_h new_bm = NULL;
511 int ret = MEDIA_CONTENT_ERROR_NONE;
513 ret = media_bookmark_clone(&new_bm, bookmark);
514 if (ret != MEDIA_CONTENT_ERROR_NONE)
515 content_error("error media_bookmark_clone : [%d]", ret);
517 GList **list = (GList**)user_data;
518 *list = g_list_append(*list, new_bm);
523 bool folder_list_cb(media_folder_h folder, void *user_data)
526 char *folder_id = NULL;
527 media_folder_h *_folder = (media_folder_h*)user_data;
529 content_debug("===========================");
530 if (folder != NULL) {
532 media_folder_clone(_folder, folder);
534 get_folder_meta(folder, &folder_id);
536 if (media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE) {
537 SAFE_FREE(folder_id);
538 content_error("[ERROR] media_folder_get_media_count_from_db is failed");
542 if (media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
543 SAFE_FREE(folder_id);
544 content_error("[ERROR] media_folder_foreach_media_from_db is failed");
548 SAFE_FREE(folder_id);
556 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
558 int ret = MEDIA_CONTENT_ERROR_NONE;
560 char *playlist_name = NULL;
561 media_playlist_h playlist_h;
562 char *playlist_thumbnail_path = NULL;
564 content_debug("playlist_list_cb ======");
566 GList **list = (GList**)user_data;
569 if (playlist == NULL) {
570 content_debug(" playlist handle is NULL");
574 ret = media_playlist_get_playlist_id(playlist, &playlist_id);
575 if (ret != MEDIA_CONTENT_ERROR_NONE)
576 content_error("error media_playlist_get_playlist_id : [%d]", ret);
578 content_debug("playlist_id : %d", playlist_id);
579 /* 64bit build issue */
581 if (user_data != NULL)
582 *list = g_list_append(*list, (gpointer)playlist_id);
584 ret = media_playlist_get_name(playlist, &playlist_name);
585 if (ret != MEDIA_CONTENT_ERROR_NONE)
586 content_error("error media_playlist_get_name : [%d]", ret);
588 content_debug("playlist_name : %s", playlist_name);
589 SAFE_FREE(playlist_name);
591 ret = media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
592 if (ret != MEDIA_CONTENT_ERROR_NONE)
593 content_error("error media_playlist_get_thumbnail_path : [%d]", ret);
595 content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
596 SAFE_FREE(playlist_thumbnail_path);
598 ret = media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
599 if (ret != MEDIA_CONTENT_ERROR_NONE)
600 content_error("error media_playlist_get_playlist_from_db : [%d]", ret);
602 ret = media_playlist_destroy(playlist_h);
603 if (ret != MEDIA_CONTENT_ERROR_NONE)
604 content_error("error media_playlist_destroy : [%d]", ret);
609 bool tag_list_cb(media_tag_h tag, void *user_data)
612 content_debug(" tag handle is NULL");
621 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
623 if (bookmark != NULL && user_data != NULL) {
624 media_bookmark_h new_bookmark;
626 media_bookmark_clone(&new_bookmark, bookmark);
627 GList **list = (GList**)user_data;
628 *list = g_list_append(*list, new_bookmark);
631 get_bookmark_meta(bookmark);
636 bool album_list_cb(media_album_h album, void *user_data)
640 int ret = MEDIA_CONTENT_ERROR_NONE;
643 get_album_meta(album);
644 media_album_get_album_id(album, &album_id);
646 ret = media_album_get_media_count_from_db(album_id, NULL, &media_count);
647 if (ret != MEDIA_CONTENT_ERROR_NONE)
648 content_error("error media_album_get_media_count_from_db : [%d]", ret);
650 content_debug("media_count : [%d]", media_count);
652 ret = media_album_foreach_media_from_db(album_id, NULL, media_item_cb, NULL);
653 if (ret != MEDIA_CONTENT_ERROR_NONE) {
654 content_error("error media_album_foreach_media_from_db : [%d]", ret);
659 content_error("album item not Found!!");
665 bool group_list_cb(const char *group_name, void *user_data)
668 int *idx = user_data;
670 content_debug("group item : [%s] [%d]", group_name, *idx);
672 if (media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
675 content_debug("media_count : [%d]", media_count);
677 if (media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
683 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
685 content_debug("playlist_member_id : [%d]", playlist_member_id);
686 /* 64bit build issue */
688 GList **list = (GList**)user_data;
690 *list = g_list_append(*list, (gpointer)playlist_member_id);
692 /*media_item_cb(media, user_data);*/
697 int test_filter_create(void)
699 content_debug("\n============Filter Create============\n\n");
701 int ret = MEDIA_CONTENT_ERROR_NONE;
703 /* Filter for media */
704 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
706 ret = media_filter_create(&g_filter);
708 /* Set condition and collate
709 * Condition string : You can make where statement of sql.
710 * Colation : You can use collation when comparing.
711 * Ex) In case of FILE_NAME='Samsung' as condition string,
712 * if you want to compare with NOCASE collation,
713 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
714 * if you want to compare in case-sensitive,
715 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
717 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
719 /* Collation of ordering
720 * If you want to get list, which is sorted by NOCASE,
721 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
723 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
725 /* Able to set multi column to set order */
727 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
728 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
729 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
730 ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
732 /* Filter for group */
733 const char *g_condition = "TAG_NAME like \"\%my\%\"";
734 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
736 ret = media_filter_create(&g_filter_g);
738 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
743 int test_filter_destroy(void)
745 content_debug("\n============Filter Create============\n\n");
747 int ret = MEDIA_CONTENT_ERROR_NONE;
749 ret = media_filter_destroy(g_filter);
754 int test_connect_database(void)
756 int ret = MEDIA_CONTENT_ERROR_NONE;
758 content_debug("\n============DB Connection Test============\n\n");
760 ret = media_content_connect();
762 if (ret == MEDIA_CONTENT_ERROR_NONE)
763 content_debug("connection is success\n\n");
765 content_error("connection is failed\n\n");
770 int test_gallery_scenario(void)
772 int ret = MEDIA_CONTENT_ERROR_NONE;
774 filter_h filter = NULL;
777 GList *folder_list = NULL;
778 media_folder_h folder_handle = NULL;
780 /* First, Get folder list */
781 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
782 if (ret != MEDIA_CONTENT_ERROR_NONE) {
783 content_error("media_folder_foreach_folder_from_db failed: %d", ret);
786 content_debug("media_folder_foreach_folder_from_db success!!");
787 char *folder_id = NULL;
789 for (i = 0; i < g_list_length(folder_list); i++) {
790 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
792 get_folder_meta(folder_handle, &folder_id);
794 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
795 SAFE_FREE(folder_id);
796 if (ret != MEDIA_CONTENT_ERROR_NONE) {
797 content_error("media_folder_get_media_count_from_db failed: %d", ret);
800 content_debug("media count [%d] : %d", i, count);
805 /* To check performance */
806 struct timeval start, end;
807 gettimeofday(&start, NULL);
809 /* Second, Get all item list */
810 media_info_h media_handle = NULL;
811 GList *all_item_list = NULL;
813 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
814 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
815 ret = media_filter_create(&filter);
816 if (ret != MEDIA_CONTENT_ERROR_NONE) {
817 content_error("Fail to create filter");
820 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
821 if (ret != MEDIA_CONTENT_ERROR_NONE) {
822 media_filter_destroy(filter);
823 content_error("Fail to set condition");
826 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
827 if (ret != MEDIA_CONTENT_ERROR_NONE) {
828 media_filter_destroy(filter);
829 content_error("Fail to set order");
833 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
834 if (ret != MEDIA_CONTENT_ERROR_NONE) {
835 content_error("media_info_foreach_media_from_db failed: %d", ret);
836 media_filter_destroy(filter);
839 content_debug("media_info_foreach_media_from_db success");
841 for (i = 0; i < g_list_length(all_item_list); i++) {
842 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
843 get_media_meta(media_handle);
847 media_filter_destroy(filter);
850 /* To check performance */
851 gettimeofday(&end, NULL);
852 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
853 content_debug("Time : %ld\n", time);
855 /* Third, Get item list of a folder */
856 GList *item_list = NULL;
858 for (i = 0; i < g_list_length(folder_list); i++) {
860 char *folder_id = NULL;
861 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
863 get_folder_meta(folder_handle, &folder_id);
865 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
866 SAFE_FREE(folder_id);
868 if (ret != MEDIA_CONTENT_ERROR_NONE) {
869 content_error("media_folder_foreach_media_from_db failed: %d", ret);
872 content_error("media_folder_foreach_media_from_db success!");
874 for (j = 0; j < g_list_length(item_list); j++) {
875 media_handle = (media_info_h)g_list_nth_data(item_list, j);
876 get_media_meta(media_handle);
882 media_tag_h tag_handle = NULL;
883 GList *tag_list = NULL;
884 GList *media_list_in_tag = NULL;
887 ret = media_tag_foreach_tag_from_db(filter, gallery_tag_item_cb, &tag_list);
889 if (ret != MEDIA_CONTENT_ERROR_NONE) {
890 content_error("media_tag_foreach_tag_from_db failed: %d", ret);
893 content_error("media_tag_foreach_tag_from_db success");
894 for (i = 0; i < g_list_length(tag_list); i++) {
895 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
896 get_tag_meta(tag_handle);
898 ret = media_tag_get_tag_id(tag_handle, &tag_id);
899 if (ret != MEDIA_CONTENT_ERROR_NONE) {
900 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
901 if (ret != MEDIA_CONTENT_ERROR_NONE) {
902 content_error("media_tag_foreach_media_from_db failed: %d", ret);
905 content_error("media_tag_foreach_media_from_db success");
907 media_info_h tag_media_handle;
909 for (j = 0; j < g_list_length(media_list_in_tag); j++) {
910 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
911 get_media_meta(tag_media_handle);
918 /* Remove folder list */
920 for (i = 0; i < g_list_length(folder_list); i++) {
921 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
922 media_folder_destroy(folder_handle);
925 g_list_free(folder_list);
928 /* Remove all items list */
930 for (i = 0; i < g_list_length(all_item_list); i++) {
931 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
932 ret = media_info_destroy(media_handle);
933 if (ret != MEDIA_CONTENT_ERROR_NONE)
934 content_error("media_info_destroy failed: %d", ret);
937 g_list_free(all_item_list);
940 /* Remove items list */
942 for (i = 0; i < g_list_length(item_list); i++) {
943 media_handle = (media_info_h)g_list_nth_data(item_list, i);
944 ret = media_info_destroy(media_handle);
945 if (ret != MEDIA_CONTENT_ERROR_NONE)
946 content_error("media_info_destroy failed: %d", ret);
949 g_list_free(item_list);
952 /* Remove tag list */
954 for (i = 0; i < g_list_length(tag_list); i++) {
955 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
956 ret = media_tag_destroy(tag_handle);
957 if (ret != MEDIA_CONTENT_ERROR_NONE)
958 content_error("error media_tag_destroy : [%d]", ret);
961 g_list_free(tag_list);
964 /* Remove media list in a tag */
965 if (media_list_in_tag) {
966 for (i = 0; i < g_list_length(media_list_in_tag); i++) {
967 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
968 ret = media_info_destroy(media_handle);
969 if (ret != MEDIA_CONTENT_ERROR_NONE)
970 content_error("media_info_destroy failed: %d", ret);
973 g_list_free(media_list_in_tag);
976 return MEDIA_CONTENT_ERROR_NONE;
979 /*Get All Music file. sort by Title and not case sensitive*/
980 int test_get_all_music_files(void)
982 int ret = MEDIA_CONTENT_ERROR_NONE;
987 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
989 ret = media_filter_create(&filter);
990 if (ret != MEDIA_CONTENT_ERROR_NONE) {
991 content_error("Fail to create filter");
994 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
995 if (ret != MEDIA_CONTENT_ERROR_NONE) {
996 media_filter_destroy(filter);
997 content_error("Fail to set condition");
1000 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1001 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1002 media_filter_destroy(filter);
1003 content_error("Fail to set order");
1008 ret = media_info_get_media_count_from_db(filter, &media_count);
1009 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1010 media_filter_destroy(filter);
1011 content_error("Fail to get media count");
1015 content_debug("media_count : [%d]", media_count);
1017 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1018 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1019 media_filter_destroy(filter);
1020 content_error("Fail to get media");
1024 ret = media_filter_destroy(filter);
1029 int test_media_info_operation(void)
1031 int ret = MEDIA_CONTENT_ERROR_NONE;
1032 int media_count = 0;
1034 content_debug("\n============Media info Test============\n\n");
1036 test_filter_create();
1038 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1039 if (ret != MEDIA_CONTENT_ERROR_NONE)
1040 content_error("media_info_get_media_count_from_db failed: %d", ret);
1042 content_debug("media_count : [%d]", media_count);
1044 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1045 if (ret == MEDIA_CONTENT_ERROR_NONE)
1046 content_debug("media_info_foreach_media_from_db is success");
1048 content_error("media_info_foreach_media_from_db is failed");
1050 test_filter_destroy();
1055 int test_media_info_operation_2(void)
1057 int ret = MEDIA_CONTENT_ERROR_NONE;
1058 int bookmark_count = 0;
1060 content_debug("\n============Media info Test 2============\n\n");
1062 test_filter_create();
1066 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1067 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1068 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1070 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1072 content_debug("bookmark_count : [%d]", bookmark_count);
1074 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1078 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1079 if (ret != MEDIA_CONTENT_ERROR_NONE)
1080 content_error("media_info_get_tag_count_from_db failed: %d", ret);
1082 content_debug("tag_count : [%d]", bookmark_count);
1084 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1085 if (ret != MEDIA_CONTENT_ERROR_NONE)
1086 content_error("media_info_foreach_tag_from_db failed: %d", ret);
1088 test_filter_destroy();
1093 int test_folder_operation(void)
1095 int ret = MEDIA_CONTENT_ERROR_NONE;
1096 filter_h filter = NULL;
1097 media_folder_h folder = NULL;
1098 char *folder_id = NULL;
1101 content_debug("\n============Folder Test============\n\n");
1103 test_filter_create();
1105 ret = media_filter_create(&filter);
1106 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1107 content_error("[ERROR] media_folder_filter_create is failed");
1111 media_filter_set_condition(filter, "MEDIA_TYPE = 0 or MEDIA_TYPE = 1", MEDIA_CONTENT_COLLATE_DEFAULT); /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1112 media_filter_set_offset(filter, 0, 5);
1113 media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1115 ret = media_folder_get_folder_count_from_db(filter, &count);
1116 content_debug("Folder count : [%d]", count);
1118 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1120 filter_h m_filter = NULL;
1122 ret = media_filter_create(&m_filter);
1123 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1124 test_filter_destroy();
1125 media_filter_destroy(filter);
1126 content_error("[ERROR] media_info_filter_create is failed");
1130 media_filter_set_condition(m_filter, "MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT); /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1131 media_filter_set_offset(m_filter, 0, 5);
1132 media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1134 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1135 if (ret != MEDIA_CONTENT_ERROR_NONE)
1136 content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1138 media_filter_destroy(filter);
1139 media_filter_destroy(m_filter);
1141 test_filter_destroy();
1143 /* fix prevent: Resource Leak */
1144 SAFE_FREE(folder_id);
1149 int test_playlist_operation(void)
1151 int ret = MEDIA_CONTENT_ERROR_NONE;
1152 media_playlist_h playlist_1 = NULL;
1153 media_playlist_h playlist_2 = NULL;
1154 media_playlist_h playlist_3 = NULL;
1155 media_playlist_h playlist_4 = NULL;
1156 int playlist_id_1 = 0;
1157 int playlist_id_2 = 0;
1158 int playlist_id_3 = 0;
1159 const char *playlist_name_1 = "myPlaylist_1";
1160 const char *playlist_name_2 = "myPlaylist_2";
1161 const char *playlist_name_3 = "myPlaylist_3";
1162 int playlist_count = 0;
1163 int media_count = 0;
1169 filter_h filter = NULL;
1170 filter_h m_filter = NULL;
1172 content_debug("\n============Playlist Test============\n\n");
1174 /* Filter for playlist */
1176 const char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1178 ret = media_filter_create(&filter);
1179 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1180 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1182 /* Create Playlist */
1183 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1184 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1185 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1187 if (playlist_1 != NULL) {
1188 /* Add media to Playlist */
1189 media_playlist_add_media(playlist_1, test_audio_id);
1190 media_playlist_add_media(playlist_1, test_audio_id);
1191 media_playlist_add_media(playlist_1, test_video_id);
1194 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg"));
1195 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1198 media_playlist_update_to_db(playlist_1);
1201 if (playlist_2 != NULL) {
1202 media_playlist_add_media(playlist_2, test_audio_id);
1203 media_playlist_add_media(playlist_2, test_audio_id);
1204 media_playlist_update_to_db(playlist_2);
1207 /* Get Playlist Count*/
1208 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1210 content_debug("playlist_count [%d]", playlist_count);
1213 GList *playlist_id_list = NULL;
1214 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1215 /* 64bit build issue */
1217 /* Get Playlist id*/
1218 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1219 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1220 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1222 content_debug("playlist_id_1 [%d]", playlist_id_1);
1223 content_debug("playlist_id_2 [%d]", playlist_id_2);
1224 content_debug("playlist_id_3 [%d]", playlist_id_3);
1226 /* Export and import playlist */
1227 media_playlist_export_to_file(playlist_3, tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"));
1228 media_playlist_import_from_file(tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"), "playlist_4", &playlist_4);
1230 /* Filter for media*/
1231 ret = media_filter_create(&m_filter);
1233 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1235 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1237 /* Get media count */
1238 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1239 content_debug("playlist_1_media_count [%d]", media_count);
1241 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1242 content_debug("playlist_2_media_count [%d]", media_count);
1244 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1245 content_debug("playlist_3_media_count [%d]", media_count);
1247 /* Get media of playlist */
1248 GList *playlist_member_id_list = NULL;
1249 GList *playlist_member_id_list_1 = NULL;
1251 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1252 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1254 int playlist_member_id_1_1 = 0;
1255 int playlist_member_id_1_2 = 0;
1256 int playlist_member_id_1_3 = 0;
1257 int playlist_member_id_2_1 = 0;
1258 int playlist_member_id_2_2 = 0;
1259 /* 64bit build issue */
1261 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1262 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1263 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1264 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1265 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1267 content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1268 content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1269 content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1270 content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1271 content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1273 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1274 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1275 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1276 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1277 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1278 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);
1280 /* Update Playlist */
1281 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1282 media_playlist_add_media(playlist_2, test_video_id);
1283 media_playlist_set_name(playlist_2, "test_playlist");
1284 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1285 media_playlist_update_to_db(playlist_2);
1287 /* Get Updated Playlist*/
1288 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1290 /* deletes the playlist */
1292 media_playlist_delete_from_db(playlist_id_1);
1293 media_playlist_delete_from_db(playlist_id_2);
1296 if (playlist_1 != NULL)
1297 media_playlist_destroy(playlist_1);
1298 if (playlist_2 != NULL)
1299 media_playlist_destroy(playlist_2);
1300 if (playlist_3 != NULL)
1301 media_playlist_destroy(playlist_3);
1302 if (playlist_4 != NULL)
1303 media_playlist_destroy(playlist_4);
1305 g_list_free(playlist_id_list);
1306 g_list_free(playlist_member_id_list);
1307 g_list_free(playlist_member_id_list_1);
1310 ret = media_filter_destroy(filter);
1311 if (m_filter != NULL)
1312 ret = media_filter_destroy(m_filter);
1317 int test_playlist_operation_v2(void)
1319 int ret = MEDIA_CONTENT_ERROR_NONE;
1320 media_playlist_h playlist_1 = NULL;
1321 const char *playlist_name_1 = "myPlaylist_1";
1322 const char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
1323 int playlist_id = 0;
1325 content_debug("\n============Playlist Test V2============\n\n");
1327 ret = media_playlist_create(&playlist_1);
1328 if (ret != MEDIA_CONTENT_ERROR_NONE)
1329 content_error("error media_playlist_create : [%d]", ret);
1331 ret = media_playlist_set_name(playlist_1, playlist_name_1);
1332 if (ret != MEDIA_CONTENT_ERROR_NONE)
1333 content_error("error media_playlist_set_name : [%d]", ret);
1335 ret = media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1336 if (ret != MEDIA_CONTENT_ERROR_NONE)
1337 content_error("error media_playlist_set_thumbnail_path : [%d]", ret);
1339 ret = media_playlist_insert_to_db_v2(playlist_1);
1340 if (ret != MEDIA_CONTENT_ERROR_NONE)
1341 content_error("error media_playlist_insert_to_db_v2 : [%d]", ret);
1343 ret = media_playlist_set_name(playlist_1, "myPlaylist_3");
1344 if (ret != MEDIA_CONTENT_ERROR_NONE)
1345 content_error("error media_playlist_set_name : [%d]", ret);
1347 ret = media_playlist_get_playlist_id(playlist_1, &playlist_id);
1348 if (ret != MEDIA_CONTENT_ERROR_NONE)
1349 content_error("error media_playlist_get_playlist_id : [%d]", ret);
1351 ret = media_playlist_update_to_db_v2(playlist_id, playlist_1);
1352 if (ret != MEDIA_CONTENT_ERROR_NONE)
1353 content_error("error media_playlist_update_to_db_v2 : [%d]", ret);
1355 ret = media_playlist_destroy(playlist_1);
1356 if (ret != MEDIA_CONTENT_ERROR_NONE)
1357 content_error("error media_playlist_destroy : [%d]", ret);
1362 int test_tag_operation(void)
1364 int ret = MEDIA_CONTENT_ERROR_NONE;
1371 const char *tag_name_1 = "myTag_1";
1372 const char *tag_name_2 = "myTag_2";
1373 const char *tag_name_3 = "myTag_3";
1375 int media_count = 0;
1378 content_debug("\n============Tag Test============\n\n");
1380 const char *g_condition = "TAG_NAME like \"%%my%%\"";
1382 ret = media_filter_create(&filter);
1384 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1386 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1389 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1390 if (ret != MEDIA_CONTENT_ERROR_NONE)
1391 content_error("error media_tag_insert_to_db : [%d]", ret);
1392 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1393 if (ret != MEDIA_CONTENT_ERROR_NONE)
1394 content_error("error media_tag_insert_to_db : [%d]", ret);
1395 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1396 if (ret != MEDIA_CONTENT_ERROR_NONE)
1397 content_error("error media_tag_insert_to_db : [%d]", ret);
1399 /* Add media to Tag */
1400 ret = media_tag_add_media(tag_1, test_audio_id);
1401 if (ret != MEDIA_CONTENT_ERROR_NONE)
1402 content_error("error media_tag_add_media : [%d]", ret);
1403 ret = media_tag_add_media(tag_1, test_video_id);
1404 if (ret != MEDIA_CONTENT_ERROR_NONE)
1405 content_error("error media_tag_add_media : [%d]", ret);
1406 ret = media_tag_update_to_db(tag_1);
1407 if (ret != MEDIA_CONTENT_ERROR_NONE)
1408 content_error("error media_tag_update_to_db : [%d]", ret);
1410 ret = media_tag_add_media(tag_2, test_audio_id);
1411 if (ret != MEDIA_CONTENT_ERROR_NONE)
1412 content_error("error media_tag_add_media : [%d]", ret);
1413 ret = media_tag_update_to_db(tag_2);
1414 if (ret != MEDIA_CONTENT_ERROR_NONE)
1415 content_error("error media_tag_update_to_db : [%d]", ret);
1418 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1419 if (ret != MEDIA_CONTENT_ERROR_NONE)
1420 content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1422 content_debug("tag_count [%d]", tag_count);
1425 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1426 if (ret != MEDIA_CONTENT_ERROR_NONE)
1427 content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1430 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1431 if (ret != MEDIA_CONTENT_ERROR_NONE)
1432 content_error("error media_tag_get_tag_id : [%d]", ret);
1434 content_debug("tag_id_1 [%d]", tag_id_1);
1436 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1437 if (ret != MEDIA_CONTENT_ERROR_NONE)
1438 content_error("error media_tag_get_tag_id : [%d]", ret);
1440 content_debug("tag_id_2 [%d]", tag_id_2);
1442 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1443 if (ret != MEDIA_CONTENT_ERROR_NONE)
1444 content_error("error media_tag_get_tag_id : [%d]", ret);
1446 content_debug("tag_id_3 [%d]", tag_id_3);
1448 /* Get media count */
1449 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1450 if (ret != MEDIA_CONTENT_ERROR_NONE)
1451 content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1453 content_debug("tag_1_media_count [%d]", media_count);
1455 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1456 if (ret != MEDIA_CONTENT_ERROR_NONE)
1457 content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1459 content_debug("tag_2_media_count [%d]", media_count);
1461 /* Get media of Tag */
1462 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1463 if (ret != MEDIA_CONTENT_ERROR_NONE)
1464 content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1466 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1467 if (ret != MEDIA_CONTENT_ERROR_NONE)
1468 content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1471 ret = media_tag_add_media(tag_2, test_video_id);
1472 if (ret != MEDIA_CONTENT_ERROR_NONE)
1473 content_error("error media_tag_add_media : [%d]", ret);
1474 ret = media_tag_set_name(tag_2, "test_tag");
1475 if (ret != MEDIA_CONTENT_ERROR_NONE)
1476 content_error("error media_tag_set_name : [%d]", ret);
1477 ret = media_tag_update_to_db(tag_2);
1478 if (ret != MEDIA_CONTENT_ERROR_NONE)
1479 content_error("error media_tag_update_to_db : [%d]", ret);
1481 /* Get Updated Tag*/
1482 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1483 if (ret != MEDIA_CONTENT_ERROR_NONE)
1484 content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1486 /* deletes the tag */
1487 ret = media_tag_delete_from_db(tag_id_1);
1488 if (ret != MEDIA_CONTENT_ERROR_NONE)
1489 content_error("error media_tag_delete_from_db : [%d]", ret);
1490 ret = media_tag_delete_from_db(tag_id_2);
1491 if (ret != MEDIA_CONTENT_ERROR_NONE)
1492 content_error("error media_tag_delete_from_db : [%d]", ret);
1494 ret = media_tag_destroy(tag_1);
1495 if (ret != MEDIA_CONTENT_ERROR_NONE)
1496 content_error("error media_tag_destroy : [%d]", ret);
1497 ret = media_tag_destroy(tag_2);
1498 if (ret != MEDIA_CONTENT_ERROR_NONE)
1499 content_error("error media_tag_destroy : [%d]", ret);
1500 ret = media_tag_destroy(tag_3);
1501 if (ret != MEDIA_CONTENT_ERROR_NONE)
1502 content_error("error media_tag_destroy : [%d]", ret);
1503 ret = media_filter_destroy(filter);
1504 if (ret != MEDIA_CONTENT_ERROR_NONE)
1505 content_error("error media_filter_destroy : [%d]", ret);
1510 int test_tag_operation_v2(void)
1512 int ret = MEDIA_CONTENT_ERROR_NONE;
1514 const char *tag_name_1 = "myTag_1";
1517 content_debug("\n============Tag Test V2============\n\n");
1520 ret = media_tag_create(&tag_1);
1521 if (ret != MEDIA_CONTENT_ERROR_NONE)
1522 content_error("error media_tag_create : [%d]", ret);
1524 ret = media_tag_set_name(tag_1, tag_name_1);
1525 if (ret != MEDIA_CONTENT_ERROR_NONE)
1526 content_error("error media_tag_set_name : [%d]", ret);
1528 /* Add media to Tag */
1529 ret = media_tag_add_media(tag_1, test_audio_id);
1530 if (ret != MEDIA_CONTENT_ERROR_NONE)
1531 content_error("error media_tag_add_media : [%d]", ret);
1533 ret = media_tag_add_media(tag_1, test_video_id);
1534 if (ret != MEDIA_CONTENT_ERROR_NONE)
1535 content_error("error media_tag_add_media : [%d]", ret);
1537 ret = media_tag_insert_to_db_v2(tag_1);
1538 if (ret != MEDIA_CONTENT_ERROR_NONE)
1539 content_error("error media_tag_insert_to_db_v2 : [%d]", ret);
1542 ret = media_tag_get_tag_id(tag_1, &tag_id);
1543 if (ret != MEDIA_CONTENT_ERROR_NONE)
1544 content_error("error media_tag_get_tag_id : [%d]", ret);
1546 ret = media_tag_remove_media(tag_1, test_video_id);
1547 if (ret != MEDIA_CONTENT_ERROR_NONE)
1548 content_error("error media_tag_add_media : [%d]", ret);
1550 ret = media_tag_update_to_db_v2(tag_id, tag_1);
1551 if (ret != MEDIA_CONTENT_ERROR_NONE)
1552 content_error("error media_tag_update_to_db_v2 : [%d]", ret);
1555 ret = media_tag_destroy(tag_1);
1556 if (ret != MEDIA_CONTENT_ERROR_NONE)
1557 content_error("error media_tag_destroy : [%d]", ret);
1562 static void __bookmark_handle_free(gpointer data)
1564 media_bookmark_h handle = (media_bookmark_h) data;
1565 media_bookmark_destroy(handle);
1568 int test_bookmark_operation(void)
1570 /* bookmark is only supported for video information. */
1571 int ret = MEDIA_CONTENT_ERROR_NONE;
1572 int bookmark_count = 0;
1574 GList *all_item_list = NULL;
1577 content_debug("\n============Bookmark Test============\n\n");
1579 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
1581 ret = media_filter_create(&filter);
1582 if (ret != MEDIA_CONTENT_ERROR_NONE)
1583 content_error("error media_filter_create : [%d]", ret);
1585 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1586 if (ret != MEDIA_CONTENT_ERROR_NONE)
1587 content_error("error media_filter_set_condition : [%d]", ret);
1589 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
1590 if (ret != MEDIA_CONTENT_ERROR_NONE)
1591 content_error("error media_filter_set_order : [%d]", ret);
1593 /* insert bookmark to video */
1594 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1595 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
1596 if (ret != MEDIA_CONTENT_ERROR_NONE)
1597 content_error("error media_bookmark_insert_to_db : [%d]", ret);
1599 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
1600 if (ret != MEDIA_CONTENT_ERROR_NONE)
1601 content_error("error media_bookmark_insert_to_db : [%d]", ret);
1603 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
1604 if (ret != MEDIA_CONTENT_ERROR_NONE)
1605 content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
1607 content_debug("bookmark_count = [%d]", bookmark_count);
1609 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, &all_item_list);
1610 if (ret != MEDIA_CONTENT_ERROR_NONE)
1611 content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
1613 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
1614 media_bookmark_h bookmark_handle;
1615 bookmark_handle = (media_bookmark_h)g_list_nth_data(all_item_list, idx);
1617 ret = media_bookmark_set_name(bookmark_handle, "test 1");
1618 if (ret != MEDIA_CONTENT_ERROR_NONE)
1619 content_error("error media_bookmark_set_name : [%d]", ret);
1621 ret = media_bookmark_update_to_db(bookmark_handle);
1622 if (ret != MEDIA_CONTENT_ERROR_NONE)
1623 content_error("error media_bookmark_update_to_db : [%d]", ret);
1627 g_list_free_full(all_item_list, __bookmark_handle_free);
1629 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, NULL);
1630 if (ret != MEDIA_CONTENT_ERROR_NONE)
1631 content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
1633 ret = media_filter_destroy(filter);
1634 if (ret != MEDIA_CONTENT_ERROR_NONE)
1635 content_error("error media_filter_destroy : [%d]", ret);
1640 int test_bookmark_operation_v2(void)
1642 content_debug("\n============Bookmark Test V2============\n\n");
1644 int ret = MEDIA_CONTENT_ERROR_NONE;
1645 media_bookmark_h bookmark = NULL;
1646 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1648 ret = media_bookmark_create(test_video_id, 400, &bookmark);
1649 if (ret != MEDIA_CONTENT_ERROR_NONE)
1650 content_error("error media_bookmark_create : [%d]", ret);
1652 ret = media_bookmark_set_name(bookmark, "test bookmark");
1653 if (ret != MEDIA_CONTENT_ERROR_NONE)
1654 content_error("error media_bookmark_set_name : [%d]", ret);
1656 ret = media_bookmark_set_thumbnail_path(bookmark, thumbnail_path1);
1657 if (ret != MEDIA_CONTENT_ERROR_NONE)
1658 content_error("error media_bookmark_set_thumbnail_path : [%d]", ret);
1660 ret = media_bookmark_insert_to_db_v2(bookmark);
1661 if (ret != MEDIA_CONTENT_ERROR_NONE)
1662 content_error("error media_bookmark_insert_to_db_v2 : [%d]", ret);
1664 ret = media_bookmark_set_name(bookmark, "test bookmark 2");
1665 if (ret != MEDIA_CONTENT_ERROR_NONE)
1666 content_error("error media_bookmark_set_name : [%d]", ret);
1668 ret = media_bookmark_update_to_db(bookmark);
1669 if (ret != MEDIA_CONTENT_ERROR_NONE)
1670 content_error("error media_bookmark_update_to_db : [%d]", ret);
1672 ret = media_bookmark_destroy(bookmark);
1673 if (ret != MEDIA_CONTENT_ERROR_NONE)
1674 content_error("error media_bookmark_destroy : [%d]", ret);
1679 int test_album_list(void)
1681 content_debug("\n============Album Test============\n\n");
1683 int ret = MEDIA_CONTENT_ERROR_NONE;
1684 int album_count = 0;
1688 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1690 ret = media_filter_create(&filter);
1691 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1692 content_error("Fail to create filter");
1695 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1696 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1697 media_filter_destroy(filter);
1698 content_error("Fail to set condition");
1701 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
1702 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1703 media_filter_destroy(filter);
1704 content_error("Fail to set order");
1708 ret = media_album_get_album_count_from_db(filter, &album_count);
1709 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1710 media_filter_destroy(filter);
1713 content_debug("album_count [%d]", album_count);
1716 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
1717 if (ret != MEDIA_CONTENT_ERROR_NONE)
1718 content_error("error media_album_foreach_album_from_db : [%d]", ret);
1720 ret = media_filter_destroy(filter);
1721 if (ret != MEDIA_CONTENT_ERROR_NONE)
1722 content_error("error media_filter_destroy : [%d]", ret);
1727 int test_group_operation(void)
1729 content_debug("\n============Group Test============\n\n");
1731 int ret = MEDIA_CONTENT_ERROR_NONE;
1732 int group_count = 0;
1735 ret = test_filter_create();
1736 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1737 content_error("[error(0x%08x)", ret);
1741 for (idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++) {
1742 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
1743 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1744 test_filter_destroy();
1745 content_error("media_group_get_group_count_from_db fail. ret=[%d] idx=[%d]", ret, idx);
1748 content_debug("[%2d]group_count [%d]", idx, group_count);
1751 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
1752 if (ret != MEDIA_CONTENT_ERROR_NONE)
1753 content_error("media_group_foreach_group_from_db failed: %d", ret);
1755 ret = test_filter_destroy();
1760 int test_update_operation()
1762 int ret = MEDIA_CONTENT_ERROR_NONE;
1764 media_info_h media_handle = NULL;
1765 GList *all_item_list = NULL;
1767 /* Get all item list */
1768 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
1769 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1770 content_error("media_info_foreach_media_from_db failed: %d", ret);
1773 content_debug("media_info_foreach_media_from_db success");
1775 for (i = 0; i < g_list_length(all_item_list); i++) {
1776 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1777 get_media_meta(media_handle);
1781 return MEDIA_CONTENT_ERROR_NONE;
1784 int test_insert(void)
1786 int ret = MEDIA_CONTENT_ERROR_NONE;
1787 const char *path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
1789 const char *path = tzplatform_mkpath(TZ_USER_DOCUMENTS, "other.txt"));
1792 media_info_h media_item = NULL;
1793 content_debug("\n============DB Insert Test============\n\n");
1795 ret = media_info_insert_to_db(path, &media_item);
1797 if ((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL)) {
1798 content_debug("Insertion is success");
1800 content_error("Insertion is failed");
1801 ret = media_info_destroy(media_item);
1805 char *media_id = NULL;
1807 ret = media_info_get_media_id(media_item, &media_id);
1808 if (ret != MEDIA_CONTENT_ERROR_NONE)
1809 content_error("media_info_get_media_id failed: %d", ret);
1811 content_debug("Media ID: %s", media_id);
1813 SAFE_FREE(media_id);
1815 ret = media_info_update_to_db(media_item);
1816 if (ret == MEDIA_CONTENT_ERROR_NONE)
1817 content_debug("media_info_update_to_db is success");
1819 content_error("media_info_update_to_db is failed");
1821 ret = media_info_destroy(media_item);
1822 if (ret != MEDIA_CONTENT_ERROR_NONE)
1823 content_error("media_info_destroy failed: %d", ret);
1830 int ret = MEDIA_CONTENT_ERROR_NONE;
1831 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
1832 const char *dst_path = tzplatform_mkpath(TZ_USER_IMAGES, "XX/Default1.jpg");
1833 media_info_h move_media = NULL;
1835 ret = media_info_get_media_from_db(move_media_id, &move_media);
1836 if (ret == MEDIA_CONTENT_ERROR_NONE)
1837 content_debug("media_info_get_media_from_db success");
1839 content_error("media_info_get_media_from_db failed: %d", ret);
1841 content_debug("\n============DB Move Test============\n\n");
1844 ret = media_info_move_to_db(move_media, dst_path);
1846 if (ret == MEDIA_CONTENT_ERROR_NONE)
1847 content_debug("Move is success");
1849 content_error("Move is failed");
1851 ret = media_info_destroy(move_media);
1853 content_debug("There is no item : %s", move_media_id);
1859 int test_create_thumbnail(const char *path)
1861 int ret = MEDIA_CONTENT_ERROR_NONE;
1863 char *thumb_path = NULL;
1865 ret = media_info_insert_to_db(path, &media);
1866 content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "media_info_insert_to_db failed [%d]", ret);
1868 ret = media_info_generate_thumbnail(media);
1869 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1870 content_error("media_info_generate_thumbnail failed [%d]", ret);
1874 ret = media_info_get_thumbnail_path(media, &thumb_path);
1875 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1876 content_error("media_info_get_thumbnail_path failed [%d]", ret);
1880 content_debug("Thumbnail Path [%s]", thumb_path);
1885 media_info_destroy(media);
1889 bool face_cb(media_face_h face, void *user_data)
1891 get_face_meta(face);
1896 void face_detection_complete_cb(media_content_error_e error, int count, void *user_data)
1898 int ret = MEDIA_CONTENT_ERROR_NONE;
1901 content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
1902 content_debug("error_code [%d]", error);
1903 content_debug("face_count [%d]", count);
1905 content_debug("No faces are detected!");
1906 } else if (user_data != NULL) {
1907 media_info_h media = (media_info_h)user_data;
1908 char *media_id = NULL;
1909 ret = media_info_get_media_id(media, &media_id);
1910 if (ret != MEDIA_CONTENT_ERROR_NONE)
1911 content_error("media_info_get_media_id failed: %d", ret);
1912 if (media_id != NULL) {
1913 ret = media_info_foreach_face_from_db(media_id, NULL, face_cb, NULL);
1914 SAFE_FREE(media_id);
1915 if (ret != MEDIA_CONTENT_ERROR_NONE)
1916 content_error("media_info_foreach_face_from_db failed: %d", ret);
1918 ret = media_info_destroy(media);
1919 if (ret != MEDIA_CONTENT_ERROR_NONE)
1920 content_error("media_info_destroy failed: %d", ret);
1923 if (g_cnt == g_media_cnt)
1924 g_main_loop_quit(g_loop);
1929 bool start_face_detection_cb(media_info_h media, void *user_data)
1931 char *media_id = NULL;
1932 media_info_h dst = NULL;
1933 int ret = MEDIA_CONTENT_ERROR_NONE;
1935 if (media == NULL) {
1936 content_debug("NO Item");
1940 ret = media_info_get_media_id(media, &media_id);
1941 if (ret != MEDIA_CONTENT_ERROR_NONE)
1942 content_error("media_info_get_media_id failed: %d", ret);
1944 content_debug("media_id : [%s]", media_id);
1946 ret = media_info_clone(&dst, media);
1947 if (ret != MEDIA_CONTENT_ERROR_NONE)
1948 content_error("media_info_clone failed: %d", ret);
1950 GList **list = (GList**)user_data;
1951 *list = g_list_append(*list, dst);
1953 /* fix prevent: Resource leak */
1954 SAFE_FREE(media_id);
1959 bool cancel_face_detection_cb(media_info_h media, void *user_data)
1961 int ret = MEDIA_CONTENT_ERROR_NONE;
1963 char *media_id = NULL;
1964 media_info_h dst = NULL;
1968 if (media == NULL) {
1969 content_debug("NO Item");
1973 ret = media_info_get_media_id(media, &media_id);
1974 if (ret != MEDIA_CONTENT_ERROR_NONE)
1975 content_error("media_info_get_media_id failed: %d", ret);
1977 content_debug("media_id : [%s]", media_id);
1979 ret = media_info_clone(&dst, media);
1980 if (ret != MEDIA_CONTENT_ERROR_NONE)
1981 content_error("media_info_clone failed: %d", ret);
1983 ret = media_info_cancel_face_detection(dst);
1984 if (ret != MEDIA_CONTENT_ERROR_NONE)
1985 content_error("media_info_cancel_face_detection failed: %d", ret);
1987 ret = media_info_destroy(dst);
1988 if (ret != MEDIA_CONTENT_ERROR_NONE)
1989 content_error("media_info_destroy failed: %d", ret);
1991 if (g_cnt == g_media_cnt)
1992 g_main_loop_quit(g_loop);
1994 /* fix prevent: Resource leak */
1995 SAFE_FREE(media_id);
2000 gboolean face_detection_start(gpointer data)
2002 int ret = MEDIA_CONTENT_ERROR_NONE;
2003 GList *all_item_list = NULL;
2006 ret = media_info_foreach_media_from_db(g_filter, start_face_detection_cb, &all_item_list);
2008 if (ret == MEDIA_CONTENT_ERROR_NONE)
2009 content_debug("media_info_foreach_media_from_db is success");
2011 content_error("media_info_foreach_media_from_db is failed");
2013 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
2014 media_info_h media_handle = NULL;
2016 media_handle = (media_info_h)g_list_nth_data(all_item_list, idx);
2018 ret = media_info_start_face_detection(media_handle, face_detection_complete_cb, NULL);
2019 if (ret != MEDIA_CONTENT_ERROR_NONE)
2020 content_error("media_info_start_face_detection failed: %d", ret);
2027 gboolean face_detection_cancel(gpointer data)
2029 int ret = MEDIA_CONTENT_ERROR_NONE;
2031 ret = media_info_foreach_media_from_db(g_filter, cancel_face_detection_cb, NULL);
2033 if (ret == MEDIA_CONTENT_ERROR_NONE)
2034 content_debug("media_info_foreach_media_from_db is success");
2036 content_error("media_info_foreach_media_from_db is failed");
2041 int test_start_face_detection(int cancel)
2043 int ret = MEDIA_CONTENT_ERROR_NONE;
2044 GSource *source = NULL;
2045 GMainContext *context = NULL;
2047 test_filter_create();
2049 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2050 if (ret != MEDIA_CONTENT_ERROR_NONE)
2051 content_error("media_info_get_media_count_from_db failed: %d", ret);
2053 content_debug("media_count : [%d]", g_media_cnt);
2055 if (g_media_cnt == 0)
2058 g_loop = g_main_loop_new(NULL, FALSE);
2059 context = g_main_loop_get_context(g_loop);
2060 source = g_idle_source_new();
2061 g_source_set_callback(source, face_detection_start, NULL, NULL);
2062 g_source_attach(source, context);
2064 /* Logic to cancel */
2066 GSource *cancel_src = NULL;
2067 cancel_src = g_idle_source_new();
2068 g_source_set_callback(cancel_src, face_detection_cancel, NULL, NULL);
2069 g_source_attach(cancel_src, context);
2072 g_main_loop_run(g_loop);
2073 g_main_loop_unref(g_loop);
2076 test_filter_destroy();
2081 int test_ebook_text_finder(const char *keyword)
2083 int ret = MEDIA_CONTENT_ERROR_NONE;
2084 char **book_path_list = NULL;
2085 unsigned int book_path_len = 0;
2087 media_info_h media = NULL;
2088 book_meta_h book = NULL;
2089 char *s_value = NULL;
2090 long long ms_time = 0;
2091 struct timeval start_time;
2092 struct timeval end_time;
2094 gettimeofday(&start_time, NULL);
2096 ret = book_meta_get_path_with_keyword(keyword, &book_path_list, &book_path_len);
2097 if (ret == MEDIA_CONTENT_ERROR_NONE)
2098 content_debug("book_meta_get_path_with_keyword is success");
2100 content_error("book_meta_get_path_with_keyword is failed");
2102 gettimeofday(&end_time, NULL);
2104 for (i = 0; i < book_path_len; i++) {
2105 ret = media_info_get_media_from_db_by_path(book_path_list[i], &media);
2106 if (ret != MEDIA_CONTENT_ERROR_NONE)
2109 content_debug("===============================");
2110 content_debug("[%d] %s", i, book_path_list[i]);
2111 content_debug("===============================");
2112 media_info_get_title(media, &s_value);
2113 content_debug("Title : %s", s_value);
2117 ret = media_info_get_book(media, &book);
2118 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2119 media_info_destroy(media);
2123 ret = book_meta_get_author(book, &s_value);
2124 if (ret == MEDIA_CONTENT_ERROR_NONE && s_value) {
2125 content_debug("Author : %s", s_value);
2130 ret = book_meta_get_date(book, &s_value);
2131 if (ret == MEDIA_CONTENT_ERROR_NONE && s_value) {
2132 content_debug("Date : %s", s_value);
2137 content_debug("===============================");
2138 ret = book_meta_destroy(book);
2139 if (ret != MEDIA_CONTENT_ERROR_NONE)
2140 content_error("book_meta_destroy failed");
2142 ret = media_info_destroy(media);
2143 if (ret != MEDIA_CONTENT_ERROR_NONE)
2144 content_error("media_info_destroy failed");
2146 g_free(book_path_list[i]);
2149 ms_time = (end_time.tv_sec * 1000LL + end_time.tv_usec / 1000) - (start_time.tv_sec * 1000LL + start_time.tv_usec/ 1000);
2150 content_debug("Search Time [%lld]", ms_time);
2152 g_free(book_path_list);
2156 int test_disconnect_database(void)
2158 int ret = MEDIA_CONTENT_ERROR_NONE;
2159 content_debug("\n============DB Disconnection Test============\n\n");
2161 ret = media_content_disconnect();
2163 if (ret == MEDIA_CONTENT_ERROR_NONE)
2164 content_debug("disconnection is success");
2166 content_error("disconnection is failed");
2171 int test_request_update_db(void)
2173 int ret = MEDIA_CONTENT_ERROR_NONE;
2174 media_info_h media = NULL;
2175 bool favorite = FALSE;
2177 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2178 if (ret != MEDIA_CONTENT_ERROR_NONE)
2179 content_error("media_info_get_media_from_db failed: %d", ret);
2181 ret = media_info_set_favorite(media, TRUE);
2182 if (ret != MEDIA_CONTENT_ERROR_NONE)
2183 content_error("media_info_set_favorite failed: %d", ret);
2185 ret = media_info_update_to_db(media);
2186 if (ret == MEDIA_CONTENT_ERROR_NONE)
2187 content_debug("media_info_update_to_db is success");
2189 content_error("media_info_update_to_db is failed");
2192 media_info_destroy(media);
2194 /*get the updated value*/
2195 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2196 if (ret != MEDIA_CONTENT_ERROR_NONE)
2197 content_error("media_info_get_media_from_db failed: %d", ret);
2199 ret = media_info_get_favorite(media, &favorite);
2200 if (ret != MEDIA_CONTENT_ERROR_NONE)
2201 content_error("media_info_get_favorite failed: %d", ret);
2203 content_debug("favorite [%d]", favorite);
2205 ret = media_info_destroy(media);
2210 static int g_total_photo_size = 0;
2211 static int g_total_video_size = 0;
2212 static int g_total_mp3_size = 0;
2213 static int g_total_voice_memo_size = 0;
2215 bool dft_cb(media_info_h media, void *user_data)
2217 unsigned long long file_size = 0;
2218 media_content_type_e media_type = -1;
2219 char *mime_type = NULL;
2220 int ret = MEDIA_CONTENT_ERROR_NONE;
2225 ret = media_info_get_media_type(media, &media_type);
2226 if (ret != MEDIA_CONTENT_ERROR_NONE)
2227 content_error("media_info_get_media_type failed: %d", ret);
2228 ret = media_info_get_size(media, &file_size);
2229 if (ret != MEDIA_CONTENT_ERROR_NONE)
2230 content_error("media_info_get_size failed: %d", ret);
2231 ret = media_info_get_mime_type(media, &mime_type);
2232 if (ret != MEDIA_CONTENT_ERROR_NONE)
2233 content_error("media_info_get_mime_type failed: %d", ret);
2235 if (media_type == MEDIA_CONTENT_TYPE_IMAGE)
2236 g_total_photo_size += file_size;
2237 else if (media_type == MEDIA_CONTENT_TYPE_VIDEO)
2238 g_total_video_size += file_size;
2239 else if (media_type == MEDIA_CONTENT_TYPE_SOUND)
2240 g_total_voice_memo_size += file_size;
2241 else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2242 if ((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2243 g_total_mp3_size += file_size;
2245 g_total_voice_memo_size += file_size;
2247 content_debug("invalid media_type");
2249 SAFE_FREE(mime_type);
2257 int ret = MEDIA_CONTENT_ERROR_NONE;
2258 content_debug("\n============DFT_test============\n\n");
2260 filter_h filter = NULL;
2263 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2265 ret = media_filter_create(&filter);
2268 content_debug("[Internal Memory]\n");
2269 /*1. Photo ============================================================*/
2270 ret = media_filter_set_condition(filter, "MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2273 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2274 content_debug("Photo count = [%d]\n", media_cnt);
2277 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2278 content_debug("Photo size = [%d]\n", g_total_photo_size);
2280 /*2. Video ============================================================*/
2281 ret = media_filter_set_condition(filter, "MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2284 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2285 content_debug("Video count = [%d]\n", media_cnt);
2288 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2289 content_debug("Video size = [%d]\n", g_total_video_size);
2291 /*3. MP3 ============================================================*/
2292 ret = media_filter_set_condition(filter, "MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2295 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2296 content_debug("MP3 count = [%d]\n", media_cnt);
2299 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2300 content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2302 /*4. Voice Memo ============================================================*/
2303 ret = media_filter_set_condition(filter, "(MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2305 /*Get Voice Memo Count*/
2306 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2307 content_debug("Voice Memo count = [%d]\n", media_cnt);
2309 /*Get Voice Memo Size*/
2310 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2311 content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2313 g_total_photo_size = 0;
2314 g_total_video_size = 0;
2315 g_total_mp3_size = 0;
2316 g_total_voice_memo_size = 0;
2319 content_debug("\n[External Memory]\n");
2320 /*1. Photo ============================================================*/
2321 ret = media_filter_set_condition(filter, "MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2324 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2325 content_debug("Photo count = [%d]\n", media_cnt);
2328 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2329 content_debug("Photo size = [%d]\n", g_total_photo_size);
2331 /*2. Video ============================================================*/
2332 ret = media_filter_set_condition(filter, "MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2335 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2336 content_debug("Video count = [%d]\n", media_cnt);
2339 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2340 content_debug("Video size = [%d]\n", g_total_video_size);
2342 /*3. MP3 ============================================================*/
2343 ret = media_filter_set_condition(filter, "MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2346 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2347 content_debug("MP3 count = [%d]\n", media_cnt);
2350 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2351 content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2353 /*4. Voice Memo ============================================================*/
2354 ret = media_filter_set_condition(filter, "(MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2356 /*Get Voice Memo Count*/
2357 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2358 content_debug("Voice Memo count = [%d]\n", media_cnt);
2360 /*Get Voice Memo Size*/
2361 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2362 content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2363 ret = media_filter_destroy(filter);
2368 void insert_batch_cb(media_content_error_e error, void * user_data)
2370 content_debug("media_info_insert_batch_to_db completed!\n");
2373 int test_batch_operations()
2377 char *file_list[10];
2379 for (i = 0; i < 10; i++) {
2380 file_list[i] = g_strdup_printf("%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2381 content_debug("File : %s\n", file_list[i]);
2384 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2385 if (ret != MEDIA_CONTENT_ERROR_NONE)
2386 content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2388 for (i = 0; i < 10; i++)
2389 g_free(file_list[i]);
2394 void _scan_cb(media_content_error_e err, void *user_data)
2396 content_debug("scan callback is called : %d\n", err);
2397 g_main_loop_quit(g_loop);
2402 int test_scan_file()
2406 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2407 ret = media_content_scan_file(file_path);
2408 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2409 content_error("Fail to media_content_scan_file : %d", ret);
2416 gboolean test_scan_dir_start(gpointer data)
2420 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2422 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2424 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2425 content_error("Fail to test_scan_dir_start : %d", ret);
2432 gboolean cancel_scan_dir_start(gpointer data)
2434 int ret = MEDIA_CONTENT_ERROR_NONE;
2436 const char *dir_path = tzplatform_getenv(TZ_USER_IMAGES);
2438 ret = media_content_cancel_scan_folder(dir_path);
2440 if (ret == MEDIA_CONTENT_ERROR_NONE)
2441 content_debug("media_content_cancel_scan_folder is success");
2443 content_error("media_content_cancel_scan_folder is failed");
2448 int test_scan_dir(int cancel)
2450 GSource *source = NULL;
2451 GMainContext *context = NULL;
2453 g_loop = g_main_loop_new(NULL, FALSE);
2454 context = g_main_loop_get_context(g_loop);
2455 source = g_idle_source_new();
2456 g_source_set_callback(source, test_scan_dir_start, NULL, NULL);
2457 g_source_attach(source, context);
2460 GSource *cancel_src = NULL;
2461 cancel_src = g_idle_source_new();
2462 g_source_set_callback(cancel_src, cancel_scan_dir_start, NULL, NULL);
2463 g_source_attach(cancel_src, context);
2466 g_main_loop_run(g_loop);
2467 g_main_loop_unref(g_loop);
2472 void _noti_cb(media_content_error_e error,
2474 media_content_db_update_item_type_e update_item,
2475 media_content_db_update_type_e update_type,
2476 media_content_type_e media_type,
2483 content_debug("noti success! : %d\n", error);
2485 content_debug("error occurred! : %d\n", error);
2487 content_debug("Noti from PID(%d)\n", pid);
2489 if (update_item == MEDIA_ITEM_FILE)
2490 content_debug("Noti item : MEDIA_ITEM_FILE\n");
2491 else if (update_item == MEDIA_ITEM_DIRECTORY)
2492 content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
2494 if (update_type == MEDIA_CONTENT_INSERT)
2495 content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
2496 else if (update_type == MEDIA_CONTENT_DELETE)
2497 content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
2498 else if (update_type == MEDIA_CONTENT_UPDATE)
2499 content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
2501 content_debug("content type : %d\n", media_type);
2504 content_debug("path : %s\n", path);
2506 content_debug("path not\n");
2509 content_debug("uuid : %s\n", uuid);
2511 content_debug("uuid not\n");
2514 content_debug("mime_type : %s\n", mime_type);
2516 content_debug("mime not\n");
2518 if (user_data) content_debug("String : %s\n", (char *)user_data);
2523 void _noti_cb_2(media_content_error_e error,
2525 media_content_db_update_item_type_e update_item,
2526 media_content_db_update_type_e update_type,
2527 media_content_type_e media_type,
2534 content_debug("noti_2 success! : %d\n", error);
2536 content_debug("error occurred! : %d\n", error);
2538 content_debug("Noti_2 from PID(%d)\n", pid);
2540 g_main_loop_quit(g_loop);
2544 static media_content_noti_h noti_h;
2545 static media_content_noti_h noti_h_2;
2547 gboolean _send_noti_operations(gpointer data)
2549 int ret = MEDIA_CONTENT_ERROR_NONE;
2551 /* First of all, noti subscription */
2552 char *user_str = strdup("hi");
2553 media_content_add_db_updated_cb(_noti_cb, (void*)user_str, ¬i_h);
2554 media_content_add_db_updated_cb(_noti_cb_2, (void*)user_str, ¬i_h_2);
2556 /* media_info_insert_to_db */
2557 media_info_h media_item = NULL;
2558 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2560 ret = media_info_insert_to_db(path, &media_item);
2561 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2562 content_error("media_info_insert_to_db failed : %d", ret);
2563 media_info_destroy(media_item);
2567 content_debug("media_info_insert_to_db success");
2569 media_content_remove_db_updated_cb(noti_h);
2571 /* media_info_update_to_db */
2572 ret = media_info_update_to_db(media_item);
2573 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2574 content_error("media_info_update_to_db failed : %d\n", ret);
2575 media_info_destroy(media_item);
2579 media_info_destroy(media_item);
2586 int ret = MEDIA_CONTENT_ERROR_NONE;
2587 GSource *source = NULL;
2588 GMainContext *context = NULL;
2590 g_loop = g_main_loop_new(NULL, FALSE);
2591 context = g_main_loop_get_context(g_loop);
2592 source = g_idle_source_new();
2593 g_source_set_callback(source, _send_noti_operations, NULL, NULL);
2594 g_source_attach(source, context);
2596 g_main_loop_run(g_loop);
2597 g_main_loop_unref(g_loop);
2599 test_filter_destroy();
2600 media_content_remove_db_updated_cb(noti_h_2);
2605 bool media_face_test_cb(media_face_h face, void *user_data)
2607 get_face_meta(face);
2609 if (user_data != NULL) {
2610 media_face_h new_face = NULL;
2611 media_face_clone(&new_face, face);
2613 GList **list = (GList**)user_data;
2614 *list = g_list_append(*list, new_face);
2622 int ret = MEDIA_CONTENT_ERROR_NONE;
2623 filter_h filter = NULL;
2624 GList *all_item_list = NULL;
2627 ret = media_filter_create(&filter);
2628 content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
2630 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", MEDIA_CONTENT_COLLATE_DEFAULT);
2631 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2632 media_filter_destroy(filter);
2633 content_error("Fail to set condition");
2637 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
2638 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2639 content_error("media_info_foreach_media_from_db failed: %d", ret);
2640 media_filter_destroy(filter);
2644 for (i = 0; i < g_list_length(all_item_list); i++) {
2645 media_info_h media_handle = NULL;
2646 char *media_id = NULL;
2649 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2651 ret = media_info_get_media_id(media_handle, &media_id);
2652 if (ret != MEDIA_CONTENT_ERROR_NONE)
2653 content_error("media_info_get_media_id failed: %d", ret);
2655 ret = media_info_get_face_count_from_db(media_id, filter, &face_count);
2656 if (ret != MEDIA_CONTENT_ERROR_NONE)
2657 content_error("media_info_get_face_count_from_db failed: %d", ret);
2659 content_error("media_id [%s] face_count [%d]", media_id, face_count);
2661 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, NULL);
2662 if (ret != MEDIA_CONTENT_ERROR_NONE)
2663 content_error("media_info_foreach_face_from_db failed: %d", ret);
2665 media_info_destroy(media_handle);
2668 media_filter_destroy(filter);
2673 int test_face_add_del(void)
2675 int ret = MEDIA_CONTENT_ERROR_NONE;
2676 char *media_id = "ecca7366-e085-41d8-a12b-cbdfc2b9c5fc";
2679 media_face_h face = NULL;
2681 char *face_tag = "test_face_tag";
2683 ret = media_face_create(media_id, &face);
2684 content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_face_create");
2686 ret = media_face_set_face_rect(face, 10, 12, 50, 100);
2687 if (ret != MEDIA_CONTENT_ERROR_NONE)
2688 content_error("media_face_set_face_rect failed: %d", ret);
2690 ret = media_face_set_orientation(face, 5);
2691 if (ret != MEDIA_CONTENT_ERROR_NONE)
2692 content_error("media_face_set_orientation failed: %d", ret);
2694 ret = media_face_set_tag(face, face_tag);
2695 if (ret != MEDIA_CONTENT_ERROR_NONE)
2696 content_error("media_face_set_tag failed: %d", ret);
2698 ret = media_face_insert_to_db(face);
2699 if (ret != MEDIA_CONTENT_ERROR_NONE)
2700 content_error("media_face_insert_to_db failed: %d", ret);
2702 ret = media_face_destroy(face);
2703 if (ret != MEDIA_CONTENT_ERROR_NONE)
2704 content_error("media_face_destroy failed: %d", ret);
2707 GList *all_item_list = NULL;
2708 filter_h filter = NULL;
2709 ret = media_filter_create(&filter);
2710 content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
2712 ret = media_filter_set_condition(filter, "MEDIA_FACE_TAG IS NOT NULL", MEDIA_CONTENT_COLLATE_DEFAULT);
2713 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2714 media_filter_destroy(filter);
2715 content_error("Fail to set condition");
2719 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, &all_item_list);
2721 if (g_list_length(all_item_list) > 0) {
2722 media_face_h face_handle = NULL;
2723 face_handle = (media_face_h)g_list_nth_data(all_item_list, 0);
2725 ret = media_face_set_face_rect(face_handle, 20, 22, 70, 70);
2726 if (ret != MEDIA_CONTENT_ERROR_NONE)
2727 content_error("media_face_set_face_rect failed: %d", ret);
2728 ret = media_face_set_orientation(face_handle, 3);
2729 if (ret != MEDIA_CONTENT_ERROR_NONE)
2730 content_error("media_face_set_orientation failed: %d", ret);
2731 ret = media_face_set_tag(face_handle, NULL);
2732 if (ret != MEDIA_CONTENT_ERROR_NONE)
2733 content_error("media_face_set_tag failed: %d", ret);
2734 ret = media_face_update_to_db(face_handle);
2735 if (ret != MEDIA_CONTENT_ERROR_NONE)
2736 content_error("media_face_update_to_db failed: %d", ret);
2738 media_face_destroy(face_handle);
2741 media_filter_destroy(filter);
2744 char *face_id = "5e58a3a8-f0b2-4c29-b799-b49a70dc2313";
2747 ret = media_face_delete_from_db(face_id);
2752 #ifdef _USE_TVPD_MODE
2753 filter_h g_tv_filter = NULL;
2755 int test_tv_filter_create(void)
2757 content_debug("\n============Filter Create============\n\n");
2759 int ret = MEDIA_CONTENT_ERROR_NONE;
2761 ret = media_filter_create(&g_tv_filter);
2763 ret = media_filter_set_storage(g_tv_filter, "0a22a163-e634-4a2e-ba14-0469a969eea0");
2765 ret = media_filter_set_order(g_tv_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_DEFAULT);
2770 int test_tv_filter_destroy(void)
2772 content_debug("\n============Filter Destroy============\n\n");
2774 int ret = MEDIA_CONTENT_ERROR_NONE;
2776 ret = media_filter_destroy(g_tv_filter);
2781 bool pvr_item_cb(media_pvr_h pvr, void *user_data)
2783 int ret = MEDIA_CONTENT_ERROR_NONE;
2784 char *c_value = NULL;
2786 bool b_value = false;
2787 unsigned long long l_value = 0;
2790 content_debug("NO Item");
2794 ret = media_pvr_get_media_id(pvr, &c_value);
2795 if (ret != MEDIA_CONTENT_ERROR_NONE)
2796 content_error("Fail to media_pvr_get_media_id");
2797 content_debug("media_id [%s]", c_value);
2800 ret = media_pvr_get_channel_name(pvr, &c_value);
2801 if (ret != MEDIA_CONTENT_ERROR_NONE)
2802 content_error("Fail to media_pvr_get_channel_name");
2803 content_debug("channel_name [%s]", c_value);
2806 ret = media_pvr_get_program_title(pvr, &c_value);
2807 if (ret != MEDIA_CONTENT_ERROR_NONE)
2808 content_error("Fail to media_pvr_get_program_title");
2809 content_debug("program_title [%s]", c_value);
2812 ret = media_pvr_get_program_crid(pvr, &c_value);
2813 if (ret != MEDIA_CONTENT_ERROR_NONE)
2814 content_error("Fail to media_pvr_get_program_crid");
2815 content_debug("program_crid [%s]", c_value);
2818 ret = media_pvr_get_guidance(pvr, &c_value);
2819 if (ret != MEDIA_CONTENT_ERROR_NONE)
2820 content_error("Fail to media_pvr_get_guidance");
2821 content_debug("guidance [%s]", c_value);
2824 ret = media_pvr_get_synopsis(pvr, &c_value);
2825 if (ret != MEDIA_CONTENT_ERROR_NONE)
2826 content_error("Fail to media_pvr_get_synopsis");
2827 content_debug("synopsis [%s]", c_value);
2830 ret = media_pvr_get_genre(pvr, &c_value);
2831 if (ret != MEDIA_CONTENT_ERROR_NONE)
2832 content_error("Fail to media_pvr_get_synopsis");
2833 content_debug("genre [%s]", c_value);
2836 ret = media_pvr_get_language(pvr, &c_value);
2837 if (ret != MEDIA_CONTENT_ERROR_NONE)
2838 content_error("Fail to media_pvr_get_language");
2839 content_debug("language [%s]", c_value);
2842 ret = media_pvr_get_path(pvr, &c_value);
2843 if (ret != MEDIA_CONTENT_ERROR_NONE)
2844 content_error("Fail to media_pvr_get_path");
2845 content_debug("path [%s]", c_value);
2848 ret = media_pvr_get_storage_id(pvr, &c_value);
2849 if (ret != MEDIA_CONTENT_ERROR_NONE)
2850 content_error("Fail to media_pvr_get_storage_id");
2851 content_debug("storage_id [%s]", c_value);
2854 ret = media_pvr_get_size(pvr, &l_value);
2855 if (ret != MEDIA_CONTENT_ERROR_NONE)
2856 content_error("Fail to media_pvr_get_size");
2857 content_debug("size [%lld]", l_value);
2859 ret = media_pvr_get_timezone(pvr, &i_value);
2860 if (ret != MEDIA_CONTENT_ERROR_NONE)
2861 content_error("Fail to media_pvr_get_timezone");
2862 content_debug("timezone [%d]", i_value);
2864 ret = media_pvr_get_ptc(pvr, &i_value);
2865 if (ret != MEDIA_CONTENT_ERROR_NONE)
2866 content_error("Fail to media_pvr_get_ptc");
2867 content_debug("ptc [%d]", i_value);
2869 ret = media_pvr_get_major(pvr, &i_value);
2870 if (ret != MEDIA_CONTENT_ERROR_NONE)
2871 content_error("Fail to media_pvr_get_major");
2872 content_debug("[%d]", i_value);
2874 ret = media_pvr_get_minor(pvr, &i_value);
2875 if (ret != MEDIA_CONTENT_ERROR_NONE)
2876 content_error("Fail to media_pvr_get_minor");
2877 content_debug("minor [%d]", i_value);
2879 ret = media_pvr_get_channel_type(pvr, &i_value);
2880 if (ret != MEDIA_CONTENT_ERROR_NONE)
2881 content_error("Fail to media_pvr_get_channel_type");
2882 content_debug("channel_type [%d]", i_value);
2884 ret = media_pvr_get_program_num(pvr, &i_value);
2885 if (ret != MEDIA_CONTENT_ERROR_NONE)
2886 content_error("Fail to media_pvr_get_program_num");
2887 content_debug("program_num [%d]", i_value);
2889 unsigned int ui_value = 0;
2890 ret = media_pvr_get_service_profile(pvr, &ui_value);
2891 if (ret != MEDIA_CONTENT_ERROR_NONE)
2892 content_error("Fail to media_pvr_get_service_profile");
2893 content_debug("service_profile [%u]", ui_value);
2895 ret = media_pvr_get_duration(pvr, &i_value);
2896 if (ret != MEDIA_CONTENT_ERROR_NONE)
2897 content_error("Fail to media_pvr_get_duration");
2898 content_debug("duration [%d]", i_value);
2900 ret = media_pvr_get_embargo_time(pvr, &i_value);
2901 if (ret != MEDIA_CONTENT_ERROR_NONE)
2902 content_error("Fail to media_pvr_get_embargo_time");
2903 content_debug("embargo_time [%d]", i_value);
2905 ret = media_pvr_get_expiry_time(pvr, &i_value);
2906 if (ret != MEDIA_CONTENT_ERROR_NONE)
2907 content_error("Fail to media_pvr_get_expiry_time");
2908 content_debug("expiry_time [%d]", i_value);
2910 ret = media_pvr_get_parental_rating(pvr, &i_value);
2911 if (ret != MEDIA_CONTENT_ERROR_NONE)
2912 content_error("Fail to media_pvr_get_parental_rating");
2913 content_debug("parental_rating [%d]", i_value);
2915 ret = media_pvr_get_start_time(pvr, &i_value);
2916 if (ret != MEDIA_CONTENT_ERROR_NONE)
2917 content_error("Fail to media_pvr_get_start_time");
2918 content_debug("start_time [%d]", i_value);
2920 ret = media_pvr_get_program_start_time(pvr, &i_value);
2921 if (ret != MEDIA_CONTENT_ERROR_NONE)
2922 content_error("Fail to media_pvr_get_program_start_time");
2923 content_debug("program_start_time [%d]", i_value);
2925 ret = media_pvr_get_program_end_time(pvr, &i_value);
2926 if (ret != MEDIA_CONTENT_ERROR_NONE)
2927 content_error("Fail to media_pvr_get_program_end_time");
2928 content_debug("program_end_time [%d]", i_value);
2930 ret = media_pvr_get_program_date(pvr, &i_value);
2931 if (ret != MEDIA_CONTENT_ERROR_NONE)
2932 content_error("Fail to media_pvr_get_program_date");
2933 content_debug("program_date [%d]", i_value);
2935 ret = media_pvr_get_timer_record(pvr, &b_value);
2936 if (ret != MEDIA_CONTENT_ERROR_NONE)
2937 content_error("Fail to media_pvr_get_timer_record");
2938 content_debug("timer_record [%d]", b_value);
2940 ret = media_pvr_get_series_record(pvr, &b_value);
2941 if (ret != MEDIA_CONTENT_ERROR_NONE)
2942 content_error("Fail to media_pvr_get_series_record");
2943 content_debug("series_record [%d]", b_value);
2945 ret = media_pvr_get_hd(pvr, &i_value);
2946 if (ret != MEDIA_CONTENT_ERROR_NONE)
2947 content_error("Fail to media_pvr_get_hd");
2948 content_debug("hd [%d]", i_value);
2950 ret = media_pvr_get_subtitle(pvr, &b_value);
2951 if (ret != MEDIA_CONTENT_ERROR_NONE)
2952 content_error("Fail to media_pvr_get_subtitle");
2953 content_debug("subtitle [%d]", b_value);
2955 ret = media_pvr_get_ttx(pvr, &b_value);
2956 if (ret != MEDIA_CONTENT_ERROR_NONE)
2957 content_error("Fail to media_pvr_get_ttx");
2958 content_debug("ttx [%d]", b_value);
2960 ret = media_pvr_get_ad(pvr, &b_value);
2961 if (ret != MEDIA_CONTENT_ERROR_NONE)
2962 content_error("Fail to media_pvr_get_ad");
2963 content_debug("ad [%d]", b_value);
2965 ret = media_pvr_get_hard_of_hearing_radio(pvr, &b_value);
2966 if (ret != MEDIA_CONTENT_ERROR_NONE)
2967 content_error("Fail to media_pvr_get_hard_of_hearing_radio");
2968 content_debug("hard_of_hearing_radio [%d]", b_value);
2970 ret = media_pvr_get_data_service(pvr, &b_value);
2971 if (ret != MEDIA_CONTENT_ERROR_NONE)
2972 content_error("Fail to media_pvr_get_data_service");
2973 content_debug("data_service [%d]", b_value);
2975 ret = media_pvr_get_content_lock(pvr, &b_value);
2976 if (ret != MEDIA_CONTENT_ERROR_NONE)
2977 content_error("Fail to media_pvr_get_content_lock");
2978 content_debug("content_lock [%d]", b_value);
2980 ret = media_pvr_get_content_watch(pvr, &b_value);
2981 if (ret != MEDIA_CONTENT_ERROR_NONE)
2982 content_error("Fail to media_pvr_get_content_watch");
2983 content_debug("content_watch [%d]", b_value);
2985 ret = media_pvr_get_has_audio_only(pvr, &b_value);
2986 if (ret != MEDIA_CONTENT_ERROR_NONE)
2987 content_error("Fail to media_pvr_get_has_audio_only");
2988 content_debug("has_audio_only [%d]", b_value);
2990 ret = media_pvr_get_is_local_record(pvr, &b_value);
2991 if (ret != MEDIA_CONTENT_ERROR_NONE)
2992 content_error("Fail to media_pvr_get_is_local_record");
2993 content_debug("is_local_record [%d]", b_value);
2995 ret = media_pvr_get_resolution(pvr, (media_pvr_resolution_e*)&i_value);
2996 if (ret != MEDIA_CONTENT_ERROR_NONE)
2997 content_error("Fail to media_pvr_get_resolution");
2998 content_debug("resolution [%d]", i_value);
3000 ret = media_pvr_get_aspectratio(pvr, (media_pvr_aspectratio_e*)&i_value);
3001 if (ret != MEDIA_CONTENT_ERROR_NONE)
3002 content_error("Fail to media_pvr_get_aspectratio");
3003 content_debug("aspectratio [%d]", i_value);
3005 ret = media_pvr_get_highlight(pvr, &b_value);
3006 if (ret != MEDIA_CONTENT_ERROR_NONE)
3007 content_error("Fail to media_pvr_get_highlight");
3008 content_debug("highlight [%d]", b_value);
3016 int ret = MEDIA_CONTENT_ERROR_NONE;
3017 int media_count = 0;
3019 content_debug("\n============PVR Test============\n\n");
3021 test_tv_filter_create();
3023 ret = media_pvr_get_media_count_from_db(g_tv_filter, &media_count);
3024 if (ret != MEDIA_CONTENT_ERROR_NONE)
3025 content_error("media_pvr_get_media_count_from_db failed: %d", ret);
3027 content_debug("media_count : [%d]", media_count);
3029 ret = media_pvr_foreach_media_from_db(g_tv_filter, pvr_item_cb, NULL);
3030 if (ret != MEDIA_CONTENT_ERROR_NONE)
3031 content_error("media_pvr_foreach_media_from_db is failed");
3033 test_tv_filter_destroy();
3038 int test_pvr_update_db(void)
3040 int ret = MEDIA_CONTENT_ERROR_NONE;
3041 media_pvr_h pvr = NULL;
3043 ret = media_pvr_get_pvr_from_db("ff9b5a9a-a7b4-47f4-8255-84e007e25f13", &pvr);
3044 if (ret != MEDIA_CONTENT_ERROR_NONE)
3045 content_error("media_pvr_get_pvr_from_db failed: %d", ret);
3047 ret = media_pvr_set_content_lock(pvr, TRUE);
3048 if (ret != MEDIA_CONTENT_ERROR_NONE)
3049 content_error("Fail to media_pvr_set_content_lock");
3051 ret = media_pvr_set_content_watch(pvr, TRUE);
3052 if (ret != MEDIA_CONTENT_ERROR_NONE)
3053 content_error("Fail to media_pvr_set_content_watch");
3055 ret = media_pvr_set_program_title(pvr, "TEST TITLE");
3056 if (ret != MEDIA_CONTENT_ERROR_NONE)
3057 content_error("Fail to media_pvr_set_program_title");
3059 ret = media_pvr_set_highlight(pvr, TRUE);
3060 if (ret != MEDIA_CONTENT_ERROR_NONE)
3061 content_error("Fail to media_pvr_set_highlight");
3063 ret = media_pvr_update_to_db(pvr);
3064 if (ret != MEDIA_CONTENT_ERROR_NONE)
3065 content_error("Fail to media_pvr_update_to_db");
3068 media_pvr_destroy(pvr);
3074 int main(int argc, char *argv[])
3076 int ret = MEDIA_CONTENT_ERROR_NONE;
3078 content_debug("--- content manager test start ---\n\n");
3080 ret = test_connect_database();
3081 if (ret != MEDIA_CONTENT_ERROR_NONE)
3082 return MEDIA_CONTENT_ERROR_NONE;
3083 #ifdef _USE_TVPD_MODE
3086 test_pvr_update_db();
3093 ret = test_ebook_text_finder(argv[1]);
3094 if (ret != MEDIA_CONTENT_ERROR_NONE)
3098 ret = test_start_face_detection(FALSE);
3099 if (ret != MEDIA_CONTENT_ERROR_NONE)
3103 if (ret != MEDIA_CONTENT_ERROR_NONE)
3106 ret = test_gallery_scenario();
3107 if (ret != MEDIA_CONTENT_ERROR_NONE)
3110 ret = test_get_all_music_files();
3111 if (ret != MEDIA_CONTENT_ERROR_NONE)
3114 ret = test_media_info_operation();
3115 if (ret != MEDIA_CONTENT_ERROR_NONE)
3118 ret = test_folder_operation();
3119 if (ret != MEDIA_CONTENT_ERROR_NONE)
3122 ret = test_playlist_operation();
3123 if (ret != MEDIA_CONTENT_ERROR_NONE)
3126 ret = test_tag_operation();
3127 if (ret != MEDIA_CONTENT_ERROR_NONE)
3130 ret = test_bookmark_operation();
3131 if (ret != MEDIA_CONTENT_ERROR_NONE)
3134 ret = test_album_list();
3135 if (ret != MEDIA_CONTENT_ERROR_NONE)
3138 ret = test_group_operation();
3139 if (ret != MEDIA_CONTENT_ERROR_NONE)
3142 ret = test_update_operation();
3143 if (ret != MEDIA_CONTENT_ERROR_NONE)
3146 ret = test_insert();
3147 if (ret != MEDIA_CONTENT_ERROR_NONE)
3151 if (ret != MEDIA_CONTENT_ERROR_NONE)
3155 ret = test_create_thumbnail(argv[1]);
3156 if (ret != MEDIA_CONTENT_ERROR_NONE)
3160 ret = test_extrace_face(TRUE);
3161 if (ret != MEDIA_CONTENT_ERROR_NONE)
3164 ret = test_request_update_db();
3165 if (ret != MEDIA_CONTENT_ERROR_NONE)
3169 if (ret != MEDIA_CONTENT_ERROR_NONE)
3172 ret = test_batch_operations();
3173 if (ret != MEDIA_CONTENT_ERROR_NONE)
3174 return MEDIA_CONTENT_ERROR_NONE;
3176 ret = test_scan_file();
3177 if (ret != MEDIA_CONTENT_ERROR_NONE)
3178 return MEDIA_CONTENT_ERROR_NONE;
3180 ret = test_scan_dir(true);
3181 if (ret != MEDIA_CONTENT_ERROR_NONE)
3182 return MEDIA_CONTENT_ERROR_NONE;
3185 if (ret != MEDIA_CONTENT_ERROR_NONE)
3186 return MEDIA_CONTENT_ERROR_NONE;
3189 if (ret != MEDIA_CONTENT_ERROR_NONE)
3190 return MEDIA_CONTENT_ERROR_NONE;
3192 ret = test_face_add_del();
3193 if (ret != MEDIA_CONTENT_ERROR_NONE)
3194 return MEDIA_CONTENT_ERROR_NONE;
3196 ret = test_playlist_operation_v2();
3197 if (ret != MEDIA_CONTENT_ERROR_NONE)
3198 return MEDIA_CONTENT_ERROR_NONE;
3200 ret = test_bookmark_operation_v2();
3201 if (ret != MEDIA_CONTENT_ERROR_NONE)
3202 return MEDIA_CONTENT_ERROR_NONE;
3204 ret = test_tag_operation_v2();
3205 if (ret != MEDIA_CONTENT_ERROR_NONE)
3206 return MEDIA_CONTENT_ERROR_NONE;
3209 ret = test_disconnect_database();
3210 if (ret != MEDIA_CONTENT_ERROR_NONE)
3213 content_debug("--- content manager test end ---\n");