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 filter_h g_filter = NULL;
31 filter_h g_filter_g = NULL; /*filter for group like folder, tag, playlist, album, year ... */
33 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"
40 media_folder_h g_folder = NULL;
42 static void get_audio_meta(audio_meta_h audio)
46 int ret = MEDIA_CONTENT_ERROR_NONE;
48 content_debug("=== audio meta ===");
50 ret = audio_meta_get_media_id(audio, &c_value);
51 if (ret != MEDIA_CONTENT_ERROR_NONE)
52 content_error("error when get meta : [%d]", ret);
55 content_debug("audio_id : [%s]", c_value);
58 ret = audio_meta_get_album(audio, &c_value);
59 if (ret != MEDIA_CONTENT_ERROR_NONE)
60 content_error("error when get meta : [%d]", ret);
63 content_debug("album : [%s]", c_value);
66 ret = audio_meta_get_artist(audio, &c_value);
67 if (ret != MEDIA_CONTENT_ERROR_NONE)
68 content_error("error when get meta : [%d]", ret);
71 content_debug("artist : [%s]", c_value);
74 ret = audio_meta_get_album_artist(audio, &c_value);
75 if (ret != MEDIA_CONTENT_ERROR_NONE)
76 content_error("error when get meta : [%d]", ret);
79 content_debug("album_artist : [%s]", c_value);
82 ret = audio_meta_get_genre(audio, &c_value);
83 if (ret != MEDIA_CONTENT_ERROR_NONE)
84 content_error("error when get meta : [%d]", ret);
87 content_debug("genre : [%s]", c_value);
90 ret = audio_meta_get_composer(audio, &c_value);
91 if (ret != MEDIA_CONTENT_ERROR_NONE)
92 content_error("error when get meta : [%d]", ret);
95 content_debug("composer : [%s]", c_value);
98 ret = audio_meta_get_year(audio, &c_value);
99 if (ret != MEDIA_CONTENT_ERROR_NONE)
100 content_error("error when get meta : [%d]", ret);
103 content_debug("year : [%s]", c_value);
106 ret = audio_meta_get_recorded_date(audio, &c_value);
107 if (ret != MEDIA_CONTENT_ERROR_NONE)
108 content_error("error when get meta : [%d]", ret);
111 content_debug("recorded_date : [%s]", c_value);
114 ret = audio_meta_get_copyright(audio, &c_value);
115 if (ret != MEDIA_CONTENT_ERROR_NONE)
116 content_error("error when get meta : [%d]", ret);
119 content_debug("copyright : [%s]", c_value);
122 ret = audio_meta_get_track_num(audio, &c_value);
123 if (ret != MEDIA_CONTENT_ERROR_NONE)
124 content_error("error when get meta : [%d]", ret);
127 content_debug("track_num : [%s]", c_value);
130 ret = audio_meta_get_bit_rate(audio, &i_value);
131 if (ret != MEDIA_CONTENT_ERROR_NONE)
132 content_error("error when get meta : [%d]", ret);
134 content_debug("bitrate : [%d]", i_value);
136 ret = audio_meta_get_sample_rate(audio, &i_value);
137 if (ret != MEDIA_CONTENT_ERROR_NONE)
138 content_error("error when get meta : [%d]", ret);
140 content_debug("samplerate : [%d]", i_value);
142 ret = audio_meta_get_channel(audio, &i_value);
143 if (ret != MEDIA_CONTENT_ERROR_NONE)
144 content_error("error when get meta : [%d]", ret);
146 content_debug("channel : [%d]", i_value);
148 ret = audio_meta_get_duration(audio, &i_value);
149 if (ret != MEDIA_CONTENT_ERROR_NONE)
150 content_error("error when get meta : [%d]", ret);
152 content_debug("duration : [%d]", i_value);
156 static void get_video_meta(video_meta_h video)
158 char *c_value = NULL;
160 int ret = MEDIA_CONTENT_ERROR_NONE;
162 content_debug("=== video meta ===");
164 ret = video_meta_get_media_id(video, &c_value);
165 if (ret != MEDIA_CONTENT_ERROR_NONE)
166 content_error("error when get meta : [%d]", ret);
169 content_debug("video_id : [%s]", c_value);
172 ret = video_meta_get_album(video, &c_value);
173 if (ret != MEDIA_CONTENT_ERROR_NONE)
174 content_error("error when get meta : [%d]", ret);
177 content_debug("album : [%s]", c_value);
180 ret = video_meta_get_artist(video, &c_value);
181 if (ret != MEDIA_CONTENT_ERROR_NONE)
182 content_error("error when get meta : [%d]", ret);
185 content_debug("artist : [%s]", c_value);
188 ret = video_meta_get_album_artist(video, &c_value);
189 if (ret != MEDIA_CONTENT_ERROR_NONE)
190 content_error("error when get meta : [%d]", ret);
193 content_debug("album_artist : [%s]", c_value);
196 ret = video_meta_get_genre(video, &c_value);
197 if (ret != MEDIA_CONTENT_ERROR_NONE)
198 content_error("error when get meta : [%d]", ret);
201 content_debug("genre : [%s]", c_value);
204 ret = video_meta_get_composer(video, &c_value);
205 if (ret != MEDIA_CONTENT_ERROR_NONE)
206 content_error("error when get meta : [%d]", ret);
209 content_debug("omposer : [%s]", c_value);
212 ret = video_meta_get_year(video, &c_value);
213 if (ret != MEDIA_CONTENT_ERROR_NONE)
214 content_error("error when get meta : [%d]", ret);
217 content_debug("year : [%s]", c_value);
220 ret = video_meta_get_recorded_date(video, &c_value);
221 if (ret != MEDIA_CONTENT_ERROR_NONE)
222 content_error("error when get meta : [%d]", ret);
225 content_debug("recorded_date : [%s]", c_value);
228 ret = video_meta_get_copyright(video, &c_value);
229 if (ret != MEDIA_CONTENT_ERROR_NONE)
230 content_error("error when get meta : [%d]", ret);
233 content_debug("copyright : [%s]", c_value);
236 ret = video_meta_get_track_num(video, &c_value);
237 if (ret != MEDIA_CONTENT_ERROR_NONE)
238 content_error("error when get meta : [%d]", ret);
241 content_debug("track_num : [%s]", c_value);
244 ret = video_meta_get_bit_rate(video, &i_value);
245 if (ret != MEDIA_CONTENT_ERROR_NONE)
246 content_error("error when get meta : [%d]", ret);
248 content_debug("bitrate : [%d]", i_value);
250 ret = video_meta_get_duration(video, &i_value);
251 if (ret != MEDIA_CONTENT_ERROR_NONE)
252 content_error("error when get meta : [%d]", ret);
254 content_debug("duration : [%d]", i_value);
256 ret = video_meta_get_width(video, &i_value);
257 if (ret != MEDIA_CONTENT_ERROR_NONE)
258 content_error("error when get meta : [%d]", ret);
260 content_debug("width : [%d]", i_value);
262 ret = video_meta_get_height(video, &i_value);
263 if (ret != MEDIA_CONTENT_ERROR_NONE)
264 content_error("error when get meta : [%d]", ret);
266 content_debug("height : [%d]", i_value);
270 static void get_image_meta(image_meta_h image)
272 char *c_value = NULL;
274 media_content_orientation_e orientation;
275 int ret = MEDIA_CONTENT_ERROR_NONE;
277 content_debug("=== image meta ===");
279 ret = image_meta_get_width(image, &i_value);
280 if (ret != MEDIA_CONTENT_ERROR_NONE)
281 content_error("error image_meta_get_width : [%d]", ret);
283 content_debug("width : [%d]", i_value);
285 ret = image_meta_get_height(image, &i_value);
286 if (ret != MEDIA_CONTENT_ERROR_NONE)
287 content_error("error image_meta_get_height : [%d]", ret);
289 content_debug("height : [%d]", i_value);
291 ret = image_meta_get_orientation(image, &orientation);
292 if (ret != MEDIA_CONTENT_ERROR_NONE)
293 content_error("error image_meta_get_orientation : [%d]", ret);
295 content_debug("orientation : [%d]", orientation);
297 ret = image_meta_get_date_taken(image, &c_value);
298 if (ret != MEDIA_CONTENT_ERROR_NONE)
299 content_error("error image_meta_get_date_taken : [%d]", ret);
302 content_debug("date_taken : [%s]", c_value);
307 static void get_album_meta(media_album_h album)
309 char *c_value = NULL;
311 int ret = MEDIA_CONTENT_ERROR_NONE;
313 content_debug("=== album meta ===");
315 ret = media_album_get_album_id(album, &i_value);
316 if (ret != MEDIA_CONTENT_ERROR_NONE)
317 content_error("error media_album_get_album_id : [%d]", ret);
319 content_debug("album_id : [%d]", i_value);
321 ret = media_album_get_name(album, &c_value);
322 if (ret != MEDIA_CONTENT_ERROR_NONE)
323 content_error("error media_album_get_name : [%d]", ret);
326 content_debug("album_name : [%s]", c_value);
329 ret = media_album_get_artist(album, &c_value);
330 if (ret != MEDIA_CONTENT_ERROR_NONE)
331 content_error("error media_album_get_artist : [%d]", ret);
334 content_debug("album_artist : [%s]", c_value);
339 static void get_bookmark_meta(media_bookmark_h bookmark)
341 char *c_value = NULL;
344 int ret = MEDIA_CONTENT_ERROR_NONE;
346 content_debug("=== bookmark meta ===");
348 ret = media_bookmark_get_bookmark_id(bookmark, &i_value);
349 if (ret != MEDIA_CONTENT_ERROR_NONE)
350 content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
352 content_debug("bookmark_id : %d", i_value);
354 ret = media_bookmark_get_thumbnail_path(bookmark, &c_value);
355 if (ret != MEDIA_CONTENT_ERROR_NONE)
356 content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
359 content_debug("bookmark thumbnail_path : %s", c_value);
362 ret = media_bookmark_get_marked_time(bookmark, &time);
363 if (ret != MEDIA_CONTENT_ERROR_NONE)
364 content_error("error media_bookmark_get_marked_time : [%d]", ret);
366 content_debug("bookmark marked_time : %ld", time);
368 ret = media_bookmark_get_name(bookmark, &c_value);
369 if (ret != MEDIA_CONTENT_ERROR_NONE)
370 content_error("error media_bookmark_get_name : [%d]", ret);
373 content_debug("bookmark name : %s", c_value);
378 static void get_tag_meta(media_tag_h tag)
380 char *c_value = NULL;
382 int ret = MEDIA_CONTENT_ERROR_NONE;
384 content_debug("=== tag meta ===");
386 ret = media_tag_get_tag_id(tag, &i_value);
387 if (ret != MEDIA_CONTENT_ERROR_NONE)
388 content_error("error media_tag_get_tag_id : [%d]", ret);
390 content_debug("tag_id : %d", i_value);
392 ret = media_tag_get_name(tag, &c_value);
393 if (ret != MEDIA_CONTENT_ERROR_NONE)
394 content_error("error media_tag_get_name : [%d]", ret);
397 content_debug("tag_name : %s", c_value);
402 static void get_face_meta(media_face_h face)
404 char *c_value = NULL;
405 unsigned int rect_x = 0;
406 unsigned int rect_y = 0;
407 unsigned int rect_w = 0;
408 unsigned int rect_h = 0;
409 media_content_orientation_e orientation = 0;
410 int ret = MEDIA_CONTENT_ERROR_NONE;
412 content_debug("=== face meta ===");
414 ret = media_face_get_face_id(face, &c_value);
415 if (ret != MEDIA_CONTENT_ERROR_NONE)
416 content_error("error media_face_get_face_id : [%d]", ret);
419 content_debug("face_id : %s", c_value);
422 ret = media_face_get_media_id(face, &c_value);
423 if (ret != MEDIA_CONTENT_ERROR_NONE)
424 content_error("error media_face_get_media_id : [%d]", ret);
427 content_debug("media_id : %s", c_value);
430 ret = media_face_get_face_rect(face, &rect_x, &rect_y, &rect_w, &rect_h);
431 if (ret != MEDIA_CONTENT_ERROR_NONE)
432 content_error("error media_face_get_face_rect : [%d]", ret);
434 content_debug("face_rect x[%d] y[%d] w[%d] h[%d]", rect_x, rect_y, rect_w, rect_h);
436 ret = media_face_get_orientation(face, &orientation);
437 if (ret != MEDIA_CONTENT_ERROR_NONE)
438 content_error("error media_face_get_orientation : [%d]", ret);
440 content_debug("orientation : %d", orientation);
442 ret = media_face_get_tag(face, &c_value);
443 if (ret != MEDIA_CONTENT_ERROR_NONE)
444 content_error("error media_face_get_tag : [%d]", ret);
447 content_debug("tag : %s", c_value);
452 static void get_folder_meta(media_folder_h folder, char **folder_id)
454 char *c_value = NULL;
455 media_content_storage_e storage_type;
456 int ret = MEDIA_CONTENT_ERROR_NONE;
458 content_debug("=== folder meta ===");
460 ret = media_folder_get_folder_id(folder, &c_value);
461 if (ret != MEDIA_CONTENT_ERROR_NONE)
462 content_error("error media_folder_get_folder_id : [%d]", ret);
465 content_debug("folder_id : %s", c_value);
466 *folder_id = c_value;
469 ret = media_folder_get_path(folder, &c_value);
470 if (ret != MEDIA_CONTENT_ERROR_NONE)
471 content_error("error media_folder_get_path : [%d]", ret);
474 content_debug("folder_path : %s", c_value);
477 ret = media_folder_get_name(folder, &c_value);
478 if (ret != MEDIA_CONTENT_ERROR_NONE)
479 content_error("error media_folder_get_name : [%d]", ret);
482 content_debug("folder_name : %s", c_value);
485 ret = media_folder_get_storage_type(folder, &storage_type);
486 if (ret != MEDIA_CONTENT_ERROR_NONE)
487 content_error("error media_folder_get_storage_type : [%d]", ret);
489 content_debug("storage_type : [%d]", storage_type);
491 ret = media_folder_get_storage_id(folder, &c_value);
492 if (ret != MEDIA_CONTENT_ERROR_NONE)
493 content_error("error media_folder_get_storage_id : [%d]", ret);
496 content_debug("storage_id : %s", c_value);
501 static void get_media_meta(media_info_h media)
503 char *c_value = NULL;
506 bool b_value = false;
507 unsigned long long size = 0;
508 media_content_type_e media_type = 0;
509 int ret = MEDIA_CONTENT_ERROR_NONE;
511 content_debug("=== media meta ===");
513 ret = media_info_get_media_type(media, &media_type);
514 if (ret != MEDIA_CONTENT_ERROR_NONE)
515 content_error("error media_info_get_media_type : [%d]", ret);
517 content_debug("media_type : [%d]", media_type);
519 ret = media_info_get_media_id(media, &c_value);
520 if (ret != MEDIA_CONTENT_ERROR_NONE)
521 content_error("error media_info_get_media_id : [%d]", ret);
524 content_debug("media_id : [%s]", c_value);
527 ret = media_info_get_file_path(media, &c_value);
528 if (ret != MEDIA_CONTENT_ERROR_NONE)
529 content_error("error media_info_get_file_path : [%d]", ret);
532 content_debug("file_path : [%s]", c_value);
535 ret = media_info_get_display_name(media, &c_value);
536 if (ret != MEDIA_CONTENT_ERROR_NONE)
537 content_error("error media_info_get_display_name : [%d]", ret);
540 content_debug("display_name : [%s]", c_value);
543 ret = media_info_get_mime_type(media, &c_value);
544 if (ret != MEDIA_CONTENT_ERROR_NONE)
545 content_error("error media_info_get_mime_type : [%d]", ret);
548 content_debug("mime_type : [%s]", c_value);
551 ret = media_info_get_thumbnail_path(media, &c_value);
552 if (ret != MEDIA_CONTENT_ERROR_NONE)
553 content_error("error media_info_get_thumbnail_path : [%d]", ret);
556 content_debug("thumbnail_path : [%s]", c_value);
559 ret = media_info_get_description(media, &c_value);
560 if (ret != MEDIA_CONTENT_ERROR_NONE)
561 content_error("error media_info_get_description : [%d]", ret);
564 content_debug("description : [%s]", c_value);
567 ret = media_info_get_size(media, &size);
568 if (ret != MEDIA_CONTENT_ERROR_NONE)
569 content_error("error media_info_get_size : [%d]", ret);
571 content_debug("size : [%lld]", size);
573 ret = media_info_get_added_time(media, &t_value);
574 if (ret != MEDIA_CONTENT_ERROR_NONE)
575 content_error("error media_info_get_added_time : [%d]", ret);
577 content_debug("added_time : [%ld]", t_value);
579 ret = media_info_get_modified_time(media, &t_value);
580 if (ret != MEDIA_CONTENT_ERROR_NONE)
581 content_error("error media_info_get_modified_time : [%d]", ret);
583 content_debug("modified_time : [%ld]", t_value);
585 ret = media_info_get_timeline(media, &t_value);
586 if (ret != MEDIA_CONTENT_ERROR_NONE)
587 content_error("error media_info_get_timeline : [%d]", ret);
589 content_debug("timeline : [%ld]", t_value);
591 ret = media_info_get_rating(media, &i_value);
592 if (ret != MEDIA_CONTENT_ERROR_NONE)
593 content_error("error media_info_get_rating : [%d]", ret);
595 content_debug("rating : [%d]", i_value);
597 ret = media_info_get_favorite(media, &b_value);
598 if (ret != MEDIA_CONTENT_ERROR_NONE)
599 content_error("error media_info_get_favorite : [%d]", ret);
601 content_debug("favorite : [%d]", b_value);
603 ret = media_info_is_drm(media, &b_value);
604 if (ret != MEDIA_CONTENT_ERROR_NONE)
605 content_error("error media_info_is_drm : [%d]", ret);
607 content_debug("is_drm : [%d]", b_value);
609 ret = media_info_is_360_content(media, &b_value);
610 if (ret != MEDIA_CONTENT_ERROR_NONE)
611 content_error("error media_info_is_360_content : [%d]", ret);
613 content_debug("is_360 : [%d]", b_value);
615 #ifdef _USE_TVPD_MODE
616 ret = media_info_get_stitched_state(media, &i_value);
617 if (ret != MEDIA_CONTENT_ERROR_NONE)
618 content_error("error media_info_get_stitched_state : [%d]", ret);
620 content_debug("360 stitched : [%d]", i_value);
622 ret = media_info_get_stitched_engine(media, &i_value);
623 if (ret != MEDIA_CONTENT_ERROR_NONE)
624 content_error("error media_info_get_stitched_engine : [%d]", ret);
626 content_debug("360 engine : [%d]", i_value);
629 if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
632 ret = media_info_get_audio(media, &audio);
633 if (ret != MEDIA_CONTENT_ERROR_NONE)
634 content_error("error media_info_get_audio : [%d]", ret);
636 get_audio_meta(audio);
638 ret = audio_meta_destroy(audio);
639 if (ret != MEDIA_CONTENT_ERROR_NONE)
640 content_error("error audio_meta_destroy : [%d]", ret);
642 } else if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
645 ret = media_info_get_image(media, &image);
646 if (ret != MEDIA_CONTENT_ERROR_NONE)
647 content_error("error media_info_get_image : [%d]", ret);
649 get_image_meta(image);
651 ret = image_meta_destroy(image);
652 if (ret != MEDIA_CONTENT_ERROR_NONE)
653 content_error("error image_meta_destroy : [%d]", ret);
655 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
658 ret = media_info_get_video(media, &video);
659 if (ret != MEDIA_CONTENT_ERROR_NONE)
660 content_error("error media_info_get_video : [%d]", ret);
662 get_video_meta(video);
664 ret = video_meta_destroy(video);
665 if (ret != MEDIA_CONTENT_ERROR_NONE)
666 content_error("error video_meta_destroy : [%d]", ret);
669 content_debug("Other Content");
674 bool media_item_cb(media_info_h media, void *user_data)
677 content_debug("NO Item");
681 get_media_meta(media);
686 bool gallery_folder_list_cb(media_folder_h folder, void *user_data)
688 media_folder_h new_folder = NULL;
689 media_folder_clone(&new_folder, folder);
691 GList **list = (GList**)user_data;
692 *list = g_list_append(*list, new_folder);
697 bool gallery_media_item_cb(media_info_h media, void *user_data)
699 media_info_h new_media = NULL;
700 int ret = MEDIA_CONTENT_ERROR_NONE;
702 ret = media_info_clone(&new_media, media);
704 if (ret != MEDIA_CONTENT_ERROR_NONE) {
705 GList **list = (GList**)user_data;
706 *list = g_list_append(*list, new_media);
712 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
714 media_tag_h new_tag = NULL;
715 media_tag_clone(&new_tag, tag);
717 GList **list = (GList**)user_data;
718 *list = g_list_append(*list, new_tag);
723 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
725 media_bookmark_h new_bm = NULL;
726 int ret = MEDIA_CONTENT_ERROR_NONE;
728 ret = media_bookmark_clone(&new_bm, bookmark);
729 if (ret != MEDIA_CONTENT_ERROR_NONE)
730 content_error("error media_bookmark_clone : [%d]", ret);
732 GList **list = (GList**)user_data;
733 *list = g_list_append(*list, new_bm);
738 bool folder_list_cb(media_folder_h folder, void *user_data)
741 char *folder_id = NULL;
742 media_folder_h *_folder = (media_folder_h*)user_data;
744 content_debug("===========================");
745 if (folder != NULL) {
747 media_folder_clone(_folder, folder);
749 get_folder_meta(folder, &folder_id);
751 if (media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE) {
752 SAFE_FREE(folder_id);
753 content_error("[ERROR] media_folder_get_media_count_from_db is failed");
757 if (media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
758 SAFE_FREE(folder_id);
759 content_error("[ERROR] media_folder_foreach_media_from_db is failed");
763 SAFE_FREE(folder_id);
771 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
773 int ret = MEDIA_CONTENT_ERROR_NONE;
775 char *playlist_name = NULL;
776 media_playlist_h playlist_h;
777 char *playlist_thumbnail_path = NULL;
779 content_debug("playlist_list_cb ======");
781 GList **list = (GList**)user_data;
784 if (playlist == NULL) {
785 content_debug(" playlist handle is NULL");
789 ret = media_playlist_get_playlist_id(playlist, &playlist_id);
790 if (ret != MEDIA_CONTENT_ERROR_NONE)
791 content_error("error media_playlist_get_playlist_id : [%d]", ret);
793 content_debug("playlist_id : %d", playlist_id);
794 /* 64bit build issue */
796 if (user_data != NULL)
797 *list = g_list_append(*list, (gpointer)playlist_id);
799 ret = media_playlist_get_name(playlist, &playlist_name);
800 if (ret != MEDIA_CONTENT_ERROR_NONE)
801 content_error("error media_playlist_get_name : [%d]", ret);
803 content_debug("playlist_name : %s", playlist_name);
804 SAFE_FREE(playlist_name);
806 ret = media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
807 if (ret != MEDIA_CONTENT_ERROR_NONE)
808 content_error("error media_playlist_get_thumbnail_path : [%d]", ret);
810 content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
811 SAFE_FREE(playlist_thumbnail_path);
813 ret = media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
814 if (ret != MEDIA_CONTENT_ERROR_NONE)
815 content_error("error media_playlist_get_playlist_from_db : [%d]", ret);
817 ret = media_playlist_destroy(playlist_h);
818 if (ret != MEDIA_CONTENT_ERROR_NONE)
819 content_error("error media_playlist_destroy : [%d]", ret);
824 bool tag_list_cb(media_tag_h tag, void *user_data)
827 content_debug(" tag handle is NULL");
836 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
838 if (bookmark != NULL && user_data != NULL) {
839 media_bookmark_h new_bookmark;
841 media_bookmark_clone(&new_bookmark, bookmark);
842 GList **list = (GList**)user_data;
843 *list = g_list_append(*list, new_bookmark);
846 get_bookmark_meta(bookmark);
851 bool album_list_cb(media_album_h album, void *user_data)
855 int ret = MEDIA_CONTENT_ERROR_NONE;
858 get_album_meta(album);
859 media_album_get_album_id(album, &album_id);
861 ret = media_album_get_media_count_from_db(album_id, NULL, &media_count);
862 if (ret != MEDIA_CONTENT_ERROR_NONE)
863 content_error("error media_album_get_media_count_from_db : [%d]", ret);
865 content_debug("media_count : [%d]", media_count);
867 ret = media_album_foreach_media_from_db(album_id, NULL, media_item_cb, NULL);
868 if (ret != MEDIA_CONTENT_ERROR_NONE) {
869 content_error("error media_album_foreach_media_from_db : [%d]", ret);
874 content_error("album item not Found!!");
880 bool group_list_cb(const char *group_name, void *user_data)
883 int *idx = user_data;
885 content_debug("group item : [%s] [%d]", group_name, *idx);
887 if (media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
890 content_debug("media_count : [%d]", media_count);
892 if (media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
898 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
900 content_debug("playlist_member_id : [%d]", playlist_member_id);
901 /* 64bit build issue */
903 GList **list = (GList**)user_data;
905 *list = g_list_append(*list, (gpointer)playlist_member_id);
907 /*media_item_cb(media, user_data);*/
912 int test_filter_create(void)
914 content_debug("\n============Filter Create============\n\n");
916 int ret = MEDIA_CONTENT_ERROR_NONE;
918 /* Filter for media */
919 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
921 ret = media_filter_create(&g_filter);
923 /* Set condition and collate
924 * Condition string : You can make where statement of sql.
925 * Colation : You can use collation when comparing.
926 * Ex) In case of FILE_NAME='Samsung' as condition string,
927 * if you want to compare with NOCASE collation,
928 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
929 * if you want to compare in case-sensitive,
930 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
932 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
934 /* Collation of ordering
935 * If you want to get list, which is sorted by NOCASE,
936 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
938 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
940 /* Able to set multi column to set order */
942 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
943 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
944 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
945 ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
947 /* Filter for group */
948 const char *g_condition = "TAG_NAME like \"\%my\%\"";
949 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
951 ret = media_filter_create(&g_filter_g);
953 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
958 int test_filter_destroy(void)
960 content_debug("\n============Filter Create============\n\n");
962 int ret = MEDIA_CONTENT_ERROR_NONE;
964 ret = media_filter_destroy(g_filter);
969 int test_connect_database(void)
971 int ret = MEDIA_CONTENT_ERROR_NONE;
973 content_debug("\n============DB Connection Test============\n\n");
975 ret = media_content_connect();
977 if (ret == MEDIA_CONTENT_ERROR_NONE)
978 content_debug("connection is success\n\n");
980 content_error("connection is failed\n\n");
985 int test_gallery_scenario(void)
987 int ret = MEDIA_CONTENT_ERROR_NONE;
989 filter_h filter = NULL;
992 GList *folder_list = NULL;
993 media_folder_h folder_handle = NULL;
995 /* First, Get folder list */
996 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
997 if (ret != MEDIA_CONTENT_ERROR_NONE) {
998 content_error("media_folder_foreach_folder_from_db failed: %d", ret);
1001 content_debug("media_folder_foreach_folder_from_db success!!");
1002 char *folder_id = NULL;
1004 for (i = 0; i < g_list_length(folder_list); i++) {
1005 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1007 get_folder_meta(folder_handle, &folder_id);
1009 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
1010 SAFE_FREE(folder_id);
1011 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1012 content_error("media_folder_get_media_count_from_db failed: %d", ret);
1015 content_debug("media count [%d] : %d", i, count);
1020 /* To check performance */
1021 struct timeval start, end;
1022 gettimeofday(&start, NULL);
1024 /* Second, Get all item list */
1025 media_info_h media_handle = NULL;
1026 GList *all_item_list = NULL;
1028 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1029 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1030 ret = media_filter_create(&filter);
1031 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1032 content_error("Fail to create filter");
1035 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1036 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1037 media_filter_destroy(filter);
1038 content_error("Fail to set condition");
1041 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1042 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1043 media_filter_destroy(filter);
1044 content_error("Fail to set order");
1048 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1049 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1050 content_error("media_info_foreach_media_from_db failed: %d", ret);
1051 media_filter_destroy(filter);
1054 content_debug("media_info_foreach_media_from_db success");
1056 for (i = 0; i < g_list_length(all_item_list); i++) {
1057 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1058 get_media_meta(media_handle);
1062 media_filter_destroy(filter);
1065 /* To check performance */
1066 gettimeofday(&end, NULL);
1067 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1068 content_debug("Time : %ld\n", time);
1070 /* Third, Get item list of a folder */
1071 GList *item_list = NULL;
1073 for (i = 0; i < g_list_length(folder_list); i++) {
1075 char *folder_id = NULL;
1076 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1078 get_folder_meta(folder_handle, &folder_id);
1080 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1081 SAFE_FREE(folder_id);
1083 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1084 content_error("media_folder_foreach_media_from_db failed: %d", ret);
1087 content_error("media_folder_foreach_media_from_db success!");
1089 for (j = 0; j < g_list_length(item_list); j++) {
1090 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1091 get_media_meta(media_handle);
1097 media_tag_h tag_handle = NULL;
1098 GList *tag_list = NULL;
1099 GList *media_list_in_tag = NULL;
1102 ret = media_tag_foreach_tag_from_db(filter, gallery_tag_item_cb, &tag_list);
1104 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1105 content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1108 content_error("media_tag_foreach_tag_from_db success");
1109 for (i = 0; i < g_list_length(tag_list); i++) {
1110 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1111 get_tag_meta(tag_handle);
1113 ret = media_tag_get_tag_id(tag_handle, &tag_id);
1114 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1115 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1116 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1117 content_error("media_tag_foreach_media_from_db failed: %d", ret);
1120 content_error("media_tag_foreach_media_from_db success");
1122 media_info_h tag_media_handle;
1124 for (j = 0; j < g_list_length(media_list_in_tag); j++) {
1125 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1126 get_media_meta(tag_media_handle);
1133 /* Remove folder list */
1135 for (i = 0; i < g_list_length(folder_list); i++) {
1136 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1137 media_folder_destroy(folder_handle);
1140 g_list_free(folder_list);
1143 /* Remove all items list */
1144 if (all_item_list) {
1145 for (i = 0; i < g_list_length(all_item_list); i++) {
1146 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1147 ret = media_info_destroy(media_handle);
1148 if (ret != MEDIA_CONTENT_ERROR_NONE)
1149 content_error("media_info_destroy failed: %d", ret);
1152 g_list_free(all_item_list);
1155 /* Remove items list */
1157 for (i = 0; i < g_list_length(item_list); i++) {
1158 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1159 ret = media_info_destroy(media_handle);
1160 if (ret != MEDIA_CONTENT_ERROR_NONE)
1161 content_error("media_info_destroy failed: %d", ret);
1164 g_list_free(item_list);
1167 /* Remove tag list */
1169 for (i = 0; i < g_list_length(tag_list); i++) {
1170 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1171 ret = media_tag_destroy(tag_handle);
1172 if (ret != MEDIA_CONTENT_ERROR_NONE)
1173 content_error("error media_tag_destroy : [%d]", ret);
1176 g_list_free(tag_list);
1179 /* Remove media list in a tag */
1180 if (media_list_in_tag) {
1181 for (i = 0; i < g_list_length(media_list_in_tag); i++) {
1182 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1183 ret = media_info_destroy(media_handle);
1184 if (ret != MEDIA_CONTENT_ERROR_NONE)
1185 content_error("media_info_destroy failed: %d", ret);
1188 g_list_free(media_list_in_tag);
1191 return MEDIA_CONTENT_ERROR_NONE;
1194 /*Get All Music file. sort by Title and not case sensitive*/
1195 int test_get_all_music_files(void)
1197 int ret = MEDIA_CONTENT_ERROR_NONE;
1198 int media_count = 0;
1202 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1204 ret = media_filter_create(&filter);
1205 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1206 content_error("Fail to create filter");
1209 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1210 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1211 media_filter_destroy(filter);
1212 content_error("Fail to set condition");
1215 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1216 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1217 media_filter_destroy(filter);
1218 content_error("Fail to set order");
1223 ret = media_info_get_media_count_from_db(filter, &media_count);
1224 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1225 media_filter_destroy(filter);
1226 content_error("Fail to get media count");
1230 content_debug("media_count : [%d]", media_count);
1232 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1233 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1234 media_filter_destroy(filter);
1235 content_error("Fail to get media");
1239 ret = media_filter_destroy(filter);
1244 int test_media_info_operation(void)
1246 int ret = MEDIA_CONTENT_ERROR_NONE;
1247 int media_count = 0;
1249 content_debug("\n============Media info Test============\n\n");
1251 test_filter_create();
1253 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1254 if (ret != MEDIA_CONTENT_ERROR_NONE)
1255 content_error("media_info_get_media_count_from_db failed: %d", ret);
1257 content_debug("media_count : [%d]", media_count);
1259 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1260 if (ret == MEDIA_CONTENT_ERROR_NONE)
1261 content_debug("media_info_foreach_media_from_db is success");
1263 content_error("media_info_foreach_media_from_db is failed");
1265 test_filter_destroy();
1270 int test_media_info_operation_2(void)
1272 int ret = MEDIA_CONTENT_ERROR_NONE;
1273 int bookmark_count = 0;
1275 content_debug("\n============Media info Test 2============\n\n");
1277 test_filter_create();
1281 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1282 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1283 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1285 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1287 content_debug("bookmark_count : [%d]", bookmark_count);
1289 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1293 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1294 if (ret != MEDIA_CONTENT_ERROR_NONE)
1295 content_error("media_info_get_tag_count_from_db failed: %d", ret);
1297 content_debug("tag_count : [%d]", bookmark_count);
1299 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1300 if (ret != MEDIA_CONTENT_ERROR_NONE)
1301 content_error("media_info_foreach_tag_from_db failed: %d", ret);
1303 test_filter_destroy();
1308 int test_folder_operation(void)
1310 int ret = MEDIA_CONTENT_ERROR_NONE;
1311 filter_h filter = NULL;
1312 media_folder_h folder = NULL;
1313 char *folder_id = NULL;
1316 content_debug("\n============Folder Test============\n\n");
1318 test_filter_create();
1320 ret = media_filter_create(&filter);
1321 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1322 content_error("[ERROR] media_folder_filter_create is failed");
1326 media_filter_set_condition(filter, "(MEDIA_TYPE = 0 or MEDIA_TYPE = 1) and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT); /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1327 media_filter_set_offset(filter, 0, 5);
1328 media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1329 media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1331 ret = media_folder_get_folder_count_from_db(filter, &count);
1332 content_debug("Folder count : [%d]", count);
1334 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1336 filter_h m_filter = NULL;
1338 ret = media_filter_create(&m_filter);
1339 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1340 test_filter_destroy();
1341 media_filter_destroy(filter);
1342 content_error("[ERROR] media_info_filter_create is failed");
1346 media_filter_set_condition(m_filter, "MEDIA_TYPE=1 and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT); /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1347 media_filter_set_offset(m_filter, 0, 5);
1348 media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1350 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1351 if (ret != MEDIA_CONTENT_ERROR_NONE)
1352 content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1354 media_filter_destroy(filter);
1355 media_filter_destroy(m_filter);
1357 test_filter_destroy();
1359 /* fix prevent: Resource Leak */
1360 SAFE_FREE(folder_id);
1365 int test_playlist_operation(void)
1367 int ret = MEDIA_CONTENT_ERROR_NONE;
1368 media_playlist_h playlist_1 = NULL;
1369 media_playlist_h playlist_2 = NULL;
1370 media_playlist_h playlist_3 = NULL;
1371 media_playlist_h playlist_4 = NULL;
1372 int playlist_id_1 = 0;
1373 int playlist_id_2 = 0;
1374 int playlist_id_3 = 0;
1375 const char *playlist_name_1 = "myPlaylist_1";
1376 const char *playlist_name_2 = "myPlaylist_2";
1377 const char *playlist_name_3 = "myPlaylist_3";
1378 int playlist_count = 0;
1379 int media_count = 0;
1385 filter_h filter = NULL;
1386 filter_h m_filter = NULL;
1388 content_debug("\n============Playlist Test============\n\n");
1390 /* Filter for playlist */
1392 const char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1394 ret = media_filter_create(&filter);
1395 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1396 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1398 /* Create Playlist */
1399 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1400 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1401 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1403 if (playlist_1 != NULL) {
1404 /* Add media to Playlist */
1405 media_playlist_add_media(playlist_1, test_audio_id);
1406 media_playlist_add_media(playlist_1, test_audio_id);
1407 media_playlist_add_media(playlist_1, test_video_id);
1410 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg"));
1411 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1414 media_playlist_update_to_db(playlist_1);
1417 if (playlist_2 != NULL) {
1418 media_playlist_add_media(playlist_2, test_audio_id);
1419 media_playlist_add_media(playlist_2, test_audio_id);
1420 media_playlist_update_to_db(playlist_2);
1423 /* Get Playlist Count*/
1424 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1426 content_debug("playlist_count [%d]", playlist_count);
1429 GList *playlist_id_list = NULL;
1430 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1431 /* 64bit build issue */
1433 /* Get Playlist id*/
1434 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1435 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1436 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1438 content_debug("playlist_id_1 [%d]", playlist_id_1);
1439 content_debug("playlist_id_2 [%d]", playlist_id_2);
1440 content_debug("playlist_id_3 [%d]", playlist_id_3);
1442 /* Export and import playlist */
1443 media_playlist_export_to_file(playlist_3, tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"));
1444 media_playlist_import_from_file(tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"), "playlist_4", &playlist_4);
1446 /* Filter for media*/
1447 ret = media_filter_create(&m_filter);
1449 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1451 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1453 /* Get media count */
1454 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1455 content_debug("playlist_1_media_count [%d]", media_count);
1457 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1458 content_debug("playlist_2_media_count [%d]", media_count);
1460 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1461 content_debug("playlist_3_media_count [%d]", media_count);
1463 /* Get media of playlist */
1464 GList *playlist_member_id_list = NULL;
1465 GList *playlist_member_id_list_1 = NULL;
1467 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1468 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1470 int playlist_member_id_1_1 = 0;
1471 int playlist_member_id_1_2 = 0;
1472 int playlist_member_id_1_3 = 0;
1473 int playlist_member_id_2_1 = 0;
1474 int playlist_member_id_2_2 = 0;
1475 /* 64bit build issue */
1477 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1478 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1479 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1480 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1481 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1483 content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1484 content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1485 content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1486 content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1487 content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1489 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1490 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1491 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1492 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1493 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1494 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);
1496 /* Update Playlist */
1497 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1498 media_playlist_add_media(playlist_2, test_video_id);
1499 media_playlist_set_name(playlist_2, "test_playlist");
1500 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1501 media_playlist_update_to_db(playlist_2);
1503 /* Get Updated Playlist*/
1504 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1506 /* deletes the playlist */
1508 media_playlist_delete_from_db(playlist_id_1);
1509 media_playlist_delete_from_db(playlist_id_2);
1512 if (playlist_1 != NULL)
1513 media_playlist_destroy(playlist_1);
1514 if (playlist_2 != NULL)
1515 media_playlist_destroy(playlist_2);
1516 if (playlist_3 != NULL)
1517 media_playlist_destroy(playlist_3);
1518 if (playlist_4 != NULL)
1519 media_playlist_destroy(playlist_4);
1521 g_list_free(playlist_id_list);
1522 g_list_free(playlist_member_id_list);
1523 g_list_free(playlist_member_id_list_1);
1526 ret = media_filter_destroy(filter);
1527 if (m_filter != NULL)
1528 ret = media_filter_destroy(m_filter);
1533 int test_playlist_operation_v2(void)
1535 int ret = MEDIA_CONTENT_ERROR_NONE;
1536 media_playlist_h playlist_1 = NULL;
1537 const char *playlist_name_1 = "myPlaylist_1";
1538 const char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
1539 int playlist_id = 0;
1541 content_debug("\n============Playlist Test V2============\n\n");
1543 ret = media_playlist_create(&playlist_1);
1544 if (ret != MEDIA_CONTENT_ERROR_NONE)
1545 content_error("error media_playlist_create : [%d]", ret);
1547 ret = media_playlist_set_name(playlist_1, playlist_name_1);
1548 if (ret != MEDIA_CONTENT_ERROR_NONE)
1549 content_error("error media_playlist_set_name : [%d]", ret);
1551 ret = media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1552 if (ret != MEDIA_CONTENT_ERROR_NONE)
1553 content_error("error media_playlist_set_thumbnail_path : [%d]", ret);
1555 ret = media_playlist_insert_to_db_v2(playlist_1);
1556 if (ret != MEDIA_CONTENT_ERROR_NONE)
1557 content_error("error media_playlist_insert_to_db_v2 : [%d]", ret);
1559 ret = media_playlist_set_name(playlist_1, "myPlaylist_3");
1560 if (ret != MEDIA_CONTENT_ERROR_NONE)
1561 content_error("error media_playlist_set_name : [%d]", ret);
1563 ret = media_playlist_get_playlist_id(playlist_1, &playlist_id);
1564 if (ret != MEDIA_CONTENT_ERROR_NONE)
1565 content_error("error media_playlist_get_playlist_id : [%d]", ret);
1567 ret = media_playlist_update_to_db_v2(playlist_id, playlist_1);
1568 if (ret != MEDIA_CONTENT_ERROR_NONE)
1569 content_error("error media_playlist_update_to_db_v2 : [%d]", ret);
1571 ret = media_playlist_destroy(playlist_1);
1572 if (ret != MEDIA_CONTENT_ERROR_NONE)
1573 content_error("error media_playlist_destroy : [%d]", ret);
1578 int test_tag_operation(void)
1580 int ret = MEDIA_CONTENT_ERROR_NONE;
1587 const char *tag_name_1 = "myTag_1";
1588 const char *tag_name_2 = "myTag_2";
1589 const char *tag_name_3 = "myTag_3";
1591 int media_count = 0;
1594 content_debug("\n============Tag Test============\n\n");
1596 const char *g_condition = "TAG_NAME like \"%%my%%\"";
1598 ret = media_filter_create(&filter);
1600 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1602 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1605 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1606 if (ret != MEDIA_CONTENT_ERROR_NONE)
1607 content_error("error media_tag_insert_to_db : [%d]", ret);
1608 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1609 if (ret != MEDIA_CONTENT_ERROR_NONE)
1610 content_error("error media_tag_insert_to_db : [%d]", ret);
1611 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1612 if (ret != MEDIA_CONTENT_ERROR_NONE)
1613 content_error("error media_tag_insert_to_db : [%d]", ret);
1615 /* Add media to Tag */
1616 ret = media_tag_add_media(tag_1, test_audio_id);
1617 if (ret != MEDIA_CONTENT_ERROR_NONE)
1618 content_error("error media_tag_add_media : [%d]", ret);
1619 ret = media_tag_add_media(tag_1, test_video_id);
1620 if (ret != MEDIA_CONTENT_ERROR_NONE)
1621 content_error("error media_tag_add_media : [%d]", ret);
1622 ret = media_tag_update_to_db(tag_1);
1623 if (ret != MEDIA_CONTENT_ERROR_NONE)
1624 content_error("error media_tag_update_to_db : [%d]", ret);
1626 ret = media_tag_add_media(tag_2, test_audio_id);
1627 if (ret != MEDIA_CONTENT_ERROR_NONE)
1628 content_error("error media_tag_add_media : [%d]", ret);
1629 ret = media_tag_update_to_db(tag_2);
1630 if (ret != MEDIA_CONTENT_ERROR_NONE)
1631 content_error("error media_tag_update_to_db : [%d]", ret);
1634 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1635 if (ret != MEDIA_CONTENT_ERROR_NONE)
1636 content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1638 content_debug("tag_count [%d]", tag_count);
1641 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1642 if (ret != MEDIA_CONTENT_ERROR_NONE)
1643 content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1646 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1647 if (ret != MEDIA_CONTENT_ERROR_NONE)
1648 content_error("error media_tag_get_tag_id : [%d]", ret);
1650 content_debug("tag_id_1 [%d]", tag_id_1);
1652 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1653 if (ret != MEDIA_CONTENT_ERROR_NONE)
1654 content_error("error media_tag_get_tag_id : [%d]", ret);
1656 content_debug("tag_id_2 [%d]", tag_id_2);
1658 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1659 if (ret != MEDIA_CONTENT_ERROR_NONE)
1660 content_error("error media_tag_get_tag_id : [%d]", ret);
1662 content_debug("tag_id_3 [%d]", tag_id_3);
1664 /* Get media count */
1665 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1666 if (ret != MEDIA_CONTENT_ERROR_NONE)
1667 content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1669 content_debug("tag_1_media_count [%d]", media_count);
1671 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1672 if (ret != MEDIA_CONTENT_ERROR_NONE)
1673 content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1675 content_debug("tag_2_media_count [%d]", media_count);
1677 /* Get media of Tag */
1678 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1679 if (ret != MEDIA_CONTENT_ERROR_NONE)
1680 content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1682 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1683 if (ret != MEDIA_CONTENT_ERROR_NONE)
1684 content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1687 ret = media_tag_add_media(tag_2, test_video_id);
1688 if (ret != MEDIA_CONTENT_ERROR_NONE)
1689 content_error("error media_tag_add_media : [%d]", ret);
1690 ret = media_tag_set_name(tag_2, "test_tag");
1691 if (ret != MEDIA_CONTENT_ERROR_NONE)
1692 content_error("error media_tag_set_name : [%d]", ret);
1693 ret = media_tag_update_to_db(tag_2);
1694 if (ret != MEDIA_CONTENT_ERROR_NONE)
1695 content_error("error media_tag_update_to_db : [%d]", ret);
1697 /* Get Updated Tag*/
1698 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1699 if (ret != MEDIA_CONTENT_ERROR_NONE)
1700 content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1702 /* deletes the tag */
1703 ret = media_tag_delete_from_db(tag_id_1);
1704 if (ret != MEDIA_CONTENT_ERROR_NONE)
1705 content_error("error media_tag_delete_from_db : [%d]", ret);
1706 ret = media_tag_delete_from_db(tag_id_2);
1707 if (ret != MEDIA_CONTENT_ERROR_NONE)
1708 content_error("error media_tag_delete_from_db : [%d]", ret);
1710 ret = media_tag_destroy(tag_1);
1711 if (ret != MEDIA_CONTENT_ERROR_NONE)
1712 content_error("error media_tag_destroy : [%d]", ret);
1713 ret = media_tag_destroy(tag_2);
1714 if (ret != MEDIA_CONTENT_ERROR_NONE)
1715 content_error("error media_tag_destroy : [%d]", ret);
1716 ret = media_tag_destroy(tag_3);
1717 if (ret != MEDIA_CONTENT_ERROR_NONE)
1718 content_error("error media_tag_destroy : [%d]", ret);
1719 ret = media_filter_destroy(filter);
1720 if (ret != MEDIA_CONTENT_ERROR_NONE)
1721 content_error("error media_filter_destroy : [%d]", ret);
1726 int test_tag_operation_v2(void)
1728 int ret = MEDIA_CONTENT_ERROR_NONE;
1730 const char *tag_name_1 = "myTag_1";
1733 content_debug("\n============Tag Test V2============\n\n");
1736 ret = media_tag_create(&tag_1);
1737 if (ret != MEDIA_CONTENT_ERROR_NONE)
1738 content_error("error media_tag_create : [%d]", ret);
1740 ret = media_tag_set_name(tag_1, tag_name_1);
1741 if (ret != MEDIA_CONTENT_ERROR_NONE)
1742 content_error("error media_tag_set_name : [%d]", ret);
1744 /* Add media to Tag */
1745 ret = media_tag_add_media(tag_1, test_audio_id);
1746 if (ret != MEDIA_CONTENT_ERROR_NONE)
1747 content_error("error media_tag_add_media : [%d]", ret);
1749 ret = media_tag_add_media(tag_1, test_video_id);
1750 if (ret != MEDIA_CONTENT_ERROR_NONE)
1751 content_error("error media_tag_add_media : [%d]", ret);
1753 ret = media_tag_insert_to_db_v2(tag_1);
1754 if (ret != MEDIA_CONTENT_ERROR_NONE)
1755 content_error("error media_tag_insert_to_db_v2 : [%d]", ret);
1758 ret = media_tag_get_tag_id(tag_1, &tag_id);
1759 if (ret != MEDIA_CONTENT_ERROR_NONE)
1760 content_error("error media_tag_get_tag_id : [%d]", ret);
1762 ret = media_tag_remove_media(tag_1, test_video_id);
1763 if (ret != MEDIA_CONTENT_ERROR_NONE)
1764 content_error("error media_tag_add_media : [%d]", ret);
1766 ret = media_tag_update_to_db_v2(tag_id, tag_1);
1767 if (ret != MEDIA_CONTENT_ERROR_NONE)
1768 content_error("error media_tag_update_to_db_v2 : [%d]", ret);
1771 ret = media_tag_destroy(tag_1);
1772 if (ret != MEDIA_CONTENT_ERROR_NONE)
1773 content_error("error media_tag_destroy : [%d]", ret);
1778 static void __bookmark_handle_free(gpointer data)
1780 media_bookmark_h handle = (media_bookmark_h) data;
1781 media_bookmark_destroy(handle);
1784 int test_bookmark_operation(void)
1786 /* bookmark is only supported for video information. */
1787 int ret = MEDIA_CONTENT_ERROR_NONE;
1788 int bookmark_count = 0;
1790 GList *all_item_list = NULL;
1793 content_debug("\n============Bookmark Test============\n\n");
1795 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
1797 ret = media_filter_create(&filter);
1798 if (ret != MEDIA_CONTENT_ERROR_NONE)
1799 content_error("error media_filter_create : [%d]", ret);
1801 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1802 if (ret != MEDIA_CONTENT_ERROR_NONE)
1803 content_error("error media_filter_set_condition : [%d]", ret);
1805 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
1806 if (ret != MEDIA_CONTENT_ERROR_NONE)
1807 content_error("error media_filter_set_order : [%d]", ret);
1809 /* insert bookmark to video */
1810 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1811 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
1812 if (ret != MEDIA_CONTENT_ERROR_NONE)
1813 content_error("error media_bookmark_insert_to_db : [%d]", ret);
1815 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
1816 if (ret != MEDIA_CONTENT_ERROR_NONE)
1817 content_error("error media_bookmark_insert_to_db : [%d]", ret);
1819 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
1820 if (ret != MEDIA_CONTENT_ERROR_NONE)
1821 content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
1823 content_debug("bookmark_count = [%d]", bookmark_count);
1825 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, &all_item_list);
1826 if (ret != MEDIA_CONTENT_ERROR_NONE)
1827 content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
1829 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
1830 media_bookmark_h bookmark_handle;
1831 bookmark_handle = (media_bookmark_h)g_list_nth_data(all_item_list, idx);
1833 ret = media_bookmark_set_name(bookmark_handle, "test 1");
1834 if (ret != MEDIA_CONTENT_ERROR_NONE)
1835 content_error("error media_bookmark_set_name : [%d]", ret);
1837 ret = media_bookmark_update_to_db(bookmark_handle);
1838 if (ret != MEDIA_CONTENT_ERROR_NONE)
1839 content_error("error media_bookmark_update_to_db : [%d]", ret);
1843 g_list_free_full(all_item_list, __bookmark_handle_free);
1845 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, NULL);
1846 if (ret != MEDIA_CONTENT_ERROR_NONE)
1847 content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
1849 ret = media_filter_destroy(filter);
1850 if (ret != MEDIA_CONTENT_ERROR_NONE)
1851 content_error("error media_filter_destroy : [%d]", ret);
1856 int test_bookmark_operation_v2(void)
1858 content_debug("\n============Bookmark Test V2============\n\n");
1860 int ret = MEDIA_CONTENT_ERROR_NONE;
1861 media_bookmark_h bookmark = NULL;
1862 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1864 ret = media_bookmark_create(test_video_id, 400, &bookmark);
1865 if (ret != MEDIA_CONTENT_ERROR_NONE)
1866 content_error("error media_bookmark_create : [%d]", ret);
1868 ret = media_bookmark_set_name(bookmark, "test bookmark");
1869 if (ret != MEDIA_CONTENT_ERROR_NONE)
1870 content_error("error media_bookmark_set_name : [%d]", ret);
1872 ret = media_bookmark_set_thumbnail_path(bookmark, thumbnail_path1);
1873 if (ret != MEDIA_CONTENT_ERROR_NONE)
1874 content_error("error media_bookmark_set_thumbnail_path : [%d]", ret);
1876 ret = media_bookmark_insert_to_db_v2(bookmark);
1877 if (ret != MEDIA_CONTENT_ERROR_NONE)
1878 content_error("error media_bookmark_insert_to_db_v2 : [%d]", ret);
1880 ret = media_bookmark_set_name(bookmark, "test bookmark 2");
1881 if (ret != MEDIA_CONTENT_ERROR_NONE)
1882 content_error("error media_bookmark_set_name : [%d]", ret);
1884 ret = media_bookmark_update_to_db(bookmark);
1885 if (ret != MEDIA_CONTENT_ERROR_NONE)
1886 content_error("error media_bookmark_update_to_db : [%d]", ret);
1888 ret = media_bookmark_destroy(bookmark);
1889 if (ret != MEDIA_CONTENT_ERROR_NONE)
1890 content_error("error media_bookmark_destroy : [%d]", ret);
1895 int test_album_list(void)
1897 content_debug("\n============Album Test============\n\n");
1899 int ret = MEDIA_CONTENT_ERROR_NONE;
1900 int album_count = 0;
1904 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1906 ret = media_filter_create(&filter);
1907 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1908 content_error("Fail to create filter");
1911 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1912 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1913 media_filter_destroy(filter);
1914 content_error("Fail to set condition");
1917 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
1918 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1919 media_filter_destroy(filter);
1920 content_error("Fail to set order");
1924 ret = media_album_get_album_count_from_db(filter, &album_count);
1925 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1926 media_filter_destroy(filter);
1929 content_debug("album_count [%d]", album_count);
1932 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
1933 if (ret != MEDIA_CONTENT_ERROR_NONE)
1934 content_error("error media_album_foreach_album_from_db : [%d]", ret);
1936 ret = media_filter_destroy(filter);
1937 if (ret != MEDIA_CONTENT_ERROR_NONE)
1938 content_error("error media_filter_destroy : [%d]", ret);
1943 int test_group_operation(void)
1945 content_debug("\n============Group Test============\n\n");
1947 int ret = MEDIA_CONTENT_ERROR_NONE;
1948 int group_count = 0;
1951 ret = test_filter_create();
1952 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1953 content_error("[error(0x%08x)", ret);
1957 for (idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++) {
1958 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
1959 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1960 test_filter_destroy();
1961 content_error("media_group_get_group_count_from_db fail. ret=[%d] idx=[%d]", ret, idx);
1964 content_debug("[%2d]group_count [%d]", idx, group_count);
1967 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
1968 if (ret != MEDIA_CONTENT_ERROR_NONE)
1969 content_error("media_group_foreach_group_from_db failed: %d", ret);
1971 ret = test_filter_destroy();
1976 int test_update_operation()
1978 int ret = MEDIA_CONTENT_ERROR_NONE;
1980 media_info_h media_handle = NULL;
1981 GList *all_item_list = NULL;
1983 /* Get all item list */
1984 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
1985 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1986 content_error("media_info_foreach_media_from_db failed: %d", ret);
1989 content_debug("media_info_foreach_media_from_db success");
1991 for (i = 0; i < g_list_length(all_item_list); i++) {
1992 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1993 get_media_meta(media_handle);
1997 return MEDIA_CONTENT_ERROR_NONE;
2000 int test_insert(void)
2002 int ret = MEDIA_CONTENT_ERROR_NONE;
2003 const char *path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
2005 const char *path = tzplatform_mkpath(TZ_USER_DOCUMENTS, "other.txt"));
2008 media_info_h media_item = NULL;
2009 content_debug("\n============DB Insert Test============\n\n");
2011 ret = media_info_insert_to_db(path, &media_item);
2013 if ((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL)) {
2014 content_debug("Insertion is success");
2016 content_error("Insertion is failed");
2017 ret = media_info_destroy(media_item);
2021 char *media_id = NULL;
2023 ret = media_info_get_media_id(media_item, &media_id);
2024 if (ret != MEDIA_CONTENT_ERROR_NONE)
2025 content_error("media_info_get_media_id failed: %d", ret);
2027 content_debug("Media ID: %s", media_id);
2029 SAFE_FREE(media_id);
2031 ret = media_info_update_to_db(media_item);
2032 if (ret == MEDIA_CONTENT_ERROR_NONE)
2033 content_debug("media_info_update_to_db is success");
2035 content_error("media_info_update_to_db is failed");
2037 ret = media_info_destroy(media_item);
2038 if (ret != MEDIA_CONTENT_ERROR_NONE)
2039 content_error("media_info_destroy failed: %d", ret);
2046 int ret = MEDIA_CONTENT_ERROR_NONE;
2047 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2048 const char *dst_path = tzplatform_mkpath(TZ_USER_IMAGES, "XX/Default1.jpg");
2049 media_info_h move_media = NULL;
2051 ret = media_info_get_media_from_db(move_media_id, &move_media);
2052 if (ret == MEDIA_CONTENT_ERROR_NONE)
2053 content_debug("media_info_get_media_from_db success");
2055 content_error("media_info_get_media_from_db failed: %d", ret);
2057 content_debug("\n============DB Move Test============\n\n");
2060 ret = media_info_move_to_db(move_media, dst_path);
2062 if (ret == MEDIA_CONTENT_ERROR_NONE)
2063 content_debug("Move is success");
2065 content_error("Move is failed");
2067 ret = media_info_destroy(move_media);
2069 content_debug("There is no item : %s", move_media_id);
2075 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2077 char *thumbnail_path = NULL;
2078 int ret = MEDIA_CONTENT_ERROR_NONE;
2081 content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2082 content_debug("error_code [%d]", error);
2083 content_debug("thumbnail_path [%s]", path);
2084 if (user_data != NULL) {
2085 media_info_h media = (media_info_h)user_data;
2086 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2087 if (ret != MEDIA_CONTENT_ERROR_NONE)
2088 content_error("media_info_get_thumbnail_path failed: %d", ret);
2090 content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2091 SAFE_FREE(thumbnail_path);
2092 ret = media_info_destroy(media);
2093 if (ret != MEDIA_CONTENT_ERROR_NONE)
2094 content_error("media_info_destroy failed: %d", ret);
2097 if (g_cnt == g_media_cnt)
2098 g_main_loop_quit(g_loop);
2103 bool thumbnail_create_cb(media_info_h media, void *user_data)
2105 char *media_id = NULL;
2106 media_info_h dst = NULL;
2107 int ret = MEDIA_CONTENT_ERROR_NONE;
2109 if (media == NULL) {
2110 content_debug("NO Item");
2114 ret = media_info_get_media_id(media, &media_id);
2115 if (ret != MEDIA_CONTENT_ERROR_NONE)
2116 content_error("media_info_get_media_id failed: %d", ret);
2118 content_debug("media_id : [%s]", media_id);
2120 ret = media_info_clone(&dst, media);
2121 if (ret != MEDIA_CONTENT_ERROR_NONE)
2122 content_error("media_info_clone failed: %d", ret);
2124 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2125 if (ret != MEDIA_CONTENT_ERROR_NONE)
2126 content_error("media_info_create_thumbnail failed: %d", ret);
2129 /* fix prevent: Resource leak */
2130 SAFE_FREE(media_id);
2135 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2137 int ret = MEDIA_CONTENT_ERROR_NONE;
2139 char *media_id = NULL;
2140 media_info_h dst = NULL;
2144 if (media == NULL) {
2145 content_debug("NO Item");
2149 ret = media_info_get_media_id(media, &media_id);
2150 if (ret != MEDIA_CONTENT_ERROR_NONE)
2151 content_error("media_info_get_media_id failed: %d", ret);
2153 content_debug("media_id : [%s]", media_id);
2155 ret = media_info_clone(&dst, media);
2156 if (ret != MEDIA_CONTENT_ERROR_NONE)
2157 content_error("media_info_clone failed: %d", ret);
2159 ret = media_info_cancel_thumbnail(dst);
2160 if (ret != MEDIA_CONTENT_ERROR_NONE)
2161 content_error("media_info_cancel_thumbnail failed: %d", ret);
2163 ret = media_info_destroy(dst);
2164 if (ret != MEDIA_CONTENT_ERROR_NONE)
2165 content_error("media_info_destroy failed: %d", ret);
2167 if (g_cnt == g_media_cnt)
2168 g_main_loop_quit(g_loop);
2170 /* fix prevent: Resource leak */
2171 SAFE_FREE(media_id);
2176 gboolean create_thumbnail_start(gpointer data)
2178 int ret = MEDIA_CONTENT_ERROR_NONE;
2180 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2182 if (ret == MEDIA_CONTENT_ERROR_NONE)
2183 content_debug("media_info_foreach_media_from_db is success");
2185 content_error("media_info_foreach_media_from_db is failed");
2190 gboolean cancel_thumbnail_start(gpointer data)
2192 int ret = MEDIA_CONTENT_ERROR_NONE;
2194 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2196 if (ret == MEDIA_CONTENT_ERROR_NONE)
2197 content_debug("media_info_foreach_media_from_db is success");
2199 content_error("media_info_foreach_media_from_db is failed");
2204 int test_create_thumbnail(int cancel)
2206 int ret = MEDIA_CONTENT_ERROR_NONE;
2207 GSource *source = NULL;
2208 GMainContext *context = NULL;
2210 test_filter_create();
2212 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2213 if (ret != MEDIA_CONTENT_ERROR_NONE)
2214 content_error("media_info_get_media_count_from_db failed: %d", ret);
2216 content_debug("media_count : [%d]", g_media_cnt);
2218 g_loop = g_main_loop_new(NULL, FALSE);
2219 context = g_main_loop_get_context(g_loop);
2220 source = g_idle_source_new();
2221 g_source_set_callback(source, create_thumbnail_start, NULL, NULL);
2222 g_source_attach(source, context);
2224 /* Logic to cancel */
2226 GSource *cancel_src = NULL;
2227 cancel_src = g_idle_source_new();
2228 g_source_set_callback(cancel_src, cancel_thumbnail_start, NULL, NULL);
2229 g_source_attach(cancel_src, context);
2232 g_main_loop_run(g_loop);
2233 g_main_loop_unref(g_loop);
2235 test_filter_destroy();
2240 bool face_cb(media_face_h face, void *user_data)
2242 get_face_meta(face);
2247 void face_detection_complete_cb(media_content_error_e error, int count, void *user_data)
2249 int ret = MEDIA_CONTENT_ERROR_NONE;
2252 content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2253 content_debug("error_code [%d]", error);
2254 content_debug("face_count [%d]", count);
2256 content_debug("No faces are detected!");
2257 } else if (user_data != NULL) {
2258 media_info_h media = (media_info_h)user_data;
2259 char *media_id = NULL;
2260 ret = media_info_get_media_id(media, &media_id);
2261 if (ret != MEDIA_CONTENT_ERROR_NONE)
2262 content_error("media_info_get_media_id failed: %d", ret);
2263 if (media_id != NULL) {
2264 ret = media_info_foreach_face_from_db(media_id, NULL, face_cb, NULL);
2265 SAFE_FREE(media_id);
2266 if (ret != MEDIA_CONTENT_ERROR_NONE)
2267 content_error("media_info_foreach_face_from_db failed: %d", ret);
2269 ret = media_info_destroy(media);
2270 if (ret != MEDIA_CONTENT_ERROR_NONE)
2271 content_error("media_info_destroy failed: %d", ret);
2274 if (g_cnt == g_media_cnt)
2275 g_main_loop_quit(g_loop);
2280 bool start_face_detection_cb(media_info_h media, void *user_data)
2282 char *media_id = NULL;
2283 media_info_h dst = NULL;
2284 int ret = MEDIA_CONTENT_ERROR_NONE;
2286 if (media == NULL) {
2287 content_debug("NO Item");
2291 ret = media_info_get_media_id(media, &media_id);
2292 if (ret != MEDIA_CONTENT_ERROR_NONE)
2293 content_error("media_info_get_media_id failed: %d", ret);
2295 content_debug("media_id : [%s]", media_id);
2297 ret = media_info_clone(&dst, media);
2298 if (ret != MEDIA_CONTENT_ERROR_NONE)
2299 content_error("media_info_clone failed: %d", ret);
2301 GList **list = (GList**)user_data;
2302 *list = g_list_append(*list, dst);
2304 /* fix prevent: Resource leak */
2305 SAFE_FREE(media_id);
2310 bool cancel_face_detection_cb(media_info_h media, void *user_data)
2312 int ret = MEDIA_CONTENT_ERROR_NONE;
2314 char *media_id = NULL;
2315 media_info_h dst = NULL;
2319 if (media == NULL) {
2320 content_debug("NO Item");
2324 ret = media_info_get_media_id(media, &media_id);
2325 if (ret != MEDIA_CONTENT_ERROR_NONE)
2326 content_error("media_info_get_media_id failed: %d", ret);
2328 content_debug("media_id : [%s]", media_id);
2330 ret = media_info_clone(&dst, media);
2331 if (ret != MEDIA_CONTENT_ERROR_NONE)
2332 content_error("media_info_clone failed: %d", ret);
2334 ret = media_info_cancel_face_detection(dst);
2335 if (ret != MEDIA_CONTENT_ERROR_NONE)
2336 content_error("media_info_cancel_face_detection failed: %d", ret);
2338 ret = media_info_destroy(dst);
2339 if (ret != MEDIA_CONTENT_ERROR_NONE)
2340 content_error("media_info_destroy failed: %d", ret);
2342 if (g_cnt == g_media_cnt)
2343 g_main_loop_quit(g_loop);
2345 /* fix prevent: Resource leak */
2346 SAFE_FREE(media_id);
2351 gboolean face_detection_start(gpointer data)
2353 int ret = MEDIA_CONTENT_ERROR_NONE;
2354 GList *all_item_list = NULL;
2357 ret = media_info_foreach_media_from_db(g_filter, start_face_detection_cb, &all_item_list);
2359 if (ret == MEDIA_CONTENT_ERROR_NONE)
2360 content_debug("media_info_foreach_media_from_db is success");
2362 content_error("media_info_foreach_media_from_db is failed");
2364 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
2365 media_info_h media_handle = NULL;
2367 media_handle = (media_info_h)g_list_nth_data(all_item_list, idx);
2369 ret = media_info_start_face_detection(media_handle, face_detection_complete_cb, NULL);
2370 if (ret != MEDIA_CONTENT_ERROR_NONE)
2371 content_error("media_info_start_face_detection failed: %d", ret);
2378 gboolean face_detection_cancel(gpointer data)
2380 int ret = MEDIA_CONTENT_ERROR_NONE;
2382 ret = media_info_foreach_media_from_db(g_filter, cancel_face_detection_cb, NULL);
2384 if (ret == MEDIA_CONTENT_ERROR_NONE)
2385 content_debug("media_info_foreach_media_from_db is success");
2387 content_error("media_info_foreach_media_from_db is failed");
2392 int test_start_face_detection(int cancel)
2394 int ret = MEDIA_CONTENT_ERROR_NONE;
2395 GSource *source = NULL;
2396 GMainContext *context = NULL;
2398 test_filter_create();
2400 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2401 if (ret != MEDIA_CONTENT_ERROR_NONE)
2402 content_error("media_info_get_media_count_from_db failed: %d", ret);
2404 content_debug("media_count : [%d]", g_media_cnt);
2406 if (g_media_cnt == 0)
2409 g_loop = g_main_loop_new(NULL, FALSE);
2410 context = g_main_loop_get_context(g_loop);
2411 source = g_idle_source_new();
2412 g_source_set_callback(source, face_detection_start, NULL, NULL);
2413 g_source_attach(source, context);
2415 /* Logic to cancel */
2417 GSource *cancel_src = NULL;
2418 cancel_src = g_idle_source_new();
2419 g_source_set_callback(cancel_src, face_detection_cancel, NULL, NULL);
2420 g_source_attach(cancel_src, context);
2423 g_main_loop_run(g_loop);
2424 g_main_loop_unref(g_loop);
2427 test_filter_destroy();
2432 int test_ebook_text_finder(const char *keyword)
2434 int ret = MEDIA_CONTENT_ERROR_NONE;
2435 char **book_path_list = NULL;
2436 unsigned int book_path_len = 0;
2438 media_info_h media = NULL;
2439 book_meta_h book = NULL;
2440 char *s_value = NULL;
2441 long long ms_time = 0;
2442 struct timeval start_time;
2443 struct timeval end_time;
2445 gettimeofday(&start_time, NULL);
2447 ret = book_meta_get_path_with_keyword(keyword, &book_path_list, &book_path_len);
2448 if (ret == MEDIA_CONTENT_ERROR_NONE)
2449 content_debug("book_meta_get_path_with_keyword is success");
2451 content_error("book_meta_get_path_with_keyword is failed");
2453 gettimeofday(&end_time, NULL);
2455 for (i = 0; i < book_path_len; i++) {
2456 ret = media_info_get_media_from_db_by_path(book_path_list[i], &media);
2457 if (ret != MEDIA_CONTENT_ERROR_NONE)
2460 content_debug("===============================");
2461 content_debug("[%d] %s", i, book_path_list[i]);
2462 content_debug("===============================");
2463 media_info_get_title(media, &s_value);
2464 content_debug("Title : %s", s_value);
2468 ret = media_info_get_book(media, &book);
2469 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2470 media_info_destroy(media);
2474 ret = book_meta_get_author(book, &s_value);
2475 if (ret == MEDIA_CONTENT_ERROR_NONE && s_value) {
2476 content_debug("Author : %s", s_value);
2481 ret = book_meta_get_date(book, &s_value);
2482 if (ret == MEDIA_CONTENT_ERROR_NONE && s_value) {
2483 content_debug("Date : %s", s_value);
2488 content_debug("===============================");
2489 ret = book_meta_destroy(book);
2490 if (ret != MEDIA_CONTENT_ERROR_NONE)
2491 content_error("book_meta_destroy failed");
2493 ret = media_info_destroy(media);
2494 if (ret != MEDIA_CONTENT_ERROR_NONE)
2495 content_error("media_info_destroy failed");
2497 g_free(book_path_list[i]);
2500 ms_time = (end_time.tv_sec * 1000LL + end_time.tv_usec / 1000) - (start_time.tv_sec * 1000LL + start_time.tv_usec/ 1000);
2501 content_debug("Search Time [%lld]", ms_time);
2503 g_free(book_path_list);
2507 int test_disconnect_database(void)
2509 int ret = MEDIA_CONTENT_ERROR_NONE;
2510 content_debug("\n============DB Disconnection Test============\n\n");
2512 ret = media_content_disconnect();
2514 if (ret == MEDIA_CONTENT_ERROR_NONE)
2515 content_debug("disconnection is success");
2517 content_error("disconnection is failed");
2522 int test_request_update_db(void)
2524 int ret = MEDIA_CONTENT_ERROR_NONE;
2525 media_info_h media = NULL;
2526 bool favorite = FALSE;
2528 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2529 if (ret != MEDIA_CONTENT_ERROR_NONE)
2530 content_error("media_info_get_media_from_db failed: %d", ret);
2532 ret = media_info_set_favorite(media, TRUE);
2533 if (ret != MEDIA_CONTENT_ERROR_NONE)
2534 content_error("media_info_set_favorite failed: %d", ret);
2536 ret = media_info_update_to_db(media);
2537 if (ret == MEDIA_CONTENT_ERROR_NONE)
2538 content_debug("media_info_update_to_db is success");
2540 content_error("media_info_update_to_db is failed");
2543 media_info_destroy(media);
2545 /*get the updated value*/
2546 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2547 if (ret != MEDIA_CONTENT_ERROR_NONE)
2548 content_error("media_info_get_media_from_db failed: %d", ret);
2550 ret = media_info_get_favorite(media, &favorite);
2551 if (ret != MEDIA_CONTENT_ERROR_NONE)
2552 content_error("media_info_get_favorite failed: %d", ret);
2554 content_debug("favorite [%d]", favorite);
2556 ret = media_info_destroy(media);
2561 int g_total_photo_size = 0;
2562 int g_total_video_size = 0;
2563 int g_total_mp3_size = 0;
2564 int g_total_voice_memo_size = 0;
2566 bool dft_cb(media_info_h media, void *user_data)
2568 unsigned long long file_size = 0;
2569 media_content_type_e media_type = -1;
2570 char *mime_type = NULL;
2571 int ret = MEDIA_CONTENT_ERROR_NONE;
2576 ret = media_info_get_media_type(media, &media_type);
2577 if (ret != MEDIA_CONTENT_ERROR_NONE)
2578 content_error("media_info_get_media_type failed: %d", ret);
2579 ret = media_info_get_size(media, &file_size);
2580 if (ret != MEDIA_CONTENT_ERROR_NONE)
2581 content_error("media_info_get_size failed: %d", ret);
2582 ret = media_info_get_mime_type(media, &mime_type);
2583 if (ret != MEDIA_CONTENT_ERROR_NONE)
2584 content_error("media_info_get_mime_type failed: %d", ret);
2586 if (media_type == MEDIA_CONTENT_TYPE_IMAGE)
2587 g_total_photo_size += file_size;
2588 else if (media_type == MEDIA_CONTENT_TYPE_VIDEO)
2589 g_total_video_size += file_size;
2590 else if (media_type == MEDIA_CONTENT_TYPE_SOUND)
2591 g_total_voice_memo_size += file_size;
2592 else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2593 if ((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2594 g_total_mp3_size += file_size;
2596 g_total_voice_memo_size += file_size;
2598 content_debug("invalid media_type");
2600 SAFE_FREE(mime_type);
2608 int ret = MEDIA_CONTENT_ERROR_NONE;
2609 content_debug("\n============DFT_test============\n\n");
2611 filter_h filter = NULL;
2614 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2616 ret = media_filter_create(&filter);
2619 content_debug("[Internal Memory]\n");
2620 /*1. Photo ============================================================*/
2621 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2624 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2625 content_debug("Photo count = [%d]\n", media_cnt);
2628 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2629 content_debug("Photo size = [%d]\n", g_total_photo_size);
2631 /*2. Video ============================================================*/
2632 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2635 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2636 content_debug("Video count = [%d]\n", media_cnt);
2639 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2640 content_debug("Video size = [%d]\n", g_total_video_size);
2642 /*3. MP3 ============================================================*/
2643 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2646 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2647 content_debug("MP3 count = [%d]\n", media_cnt);
2650 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2651 content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2653 /*4. Voice Memo ============================================================*/
2654 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND (MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2656 /*Get Voice Memo Count*/
2657 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2658 content_debug("Voice Memo count = [%d]\n", media_cnt);
2660 /*Get Voice Memo Size*/
2661 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2662 content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2664 g_total_photo_size = 0;
2665 g_total_video_size = 0;
2666 g_total_mp3_size = 0;
2667 g_total_voice_memo_size = 0;
2670 content_debug("\n[External Memory]\n");
2671 /*1. Photo ============================================================*/
2672 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2675 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2676 content_debug("Photo count = [%d]\n", media_cnt);
2679 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2680 content_debug("Photo size = [%d]\n", g_total_photo_size);
2682 /*2. Video ============================================================*/
2683 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2686 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2687 content_debug("Video count = [%d]\n", media_cnt);
2690 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2691 content_debug("Video size = [%d]\n", g_total_video_size);
2693 /*3. MP3 ============================================================*/
2694 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2697 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2698 content_debug("MP3 count = [%d]\n", media_cnt);
2701 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2702 content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2704 /*4. Voice Memo ============================================================*/
2705 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND (MEDIA_MIME_TYPE=\"audio/AMR\" OR MEDIA_MIME_TYPE=\"audio/mp4\")", MEDIA_CONTENT_COLLATE_DEFAULT);
2707 /*Get Voice Memo Count*/
2708 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2709 content_debug("Voice Memo count = [%d]\n", media_cnt);
2711 /*Get Voice Memo Size*/
2712 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2713 content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2714 ret = media_filter_destroy(filter);
2719 void insert_batch_cb(media_content_error_e error, void * user_data)
2721 content_debug("media_info_insert_batch_to_db completed!\n");
2724 int test_batch_operations()
2728 char *file_list[10];
2730 for (i = 0; i < 10; i++) {
2731 file_list[i] = g_strdup_printf("%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2732 content_debug("File : %s\n", file_list[i]);
2735 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2736 if (ret != MEDIA_CONTENT_ERROR_NONE)
2737 content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2739 for (i = 0; i < 10; i++)
2740 g_free(file_list[i]);
2745 void _scan_cb(media_content_error_e err, void *user_data)
2747 content_debug("scan callback is called : %d\n", err);
2748 g_main_loop_quit(g_loop);
2753 int test_scan_file()
2757 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2758 ret = media_content_scan_file(file_path);
2759 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2760 content_error("Fail to media_content_scan_file : %d", ret);
2767 gboolean test_scan_dir_start(gpointer data)
2771 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2773 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2775 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2776 content_error("Fail to test_scan_dir_start : %d", ret);
2783 gboolean cancel_scan_dir_start(gpointer data)
2785 int ret = MEDIA_CONTENT_ERROR_NONE;
2787 const char *dir_path = tzplatform_getenv(TZ_USER_IMAGES);
2789 ret = media_content_cancel_scan_folder(dir_path);
2791 if (ret == MEDIA_CONTENT_ERROR_NONE)
2792 content_debug("media_content_cancel_scan_folder is success");
2794 content_error("media_content_cancel_scan_folder is failed");
2799 int test_scan_dir(int cancel)
2801 GSource *source = NULL;
2802 GMainContext *context = NULL;
2804 g_loop = g_main_loop_new(NULL, FALSE);
2805 context = g_main_loop_get_context(g_loop);
2806 source = g_idle_source_new();
2807 g_source_set_callback(source, test_scan_dir_start, NULL, NULL);
2808 g_source_attach(source, context);
2811 GSource *cancel_src = NULL;
2812 cancel_src = g_idle_source_new();
2813 g_source_set_callback(cancel_src, cancel_scan_dir_start, NULL, NULL);
2814 g_source_attach(cancel_src, context);
2817 g_main_loop_run(g_loop);
2818 g_main_loop_unref(g_loop);
2823 void _noti_cb(media_content_error_e error,
2825 media_content_db_update_item_type_e update_item,
2826 media_content_db_update_type_e update_type,
2827 media_content_type_e media_type,
2834 content_debug("noti success! : %d\n", error);
2836 content_debug("error occurred! : %d\n", error);
2838 content_debug("Noti from PID(%d)\n", pid);
2840 if (update_item == MEDIA_ITEM_FILE)
2841 content_debug("Noti item : MEDIA_ITEM_FILE\n");
2842 else if (update_item == MEDIA_ITEM_DIRECTORY)
2843 content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
2845 if (update_type == MEDIA_CONTENT_INSERT)
2846 content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
2847 else if (update_type == MEDIA_CONTENT_DELETE)
2848 content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
2849 else if (update_type == MEDIA_CONTENT_UPDATE)
2850 content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
2852 content_debug("content type : %d\n", media_type);
2855 content_debug("path : %s\n", path);
2857 content_debug("path not\n");
2860 content_debug("uuid : %s\n", uuid);
2862 content_debug("uuid not\n");
2865 content_debug("mime_type : %s\n", mime_type);
2867 content_debug("mime not\n");
2869 if (user_data) content_debug("String : %s\n", (char *)user_data);
2874 void _noti_cb_2(media_content_error_e error,
2876 media_content_db_update_item_type_e update_item,
2877 media_content_db_update_type_e update_type,
2878 media_content_type_e media_type,
2885 content_debug("noti_2 success! : %d\n", error);
2887 content_debug("error occurred! : %d\n", error);
2889 content_debug("Noti_2 from PID(%d)\n", pid);
2891 g_main_loop_quit(g_loop);
2895 static media_content_noti_h noti_h;
2896 static media_content_noti_h noti_h_2;
2898 gboolean _send_noti_operations(gpointer data)
2900 int ret = MEDIA_CONTENT_ERROR_NONE;
2902 /* First of all, noti subscription */
2903 char *user_str = strdup("hi");
2904 media_content_add_db_updated_cb(_noti_cb, (void*)user_str, ¬i_h);
2905 media_content_add_db_updated_cb(_noti_cb_2, (void*)user_str, ¬i_h_2);
2907 /* media_info_insert_to_db */
2908 media_info_h media_item = NULL;
2909 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2911 ret = media_info_insert_to_db(path, &media_item);
2912 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2913 content_error("media_info_insert_to_db failed : %d", ret);
2914 media_info_destroy(media_item);
2918 content_debug("media_info_insert_to_db success");
2920 media_content_remove_db_updated_cb(noti_h);
2922 /* media_info_update_to_db */
2923 ret = media_info_update_to_db(media_item);
2924 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2925 content_error("media_info_update_to_db failed : %d\n", ret);
2926 media_info_destroy(media_item);
2930 media_info_destroy(media_item);
2937 int ret = MEDIA_CONTENT_ERROR_NONE;
2938 GSource *source = NULL;
2939 GMainContext *context = NULL;
2941 g_loop = g_main_loop_new(NULL, FALSE);
2942 context = g_main_loop_get_context(g_loop);
2943 source = g_idle_source_new();
2944 g_source_set_callback(source, _send_noti_operations, NULL, NULL);
2945 g_source_attach(source, context);
2947 g_main_loop_run(g_loop);
2948 g_main_loop_unref(g_loop);
2950 test_filter_destroy();
2951 media_content_remove_db_updated_cb(noti_h_2);
2956 bool media_face_test_cb(media_face_h face, void *user_data)
2958 get_face_meta(face);
2960 if (user_data != NULL) {
2961 media_face_h new_face = NULL;
2962 media_face_clone(&new_face, face);
2964 GList **list = (GList**)user_data;
2965 *list = g_list_append(*list, new_face);
2973 int ret = MEDIA_CONTENT_ERROR_NONE;
2974 filter_h filter = NULL;
2975 GList *all_item_list = NULL;
2978 ret = media_filter_create(&filter);
2979 content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
2981 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", MEDIA_CONTENT_COLLATE_DEFAULT);
2982 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2983 media_filter_destroy(filter);
2984 content_error("Fail to set condition");
2988 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
2989 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2990 content_error("media_info_foreach_media_from_db failed: %d", ret);
2991 media_filter_destroy(filter);
2995 for (i = 0; i < g_list_length(all_item_list); i++) {
2996 media_info_h media_handle = NULL;
2997 char *media_id = NULL;
3000 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
3002 ret = media_info_get_media_id(media_handle, &media_id);
3003 if (ret != MEDIA_CONTENT_ERROR_NONE)
3004 content_error("media_info_get_media_id failed: %d", ret);
3006 ret = media_info_get_face_count_from_db(media_id, filter, &face_count);
3007 if (ret != MEDIA_CONTENT_ERROR_NONE)
3008 content_error("media_info_get_face_count_from_db failed: %d", ret);
3010 content_error("media_id [%s] face_count [%d]", media_id, face_count);
3012 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, NULL);
3013 if (ret != MEDIA_CONTENT_ERROR_NONE)
3014 content_error("media_info_foreach_face_from_db failed: %d", ret);
3016 media_info_destroy(media_handle);
3019 media_filter_destroy(filter);
3024 int test_face_add_del(void)
3026 int ret = MEDIA_CONTENT_ERROR_NONE;
3027 char *media_id = "ecca7366-e085-41d8-a12b-cbdfc2b9c5fc";
3030 media_face_h face = NULL;
3032 char *face_tag = "test_face_tag";
3034 ret = media_face_create(media_id, &face);
3035 content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_face_create");
3037 ret = media_face_set_face_rect(face, 10, 12, 50, 100);
3038 if (ret != MEDIA_CONTENT_ERROR_NONE)
3039 content_error("media_face_set_face_rect failed: %d", ret);
3041 ret = media_face_set_orientation(face, 5);
3042 if (ret != MEDIA_CONTENT_ERROR_NONE)
3043 content_error("media_face_set_orientation failed: %d", ret);
3045 ret = media_face_set_tag(face, face_tag);
3046 if (ret != MEDIA_CONTENT_ERROR_NONE)
3047 content_error("media_face_set_tag failed: %d", ret);
3049 ret = media_face_insert_to_db(face);
3050 if (ret != MEDIA_CONTENT_ERROR_NONE)
3051 content_error("media_face_insert_to_db failed: %d", ret);
3053 ret = media_face_destroy(face);
3054 if (ret != MEDIA_CONTENT_ERROR_NONE)
3055 content_error("media_face_destroy failed: %d", ret);
3058 GList *all_item_list = NULL;
3059 filter_h filter = NULL;
3060 ret = media_filter_create(&filter);
3061 content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3063 ret = media_filter_set_condition(filter, "MEDIA_FACE_TAG IS NOT NULL", MEDIA_CONTENT_COLLATE_DEFAULT);
3064 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3065 media_filter_destroy(filter);
3066 content_error("Fail to set condition");
3070 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, &all_item_list);
3072 if (g_list_length(all_item_list) > 0) {
3073 media_face_h face_handle = NULL;
3074 face_handle = (media_face_h)g_list_nth_data(all_item_list, 0);
3076 ret = media_face_set_face_rect(face_handle, 20, 22, 70, 70);
3077 if (ret != MEDIA_CONTENT_ERROR_NONE)
3078 content_error("media_face_set_face_rect failed: %d", ret);
3079 ret = media_face_set_orientation(face_handle, 3);
3080 if (ret != MEDIA_CONTENT_ERROR_NONE)
3081 content_error("media_face_set_orientation failed: %d", ret);
3082 ret = media_face_set_tag(face_handle, NULL);
3083 if (ret != MEDIA_CONTENT_ERROR_NONE)
3084 content_error("media_face_set_tag failed: %d", ret);
3085 ret = media_face_update_to_db(face_handle);
3086 if (ret != MEDIA_CONTENT_ERROR_NONE)
3087 content_error("media_face_update_to_db failed: %d", ret);
3089 media_face_destroy(face_handle);
3092 media_filter_destroy(filter);
3095 char *face_id = "5e58a3a8-f0b2-4c29-b799-b49a70dc2313";
3098 ret = media_face_delete_from_db(face_id);
3103 #ifdef _USE_TVPD_MODE
3104 filter_h g_tv_filter = NULL;
3106 int test_tv_filter_create(void)
3108 content_debug("\n============Filter Create============\n\n");
3110 int ret = MEDIA_CONTENT_ERROR_NONE;
3112 ret = media_filter_create(&g_tv_filter);
3114 ret = media_filter_set_storage(g_tv_filter, "0a22a163-e634-4a2e-ba14-0469a969eea0");
3116 ret = media_filter_set_order(g_tv_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_DEFAULT);
3121 int test_tv_filter_destroy(void)
3123 content_debug("\n============Filter Destroy============\n\n");
3125 int ret = MEDIA_CONTENT_ERROR_NONE;
3127 ret = media_filter_destroy(g_tv_filter);
3132 bool pvr_item_cb(media_pvr_h pvr, void *user_data)
3134 int ret = MEDIA_CONTENT_ERROR_NONE;
3135 char *c_value = NULL;
3137 bool b_value = false;
3138 unsigned long long l_value = 0;
3141 content_debug("NO Item");
3145 ret = media_pvr_get_media_id(pvr, &c_value);
3146 if (ret != MEDIA_CONTENT_ERROR_NONE)
3147 content_error("Fail to media_pvr_get_media_id");
3148 content_debug("media_id [%s]", c_value);
3151 ret = media_pvr_get_channel_name(pvr, &c_value);
3152 if (ret != MEDIA_CONTENT_ERROR_NONE)
3153 content_error("Fail to media_pvr_get_channel_name");
3154 content_debug("channel_name [%s]", c_value);
3157 ret = media_pvr_get_program_title(pvr, &c_value);
3158 if (ret != MEDIA_CONTENT_ERROR_NONE)
3159 content_error("Fail to media_pvr_get_program_title");
3160 content_debug("program_title [%s]", c_value);
3163 ret = media_pvr_get_program_crid(pvr, &c_value);
3164 if (ret != MEDIA_CONTENT_ERROR_NONE)
3165 content_error("Fail to media_pvr_get_program_crid");
3166 content_debug("program_crid [%s]", c_value);
3169 ret = media_pvr_get_guidance(pvr, &c_value);
3170 if (ret != MEDIA_CONTENT_ERROR_NONE)
3171 content_error("Fail to media_pvr_get_guidance");
3172 content_debug("guidance [%s]", c_value);
3175 ret = media_pvr_get_synopsis(pvr, &c_value);
3176 if (ret != MEDIA_CONTENT_ERROR_NONE)
3177 content_error("Fail to media_pvr_get_synopsis");
3178 content_debug("synopsis [%s]", c_value);
3181 ret = media_pvr_get_genre(pvr, &c_value);
3182 if (ret != MEDIA_CONTENT_ERROR_NONE)
3183 content_error("Fail to media_pvr_get_synopsis");
3184 content_debug("genre [%s]", c_value);
3187 ret = media_pvr_get_language(pvr, &c_value);
3188 if (ret != MEDIA_CONTENT_ERROR_NONE)
3189 content_error("Fail to media_pvr_get_language");
3190 content_debug("language [%s]", c_value);
3193 ret = media_pvr_get_path(pvr, &c_value);
3194 if (ret != MEDIA_CONTENT_ERROR_NONE)
3195 content_error("Fail to media_pvr_get_path");
3196 content_debug("path [%s]", c_value);
3199 ret = media_pvr_get_storage_id(pvr, &c_value);
3200 if (ret != MEDIA_CONTENT_ERROR_NONE)
3201 content_error("Fail to media_pvr_get_storage_id");
3202 content_debug("storage_id [%s]", c_value);
3205 ret = media_pvr_get_size(pvr, &l_value);
3206 if (ret != MEDIA_CONTENT_ERROR_NONE)
3207 content_error("Fail to media_pvr_get_size");
3208 content_debug("size [%lld]", l_value);
3210 ret = media_pvr_get_timezone(pvr, &i_value);
3211 if (ret != MEDIA_CONTENT_ERROR_NONE)
3212 content_error("Fail to media_pvr_get_timezone");
3213 content_debug("timezone [%d]", i_value);
3215 ret = media_pvr_get_ptc(pvr, &i_value);
3216 if (ret != MEDIA_CONTENT_ERROR_NONE)
3217 content_error("Fail to media_pvr_get_ptc");
3218 content_debug("ptc [%d]", i_value);
3220 ret = media_pvr_get_major(pvr, &i_value);
3221 if (ret != MEDIA_CONTENT_ERROR_NONE)
3222 content_error("Fail to media_pvr_get_major");
3223 content_debug("[%d]", i_value);
3225 ret = media_pvr_get_minor(pvr, &i_value);
3226 if (ret != MEDIA_CONTENT_ERROR_NONE)
3227 content_error("Fail to media_pvr_get_minor");
3228 content_debug("minor [%d]", i_value);
3230 ret = media_pvr_get_channel_type(pvr, &i_value);
3231 if (ret != MEDIA_CONTENT_ERROR_NONE)
3232 content_error("Fail to media_pvr_get_channel_type");
3233 content_debug("channel_type [%d]", i_value);
3235 ret = media_pvr_get_program_num(pvr, &i_value);
3236 if (ret != MEDIA_CONTENT_ERROR_NONE)
3237 content_error("Fail to media_pvr_get_program_num");
3238 content_debug("program_num [%d]", i_value);
3240 unsigned int ui_value = 0;
3241 ret = media_pvr_get_service_profile(pvr, &ui_value);
3242 if (ret != MEDIA_CONTENT_ERROR_NONE)
3243 content_error("Fail to media_pvr_get_service_profile");
3244 content_debug("service_profile [%u]", ui_value);
3246 ret = media_pvr_get_duration(pvr, &i_value);
3247 if (ret != MEDIA_CONTENT_ERROR_NONE)
3248 content_error("Fail to media_pvr_get_duration");
3249 content_debug("duration [%d]", i_value);
3251 ret = media_pvr_get_embargo_time(pvr, &i_value);
3252 if (ret != MEDIA_CONTENT_ERROR_NONE)
3253 content_error("Fail to media_pvr_get_embargo_time");
3254 content_debug("embargo_time [%d]", i_value);
3256 ret = media_pvr_get_expiry_time(pvr, &i_value);
3257 if (ret != MEDIA_CONTENT_ERROR_NONE)
3258 content_error("Fail to media_pvr_get_expiry_time");
3259 content_debug("expiry_time [%d]", i_value);
3261 ret = media_pvr_get_parental_rating(pvr, &i_value);
3262 if (ret != MEDIA_CONTENT_ERROR_NONE)
3263 content_error("Fail to media_pvr_get_parental_rating");
3264 content_debug("parental_rating [%d]", i_value);
3266 ret = media_pvr_get_start_time(pvr, &i_value);
3267 if (ret != MEDIA_CONTENT_ERROR_NONE)
3268 content_error("Fail to media_pvr_get_start_time");
3269 content_debug("start_time [%d]", i_value);
3271 ret = media_pvr_get_program_start_time(pvr, &i_value);
3272 if (ret != MEDIA_CONTENT_ERROR_NONE)
3273 content_error("Fail to media_pvr_get_program_start_time");
3274 content_debug("program_start_time [%d]", i_value);
3276 ret = media_pvr_get_program_end_time(pvr, &i_value);
3277 if (ret != MEDIA_CONTENT_ERROR_NONE)
3278 content_error("Fail to media_pvr_get_program_end_time");
3279 content_debug("program_end_time [%d]", i_value);
3281 ret = media_pvr_get_program_date(pvr, &i_value);
3282 if (ret != MEDIA_CONTENT_ERROR_NONE)
3283 content_error("Fail to media_pvr_get_program_date");
3284 content_debug("program_date [%d]", i_value);
3286 ret = media_pvr_get_timer_record(pvr, &b_value);
3287 if (ret != MEDIA_CONTENT_ERROR_NONE)
3288 content_error("Fail to media_pvr_get_timer_record");
3289 content_debug("timer_record [%d]", b_value);
3291 ret = media_pvr_get_series_record(pvr, &b_value);
3292 if (ret != MEDIA_CONTENT_ERROR_NONE)
3293 content_error("Fail to media_pvr_get_series_record");
3294 content_debug("series_record [%d]", b_value);
3296 ret = media_pvr_get_hd(pvr, &i_value);
3297 if (ret != MEDIA_CONTENT_ERROR_NONE)
3298 content_error("Fail to media_pvr_get_hd");
3299 content_debug("hd [%d]", i_value);
3301 ret = media_pvr_get_subtitle(pvr, &b_value);
3302 if (ret != MEDIA_CONTENT_ERROR_NONE)
3303 content_error("Fail to media_pvr_get_subtitle");
3304 content_debug("subtitle [%d]", b_value);
3306 ret = media_pvr_get_ttx(pvr, &b_value);
3307 if (ret != MEDIA_CONTENT_ERROR_NONE)
3308 content_error("Fail to media_pvr_get_ttx");
3309 content_debug("ttx [%d]", b_value);
3311 ret = media_pvr_get_ad(pvr, &b_value);
3312 if (ret != MEDIA_CONTENT_ERROR_NONE)
3313 content_error("Fail to media_pvr_get_ad");
3314 content_debug("ad [%d]", b_value);
3316 ret = media_pvr_get_hard_of_hearing_radio(pvr, &b_value);
3317 if (ret != MEDIA_CONTENT_ERROR_NONE)
3318 content_error("Fail to media_pvr_get_hard_of_hearing_radio");
3319 content_debug("hard_of_hearing_radio [%d]", b_value);
3321 ret = media_pvr_get_data_service(pvr, &b_value);
3322 if (ret != MEDIA_CONTENT_ERROR_NONE)
3323 content_error("Fail to media_pvr_get_data_service");
3324 content_debug("data_service [%d]", b_value);
3326 ret = media_pvr_get_content_lock(pvr, &b_value);
3327 if (ret != MEDIA_CONTENT_ERROR_NONE)
3328 content_error("Fail to media_pvr_get_content_lock");
3329 content_debug("content_lock [%d]", b_value);
3331 ret = media_pvr_get_content_watch(pvr, &b_value);
3332 if (ret != MEDIA_CONTENT_ERROR_NONE)
3333 content_error("Fail to media_pvr_get_content_watch");
3334 content_debug("content_watch [%d]", b_value);
3336 ret = media_pvr_get_has_audio_only(pvr, &b_value);
3337 if (ret != MEDIA_CONTENT_ERROR_NONE)
3338 content_error("Fail to media_pvr_get_has_audio_only");
3339 content_debug("has_audio_only [%d]", b_value);
3341 ret = media_pvr_get_is_local_record(pvr, &b_value);
3342 if (ret != MEDIA_CONTENT_ERROR_NONE)
3343 content_error("Fail to media_pvr_get_is_local_record");
3344 content_debug("is_local_record [%d]", b_value);
3346 ret = media_pvr_get_resolution(pvr, (media_pvr_resolution_e*)&i_value);
3347 if (ret != MEDIA_CONTENT_ERROR_NONE)
3348 content_error("Fail to media_pvr_get_resolution");
3349 content_debug("resolution [%d]", i_value);
3351 ret = media_pvr_get_aspectratio(pvr, (media_pvr_aspectratio_e*)&i_value);
3352 if (ret != MEDIA_CONTENT_ERROR_NONE)
3353 content_error("Fail to media_pvr_get_aspectratio");
3354 content_debug("aspectratio [%d]", i_value);
3356 ret = media_pvr_get_highlight(pvr, &b_value);
3357 if (ret != MEDIA_CONTENT_ERROR_NONE)
3358 content_error("Fail to media_pvr_get_highlight");
3359 content_debug("highlight [%d]", b_value);
3367 int ret = MEDIA_CONTENT_ERROR_NONE;
3368 int media_count = 0;
3370 content_debug("\n============PVR Test============\n\n");
3372 test_tv_filter_create();
3374 ret = media_pvr_get_media_count_from_db(g_tv_filter, &media_count);
3375 if (ret != MEDIA_CONTENT_ERROR_NONE)
3376 content_error("media_pvr_get_media_count_from_db failed: %d", ret);
3378 content_debug("media_count : [%d]", media_count);
3380 ret = media_pvr_foreach_media_from_db(g_tv_filter, pvr_item_cb, NULL);
3381 if (ret != MEDIA_CONTENT_ERROR_NONE)
3382 content_error("media_pvr_foreach_media_from_db is failed");
3384 test_tv_filter_destroy();
3389 int test_pvr_update_db(void)
3391 int ret = MEDIA_CONTENT_ERROR_NONE;
3392 media_pvr_h pvr = NULL;
3394 ret = media_pvr_get_pvr_from_db("ff9b5a9a-a7b4-47f4-8255-84e007e25f13", &pvr);
3395 if (ret != MEDIA_CONTENT_ERROR_NONE)
3396 content_error("media_pvr_get_pvr_from_db failed: %d", ret);
3398 ret = media_pvr_set_content_lock(pvr, TRUE);
3399 if (ret != MEDIA_CONTENT_ERROR_NONE)
3400 content_error("Fail to media_pvr_set_content_lock");
3402 ret = media_pvr_set_content_watch(pvr, TRUE);
3403 if (ret != MEDIA_CONTENT_ERROR_NONE)
3404 content_error("Fail to media_pvr_set_content_watch");
3406 ret = media_pvr_set_program_title(pvr, "TEST TITLE");
3407 if (ret != MEDIA_CONTENT_ERROR_NONE)
3408 content_error("Fail to media_pvr_set_program_title");
3410 ret = media_pvr_set_highlight(pvr, TRUE);
3411 if (ret != MEDIA_CONTENT_ERROR_NONE)
3412 content_error("Fail to media_pvr_set_highlight");
3414 ret = media_pvr_update_to_db(pvr);
3415 if (ret != MEDIA_CONTENT_ERROR_NONE)
3416 content_error("Fail to media_pvr_update_to_db");
3419 media_pvr_destroy(pvr);
3425 int main(int argc, char *argv[])
3427 int ret = MEDIA_CONTENT_ERROR_NONE;
3429 content_debug("--- content manager test start ---\n\n");
3431 ret = test_connect_database();
3432 if (ret != MEDIA_CONTENT_ERROR_NONE)
3433 return MEDIA_CONTENT_ERROR_NONE;
3434 #ifdef _USE_TVPD_MODE
3437 test_pvr_update_db();
3444 ret = test_ebook_text_finder(argv[1]);
3445 if (ret != MEDIA_CONTENT_ERROR_NONE)
3449 ret = test_start_face_detection(FALSE);
3450 if (ret != MEDIA_CONTENT_ERROR_NONE)
3454 if (ret != MEDIA_CONTENT_ERROR_NONE)
3457 ret = test_gallery_scenario();
3458 if (ret != MEDIA_CONTENT_ERROR_NONE)
3461 ret = test_get_all_music_files();
3462 if (ret != MEDIA_CONTENT_ERROR_NONE)
3465 ret = test_media_info_operation();
3466 if (ret != MEDIA_CONTENT_ERROR_NONE)
3469 ret = test_folder_operation();
3470 if (ret != MEDIA_CONTENT_ERROR_NONE)
3473 ret = test_playlist_operation();
3474 if (ret != MEDIA_CONTENT_ERROR_NONE)
3477 ret = test_tag_operation();
3478 if (ret != MEDIA_CONTENT_ERROR_NONE)
3481 ret = test_bookmark_operation();
3482 if (ret != MEDIA_CONTENT_ERROR_NONE)
3485 ret = test_album_list();
3486 if (ret != MEDIA_CONTENT_ERROR_NONE)
3489 ret = test_group_operation();
3490 if (ret != MEDIA_CONTENT_ERROR_NONE)
3493 ret = test_update_operation();
3494 if (ret != MEDIA_CONTENT_ERROR_NONE)
3497 ret = test_insert();
3498 if (ret != MEDIA_CONTENT_ERROR_NONE)
3502 if (ret != MEDIA_CONTENT_ERROR_NONE)
3505 ret = test_create_thumbnail(TRUE);
3506 if (ret != MEDIA_CONTENT_ERROR_NONE)
3509 ret = test_extrace_face(TRUE);
3510 if (ret != MEDIA_CONTENT_ERROR_NONE)
3513 ret = test_request_update_db();
3514 if (ret != MEDIA_CONTENT_ERROR_NONE)
3518 if (ret != MEDIA_CONTENT_ERROR_NONE)
3521 ret = test_batch_operations();
3522 if (ret != MEDIA_CONTENT_ERROR_NONE)
3523 return MEDIA_CONTENT_ERROR_NONE;
3525 ret = test_scan_file();
3526 if (ret != MEDIA_CONTENT_ERROR_NONE)
3527 return MEDIA_CONTENT_ERROR_NONE;
3529 ret = test_scan_dir(true);
3530 if (ret != MEDIA_CONTENT_ERROR_NONE)
3531 return MEDIA_CONTENT_ERROR_NONE;
3534 if (ret != MEDIA_CONTENT_ERROR_NONE)
3535 return MEDIA_CONTENT_ERROR_NONE;
3538 if (ret != MEDIA_CONTENT_ERROR_NONE)
3539 return MEDIA_CONTENT_ERROR_NONE;
3541 ret = test_face_add_del();
3542 if (ret != MEDIA_CONTENT_ERROR_NONE)
3543 return MEDIA_CONTENT_ERROR_NONE;
3545 ret = test_playlist_operation_v2();
3546 if (ret != MEDIA_CONTENT_ERROR_NONE)
3547 return MEDIA_CONTENT_ERROR_NONE;
3549 ret = test_bookmark_operation_v2();
3550 if (ret != MEDIA_CONTENT_ERROR_NONE)
3551 return MEDIA_CONTENT_ERROR_NONE;
3553 ret = test_tag_operation_v2();
3554 if (ret != MEDIA_CONTENT_ERROR_NONE)
3555 return MEDIA_CONTENT_ERROR_NONE;
3558 ret = test_disconnect_database();
3559 if (ret != MEDIA_CONTENT_ERROR_NONE)
3562 content_debug("--- content manager test end ---\n");