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 void get_audio_meta(audio_meta_h audio)
46 int ret = MEDIA_CONTENT_ERROR_NONE;
48 media_content_debug("=== audio meta ===");
50 ret = audio_meta_get_media_id(audio, &c_value);
51 if (ret != MEDIA_CONTENT_ERROR_NONE)
52 media_content_error("error when get meta : [%d]", ret);
53 media_content_debug("audio_id : [%s]", c_value);
56 ret = audio_meta_get_album(audio, &c_value);
57 if (ret != MEDIA_CONTENT_ERROR_NONE)
58 media_content_error("error when get meta : [%d]", ret);
59 media_content_debug("album : [%s]", c_value);
62 ret = audio_meta_get_artist(audio, &c_value);
63 if (ret != MEDIA_CONTENT_ERROR_NONE)
64 media_content_error("error when get meta : [%d]", ret);
65 media_content_debug("artist : [%s]", c_value);
68 ret = audio_meta_get_album_artist(audio, &c_value);
69 if (ret != MEDIA_CONTENT_ERROR_NONE)
70 media_content_error("error when get meta : [%d]", ret);
71 media_content_debug("album_artist : [%s]", c_value);
74 ret = audio_meta_get_genre(audio, &c_value);
75 if (ret != MEDIA_CONTENT_ERROR_NONE)
76 media_content_error("error when get meta : [%d]", ret);
77 media_content_debug("genre : [%s]", c_value);
80 ret = audio_meta_get_composer(audio, &c_value);
81 if (ret != MEDIA_CONTENT_ERROR_NONE)
82 media_content_error("error when get meta : [%d]", ret);
83 media_content_debug("composer : [%s]", c_value);
86 ret = audio_meta_get_year(audio, &c_value);
87 if (ret != MEDIA_CONTENT_ERROR_NONE)
88 media_content_error("error when get meta : [%d]", ret);
89 media_content_debug("year : [%s]", c_value);
92 ret = audio_meta_get_recorded_date(audio, &c_value);
93 if (ret != MEDIA_CONTENT_ERROR_NONE)
94 media_content_error("error when get meta : [%d]", ret);
95 media_content_debug("recorded_date : [%s]", c_value);
98 ret = audio_meta_get_copyright(audio, &c_value);
99 if (ret != MEDIA_CONTENT_ERROR_NONE)
100 media_content_error("error when get meta : [%d]", ret);
101 media_content_debug("copyright : [%s]", c_value);
104 ret = audio_meta_get_track_num(audio, &c_value);
105 if (ret != MEDIA_CONTENT_ERROR_NONE)
106 media_content_error("error when get meta : [%d]", ret);
107 media_content_debug("track_num : [%s]", c_value);
110 ret = audio_meta_get_bit_rate(audio, &i_value);
111 if (ret != MEDIA_CONTENT_ERROR_NONE)
112 media_content_error("error when get meta : [%d]", ret);
113 media_content_debug("bitrate : [%d]", i_value);
115 ret = audio_meta_get_sample_rate(audio, &i_value);
116 if (ret != MEDIA_CONTENT_ERROR_NONE)
117 media_content_error("error when get meta : [%d]", ret);
118 media_content_debug("samplerate : [%d]", i_value);
120 ret = audio_meta_get_channel(audio, &i_value);
121 if (ret != MEDIA_CONTENT_ERROR_NONE)
122 media_content_error("error when get meta : [%d]", ret);
123 media_content_debug("channel : [%d]", i_value);
125 ret = audio_meta_get_duration(audio, &i_value);
126 if (ret != MEDIA_CONTENT_ERROR_NONE)
127 media_content_error("error when get meta : [%d]", ret);
128 media_content_debug("duration : [%d]", i_value);
132 void get_video_meta(video_meta_h video)
134 char *c_value = NULL;
136 int ret = MEDIA_CONTENT_ERROR_NONE;
138 media_content_debug("=== video meta ===");
140 ret = video_meta_get_media_id(video, &c_value);
141 if (ret != MEDIA_CONTENT_ERROR_NONE)
142 media_content_error("error when get meta : [%d]", ret);
143 media_content_debug("video_id : [%s]", c_value);
146 ret = video_meta_get_album(video, &c_value);
147 if (ret != MEDIA_CONTENT_ERROR_NONE)
148 media_content_error("error when get meta : [%d]", ret);
149 media_content_debug("album : [%s]", c_value);
152 ret = video_meta_get_artist(video, &c_value);
153 if (ret != MEDIA_CONTENT_ERROR_NONE)
154 media_content_error("error when get meta : [%d]", ret);
155 media_content_debug("artist : [%s]", c_value);
158 ret = video_meta_get_album_artist(video, &c_value);
159 if (ret != MEDIA_CONTENT_ERROR_NONE)
160 media_content_error("error when get meta : [%d]", ret);
161 media_content_debug("album_artist : [%s]", c_value);
164 ret = video_meta_get_genre(video, &c_value);
165 if (ret != MEDIA_CONTENT_ERROR_NONE)
166 media_content_error("error when get meta : [%d]", ret);
167 media_content_debug("genre : [%s]", c_value);
170 ret = video_meta_get_composer(video, &c_value);
171 if (ret != MEDIA_CONTENT_ERROR_NONE)
172 media_content_error("error when get meta : [%d]", ret);
173 media_content_debug("omposer : [%s]", c_value);
176 ret = video_meta_get_year(video, &c_value);
177 if (ret != MEDIA_CONTENT_ERROR_NONE)
178 media_content_error("error when get meta : [%d]", ret);
179 media_content_debug("year : [%s]", c_value);
182 ret = video_meta_get_recorded_date(video, &c_value);
183 if (ret != MEDIA_CONTENT_ERROR_NONE)
184 media_content_error("error when get meta : [%d]", ret);
185 media_content_debug("recorded_date : [%s]", c_value);
188 ret = video_meta_get_copyright(video, &c_value);
189 if (ret != MEDIA_CONTENT_ERROR_NONE)
190 media_content_error("error when get meta : [%d]", ret);
191 media_content_debug("copyright : [%s]", c_value);
194 ret = video_meta_get_track_num(video, &c_value);
195 if (ret != MEDIA_CONTENT_ERROR_NONE)
196 media_content_error("error when get meta : [%d]", ret);
197 media_content_debug("track_num : [%s]", c_value);
200 ret = video_meta_get_bit_rate(video, &i_value);
201 if (ret != MEDIA_CONTENT_ERROR_NONE)
202 media_content_error("error when get meta : [%d]", ret);
203 media_content_debug("bitrate : [%d]", i_value);
205 ret = video_meta_get_duration(video, &i_value);
206 if (ret != MEDIA_CONTENT_ERROR_NONE)
207 media_content_error("error when get meta : [%d]", ret);
208 media_content_debug("duration : [%d]", i_value);
210 ret = video_meta_get_width(video, &i_value);
211 if (ret != MEDIA_CONTENT_ERROR_NONE)
212 media_content_error("error when get meta : [%d]", ret);
213 media_content_debug("width : [%d]", i_value);
215 ret = video_meta_get_height(video, &i_value);
216 if (ret != MEDIA_CONTENT_ERROR_NONE)
217 media_content_error("error when get meta : [%d]", ret);
218 media_content_debug("height : [%d]", i_value);
222 void get_image_meta(image_meta_h image)
224 char *c_value = NULL;
226 media_content_orientation_e orientation;
227 int ret = MEDIA_CONTENT_ERROR_NONE;
229 media_content_debug("=== image meta ===");
231 ret = image_meta_get_width(image, &i_value);
232 if (ret != MEDIA_CONTENT_ERROR_NONE)
233 media_content_error("error image_meta_get_width : [%d]", ret);
234 media_content_debug("width : [%d]", i_value);
236 ret = image_meta_get_height(image, &i_value);
237 if (ret != MEDIA_CONTENT_ERROR_NONE)
238 media_content_error("error image_meta_get_height : [%d]", ret);
239 media_content_debug("height : [%d]", i_value);
241 ret = image_meta_get_orientation(image, &orientation);
242 if (ret != MEDIA_CONTENT_ERROR_NONE)
243 media_content_error("error image_meta_get_orientation : [%d]", ret);
244 media_content_debug("orientation : [%d]", orientation);
246 ret = image_meta_get_date_taken(image, &c_value);
247 if (ret != MEDIA_CONTENT_ERROR_NONE)
248 media_content_error("error image_meta_get_date_taken : [%d]", ret);
249 media_content_debug("date_taken : [%s]", c_value);
254 bool gallery_folder_list_cb(media_folder_h folder, void *user_data)
256 media_folder_h new_folder = NULL;
257 media_folder_clone(&new_folder, folder);
259 GList **list = (GList**)user_data;
260 *list = g_list_append(*list, new_folder);
265 bool gallery_media_item_cb(media_info_h media, void *user_data)
267 media_info_h new_media = NULL;
268 int ret = MEDIA_CONTENT_ERROR_NONE;
270 ret = media_info_clone(&new_media, media);
272 if (ret != MEDIA_CONTENT_ERROR_NONE) {
273 GList **list = (GList**)user_data;
274 *list = g_list_append(*list, new_media);
280 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
282 media_tag_h new_tag = NULL;
283 media_tag_clone(&new_tag, tag);
285 GList **list = (GList**)user_data;
286 *list = g_list_append(*list, new_tag);
291 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
293 media_bookmark_h new_bm = NULL;
294 int ret = MEDIA_CONTENT_ERROR_NONE;
296 ret = media_bookmark_clone(&new_bm, bookmark);
297 if (ret != MEDIA_CONTENT_ERROR_NONE)
298 media_content_error("error media_bookmark_clone : [%d]", ret);
300 GList **list = (GList**)user_data;
301 *list = g_list_append(*list, new_bm);
306 bool media_item_cb(media_info_h media, void *user_data)
308 char *c_value = NULL;
309 char *media_id = NULL;
310 media_content_type_e media_type = 0;
311 int ret = MEDIA_CONTENT_ERROR_NONE;
314 media_content_debug("NO Item");
318 ret = media_info_get_media_type(media, &media_type);
319 if (ret != MEDIA_CONTENT_ERROR_NONE)
320 media_content_error("error when get info : [%d]", ret);
321 media_content_debug("media_type : [%d]", media_type);
323 ret = media_info_get_media_id(media, &media_id);
324 if (ret != MEDIA_CONTENT_ERROR_NONE)
325 media_content_error("error when get info : [%d]", ret);
326 media_content_debug("media_id : [%s]", media_id);
328 ret = media_info_get_file_path(media, &c_value);
329 if (ret != MEDIA_CONTENT_ERROR_NONE)
330 media_content_error("error when get info : [%d]", ret);
331 media_content_debug("file_path : [%s]", c_value);
337 bool b_value = false;
338 unsigned long long size = 0;
340 if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
343 if (media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE) {
344 get_audio_meta(audio);
345 ret = audio_meta_destroy(audio);
346 if (ret != MEDIA_CONTENT_ERROR_NONE)
347 media_content_error("error audio_meta_destroy : [%d]", ret);
349 media_content_error("[audio_error]");
351 } else if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
353 media_content_orientation_e orientation = 0;
355 if (media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE) {
356 ret = image_meta_get_orientation(image, &orientation);
357 if (ret != MEDIA_CONTENT_ERROR_NONE)
358 media_content_error("error image_meta_get_orientation : [%d]", ret);
360 media_content_debug("[image] orientation : %d", orientation);
362 ret = image_meta_destroy(image);
363 if (ret != MEDIA_CONTENT_ERROR_NONE)
364 media_content_error("error image_meta_destroy : [%d]", ret);
366 media_content_error("[image_error]");
368 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
371 if (media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE) {
372 get_video_meta(video);
373 ret = video_meta_destroy(video);
374 if (ret != MEDIA_CONTENT_ERROR_NONE)
375 media_content_error("error video_meta_destroy : [%d]", ret);
377 media_content_error("[video_error]");
380 media_content_debug("Other Content");
383 media_content_debug("=== media_info ===");
384 ret = media_info_get_file_path(media, &c_value);
385 if (ret != MEDIA_CONTENT_ERROR_NONE)
386 media_content_error("error when get info : [%d]", ret);
387 media_content_debug("file_path : [%s]", c_value);
390 ret = media_info_get_display_name(media, &c_value);
391 if (ret != MEDIA_CONTENT_ERROR_NONE)
392 media_content_error("error when get info : [%d]", ret);
393 media_content_debug("display_name : [%s]", c_value);
396 ret = media_info_get_mime_type(media, &c_value);
397 if (ret != MEDIA_CONTENT_ERROR_NONE)
398 media_content_error("error when get info : [%d]", ret);
399 media_content_debug("mime_type : [%s]", c_value);
402 ret = media_info_get_thumbnail_path(media, &c_value);
403 if (ret != MEDIA_CONTENT_ERROR_NONE)
404 media_content_error("error when get info : [%d]", ret);
405 media_content_debug("thumbnail_path : [%s]", c_value);
408 ret = media_info_get_description(media, &c_value);
409 if (ret != MEDIA_CONTENT_ERROR_NONE)
410 media_content_error("error when get info : [%d]", ret);
411 media_content_debug("description : [%s]", c_value);
414 ret = media_info_get_size(media, &size);
415 if (ret != MEDIA_CONTENT_ERROR_NONE)
416 media_content_error("error when get info : [%d]", ret);
417 media_content_debug("size : [%lld]", size);
419 ret = media_info_get_added_time(media, &t_value);
420 if (ret != MEDIA_CONTENT_ERROR_NONE)
421 media_content_error("error when get info : [%d]", ret);
422 media_content_debug("added_time : [%ld]", t_value);
424 ret = media_info_get_modified_time(media, &t_value);
425 if (ret != MEDIA_CONTENT_ERROR_NONE)
426 media_content_error("error when get info : [%d]", ret);
427 media_content_debug("modified_time : [%ld]", t_value);
429 ret = media_info_get_timeline(media, &t_value);
430 if (ret != MEDIA_CONTENT_ERROR_NONE)
431 media_content_error("error when get info : [%d]", ret);
432 media_content_debug("timeline : [%ld]", t_value);
434 ret = media_info_get_rating(media, &i_value);
435 if (ret != MEDIA_CONTENT_ERROR_NONE)
436 media_content_error("error when get info : [%d]", ret);
437 media_content_debug("rating : [%d]", i_value);
439 ret = media_info_get_favorite(media, &b_value);
440 if (ret != MEDIA_CONTENT_ERROR_NONE)
441 media_content_error("error when get info : [%d]", ret);
442 media_content_debug("favorite : [%d]", b_value);
444 ret = media_info_is_drm(media, &b_value);
445 if (ret != MEDIA_CONTENT_ERROR_NONE)
446 media_content_error("error when get info : [%d]", ret);
447 media_content_debug("is_drm : [%d]", b_value);
449 ret = media_info_is_360_content(media, &b_value);
450 if (ret != MEDIA_CONTENT_ERROR_NONE)
451 media_content_error("error when get info : [%d]", ret);
452 media_content_debug("is_360 : [%d]", b_value);
454 ret = media_info_get_stitched_state(media, &i_value);
455 if (ret != MEDIA_CONTENT_ERROR_NONE)
456 media_content_error("error when get info : [%d]", ret);
457 media_content_debug("360 stitched : [%d]", i_value);
459 ret = media_info_get_stitched_engine(media, &i_value);
460 if (ret != MEDIA_CONTENT_ERROR_NONE)
461 media_content_error("error when get info : [%d]", ret);
462 media_content_debug("360 engine : [%d]", i_value);
464 /*media_info_update_to_db(media);*/
471 bool folder_list_cb(media_folder_h folder, void *user_data)
474 char *folder_id = NULL;
475 char *str_val = NULL;
476 media_content_storage_e storage_type;
478 media_folder_h *_folder = (media_folder_h*)user_data;
480 media_content_debug("===========================");
481 if (folder != NULL) {
483 media_folder_clone(_folder, folder);
485 if (media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE) {
486 media_content_error("[ERROR] media_folder_get_folder_id is failed");
489 media_content_debug("folder_id = [%s]", folder_id);
491 if (media_folder_get_path(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
492 SAFE_FREE(folder_id);
493 media_content_error("[ERROR] media_folder_get_path is failed");
496 media_content_debug("folder_path = [%s]", str_val);
499 if (media_folder_get_name(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
500 SAFE_FREE(folder_id);
501 media_content_error("[ERROR] media_folder_get_name is failed");
504 media_content_debug("folder_name = [%s]", str_val);
507 if (media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE) {
508 SAFE_FREE(folder_id);
509 media_content_error("[ERROR] media_folder_get_storage_type is failed");
512 media_content_debug("storage_type = [%d]", storage_type);
514 if (media_folder_get_storage_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
515 SAFE_FREE(folder_id);
516 media_content_error("[ERROR] media_folder_get_name is failed");
519 media_content_debug("storage_id = [%s]", str_val);
523 if (media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE) {
524 SAFE_FREE(folder_id);
525 media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
529 if (media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
530 SAFE_FREE(folder_id);
531 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
535 SAFE_FREE(folder_id);
544 bool test_album_from_db(int album_id)
546 int ret = MEDIA_CONTENT_ERROR_NONE;
547 media_album_h album_h;
548 int test_album_id = 0;
549 char *album_name = NULL;
552 ret = media_album_get_album_from_db(album_id, &album_h);
553 if (ret != MEDIA_CONTENT_ERROR_NONE) {
554 media_content_error("error when get album");
558 if (media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE) {
559 media_album_destroy(album_h);
563 media_content_debug("test_album_id : [%d]", test_album_id);
565 if (media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
566 media_album_destroy(album_h);
570 media_content_debug("album_name : [%s]", album_name);
572 if (media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE) {
573 media_album_destroy(album_h);
574 /* fix prevent: Resource Leak */
575 SAFE_FREE(album_name);
579 media_content_debug("artist : [%s]", artist);
581 SAFE_FREE(album_name);
584 media_album_destroy(album_h);
589 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
591 int ret = MEDIA_CONTENT_ERROR_NONE;
593 char *playlist_name = NULL;
594 media_playlist_h playlist_h;
595 char *playlist_thumbnail_path = NULL;
597 media_content_debug("playlist_list_cb ======");
599 GList **list = (GList**)user_data;
602 if (playlist == NULL) {
603 media_content_debug(" playlist handle is NULL");
607 ret = media_playlist_get_playlist_id(playlist, &playlist_id);
608 if (ret != MEDIA_CONTENT_ERROR_NONE)
609 media_content_error("error media_playlist_get_playlist_id : [%d]", ret);
611 media_content_debug("playlist_id : %d", playlist_id);
612 /* 64bit build issue */
614 if (user_data != NULL)
615 *list = g_list_append(*list, (gpointer)playlist_id);
617 ret = media_playlist_get_name(playlist, &playlist_name);
618 if (ret != MEDIA_CONTENT_ERROR_NONE)
619 media_content_error("error media_playlist_get_name : [%d]", ret);
621 media_content_debug("playlist_name : %s", playlist_name);
622 SAFE_FREE(playlist_name);
624 ret = media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
625 if (ret != MEDIA_CONTENT_ERROR_NONE)
626 media_content_error("error media_playlist_get_thumbnail_path : [%d]", ret);
628 media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
629 SAFE_FREE(playlist_thumbnail_path);
631 ret = media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
632 if (ret != MEDIA_CONTENT_ERROR_NONE)
633 media_content_error("error media_playlist_get_playlist_from_db : [%d]", ret);
635 ret = media_playlist_destroy(playlist_h);
636 if (ret != MEDIA_CONTENT_ERROR_NONE)
637 media_content_error("error media_playlist_destroy : [%d]", ret);
642 bool tag_list_cb(media_tag_h tag, void *user_data)
645 char *tag_name = NULL;
646 int ret = MEDIA_CONTENT_ERROR_NONE;
649 media_content_debug(" tag handle is NULL");
653 ret = media_tag_get_tag_id(tag, &tag_id);
654 if (ret != MEDIA_CONTENT_ERROR_NONE)
655 media_content_error("error media_tag_get_tag_id : [%d]", ret);
657 media_content_debug("tag_id : %d", tag_id);
659 ret = media_tag_get_name(tag, &tag_name);
660 if (ret != MEDIA_CONTENT_ERROR_NONE)
661 media_content_error("error media_tag_get_name : [%d]", ret);
663 media_content_debug("tag_name : %s", tag_name);
669 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
671 media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
672 int ret = MEDIA_CONTENT_ERROR_NONE;
674 if (_bookmark != NULL && user_data != NULL) {
675 media_bookmark_h new_bookmark;
677 media_bookmark_clone(&new_bookmark, bookmark);
678 GList **list = (GList**)user_data;
679 *list = g_list_append(*list, new_bookmark);
682 if (_bookmark != NULL) {
687 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
688 if (ret != MEDIA_CONTENT_ERROR_NONE)
689 media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
691 media_content_debug("bookmark_id : %d", bookmark_id);
693 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
694 if (ret != MEDIA_CONTENT_ERROR_NONE)
695 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
697 media_content_debug("bookmark thumbnail_path : %s", name);
700 ret = media_bookmark_get_marked_time(bookmark, &time);
701 if (ret != MEDIA_CONTENT_ERROR_NONE)
702 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
704 media_content_debug("bookmark marked_time : %ld", time);
706 ret = media_bookmark_get_name(bookmark, &name);
707 if (ret != MEDIA_CONTENT_ERROR_NONE)
708 media_content_error("error media_bookmark_get_name : [%d]", ret);
710 media_content_debug("bookmark name : %s", name);
719 bool album_list_cb(media_album_h album, void *user_data)
722 char *album_name = NULL;
724 char *album_art = NULL;
726 int ret = MEDIA_CONTENT_ERROR_NONE;
727 filter_h filter = NULL;
730 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
732 ret = media_filter_create(&filter);
733 if (ret != MEDIA_CONTENT_ERROR_NONE) {
734 media_content_error("Fail to create filter");
737 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
738 if (ret != MEDIA_CONTENT_ERROR_NONE) {
739 media_filter_destroy(filter);
740 media_content_error("Fail to set condition");
743 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
744 if (ret != MEDIA_CONTENT_ERROR_NONE) {
745 media_filter_destroy(filter);
746 media_content_error("Fail to set order");
751 if (media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE) {
752 media_filter_destroy(filter);
756 media_content_debug("album_id : [%d]", album_id);
758 if (media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
759 media_filter_destroy(filter);
763 media_content_debug("album_name : [%s]", album_name);
764 SAFE_FREE(album_name);
766 if (media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE) {
767 media_filter_destroy(filter);
771 media_content_debug("artist : [%s]", artist);
774 if (media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE) {
775 media_filter_destroy(filter);
779 media_content_debug("album_art : [%s]", album_art);
780 SAFE_FREE(album_art);
782 if (media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE) {
783 media_filter_destroy(filter);
787 media_content_debug("media_count : [%d]", media_count);
789 if (media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
790 media_filter_destroy(filter);
794 test_album_from_db(album_id);
796 media_content_error("album item not Found!!");
799 media_filter_destroy(filter);
804 bool group_list_cb(const char *group_name, void *user_data)
807 int *idx = user_data;
809 media_content_debug("group item : [%s] [%d]", group_name, *idx);
811 if (media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
814 media_content_debug("media_count : [%d]", media_count);
816 if (media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
822 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
824 media_content_debug("playlist_member_id : [%d]", playlist_member_id);
825 /* 64bit build issue */
827 GList **list = (GList**)user_data;
829 *list = g_list_append(*list, (gpointer)playlist_member_id);
831 /*media_item_cb(media, user_data);*/
836 int test_filter_create(void)
838 media_content_debug("\n============Filter Create============\n\n");
840 int ret = MEDIA_CONTENT_ERROR_NONE;
842 /* Filter for media */
843 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
844 /*const char *condition = "MEDIA_TYPE IS NOT 0 AND MEDIA_DESCRIPTION IS NOT NULL"; */ /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
846 ret = media_filter_create(&g_filter);
848 /* Set condition and collate
849 * Condition string : You can make where statement of sql.
850 * Colation : You can use collation when comparing.
851 * Ex) In case of FILE_NAME='Samsung' as condition string,
852 * if you want to compare with NOCASE collation,
853 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
854 * if you want to compare in case-sensitive,
855 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
857 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
859 /* Collation of ordering
860 * If you want to get list, which is sorted by NOCASE,
861 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
863 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
865 /* Able to set multi column to set order */
867 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
868 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
869 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
870 ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
872 /* Filter for group */
873 const char *g_condition = "TAG_NAME like \"\%my\%\"";
874 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
876 ret = media_filter_create(&g_filter_g);
878 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
883 int test_filter_destroy(void)
885 media_content_debug("\n============Filter Create============\n\n");
887 int ret = MEDIA_CONTENT_ERROR_NONE;
889 ret = media_filter_destroy(g_filter);
894 int test_connect_database(void)
896 int ret = MEDIA_CONTENT_ERROR_NONE;
898 media_content_debug("\n============DB Connection Test============\n\n");
900 ret = media_content_connect();
902 if (ret == MEDIA_CONTENT_ERROR_NONE)
903 media_content_debug("connection is success\n\n");
905 media_content_error("connection is failed\n\n");
910 int test_gallery_scenario(void)
912 int ret = MEDIA_CONTENT_ERROR_NONE;
914 filter_h filter = NULL;
917 GList *folder_list = NULL;
918 media_folder_h folder_handle = NULL;
920 /* First, Get folder list */
921 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
922 if (ret != MEDIA_CONTENT_ERROR_NONE) {
923 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
926 media_content_debug("media_folder_foreach_folder_from_db success!!");
927 char *folder_id = NULL;
928 char *folder_name = NULL;
929 char *folder_path = NULL;
931 for (i = 0; i < g_list_length(folder_list); i++) {
932 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
934 ret = media_folder_get_folder_id(folder_handle, &folder_id);
935 if (ret != MEDIA_CONTENT_ERROR_NONE)
936 media_content_error("media_folder_get_folder_id failed: %d", ret);
937 ret = media_folder_get_name(folder_handle, &folder_name);
938 if (ret != MEDIA_CONTENT_ERROR_NONE)
939 media_content_error("media_folder_get_name failed: %d", ret);
940 ret = media_folder_get_path(folder_handle, &folder_path);
941 if (ret != MEDIA_CONTENT_ERROR_NONE)
942 media_content_error("media_folder_get_path failed: %d", ret);
944 media_content_debug("folder_id [%d] : %s", i, folder_id);
945 media_content_debug("folder_name [%d] : %s", i, folder_name);
946 media_content_debug("folder_path [%d] : %s", i, folder_path);
948 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
949 /* User should free these string */
950 SAFE_FREE(folder_id);
951 SAFE_FREE(folder_name);
952 SAFE_FREE(folder_path);
953 if (ret != MEDIA_CONTENT_ERROR_NONE) {
954 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
957 media_content_debug("media count [%d] : %d", i, count);
962 /* To check performance */
963 struct timeval start, end;
964 gettimeofday(&start, NULL);
966 /* Second, Get all item list */
967 media_info_h media_handle = NULL;
968 GList *all_item_list = NULL;
970 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
971 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
972 ret = media_filter_create(&filter);
973 if (ret != MEDIA_CONTENT_ERROR_NONE) {
974 media_content_error("Fail to create filter");
977 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
978 if (ret != MEDIA_CONTENT_ERROR_NONE) {
979 media_filter_destroy(filter);
980 media_content_error("Fail to set condition");
983 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
984 if (ret != MEDIA_CONTENT_ERROR_NONE) {
985 media_filter_destroy(filter);
986 media_content_error("Fail to set order");
990 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
991 if (ret != MEDIA_CONTENT_ERROR_NONE) {
992 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
993 media_filter_destroy(filter);
996 media_content_debug("media_info_foreach_media_from_db success");
997 media_content_type_e media_type;
998 char *media_id = NULL;
999 char *media_name = NULL;
1000 char *media_path = NULL;
1002 for (i = 0; i < g_list_length(all_item_list); i++) {
1003 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1005 ret = media_info_get_media_id(media_handle, &media_id);
1006 if (ret != MEDIA_CONTENT_ERROR_NONE)
1007 media_content_error("media_info_get_media_id failed: %d", ret);
1008 ret = media_info_get_media_type(media_handle, &media_type);
1009 if (ret != MEDIA_CONTENT_ERROR_NONE)
1010 media_content_error("media_info_get_media_type failed: %d", ret);
1011 ret = media_info_get_display_name(media_handle, &media_name);
1012 if (ret != MEDIA_CONTENT_ERROR_NONE)
1013 media_content_error("media_info_get_display_name failed: %d", ret);
1014 ret = media_info_get_file_path(media_handle, &media_path);
1015 if (ret != MEDIA_CONTENT_ERROR_NONE)
1016 media_content_error("media_info_get_file_path failed: %d", ret);
1018 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1019 image_meta_h image_handle;
1021 ret = media_info_get_image(media_handle, &image_handle);
1022 if (ret != MEDIA_CONTENT_ERROR_NONE)
1023 media_content_error("media_info_get_image failed: %d", ret);
1025 get_image_meta(image_handle);
1027 ret = image_meta_destroy(image_handle);
1028 if (ret != MEDIA_CONTENT_ERROR_NONE)
1029 media_content_error("error image_meta_destroy : [%d]", ret);
1031 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1032 video_meta_h video_handle;
1033 ret = media_info_get_video(media_handle, &video_handle);
1034 if (ret != MEDIA_CONTENT_ERROR_NONE)
1035 media_content_error("media_info_get_video failed: %d", ret);
1037 get_video_meta(video_handle);
1039 ret = video_meta_destroy(video_handle);
1040 if (ret != MEDIA_CONTENT_ERROR_NONE)
1041 media_content_error("error video_meta_destroy : [%d]", ret);
1044 SAFE_FREE(media_id);
1045 SAFE_FREE(media_name);
1046 SAFE_FREE(media_path);
1050 media_filter_destroy(filter);
1053 /* To check performance */
1054 gettimeofday(&end, NULL);
1055 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1056 media_content_debug("Time : %ld\n", time);
1058 /* Third, Get item list of a folder */
1059 GList *item_list = NULL;
1061 for (i = 0; i < g_list_length(folder_list); i++) {
1063 char *folder_id = NULL;
1064 char *folder_name = NULL;
1065 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1067 media_folder_get_folder_id(folder_handle, &folder_id);
1068 media_folder_get_name(folder_handle, &folder_name);
1070 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1071 SAFE_FREE(folder_id);
1072 SAFE_FREE(folder_name);
1074 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1075 media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1078 media_content_error("media_folder_foreach_media_from_db success!");
1079 char *media_id = NULL;
1080 char *media_name = NULL;
1081 char *media_path = NULL;
1082 media_content_type_e media_type = 0;
1084 for (j = 0; j < g_list_length(item_list); j++) {
1085 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1087 ret = media_info_get_media_id(media_handle, &media_id);
1088 if (ret != MEDIA_CONTENT_ERROR_NONE)
1089 media_content_error("media_info_get_media_id failed: %d", ret);
1090 ret = media_info_get_display_name(media_handle, &media_name);
1091 if (ret != MEDIA_CONTENT_ERROR_NONE)
1092 media_content_error("media_info_get_display_name failed: %d", ret);
1093 ret = media_info_get_file_path(media_handle, &media_path);
1094 if (ret != MEDIA_CONTENT_ERROR_NONE)
1095 media_content_error("media_info_get_file_path failed: %d", ret);
1096 ret = media_info_get_media_type(media_handle, &media_type);
1097 if (ret != MEDIA_CONTENT_ERROR_NONE)
1098 media_content_error("media_info_get_media_type failed: %d", ret);
1100 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1101 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1102 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1103 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1105 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1106 image_meta_h image_handle;
1108 ret = media_info_get_image(media_handle, &image_handle);
1109 if (ret != MEDIA_CONTENT_ERROR_NONE)
1110 media_content_error("media_info_get_image failed: %d", ret);
1112 get_image_meta(image_handle);
1114 ret = image_meta_destroy(image_handle);
1115 if (ret != MEDIA_CONTENT_ERROR_NONE)
1116 media_content_error("error image_meta_destroy : [%d]", ret);
1118 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1119 video_meta_h video_handle;
1121 ret = media_info_get_video(media_handle, &video_handle);
1122 if (ret != MEDIA_CONTENT_ERROR_NONE)
1123 media_content_error("media_info_get_video failed: %d", ret);
1125 get_video_meta(video_handle);
1127 ret = video_meta_destroy(video_handle);
1128 if (ret != MEDIA_CONTENT_ERROR_NONE)
1129 media_content_error("error video_meta_destroy : [%d]", ret);
1131 /* Get bookmar list in case of video */
1132 media_bookmark_h bm_handle;
1133 GList *bm_list = NULL;
1135 ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1136 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1137 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1139 media_content_debug("media_info_foreach_bookmark_from_db success");
1143 for (k = 0; k < g_list_length(bm_list); k++) {
1144 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1146 char *thumb_path = NULL;
1148 ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1149 if (ret != MEDIA_CONTENT_ERROR_NONE)
1150 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1151 ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1152 if (ret != MEDIA_CONTENT_ERROR_NONE)
1153 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1155 media_content_debug("Bookmark time : %ld\nBookmar thumb: %s", marked_time, thumb_path);
1156 SAFE_FREE(thumb_path);
1159 /* Remove bookmark list */
1162 for (l = 0; l < g_list_length(bm_list); l++) {
1163 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1164 ret = media_bookmark_destroy(bm_handle);
1165 if (ret != MEDIA_CONTENT_ERROR_NONE)
1166 media_content_error("error media_bookmark_destroy : [%d]", ret);
1169 g_list_free(bm_list);
1175 SAFE_FREE(media_id);
1176 SAFE_FREE(media_name);
1177 SAFE_FREE(media_path);
1183 media_tag_h tag_handle = NULL;
1184 GList *tag_list = NULL;
1185 GList *media_list_in_tag = NULL;
1187 ret = media_tag_foreach_tag_from_db(filter, gallery_tag_item_cb, &tag_list);
1189 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1190 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1193 media_content_error("media_tag_foreach_tag_from_db success");
1194 char *tag_name = NULL;
1197 for (i = 0; i < g_list_length(tag_list); i++) {
1198 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1199 media_tag_get_tag_id(tag_handle, &tag_id);
1200 media_tag_get_name(tag_handle, &tag_name);
1202 media_content_debug("[%d] %s", tag_id, tag_name);
1204 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1205 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1206 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1209 media_content_error("media_tag_foreach_media_from_db success");
1211 media_info_h tag_media_handle;
1212 char *media_id = NULL;
1213 char *media_name = NULL;
1214 char *media_path = NULL;
1215 media_content_type_e media_type = 0;
1217 for (j = 0; j < g_list_length(media_list_in_tag); j++) {
1218 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1219 ret = media_info_get_media_id(tag_media_handle, &media_id);
1220 if (ret != MEDIA_CONTENT_ERROR_NONE)
1221 media_content_error("media_info_get_media_id failed: %d", ret);
1222 ret = media_info_get_display_name(tag_media_handle, &media_name);
1223 if (ret != MEDIA_CONTENT_ERROR_NONE)
1224 media_content_error("media_info_get_display_name failed: %d", ret);
1225 ret = media_info_get_file_path(tag_media_handle, &media_path);
1226 if (ret != MEDIA_CONTENT_ERROR_NONE)
1227 media_content_error("media_info_get_file_path failed: %d", ret);
1228 ret = media_info_get_media_type(tag_media_handle, &media_type);
1229 if (ret != MEDIA_CONTENT_ERROR_NONE)
1230 media_content_error("media_info_get_media_type failed: %d", ret);
1232 media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1233 media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1234 media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1235 media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1237 SAFE_FREE(media_id);
1238 SAFE_FREE(media_name);
1239 SAFE_FREE(media_path);
1241 SAFE_FREE(tag_name);
1245 /* Remove folder list */
1247 for (i = 0; i < g_list_length(folder_list); i++) {
1248 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1249 media_folder_destroy(folder_handle);
1252 g_list_free(folder_list);
1255 /* Remove all items list */
1256 if (all_item_list) {
1257 for (i = 0; i < g_list_length(all_item_list); i++) {
1258 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1259 ret = media_info_destroy(media_handle);
1260 if (ret != MEDIA_CONTENT_ERROR_NONE)
1261 media_content_error("media_info_destroy failed: %d", ret);
1264 g_list_free(all_item_list);
1267 /* Remove items list */
1269 for (i = 0; i < g_list_length(item_list); i++) {
1270 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1271 ret = media_info_destroy(media_handle);
1272 if (ret != MEDIA_CONTENT_ERROR_NONE)
1273 media_content_error("media_info_destroy failed: %d", ret);
1276 g_list_free(item_list);
1279 /* Remove tag list */
1281 for (i = 0; i < g_list_length(tag_list); i++) {
1282 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1283 ret = media_tag_destroy(tag_handle);
1284 if (ret != MEDIA_CONTENT_ERROR_NONE)
1285 media_content_error("error media_tag_destroy : [%d]", ret);
1288 g_list_free(tag_list);
1291 /* Remove media list in a tag */
1292 if (media_list_in_tag) {
1293 for (i = 0; i < g_list_length(media_list_in_tag); i++) {
1294 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1295 ret = media_info_destroy(media_handle);
1296 if (ret != MEDIA_CONTENT_ERROR_NONE)
1297 media_content_error("media_info_destroy failed: %d", ret);
1300 g_list_free(media_list_in_tag);
1303 return MEDIA_CONTENT_ERROR_NONE;
1306 /*Get All Music file. sort by Title and not case sensitive*/
1307 int test_get_all_music_files(void)
1309 int ret = MEDIA_CONTENT_ERROR_NONE;
1310 int media_count = 0;
1314 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1316 ret = media_filter_create(&filter);
1317 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1318 media_content_error("Fail to create filter");
1321 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1322 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1323 media_filter_destroy(filter);
1324 media_content_error("Fail to set condition");
1327 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1328 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1329 media_filter_destroy(filter);
1330 media_content_error("Fail to set order");
1335 ret = media_info_get_media_count_from_db(filter, &media_count);
1336 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1337 media_filter_destroy(filter);
1338 media_content_error("Fail to get media count");
1342 media_content_debug("media_count : [%d]", media_count);
1344 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1345 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1346 media_filter_destroy(filter);
1347 media_content_error("Fail to get media");
1351 ret = media_filter_destroy(filter);
1356 int test_media_info_operation(void)
1358 int ret = MEDIA_CONTENT_ERROR_NONE;
1359 int media_count = 0;
1361 media_content_debug("\n============Media info Test============\n\n");
1363 test_filter_create();
1365 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1366 if (ret != MEDIA_CONTENT_ERROR_NONE)
1367 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1369 media_content_debug("media_count : [%d]", media_count);
1371 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1372 if (ret == MEDIA_CONTENT_ERROR_NONE)
1373 media_content_debug("media_info_foreach_media_from_db is success");
1375 media_content_error("media_info_foreach_media_from_db is failed");
1377 test_filter_destroy();
1382 int test_media_info_operation_2(void)
1384 int ret = MEDIA_CONTENT_ERROR_NONE;
1385 int bookmark_count = 0;
1387 media_content_debug("\n============Media info Test 2============\n\n");
1389 test_filter_create();
1393 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1394 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1395 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1397 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1399 media_content_debug("bookmark_count : [%d]", bookmark_count);
1401 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1405 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1406 if (ret != MEDIA_CONTENT_ERROR_NONE)
1407 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1409 media_content_debug("tag_count : [%d]", bookmark_count);
1411 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1412 if (ret != MEDIA_CONTENT_ERROR_NONE)
1413 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1415 test_filter_destroy();
1420 int test_folder_operation(void)
1422 int ret = MEDIA_CONTENT_ERROR_NONE;
1423 filter_h filter = NULL;
1424 media_folder_h folder = NULL;
1425 char *folder_id = NULL;
1428 media_content_debug("\n============Folder Test============\n\n");
1430 test_filter_create();
1432 ret = media_filter_create(&filter);
1433 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1434 media_content_error("[ERROR] media_folder_filter_create is failed");
1438 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*/
1439 media_filter_set_offset(filter, 0, 5);
1440 media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1441 media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1443 ret = media_folder_get_folder_count_from_db(filter, &count);
1444 media_content_debug("Folder count : [%d]", count);
1446 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1448 filter_h m_filter = NULL;
1450 ret = media_filter_create(&m_filter);
1451 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1452 test_filter_destroy();
1453 media_filter_destroy(filter);
1454 media_content_error("[ERROR] media_info_filter_create is failed");
1458 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*/
1459 media_filter_set_offset(m_filter, 0, 5);
1460 media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1462 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1463 if (ret != MEDIA_CONTENT_ERROR_NONE)
1464 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1466 media_filter_destroy(filter);
1467 media_filter_destroy(m_filter);
1469 test_filter_destroy();
1471 /* fix prevent: Resource Leak */
1472 SAFE_FREE(folder_id);
1477 int test_playlist_operation(void)
1479 int ret = MEDIA_CONTENT_ERROR_NONE;
1480 media_playlist_h playlist_1 = NULL;
1481 media_playlist_h playlist_2 = NULL;
1482 media_playlist_h playlist_3 = NULL;
1483 media_playlist_h playlist_4 = NULL;
1484 int playlist_id_1 = 0;
1485 int playlist_id_2 = 0;
1486 int playlist_id_3 = 0;
1487 const char *playlist_name_1 = "myPlaylist_1";
1488 const char *playlist_name_2 = "myPlaylist_2";
1489 const char *playlist_name_3 = "myPlaylist_3";
1490 int playlist_count = 0;
1491 int media_count = 0;
1497 filter_h filter = NULL;
1498 filter_h m_filter = NULL;
1500 media_content_debug("\n============Playlist Test============\n\n");
1502 /* Filter for playlist */
1504 const char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1506 ret = media_filter_create(&filter);
1507 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1508 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1510 /* Create Playlist */
1511 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1512 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1513 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1515 if (playlist_1 != NULL) {
1516 /* Add media to Playlist */
1517 media_playlist_add_media(playlist_1, test_audio_id);
1518 media_playlist_add_media(playlist_1, test_audio_id);
1519 media_playlist_add_media(playlist_1, test_video_id);
1522 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg"));
1523 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1526 media_playlist_update_to_db(playlist_1);
1529 if (playlist_2 != NULL) {
1530 media_playlist_add_media(playlist_2, test_audio_id);
1531 media_playlist_add_media(playlist_2, test_audio_id);
1532 media_playlist_update_to_db(playlist_2);
1535 /* Get Playlist Count*/
1536 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1538 media_content_debug("playlist_count [%d]", playlist_count);
1541 GList *playlist_id_list = NULL;
1542 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1543 /* 64bit build issue */
1545 /* Get Playlist id*/
1546 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1547 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1548 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1550 media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1551 media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1552 media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1554 /* Export and import playlist */
1555 media_playlist_export_to_file(playlist_3, tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"));
1556 media_playlist_import_from_file(tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"), "playlist_4", &playlist_4);
1558 /* Filter for media*/
1559 ret = media_filter_create(&m_filter);
1561 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1563 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1565 /* Get media count */
1566 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1567 media_content_debug("playlist_1_media_count [%d]", media_count);
1569 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1570 media_content_debug("playlist_2_media_count [%d]", media_count);
1572 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1573 media_content_debug("playlist_3_media_count [%d]", media_count);
1575 /* Get media of playlist */
1576 GList *playlist_member_id_list = NULL;
1577 GList *playlist_member_id_list_1 = NULL;
1579 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1580 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1582 int playlist_member_id_1_1 = 0;
1583 int playlist_member_id_1_2 = 0;
1584 int playlist_member_id_1_3 = 0;
1585 int playlist_member_id_2_1 = 0;
1586 int playlist_member_id_2_2 = 0;
1587 /* 64bit build issue */
1589 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1590 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1591 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1592 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1593 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1595 media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1596 media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1597 media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1598 media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1599 media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1601 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1602 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1603 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1604 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1605 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1606 media_content_debug("order_1 [%d] order_2 [%d] order_3 [%d] order_4 [%d] order_5 [%d]", order_1, order_2, order_3, order_4, order_5);
1608 /* Update Playlist */
1609 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1610 media_playlist_add_media(playlist_2, test_video_id);
1611 media_playlist_set_name(playlist_2, "test_playlist");
1612 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1613 media_playlist_update_to_db(playlist_2);
1615 /* Get Updated Playlist*/
1616 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1618 /* deletes the playlist */
1620 media_playlist_delete_from_db(playlist_id_1);
1621 media_playlist_delete_from_db(playlist_id_2);
1624 if (playlist_1 != NULL)
1625 media_playlist_destroy(playlist_1);
1626 if (playlist_2 != NULL)
1627 media_playlist_destroy(playlist_2);
1628 if (playlist_3 != NULL)
1629 media_playlist_destroy(playlist_3);
1630 if (playlist_4 != NULL)
1631 media_playlist_destroy(playlist_4);
1633 g_list_free(playlist_id_list);
1634 g_list_free(playlist_member_id_list);
1635 g_list_free(playlist_member_id_list_1);
1638 ret = media_filter_destroy(filter);
1639 if (m_filter != NULL)
1640 ret = media_filter_destroy(m_filter);
1645 int test_playlist_operation_v2(void)
1647 int ret = MEDIA_CONTENT_ERROR_NONE;
1648 media_playlist_h playlist_1 = NULL;
1649 const char *playlist_name_1 = "myPlaylist_1";
1650 const char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
1651 int playlist_id = 0;
1653 media_content_debug("\n============Playlist Test V2============\n\n");
1655 ret = media_playlist_create(&playlist_1);
1656 if (ret != MEDIA_CONTENT_ERROR_NONE)
1657 media_content_error("error media_playlist_create : [%d]", ret);
1659 ret = media_playlist_set_name(playlist_1, playlist_name_1);
1660 if (ret != MEDIA_CONTENT_ERROR_NONE)
1661 media_content_error("error media_playlist_set_name : [%d]", ret);
1663 ret = media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1664 if (ret != MEDIA_CONTENT_ERROR_NONE)
1665 media_content_error("error media_playlist_set_thumbnail_path : [%d]", ret);
1667 ret = media_playlist_insert_to_db_v2(playlist_1);
1668 if (ret != MEDIA_CONTENT_ERROR_NONE)
1669 media_content_error("error media_playlist_insert_to_db_v2 : [%d]", ret);
1671 ret = media_playlist_set_name(playlist_1, "myPlaylist_3");
1672 if (ret != MEDIA_CONTENT_ERROR_NONE)
1673 media_content_error("error media_playlist_set_name : [%d]", ret);
1675 ret = media_playlist_get_playlist_id(playlist_1, &playlist_id);
1676 if (ret != MEDIA_CONTENT_ERROR_NONE)
1677 media_content_error("error media_playlist_get_playlist_id : [%d]", ret);
1679 ret = media_playlist_update_to_db_v2(playlist_id, playlist_1);
1680 if (ret != MEDIA_CONTENT_ERROR_NONE)
1681 media_content_error("error media_playlist_update_to_db_v2 : [%d]", ret);
1683 ret = media_playlist_destroy(playlist_1);
1684 if (ret != MEDIA_CONTENT_ERROR_NONE)
1685 media_content_error("error media_playlist_destroy : [%d]", ret);
1690 int test_tag_operation(void)
1692 int ret = MEDIA_CONTENT_ERROR_NONE;
1699 const char *tag_name_1 = "myTag_1";
1700 const char *tag_name_2 = "myTag_2";
1701 const char *tag_name_3 = "myTag_3";
1703 int media_count = 0;
1706 media_content_debug("\n============Tag Test============\n\n");
1708 const char *g_condition = "TAG_NAME like \"%%my%%\"";
1710 ret = media_filter_create(&filter);
1712 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1714 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1717 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1718 if (ret != MEDIA_CONTENT_ERROR_NONE)
1719 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1720 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1721 if (ret != MEDIA_CONTENT_ERROR_NONE)
1722 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1723 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1724 if (ret != MEDIA_CONTENT_ERROR_NONE)
1725 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1727 /* Add media to Tag */
1728 ret = media_tag_add_media(tag_1, test_audio_id);
1729 if (ret != MEDIA_CONTENT_ERROR_NONE)
1730 media_content_error("error media_tag_add_media : [%d]", ret);
1731 ret = media_tag_add_media(tag_1, test_video_id);
1732 if (ret != MEDIA_CONTENT_ERROR_NONE)
1733 media_content_error("error media_tag_add_media : [%d]", ret);
1734 ret = media_tag_update_to_db(tag_1);
1735 if (ret != MEDIA_CONTENT_ERROR_NONE)
1736 media_content_error("error media_tag_update_to_db : [%d]", ret);
1738 ret = media_tag_add_media(tag_2, test_audio_id);
1739 if (ret != MEDIA_CONTENT_ERROR_NONE)
1740 media_content_error("error media_tag_add_media : [%d]", ret);
1741 ret = media_tag_update_to_db(tag_2);
1742 if (ret != MEDIA_CONTENT_ERROR_NONE)
1743 media_content_error("error media_tag_update_to_db : [%d]", ret);
1746 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1747 if (ret != MEDIA_CONTENT_ERROR_NONE)
1748 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1750 media_content_debug("tag_count [%d]", tag_count);
1753 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1754 if (ret != MEDIA_CONTENT_ERROR_NONE)
1755 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1758 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1759 if (ret != MEDIA_CONTENT_ERROR_NONE)
1760 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1762 media_content_debug("tag_id_1 [%d]", tag_id_1);
1764 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1765 if (ret != MEDIA_CONTENT_ERROR_NONE)
1766 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1768 media_content_debug("tag_id_2 [%d]", tag_id_2);
1770 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1771 if (ret != MEDIA_CONTENT_ERROR_NONE)
1772 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1774 media_content_debug("tag_id_3 [%d]", tag_id_3);
1776 /* Get media count */
1777 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1778 if (ret != MEDIA_CONTENT_ERROR_NONE)
1779 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1781 media_content_debug("tag_1_media_count [%d]", media_count);
1783 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1784 if (ret != MEDIA_CONTENT_ERROR_NONE)
1785 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1787 media_content_debug("tag_2_media_count [%d]", media_count);
1789 /* Get media of Tag */
1790 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1791 if (ret != MEDIA_CONTENT_ERROR_NONE)
1792 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1794 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1795 if (ret != MEDIA_CONTENT_ERROR_NONE)
1796 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1799 ret = media_tag_add_media(tag_2, test_video_id);
1800 if (ret != MEDIA_CONTENT_ERROR_NONE)
1801 media_content_error("error media_tag_add_media : [%d]", ret);
1802 ret = media_tag_set_name(tag_2, "test_tag");
1803 if (ret != MEDIA_CONTENT_ERROR_NONE)
1804 media_content_error("error media_tag_set_name : [%d]", ret);
1805 ret = media_tag_update_to_db(tag_2);
1806 if (ret != MEDIA_CONTENT_ERROR_NONE)
1807 media_content_error("error media_tag_update_to_db : [%d]", ret);
1809 /* Get Updated Tag*/
1810 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1811 if (ret != MEDIA_CONTENT_ERROR_NONE)
1812 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1814 /* deletes the tag */
1815 ret = media_tag_delete_from_db(tag_id_1);
1816 if (ret != MEDIA_CONTENT_ERROR_NONE)
1817 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1818 ret = media_tag_delete_from_db(tag_id_2);
1819 if (ret != MEDIA_CONTENT_ERROR_NONE)
1820 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1822 ret = media_tag_destroy(tag_1);
1823 if (ret != MEDIA_CONTENT_ERROR_NONE)
1824 media_content_error("error media_tag_destroy : [%d]", ret);
1825 ret = media_tag_destroy(tag_2);
1826 if (ret != MEDIA_CONTENT_ERROR_NONE)
1827 media_content_error("error media_tag_destroy : [%d]", ret);
1828 ret = media_tag_destroy(tag_3);
1829 if (ret != MEDIA_CONTENT_ERROR_NONE)
1830 media_content_error("error media_tag_destroy : [%d]", ret);
1831 ret = media_filter_destroy(filter);
1832 if (ret != MEDIA_CONTENT_ERROR_NONE)
1833 media_content_error("error media_filter_destroy : [%d]", ret);
1838 int test_tag_operation_v2(void)
1840 int ret = MEDIA_CONTENT_ERROR_NONE;
1842 const char *tag_name_1 = "myTag_1";
1845 media_content_debug("\n============Tag Test V2============\n\n");
1848 ret = media_tag_create(&tag_1);
1849 if (ret != MEDIA_CONTENT_ERROR_NONE)
1850 media_content_error("error media_tag_create : [%d]", ret);
1852 ret = media_tag_set_name(tag_1, tag_name_1);
1853 if (ret != MEDIA_CONTENT_ERROR_NONE)
1854 media_content_error("error media_tag_set_name : [%d]", ret);
1856 /* Add media to Tag */
1857 ret = media_tag_add_media(tag_1, test_audio_id);
1858 if (ret != MEDIA_CONTENT_ERROR_NONE)
1859 media_content_error("error media_tag_add_media : [%d]", ret);
1861 ret = media_tag_add_media(tag_1, test_video_id);
1862 if (ret != MEDIA_CONTENT_ERROR_NONE)
1863 media_content_error("error media_tag_add_media : [%d]", ret);
1865 ret = media_tag_insert_to_db_v2(tag_1);
1866 if (ret != MEDIA_CONTENT_ERROR_NONE)
1867 media_content_error("error media_tag_insert_to_db_v2 : [%d]", ret);
1870 ret = media_tag_get_tag_id(tag_1, &tag_id);
1871 if (ret != MEDIA_CONTENT_ERROR_NONE)
1872 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1874 ret = media_tag_remove_media(tag_1, test_video_id);
1875 if (ret != MEDIA_CONTENT_ERROR_NONE)
1876 media_content_error("error media_tag_add_media : [%d]", ret);
1878 ret = media_tag_update_to_db_v2(tag_id, tag_1);
1879 if (ret != MEDIA_CONTENT_ERROR_NONE)
1880 media_content_error("error media_tag_update_to_db_v2 : [%d]", ret);
1883 ret = media_tag_destroy(tag_1);
1884 if (ret != MEDIA_CONTENT_ERROR_NONE)
1885 media_content_error("error media_tag_destroy : [%d]", ret);
1890 int test_bookmark_operation(void)
1892 /* bookmark is only supported for video information. */
1893 int ret = MEDIA_CONTENT_ERROR_NONE;
1894 int bookmark_count = 0;
1896 GList *all_item_list = NULL;
1899 media_content_debug("\n============Bookmark Test============\n\n");
1901 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
1903 ret = media_filter_create(&filter);
1904 if (ret != MEDIA_CONTENT_ERROR_NONE)
1905 media_content_error("error media_filter_create : [%d]", ret);
1907 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1908 if (ret != MEDIA_CONTENT_ERROR_NONE)
1909 media_content_error("error media_filter_set_condition : [%d]", ret);
1911 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
1912 if (ret != MEDIA_CONTENT_ERROR_NONE)
1913 media_content_error("error media_filter_set_order : [%d]", ret);
1915 /* insert bookmark to video */
1916 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1917 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
1918 if (ret != MEDIA_CONTENT_ERROR_NONE)
1919 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
1921 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
1922 if (ret != MEDIA_CONTENT_ERROR_NONE)
1923 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
1925 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
1926 if (ret != MEDIA_CONTENT_ERROR_NONE)
1927 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
1929 media_content_debug("bookmark_count = [%d]", bookmark_count);
1931 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, &all_item_list);
1932 if (ret != MEDIA_CONTENT_ERROR_NONE)
1933 media_content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
1935 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
1936 media_bookmark_h bookmark_handle;
1937 bookmark_handle = (media_bookmark_h)g_list_nth_data(all_item_list, idx);
1939 ret = media_bookmark_set_name(bookmark_handle, "test 1");
1940 if (ret != MEDIA_CONTENT_ERROR_NONE)
1941 media_content_error("error media_bookmark_set_name : [%d]", ret);
1943 ret = media_bookmark_update_to_db(bookmark_handle);
1944 if (ret != MEDIA_CONTENT_ERROR_NONE)
1945 media_content_error("error media_bookmark_update_to_db : [%d]", ret);
1948 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, NULL);
1949 if (ret != MEDIA_CONTENT_ERROR_NONE)
1950 media_content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
1952 ret = media_filter_destroy(filter);
1953 if (ret != MEDIA_CONTENT_ERROR_NONE)
1954 media_content_error("error media_filter_destroy : [%d]", ret);
1959 int test_bookmark_operation_v2(void)
1961 media_content_debug("\n============Bookmark Test V2============\n\n");
1963 int ret = MEDIA_CONTENT_ERROR_NONE;
1964 media_bookmark_h bookmark = NULL;
1965 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1967 ret = media_bookmark_create(test_video_id, 400, &bookmark);
1968 if (ret != MEDIA_CONTENT_ERROR_NONE)
1969 media_content_error("error media_bookmark_create : [%d]", ret);
1971 ret = media_bookmark_set_name(bookmark, "test bookmark");
1972 if (ret != MEDIA_CONTENT_ERROR_NONE)
1973 media_content_error("error media_bookmark_set_name : [%d]", ret);
1975 ret = media_bookmark_set_thumbnail_path(bookmark, thumbnail_path1);
1976 if (ret != MEDIA_CONTENT_ERROR_NONE)
1977 media_content_error("error media_bookmark_set_thumbnail_path : [%d]", ret);
1979 ret = media_bookmark_insert_to_db_v2(bookmark);
1980 if (ret != MEDIA_CONTENT_ERROR_NONE)
1981 media_content_error("error media_bookmark_insert_to_db_v2 : [%d]", ret);
1983 ret = media_bookmark_set_name(bookmark, "test bookmark 2");
1984 if (ret != MEDIA_CONTENT_ERROR_NONE)
1985 media_content_error("error media_bookmark_set_name : [%d]", ret);
1987 ret = media_bookmark_update_to_db(bookmark);
1988 if (ret != MEDIA_CONTENT_ERROR_NONE)
1989 media_content_error("error media_bookmark_update_to_db : [%d]", ret);
1991 ret = media_bookmark_destroy(bookmark);
1992 if (ret != MEDIA_CONTENT_ERROR_NONE)
1993 media_content_error("error media_bookmark_destroy : [%d]", ret);
1998 int test_album_list(void)
2000 media_content_debug("\n============Album Test============\n\n");
2002 int ret = MEDIA_CONTENT_ERROR_NONE;
2003 int album_count = 0;
2007 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2009 ret = media_filter_create(&filter);
2010 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2011 media_content_error("Fail to create filter");
2014 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2015 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2016 media_filter_destroy(filter);
2017 media_content_error("Fail to set condition");
2020 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2021 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2022 media_filter_destroy(filter);
2023 media_content_error("Fail to set order");
2027 ret = media_album_get_album_count_from_db(filter, &album_count);
2028 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2029 media_filter_destroy(filter);
2032 media_content_debug("album_count [%d]", album_count);
2035 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2036 if (ret != MEDIA_CONTENT_ERROR_NONE)
2037 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2039 ret = media_filter_destroy(filter);
2040 if (ret != MEDIA_CONTENT_ERROR_NONE)
2041 media_content_error("error media_filter_destroy : [%d]", ret);
2046 int test_group_operation(void)
2048 media_content_debug("\n============Group Test============\n\n");
2050 int ret = MEDIA_CONTENT_ERROR_NONE;
2051 int group_count = 0;
2054 ret = test_filter_create();
2055 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2056 media_content_error("[error(0x%08x)", ret);
2060 for (idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++) {
2061 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2062 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2063 test_filter_destroy();
2064 media_content_error("media_group_get_group_count_from_db fail. ret=[%d] idx=[%d]", ret, idx);
2067 media_content_debug("[%2d]group_count [%d]", idx, group_count);
2070 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2071 if (ret != MEDIA_CONTENT_ERROR_NONE)
2072 media_content_error("media_group_foreach_group_from_db failed: %d", ret);
2074 ret = test_filter_destroy();
2079 int test_update_operation()
2081 int ret = MEDIA_CONTENT_ERROR_NONE;
2083 media_info_h media_handle = NULL;
2084 GList *all_item_list = NULL;
2086 /* Get all item list */
2087 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2088 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2089 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2092 media_content_debug("media_info_foreach_media_from_db success");
2093 char *media_id = NULL;
2094 char *media_path = NULL;
2095 media_content_type_e media_type = 0;
2097 for (i = 0; i < g_list_length(all_item_list); i++) {
2098 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2100 ret = media_info_get_media_id(media_handle, &media_id);
2101 if (ret != MEDIA_CONTENT_ERROR_NONE)
2102 media_content_error("media_info_get_media_id failed: %d", ret);
2103 ret = media_info_get_file_path(media_handle, &media_path);
2104 if (ret != MEDIA_CONTENT_ERROR_NONE)
2105 media_content_error("media_info_get_file_path failed: %d", ret);
2106 ret = media_info_get_media_type(media_handle, &media_type);
2107 if (ret != MEDIA_CONTENT_ERROR_NONE)
2108 media_content_error("media_info_get_media_type failed: %d", ret);
2110 media_content_debug("media_id [%d] : %s", i, media_id);
2111 media_content_debug("media_type [%d] : %d", i, media_type);
2112 media_content_debug("media_path [%d] : %s", i, media_path);
2114 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2115 image_meta_h image_handle;
2116 media_content_orientation_e orientation;
2118 ret = media_info_get_image(media_handle, &image_handle);
2119 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2120 media_content_error("media_info_get_image failed: %d", ret);
2122 media_content_debug("media_info_get_image success");
2124 /* update image meta */
2125 orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2126 image_meta_set_orientation(image_handle, orientation);
2128 ret = image_meta_update_to_db(image_handle);
2129 if (ret != MEDIA_CONTENT_ERROR_NONE)
2130 media_content_error("image_meta_update_to_db failed: %d", ret);
2132 media_content_debug("image_meta_update_to_db success");
2135 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2136 video_meta_h video_handle;
2138 ret = media_info_get_video(media_handle, &video_handle);
2139 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2140 media_content_error("media_info_get_video failed: %d", ret);
2142 media_content_debug("media_info_get_video success");
2144 /* update video meta */
2145 video_meta_update_to_db(video_handle);
2147 ret = video_meta_update_to_db(video_handle);
2148 if (ret != MEDIA_CONTENT_ERROR_NONE)
2149 media_content_error("video_meta_update_to_db failed: %d", ret);
2151 media_content_debug("video_meta_update_to_db success");
2153 } else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2154 audio_meta_h audio_handle = NULL;
2155 ret = media_info_get_audio(media_handle, &audio_handle);
2156 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2157 media_content_error("media_info_get_audio failed: %d", ret);
2159 media_content_debug("media_info_get_audio success");
2161 ret = audio_meta_update_to_db(audio_handle);
2162 if (ret != MEDIA_CONTENT_ERROR_NONE)
2163 media_content_error("audio_meta_update_to_db failed: %d", ret);
2165 media_content_debug("audio_meta_update_to_db success");
2172 /* fix prevent: Resource Leak */
2173 SAFE_FREE(media_id);
2174 SAFE_FREE(media_path);
2177 return MEDIA_CONTENT_ERROR_NONE;
2180 int test_insert(void)
2182 int ret = MEDIA_CONTENT_ERROR_NONE;
2183 const char *path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
2185 const char *path = tzplatform_mkpath(TZ_USER_DOCUMENTS, "other.txt"));
2188 media_info_h media_item = NULL;
2189 media_content_debug("\n============DB Insert Test============\n\n");
2191 ret = media_info_insert_to_db(path, &media_item);
2193 if ((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL)) {
2194 media_content_debug("Insertion is success");
2196 media_content_error("Insertion is failed");
2197 ret = media_info_destroy(media_item);
2201 char *media_id = NULL;
2203 ret = media_info_get_media_id(media_item, &media_id);
2204 if (ret != MEDIA_CONTENT_ERROR_NONE)
2205 media_content_error("media_info_get_media_id failed: %d", ret);
2207 media_content_debug("Media ID: %s", media_id);
2209 SAFE_FREE(media_id);
2211 ret = media_info_update_to_db(media_item);
2212 if (ret == MEDIA_CONTENT_ERROR_NONE)
2213 media_content_debug("media_info_update_to_db is success");
2215 media_content_error("media_info_update_to_db is failed");
2217 ret = media_info_destroy(media_item);
2218 if (ret != MEDIA_CONTENT_ERROR_NONE)
2219 media_content_error("media_info_destroy failed: %d", ret);
2226 int ret = MEDIA_CONTENT_ERROR_NONE;
2227 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2228 const char *dst_path = tzplatform_mkpath(TZ_USER_IMAGES, "XX/Default1.jpg");
2229 media_info_h move_media = NULL;
2231 ret = media_info_get_media_from_db(move_media_id, &move_media);
2232 if (ret == MEDIA_CONTENT_ERROR_NONE)
2233 media_content_debug("media_info_get_media_from_db success");
2235 media_content_error("media_info_get_media_from_db failed: %d", ret);
2237 media_content_debug("\n============DB Move Test============\n\n");
2240 ret = media_info_move_to_db(move_media, dst_path);
2242 if (ret == MEDIA_CONTENT_ERROR_NONE)
2243 media_content_debug("Move is success");
2245 media_content_error("Move is failed");
2247 ret = media_info_destroy(move_media);
2249 media_content_debug("There is no item : %s", move_media_id);
2255 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2257 char *thumbnail_path = NULL;
2258 int ret = MEDIA_CONTENT_ERROR_NONE;
2261 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2262 media_content_debug("error_code [%d]", error);
2263 media_content_debug("thumbnail_path [%s]", path);
2264 if (user_data != NULL) {
2265 media_info_h media = (media_info_h)user_data;
2266 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2267 if (ret != MEDIA_CONTENT_ERROR_NONE)
2268 media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2270 media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2271 SAFE_FREE(thumbnail_path);
2272 ret = media_info_destroy(media);
2273 if (ret != MEDIA_CONTENT_ERROR_NONE)
2274 media_content_error("media_info_destroy failed: %d", ret);
2277 if (g_cnt == g_media_cnt)
2278 g_main_loop_quit(g_loop);
2283 bool thumbnail_create_cb(media_info_h media, void *user_data)
2285 char *media_id = NULL;
2286 media_info_h dst = NULL;
2287 int ret = MEDIA_CONTENT_ERROR_NONE;
2289 if (media == NULL) {
2290 media_content_debug("NO Item");
2294 ret = media_info_get_media_id(media, &media_id);
2295 if (ret != MEDIA_CONTENT_ERROR_NONE)
2296 media_content_error("media_info_get_media_id failed: %d", ret);
2298 media_content_debug("media_id : [%s]", media_id);
2300 ret = media_info_clone(&dst, media);
2301 if (ret != MEDIA_CONTENT_ERROR_NONE)
2302 media_content_error("media_info_clone failed: %d", ret);
2304 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2305 if (ret != MEDIA_CONTENT_ERROR_NONE)
2306 media_content_error("media_info_create_thumbnail failed: %d", ret);
2309 /* fix prevent: Resource leak */
2310 SAFE_FREE(media_id);
2315 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2317 int ret = MEDIA_CONTENT_ERROR_NONE;
2319 char *media_id = NULL;
2320 media_info_h dst = NULL;
2324 if (media == NULL) {
2325 media_content_debug("NO Item");
2329 ret = media_info_get_media_id(media, &media_id);
2330 if (ret != MEDIA_CONTENT_ERROR_NONE)
2331 media_content_error("media_info_get_media_id failed: %d", ret);
2333 media_content_debug("media_id : [%s]", media_id);
2335 ret = media_info_clone(&dst, media);
2336 if (ret != MEDIA_CONTENT_ERROR_NONE)
2337 media_content_error("media_info_clone failed: %d", ret);
2339 ret = media_info_cancel_thumbnail(dst);
2340 if (ret != MEDIA_CONTENT_ERROR_NONE)
2341 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2343 ret = media_info_destroy(dst);
2344 if (ret != MEDIA_CONTENT_ERROR_NONE)
2345 media_content_error("media_info_destroy failed: %d", ret);
2347 if (g_cnt == g_media_cnt)
2348 g_main_loop_quit(g_loop);
2350 /* fix prevent: Resource leak */
2351 SAFE_FREE(media_id);
2356 gboolean create_thumbnail_start(gpointer data)
2358 int ret = MEDIA_CONTENT_ERROR_NONE;
2360 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2362 if (ret == MEDIA_CONTENT_ERROR_NONE)
2363 media_content_debug("media_info_foreach_media_from_db is success");
2365 media_content_error("media_info_foreach_media_from_db is failed");
2370 gboolean cancel_thumbnail_start(gpointer data)
2372 int ret = MEDIA_CONTENT_ERROR_NONE;
2374 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2376 if (ret == MEDIA_CONTENT_ERROR_NONE)
2377 media_content_debug("media_info_foreach_media_from_db is success");
2379 media_content_error("media_info_foreach_media_from_db is failed");
2384 int test_create_thumbnail(int cancel)
2386 int ret = MEDIA_CONTENT_ERROR_NONE;
2387 GSource *source = NULL;
2388 GMainContext *context = NULL;
2390 test_filter_create();
2392 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2393 if (ret != MEDIA_CONTENT_ERROR_NONE)
2394 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2396 media_content_debug("media_count : [%d]", g_media_cnt);
2398 g_loop = g_main_loop_new(NULL, FALSE);
2399 context = g_main_loop_get_context(g_loop);
2400 source = g_idle_source_new();
2401 g_source_set_callback(source, create_thumbnail_start, NULL, NULL);
2402 g_source_attach(source, context);
2404 /* Logic to cancel */
2406 GSource *cancel_src = NULL;
2407 cancel_src = g_idle_source_new();
2408 g_source_set_callback(cancel_src, cancel_thumbnail_start, NULL, NULL);
2409 g_source_attach(cancel_src, context);
2412 g_main_loop_run(g_loop);
2413 g_main_loop_unref(g_loop);
2415 test_filter_destroy();
2420 bool face_cb(media_face_h face, void *user_data)
2422 if (user_data != NULL) {
2423 unsigned x, y, rect_w, rect_h;
2424 media_face_get_face_rect(face, &x, &y, &rect_w, &rect_h);
2425 media_content_debug("face(%p) x = %d, y = %d [%d, %d]", face, x, y, rect_w, rect_h);
2431 void face_detection_complete_cb(media_content_error_e error, int count, void *user_data)
2433 int ret = MEDIA_CONTENT_ERROR_NONE;
2436 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2437 media_content_debug("error_code [%d]", error);
2438 media_content_debug("face_count [%d]", count);
2440 media_content_debug("No faces are detected!");
2441 } else if (user_data != NULL) {
2442 media_info_h media = (media_info_h)user_data;
2443 char *media_id = NULL;
2444 ret = media_info_get_media_id(media, &media_id);
2445 if (ret != MEDIA_CONTENT_ERROR_NONE)
2446 media_content_error("media_info_get_media_id failed: %d", ret);
2447 if (media_id != NULL) {
2448 ret = media_info_foreach_face_from_db(media_id, NULL, face_cb, NULL);
2449 SAFE_FREE(media_id);
2450 if (ret != MEDIA_CONTENT_ERROR_NONE)
2451 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
2453 ret = media_info_destroy(media);
2454 if (ret != MEDIA_CONTENT_ERROR_NONE)
2455 media_content_error("media_info_destroy failed: %d", ret);
2458 if (g_cnt == g_media_cnt)
2459 g_main_loop_quit(g_loop);
2464 bool start_face_detection_cb(media_info_h media, void *user_data)
2466 char *media_id = NULL;
2467 media_info_h dst = NULL;
2468 int ret = MEDIA_CONTENT_ERROR_NONE;
2470 if (media == NULL) {
2471 media_content_debug("NO Item");
2475 ret = media_info_get_media_id(media, &media_id);
2476 if (ret != MEDIA_CONTENT_ERROR_NONE)
2477 media_content_error("media_info_get_media_id failed: %d", ret);
2479 media_content_debug("media_id : [%s]", media_id);
2481 ret = media_info_clone(&dst, media);
2482 if (ret != MEDIA_CONTENT_ERROR_NONE)
2483 media_content_error("media_info_clone failed: %d", ret);
2485 GList **list = (GList**)user_data;
2486 *list = g_list_append(*list, dst);
2488 /* fix prevent: Resource leak */
2489 SAFE_FREE(media_id);
2494 bool cancel_face_detection_cb(media_info_h media, void *user_data)
2496 int ret = MEDIA_CONTENT_ERROR_NONE;
2498 char *media_id = NULL;
2499 media_info_h dst = NULL;
2503 if (media == NULL) {
2504 media_content_debug("NO Item");
2508 ret = media_info_get_media_id(media, &media_id);
2509 if (ret != MEDIA_CONTENT_ERROR_NONE)
2510 media_content_error("media_info_get_media_id failed: %d", ret);
2512 media_content_debug("media_id : [%s]", media_id);
2514 ret = media_info_clone(&dst, media);
2515 if (ret != MEDIA_CONTENT_ERROR_NONE)
2516 media_content_error("media_info_clone failed: %d", ret);
2518 ret = media_info_cancel_face_detection(dst);
2519 if (ret != MEDIA_CONTENT_ERROR_NONE)
2520 media_content_error("media_info_cancel_face_detection failed: %d", ret);
2522 ret = media_info_destroy(dst);
2523 if (ret != MEDIA_CONTENT_ERROR_NONE)
2524 media_content_error("media_info_destroy failed: %d", ret);
2526 if (g_cnt == g_media_cnt)
2527 g_main_loop_quit(g_loop);
2529 /* fix prevent: Resource leak */
2530 SAFE_FREE(media_id);
2535 gboolean face_detection_start(gpointer data)
2537 int ret = MEDIA_CONTENT_ERROR_NONE;
2538 GList *all_item_list = NULL;
2541 ret = media_info_foreach_media_from_db(g_filter, start_face_detection_cb, &all_item_list);
2543 if (ret == MEDIA_CONTENT_ERROR_NONE)
2544 media_content_debug("media_info_foreach_media_from_db is success");
2546 media_content_error("media_info_foreach_media_from_db is failed");
2548 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
2549 media_info_h media_handle = NULL;
2551 media_handle = (media_info_h)g_list_nth_data(all_item_list, idx);
2553 ret = media_info_start_face_detection(media_handle, face_detection_complete_cb, NULL);
2554 if (ret != MEDIA_CONTENT_ERROR_NONE)
2555 media_content_error("media_info_start_face_detection failed: %d", ret);
2562 gboolean face_detection_cancel(gpointer data)
2564 int ret = MEDIA_CONTENT_ERROR_NONE;
2566 ret = media_info_foreach_media_from_db(g_filter, cancel_face_detection_cb, NULL);
2568 if (ret == MEDIA_CONTENT_ERROR_NONE)
2569 media_content_debug("media_info_foreach_media_from_db is success");
2571 media_content_error("media_info_foreach_media_from_db is failed");
2576 int test_start_face_detection(int cancel)
2578 int ret = MEDIA_CONTENT_ERROR_NONE;
2579 GSource *source = NULL;
2580 GMainContext *context = NULL;
2582 test_filter_create();
2584 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2585 if (ret != MEDIA_CONTENT_ERROR_NONE)
2586 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2588 media_content_debug("media_count : [%d]", g_media_cnt);
2590 if (g_media_cnt == 0)
2593 g_loop = g_main_loop_new(NULL, FALSE);
2594 context = g_main_loop_get_context(g_loop);
2595 source = g_idle_source_new();
2596 g_source_set_callback(source, face_detection_start, NULL, NULL);
2597 g_source_attach(source, context);
2599 /* Logic to cancel */
2601 GSource *cancel_src = NULL;
2602 cancel_src = g_idle_source_new();
2603 g_source_set_callback(cancel_src, face_detection_cancel, NULL, NULL);
2604 g_source_attach(cancel_src, context);
2607 g_main_loop_run(g_loop);
2608 g_main_loop_unref(g_loop);
2611 test_filter_destroy();
2616 int test_disconnect_database(void)
2618 int ret = MEDIA_CONTENT_ERROR_NONE;
2619 media_content_debug("\n============DB Disconnection Test============\n\n");
2621 ret = media_content_disconnect();
2623 if (ret == MEDIA_CONTENT_ERROR_NONE)
2624 media_content_debug("disconnection is success");
2626 media_content_error("disconnection is failed");
2631 int test_request_update_db(void)
2633 int ret = MEDIA_CONTENT_ERROR_NONE;
2634 media_info_h media = NULL;
2635 bool favorite = FALSE;
2637 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2638 if (ret != MEDIA_CONTENT_ERROR_NONE)
2639 media_content_error("media_info_get_media_from_db failed: %d", ret);
2641 ret = media_info_set_favorite(media, TRUE);
2642 if (ret != MEDIA_CONTENT_ERROR_NONE)
2643 media_content_error("media_info_set_favorite failed: %d", ret);
2645 ret = media_info_update_to_db(media);
2646 if (ret == MEDIA_CONTENT_ERROR_NONE)
2647 media_content_debug("media_info_update_to_db is success");
2649 media_content_error("media_info_update_to_db is failed");
2652 media_info_destroy(media);
2654 /*get the updated value*/
2655 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2656 if (ret != MEDIA_CONTENT_ERROR_NONE)
2657 media_content_error("media_info_get_media_from_db failed: %d", ret);
2659 ret = media_info_get_favorite(media, &favorite);
2660 if (ret != MEDIA_CONTENT_ERROR_NONE)
2661 media_content_error("media_info_get_favorite failed: %d", ret);
2663 media_content_debug("favorite [%d]", favorite);
2665 ret = media_info_destroy(media);
2670 int g_total_photo_size = 0;
2671 int g_total_video_size = 0;
2672 int g_total_mp3_size = 0;
2673 int g_total_voice_memo_size = 0;
2675 bool dft_cb(media_info_h media, void *user_data)
2677 unsigned long long file_size = 0;
2678 media_content_type_e media_type = -1;
2679 char *mime_type = NULL;
2680 int ret = MEDIA_CONTENT_ERROR_NONE;
2685 ret = media_info_get_media_type(media, &media_type);
2686 if (ret != MEDIA_CONTENT_ERROR_NONE)
2687 media_content_error("media_info_get_media_type failed: %d", ret);
2688 ret = media_info_get_size(media, &file_size);
2689 if (ret != MEDIA_CONTENT_ERROR_NONE)
2690 media_content_error("media_info_get_size failed: %d", ret);
2691 ret = media_info_get_mime_type(media, &mime_type);
2692 if (ret != MEDIA_CONTENT_ERROR_NONE)
2693 media_content_error("media_info_get_mime_type failed: %d", ret);
2695 if (media_type == MEDIA_CONTENT_TYPE_IMAGE)
2696 g_total_photo_size += file_size;
2697 else if (media_type == MEDIA_CONTENT_TYPE_VIDEO)
2698 g_total_video_size += file_size;
2699 else if (media_type == MEDIA_CONTENT_TYPE_SOUND)
2700 g_total_voice_memo_size += file_size;
2701 else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2702 if ((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2703 g_total_mp3_size += file_size;
2705 g_total_voice_memo_size += file_size;
2707 media_content_debug("invalid media_type");
2709 SAFE_FREE(mime_type);
2717 int ret = MEDIA_CONTENT_ERROR_NONE;
2718 media_content_debug("\n============DFT_test============\n\n");
2720 filter_h filter = NULL;
2723 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2725 ret = media_filter_create(&filter);
2728 media_content_debug("[Internal Memory]\n");
2729 /*1. Photo ============================================================*/
2730 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2733 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2734 media_content_debug("Photo count = [%d]\n", media_cnt);
2737 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2738 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2740 /*2. Video ============================================================*/
2741 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2744 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2745 media_content_debug("Video count = [%d]\n", media_cnt);
2748 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2749 media_content_debug("Video size = [%d]\n", g_total_video_size);
2751 /*3. MP3 ============================================================*/
2752 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2755 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2756 media_content_debug("MP3 count = [%d]\n", media_cnt);
2759 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2760 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2762 /*4. Voice Memo ============================================================*/
2763 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);
2765 /*Get Voice Memo Count*/
2766 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2767 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2769 /*Get Voice Memo Size*/
2770 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2771 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2773 g_total_photo_size = 0;
2774 g_total_video_size = 0;
2775 g_total_mp3_size = 0;
2776 g_total_voice_memo_size = 0;
2779 media_content_debug("\n[External Memory]\n");
2780 /*1. Photo ============================================================*/
2781 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2784 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2785 media_content_debug("Photo count = [%d]\n", media_cnt);
2788 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2789 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2791 /*2. Video ============================================================*/
2792 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2795 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2796 media_content_debug("Video count = [%d]\n", media_cnt);
2799 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2800 media_content_debug("Video size = [%d]\n", g_total_video_size);
2802 /*3. MP3 ============================================================*/
2803 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2806 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2807 media_content_debug("MP3 count = [%d]\n", media_cnt);
2810 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2811 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2813 /*4. Voice Memo ============================================================*/
2814 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);
2816 /*Get Voice Memo Count*/
2817 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2818 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2820 /*Get Voice Memo Size*/
2821 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2822 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2823 ret = media_filter_destroy(filter);
2828 void insert_batch_cb(media_content_error_e error, void * user_data)
2830 media_content_debug("media_info_insert_batch_to_db completed!\n");
2833 int test_batch_operations()
2837 char *file_list[10];
2839 for (i = 0; i < 10; i++) {
2840 char filepath[255] = {0,};
2841 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2842 media_content_debug("File : %s\n", filepath);
2843 file_list[i] = strdup(filepath);
2846 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2847 if (ret != MEDIA_CONTENT_ERROR_NONE)
2848 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2853 void _scan_cb(media_content_error_e err, void *user_data)
2855 media_content_debug("scan callback is called : %d\n", err);
2856 g_main_loop_quit(g_loop);
2861 int test_scan_file()
2865 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2866 ret = media_content_scan_file(file_path);
2867 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2868 media_content_error("Fail to media_content_scan_file : %d", ret);
2875 gboolean test_scan_dir_start(gpointer data)
2879 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2881 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2883 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2884 media_content_error("Fail to test_scan_dir_start : %d", ret);
2891 gboolean cancel_scan_dir_start(gpointer data)
2893 int ret = MEDIA_CONTENT_ERROR_NONE;
2895 const char *dir_path = tzplatform_getenv(TZ_USER_IMAGES);
2897 ret = media_content_cancel_scan_folder(dir_path);
2899 if (ret == MEDIA_CONTENT_ERROR_NONE)
2900 media_content_debug("media_content_cancel_scan_folder is success");
2902 media_content_error("media_content_cancel_scan_folder is failed");
2907 int test_scan_dir(int cancel)
2909 GSource *source = NULL;
2910 GMainContext *context = NULL;
2912 g_loop = g_main_loop_new(NULL, FALSE);
2913 context = g_main_loop_get_context(g_loop);
2914 source = g_idle_source_new();
2915 g_source_set_callback(source, test_scan_dir_start, NULL, NULL);
2916 g_source_attach(source, context);
2919 GSource *cancel_src = NULL;
2920 cancel_src = g_idle_source_new();
2921 g_source_set_callback(cancel_src, cancel_scan_dir_start, NULL, NULL);
2922 g_source_attach(cancel_src, context);
2925 g_main_loop_run(g_loop);
2926 g_main_loop_unref(g_loop);
2931 void _noti_cb(media_content_error_e error,
2933 media_content_db_update_item_type_e update_item,
2934 media_content_db_update_type_e update_type,
2935 media_content_type_e media_type,
2942 media_content_debug("noti success! : %d\n", error);
2944 media_content_debug("error occured! : %d\n", error);
2946 media_content_debug("Noti from PID(%d)\n", pid);
2948 if (update_item == MEDIA_ITEM_FILE)
2949 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
2950 else if (update_item == MEDIA_ITEM_DIRECTORY)
2951 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
2953 if (update_type == MEDIA_CONTENT_INSERT)
2954 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
2955 else if (update_type == MEDIA_CONTENT_DELETE)
2956 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
2957 else if (update_type == MEDIA_CONTENT_UPDATE)
2958 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
2960 media_content_debug("content type : %d\n", media_type);
2963 media_content_debug("path : %s\n", path);
2965 media_content_debug("path not\n");
2968 media_content_debug("uuid : %s\n", uuid);
2970 media_content_debug("uuid not\n");
2973 media_content_debug("mime_type : %s\n", mime_type);
2975 media_content_debug("mime not\n");
2977 if (user_data) media_content_debug("String : %s\n", (char *)user_data);
2982 void _noti_cb_2(media_content_error_e error,
2984 media_content_db_update_item_type_e update_item,
2985 media_content_db_update_type_e update_type,
2986 media_content_type_e media_type,
2993 media_content_debug("noti_2 success! : %d\n", error);
2995 media_content_debug("error occured! : %d\n", error);
2997 media_content_debug("Noti_2 from PID(%d)\n", pid);
2999 g_main_loop_quit(g_loop);
3003 static media_content_noti_h noti_h;
3004 static media_content_noti_h noti_h_2;
3006 gboolean _send_noti_operations(gpointer data)
3008 int ret = MEDIA_CONTENT_ERROR_NONE;
3010 /* First of all, noti subscription */
3011 char *user_str = strdup("hi");
3012 media_content_add_db_updated_cb(_noti_cb, (void*)user_str, ¬i_h);
3013 media_content_add_db_updated_cb(_noti_cb_2, (void*)user_str, ¬i_h_2);
3015 /* media_info_insert_to_db */
3016 media_info_h media_item = NULL;
3017 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3019 ret = media_info_insert_to_db(path, &media_item);
3020 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3021 media_content_error("media_info_insert_to_db failed : %d", ret);
3022 media_info_destroy(media_item);
3026 media_content_debug("media_info_insert_to_db success");
3028 media_content_remove_db_updated_cb(noti_h);
3030 /* media_info_update_to_db */
3031 ret = media_info_update_to_db(media_item);
3032 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3033 media_content_error("media_info_update_to_db failed : %d\n", ret);
3034 media_info_destroy(media_item);
3038 media_info_destroy(media_item);
3045 int ret = MEDIA_CONTENT_ERROR_NONE;
3046 GSource *source = NULL;
3047 GMainContext *context = NULL;
3049 g_loop = g_main_loop_new(NULL, FALSE);
3050 context = g_main_loop_get_context(g_loop);
3051 source = g_idle_source_new();
3052 g_source_set_callback(source, _send_noti_operations, NULL, NULL);
3053 g_source_attach(source, context);
3055 g_main_loop_run(g_loop);
3056 g_main_loop_unref(g_loop);
3058 test_filter_destroy();
3059 media_content_remove_db_updated_cb(noti_h_2);
3064 bool media_face_test_cb(media_face_h face, void *user_data)
3066 char *face_id = NULL;
3067 char *media_id = NULL;
3068 unsigned int rect_x = 0;
3069 unsigned int rect_y = 0;
3070 unsigned int rect_w = 0;
3071 unsigned int rect_h = 0;
3072 media_content_orientation_e orientation = 0;
3073 char *face_tag = NULL;
3075 media_face_get_face_id(face, &face_id);
3076 media_face_get_media_id(face, &media_id);
3077 media_face_get_face_rect(face, &rect_x, &rect_y, &rect_w, &rect_h);
3078 media_face_get_orientation(face, &orientation);
3079 media_face_get_tag(face, &face_tag);
3081 media_content_debug("face_id [%s] media_id [%s]", face_id, media_id);
3082 media_content_debug("rect_x [%d] rect_y [%d] rect_w [%d] rect_h [%d] orientation [%d]", rect_x, rect_y, rect_w, rect_h, orientation);
3083 media_content_debug("tag [%s]", face_tag);
3085 if (user_data != NULL) {
3086 media_face_h new_face = NULL;
3087 media_face_clone(&new_face, face);
3089 GList **list = (GList**)user_data;
3090 *list = g_list_append(*list, new_face);
3094 SAFE_FREE(media_id);
3095 SAFE_FREE(face_tag);
3102 int ret = MEDIA_CONTENT_ERROR_NONE;
3103 filter_h filter = NULL;
3104 GList *all_item_list = NULL;
3107 ret = media_filter_create(&filter);
3108 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3110 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", MEDIA_CONTENT_COLLATE_DEFAULT);
3111 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3112 media_filter_destroy(filter);
3113 media_content_error("Fail to set condition");
3117 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
3118 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3119 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
3120 media_filter_destroy(filter);
3124 for (i = 0; i < g_list_length(all_item_list); i++) {
3125 media_info_h media_handle = NULL;
3126 char *media_id = NULL;
3129 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
3131 ret = media_info_get_media_id(media_handle, &media_id);
3132 if (ret != MEDIA_CONTENT_ERROR_NONE)
3133 media_content_error("media_info_get_media_id failed: %d", ret);
3135 ret = media_info_get_face_count_from_db(media_id, filter, &face_count);
3136 if (ret != MEDIA_CONTENT_ERROR_NONE)
3137 media_content_error("media_info_get_face_count_from_db failed: %d", ret);
3139 media_content_error("media_id [%s] face_count [%d]", media_id, face_count);
3141 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, NULL);
3142 if (ret != MEDIA_CONTENT_ERROR_NONE)
3143 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
3145 media_info_destroy(media_handle);
3148 media_filter_destroy(filter);
3153 int test_face_add_del(void)
3155 int ret = MEDIA_CONTENT_ERROR_NONE;
3156 char *media_id = "ecca7366-e085-41d8-a12b-cbdfc2b9c5fc";
3159 media_face_h face = NULL;
3161 char *face_tag = "test_face_tag";
3163 ret = media_face_create(media_id, &face);
3164 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_face_create");
3166 ret = media_face_set_face_rect(face, 10, 12, 50, 100);
3167 if (ret != MEDIA_CONTENT_ERROR_NONE)
3168 media_content_error("media_face_set_face_rect failed: %d", ret);
3170 ret = media_face_set_orientation(face, 5);
3171 if (ret != MEDIA_CONTENT_ERROR_NONE)
3172 media_content_error("media_face_set_orientation failed: %d", ret);
3174 ret = media_face_set_tag(face, face_tag);
3175 if (ret != MEDIA_CONTENT_ERROR_NONE)
3176 media_content_error("media_face_set_tag failed: %d", ret);
3178 ret = media_face_insert_to_db(face);
3179 if (ret != MEDIA_CONTENT_ERROR_NONE)
3180 media_content_error("media_face_insert_to_db failed: %d", ret);
3182 ret = media_face_destroy(face);
3183 if (ret != MEDIA_CONTENT_ERROR_NONE)
3184 media_content_error("media_face_destroy failed: %d", ret);
3187 GList *all_item_list = NULL;
3188 filter_h filter = NULL;
3189 ret = media_filter_create(&filter);
3190 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3192 ret = media_filter_set_condition(filter, "MEDIA_FACE_TAG IS NOT NULL", MEDIA_CONTENT_COLLATE_DEFAULT);
3193 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3194 media_filter_destroy(filter);
3195 media_content_error("Fail to set condition");
3199 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, &all_item_list);
3201 if (g_list_length(all_item_list) > 0) {
3202 media_face_h face_handle = NULL;
3203 face_handle = (media_face_h)g_list_nth_data(all_item_list, 0);
3205 ret = media_face_set_face_rect(face_handle, 20, 22, 70, 70);
3206 if (ret != MEDIA_CONTENT_ERROR_NONE)
3207 media_content_error("media_face_set_face_rect failed: %d", ret);
3208 ret = media_face_set_orientation(face_handle, 3);
3209 if (ret != MEDIA_CONTENT_ERROR_NONE)
3210 media_content_error("media_face_set_orientation failed: %d", ret);
3211 ret = media_face_set_tag(face_handle, NULL);
3212 if (ret != MEDIA_CONTENT_ERROR_NONE)
3213 media_content_error("media_face_set_tag failed: %d", ret);
3214 ret = media_face_update_to_db(face_handle);
3215 if (ret != MEDIA_CONTENT_ERROR_NONE)
3216 media_content_error("media_face_update_to_db failed: %d", ret);
3218 media_face_destroy(face_handle);
3221 media_filter_destroy(filter);
3224 char *face_id = "5e58a3a8-f0b2-4c29-b799-b49a70dc2313";
3227 ret = media_face_delete_from_db(face_id);
3232 #ifdef _USE_TVPD_MODE
3233 filter_h g_tv_filter = NULL;
3235 int test_tv_filter_create(void)
3237 media_content_debug("\n============Filter Create============\n\n");
3239 int ret = MEDIA_CONTENT_ERROR_NONE;
3241 ret = media_filter_create(&g_tv_filter);
3243 ret = media_filter_set_storage(g_tv_filter, "0a22a163-e634-4a2e-ba14-0469a969eea0");
3245 ret = media_filter_set_order(g_tv_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_STORAGE_ID, MEDIA_CONTENT_COLLATE_DEFAULT);
3250 int test_tv_filter_destroy(void)
3252 media_content_debug("\n============Filter Destroy============\n\n");
3254 int ret = MEDIA_CONTENT_ERROR_NONE;
3256 ret = media_filter_destroy(g_tv_filter);
3261 bool pvr_item_cb(media_pvr_h pvr, void *user_data)
3263 int ret = MEDIA_CONTENT_ERROR_NONE;
3264 char *c_value = NULL;
3266 bool b_value = false;
3267 unsigned long long l_value = 0;
3270 media_content_debug("NO Item");
3274 ret = media_pvr_get_media_id(pvr, &c_value);
3275 if (ret != MEDIA_CONTENT_ERROR_NONE)
3276 media_content_error("Fail to media_pvr_get_media_id");
3277 media_content_debug("media_id [%s]", c_value);
3280 ret = media_pvr_get_channel_name(pvr, &c_value);
3281 if (ret != MEDIA_CONTENT_ERROR_NONE)
3282 media_content_error("Fail to media_pvr_get_channel_name");
3283 media_content_debug("channel_name [%s]", c_value);
3286 ret = media_pvr_get_program_title(pvr, &c_value);
3287 if (ret != MEDIA_CONTENT_ERROR_NONE)
3288 media_content_error("Fail to media_pvr_get_program_title");
3289 media_content_debug("program_title [%s]", c_value);
3292 ret = media_pvr_get_program_crid(pvr, &c_value);
3293 if (ret != MEDIA_CONTENT_ERROR_NONE)
3294 media_content_error("Fail to media_pvr_get_program_crid");
3295 media_content_debug("program_crid [%s]", c_value);
3298 ret = media_pvr_get_guidance(pvr, &c_value);
3299 if (ret != MEDIA_CONTENT_ERROR_NONE)
3300 media_content_error("Fail to media_pvr_get_guidance");
3301 media_content_debug("guidance [%s]", c_value);
3304 ret = media_pvr_get_synopsis(pvr, &c_value);
3305 if (ret != MEDIA_CONTENT_ERROR_NONE)
3306 media_content_error("Fail to media_pvr_get_synopsis");
3307 media_content_debug("synopsis [%s]", c_value);
3310 ret = media_pvr_get_genre(pvr, &c_value);
3311 if (ret != MEDIA_CONTENT_ERROR_NONE)
3312 media_content_error("Fail to media_pvr_get_synopsis");
3313 media_content_debug("genre [%s]", c_value);
3316 ret = media_pvr_get_language(pvr, &c_value);
3317 if (ret != MEDIA_CONTENT_ERROR_NONE)
3318 media_content_error("Fail to media_pvr_get_language");
3319 media_content_debug("language [%s]", c_value);
3322 ret = media_pvr_get_path(pvr, &c_value);
3323 if (ret != MEDIA_CONTENT_ERROR_NONE)
3324 media_content_error("Fail to media_pvr_get_path");
3325 media_content_debug("path [%s]", c_value);
3328 ret = media_pvr_get_storage_id(pvr, &c_value);
3329 if (ret != MEDIA_CONTENT_ERROR_NONE)
3330 media_content_error("Fail to media_pvr_get_storage_id");
3331 media_content_debug("storage_id [%s]", c_value);
3334 ret = media_pvr_get_size(pvr, &l_value);
3335 if (ret != MEDIA_CONTENT_ERROR_NONE)
3336 media_content_error("Fail to media_pvr_get_size");
3337 media_content_debug("size [%lld]", l_value);
3339 ret = media_pvr_get_timezone(pvr, &i_value);
3340 if (ret != MEDIA_CONTENT_ERROR_NONE)
3341 media_content_error("Fail to media_pvr_get_timezone");
3342 media_content_debug("timezone [%d]", i_value);
3344 ret = media_pvr_get_ptc(pvr, &i_value);
3345 if (ret != MEDIA_CONTENT_ERROR_NONE)
3346 media_content_error("Fail to media_pvr_get_ptc");
3347 media_content_debug("ptc [%d]", i_value);
3349 ret = media_pvr_get_major(pvr, &i_value);
3350 if (ret != MEDIA_CONTENT_ERROR_NONE)
3351 media_content_error("Fail to media_pvr_get_major");
3352 media_content_debug("[%d]", i_value);
3354 ret = media_pvr_get_minor(pvr, &i_value);
3355 if (ret != MEDIA_CONTENT_ERROR_NONE)
3356 media_content_error("Fail to media_pvr_get_minor");
3357 media_content_debug("minor [%d]", i_value);
3359 ret = media_pvr_get_channel_type(pvr, &i_value);
3360 if (ret != MEDIA_CONTENT_ERROR_NONE)
3361 media_content_error("Fail to media_pvr_get_channel_type");
3362 media_content_debug("channel_type [%d]", i_value);
3364 ret = media_pvr_get_program_num(pvr, &i_value);
3365 if (ret != MEDIA_CONTENT_ERROR_NONE)
3366 media_content_error("Fail to media_pvr_get_program_num");
3367 media_content_debug("program_num [%d]", i_value);
3369 unsigned int ui_value = 0;
3370 ret = media_pvr_get_service_profile(pvr, &ui_value);
3371 if (ret != MEDIA_CONTENT_ERROR_NONE)
3372 media_content_error("Fail to media_pvr_get_service_profile");
3373 media_content_debug("service_profile [%u]", ui_value);
3375 ret = media_pvr_get_duration(pvr, &i_value);
3376 if (ret != MEDIA_CONTENT_ERROR_NONE)
3377 media_content_error("Fail to media_pvr_get_duration");
3378 media_content_debug("duration [%d]", i_value);
3380 ret = media_pvr_get_embargo_time(pvr, &i_value);
3381 if (ret != MEDIA_CONTENT_ERROR_NONE)
3382 media_content_error("Fail to media_pvr_get_embargo_time");
3383 media_content_debug("embargo_time [%d]", i_value);
3385 ret = media_pvr_get_expiry_time(pvr, &i_value);
3386 if (ret != MEDIA_CONTENT_ERROR_NONE)
3387 media_content_error("Fail to media_pvr_get_expiry_time");
3388 media_content_debug("expiry_time [%d]", i_value);
3390 ret = media_pvr_get_parental_rating(pvr, &i_value);
3391 if (ret != MEDIA_CONTENT_ERROR_NONE)
3392 media_content_error("Fail to media_pvr_get_parental_rating");
3393 media_content_debug("parental_rating [%d]", i_value);
3395 ret = media_pvr_get_start_time(pvr, &i_value);
3396 if (ret != MEDIA_CONTENT_ERROR_NONE)
3397 media_content_error("Fail to media_pvr_get_start_time");
3398 media_content_debug("start_time [%d]", i_value);
3400 ret = media_pvr_get_program_start_time(pvr, &i_value);
3401 if (ret != MEDIA_CONTENT_ERROR_NONE)
3402 media_content_error("Fail to media_pvr_get_program_start_time");
3403 media_content_debug("program_start_time [%d]", i_value);
3405 ret = media_pvr_get_program_end_time(pvr, &i_value);
3406 if (ret != MEDIA_CONTENT_ERROR_NONE)
3407 media_content_error("Fail to media_pvr_get_program_end_time");
3408 media_content_debug("program_end_time [%d]", i_value);
3410 ret = media_pvr_get_program_date(pvr, &i_value);
3411 if (ret != MEDIA_CONTENT_ERROR_NONE)
3412 media_content_error("Fail to media_pvr_get_program_date");
3413 media_content_debug("program_date [%d]", i_value);
3415 ret = media_pvr_get_timer_record(pvr, &b_value);
3416 if (ret != MEDIA_CONTENT_ERROR_NONE)
3417 media_content_error("Fail to media_pvr_get_timer_record");
3418 media_content_debug("timer_record [%d]", b_value);
3420 ret = media_pvr_get_series_record(pvr, &b_value);
3421 if (ret != MEDIA_CONTENT_ERROR_NONE)
3422 media_content_error("Fail to media_pvr_get_series_record");
3423 media_content_debug("series_record [%d]", b_value);
3425 ret = media_pvr_get_hd(pvr, &i_value);
3426 if (ret != MEDIA_CONTENT_ERROR_NONE)
3427 media_content_error("Fail to media_pvr_get_hd");
3428 media_content_debug("hd [%d]", i_value);
3430 ret = media_pvr_get_subtitle(pvr, &b_value);
3431 if (ret != MEDIA_CONTENT_ERROR_NONE)
3432 media_content_error("Fail to media_pvr_get_subtitle");
3433 media_content_debug("subtitle [%d]", b_value);
3435 ret = media_pvr_get_ttx(pvr, &b_value);
3436 if (ret != MEDIA_CONTENT_ERROR_NONE)
3437 media_content_error("Fail to media_pvr_get_ttx");
3438 media_content_debug("ttx [%d]", b_value);
3440 ret = media_pvr_get_ad(pvr, &b_value);
3441 if (ret != MEDIA_CONTENT_ERROR_NONE)
3442 media_content_error("Fail to media_pvr_get_ad");
3443 media_content_debug("ad [%d]", b_value);
3445 ret = media_pvr_get_hard_of_hearing_radio(pvr, &b_value);
3446 if (ret != MEDIA_CONTENT_ERROR_NONE)
3447 media_content_error("Fail to media_pvr_get_hard_of_hearing_radio");
3448 media_content_debug("hard_of_hearing_radio [%d]", b_value);
3450 ret = media_pvr_get_data_service(pvr, &b_value);
3451 if (ret != MEDIA_CONTENT_ERROR_NONE)
3452 media_content_error("Fail to media_pvr_get_data_service");
3453 media_content_debug("data_service [%d]", b_value);
3455 ret = media_pvr_get_content_lock(pvr, &b_value);
3456 if (ret != MEDIA_CONTENT_ERROR_NONE)
3457 media_content_error("Fail to media_pvr_get_content_lock");
3458 media_content_debug("content_lock [%d]", b_value);
3460 ret = media_pvr_get_content_watch(pvr, &b_value);
3461 if (ret != MEDIA_CONTENT_ERROR_NONE)
3462 media_content_error("Fail to media_pvr_get_content_watch");
3463 media_content_debug("content_watch [%d]", b_value);
3465 ret = media_pvr_get_has_audio_only(pvr, &b_value);
3466 if (ret != MEDIA_CONTENT_ERROR_NONE)
3467 media_content_error("Fail to media_pvr_get_has_audio_only");
3468 media_content_debug("has_audio_only [%d]", b_value);
3470 ret = media_pvr_get_is_local_record(pvr, &b_value);
3471 if (ret != MEDIA_CONTENT_ERROR_NONE)
3472 media_content_error("Fail to media_pvr_get_is_local_record");
3473 media_content_debug("is_local_record [%d]", b_value);
3475 ret = media_pvr_get_resolution(pvr, (media_pvr_resolution_e*)&i_value);
3476 if (ret != MEDIA_CONTENT_ERROR_NONE)
3477 media_content_error("Fail to media_pvr_get_resolution");
3478 media_content_debug("resolution [%d]", i_value);
3480 ret = media_pvr_get_aspectratio(pvr, (media_pvr_aspectratio_e*)&i_value);
3481 if (ret != MEDIA_CONTENT_ERROR_NONE)
3482 media_content_error("Fail to media_pvr_get_aspectratio");
3483 media_content_debug("aspectratio [%d]", i_value);
3485 ret = media_pvr_get_highlight(pvr, &b_value);
3486 if (ret != MEDIA_CONTENT_ERROR_NONE)
3487 media_content_error("Fail to media_pvr_get_highlight");
3488 media_content_debug("highlight [%d]", b_value);
3496 int ret = MEDIA_CONTENT_ERROR_NONE;
3497 int media_count = 0;
3499 media_content_debug("\n============PVR Test============\n\n");
3501 test_tv_filter_create();
3503 ret = media_pvr_get_media_count_from_db(g_tv_filter, &media_count);
3504 if (ret != MEDIA_CONTENT_ERROR_NONE)
3505 media_content_error("media_pvr_get_media_count_from_db failed: %d", ret);
3507 media_content_debug("media_count : [%d]", media_count);
3509 ret = media_pvr_foreach_media_from_db(g_tv_filter, pvr_item_cb, NULL);
3510 if (ret != MEDIA_CONTENT_ERROR_NONE)
3511 media_content_error("media_pvr_foreach_media_from_db is failed");
3513 test_tv_filter_destroy();
3518 int test_pvr_update_db(void)
3520 int ret = MEDIA_CONTENT_ERROR_NONE;
3521 media_pvr_h pvr = NULL;
3523 ret = media_pvr_get_pvr_from_db("ff9b5a9a-a7b4-47f4-8255-84e007e25f13", &pvr);
3524 if (ret != MEDIA_CONTENT_ERROR_NONE)
3525 media_content_error("media_pvr_get_pvr_from_db failed: %d", ret);
3527 ret = media_pvr_set_content_lock(pvr, TRUE);
3528 if (ret != MEDIA_CONTENT_ERROR_NONE)
3529 media_content_error("Fail to media_pvr_set_content_lock");
3531 ret = media_pvr_set_content_watch(pvr, TRUE);
3532 if (ret != MEDIA_CONTENT_ERROR_NONE)
3533 media_content_error("Fail to media_pvr_set_content_watch");
3535 ret = media_pvr_set_program_title(pvr, "TEST TITLE");
3536 if (ret != MEDIA_CONTENT_ERROR_NONE)
3537 media_content_error("Fail to media_pvr_set_program_title");
3539 ret = media_pvr_set_highlight(pvr, TRUE);
3540 if (ret != MEDIA_CONTENT_ERROR_NONE)
3541 media_content_error("Fail to media_pvr_set_highlight");
3543 ret = media_pvr_update_to_db(pvr);
3544 if (ret != MEDIA_CONTENT_ERROR_NONE)
3545 media_content_error("Fail to media_pvr_update_to_db");
3548 media_pvr_destroy(pvr);
3554 int main(int argc, char *argv[])
3556 int ret = MEDIA_CONTENT_ERROR_NONE;
3558 media_content_debug("--- content manager test start ---\n\n");
3560 ret = test_connect_database();
3561 if (ret != MEDIA_CONTENT_ERROR_NONE)
3562 return MEDIA_CONTENT_ERROR_NONE;
3563 #ifdef _USE_TVPD_MODE
3566 test_pvr_update_db();
3572 ret = test_start_face_detection(FALSE);
3573 if (ret != MEDIA_CONTENT_ERROR_NONE)
3577 if (ret != MEDIA_CONTENT_ERROR_NONE)
3580 ret = test_gallery_scenario();
3581 if (ret != MEDIA_CONTENT_ERROR_NONE)
3584 ret = test_get_all_music_files();
3585 if (ret != MEDIA_CONTENT_ERROR_NONE)
3588 ret = test_media_info_operation();
3589 if (ret != MEDIA_CONTENT_ERROR_NONE)
3592 ret = test_folder_operation();
3593 if (ret != MEDIA_CONTENT_ERROR_NONE)
3596 ret = test_playlist_operation();
3597 if (ret != MEDIA_CONTENT_ERROR_NONE)
3600 ret = test_tag_operation();
3601 if (ret != MEDIA_CONTENT_ERROR_NONE)
3604 ret = test_bookmark_operation();
3605 if (ret != MEDIA_CONTENT_ERROR_NONE)
3608 ret = test_album_list();
3609 if (ret != MEDIA_CONTENT_ERROR_NONE)
3612 ret = test_group_operation();
3613 if (ret != MEDIA_CONTENT_ERROR_NONE)
3616 ret = test_update_operation();
3617 if (ret != MEDIA_CONTENT_ERROR_NONE)
3620 ret = test_insert();
3621 if (ret != MEDIA_CONTENT_ERROR_NONE)
3625 if (ret != MEDIA_CONTENT_ERROR_NONE)
3628 ret = test_create_thumbnail(TRUE);
3629 if (ret != MEDIA_CONTENT_ERROR_NONE)
3632 ret = test_extrace_face(TRUE);
3633 if (ret != MEDIA_CONTENT_ERROR_NONE)
3636 ret = test_request_update_db();
3637 if (ret != MEDIA_CONTENT_ERROR_NONE)
3641 if (ret != MEDIA_CONTENT_ERROR_NONE)
3644 ret = test_batch_operations();
3645 if (ret != MEDIA_CONTENT_ERROR_NONE)
3646 return MEDIA_CONTENT_ERROR_NONE;
3648 ret = test_scan_file();
3649 if (ret != MEDIA_CONTENT_ERROR_NONE)
3650 return MEDIA_CONTENT_ERROR_NONE;
3652 ret = test_scan_dir(true);
3653 if (ret != MEDIA_CONTENT_ERROR_NONE)
3654 return MEDIA_CONTENT_ERROR_NONE;
3657 if (ret != MEDIA_CONTENT_ERROR_NONE)
3658 return MEDIA_CONTENT_ERROR_NONE;
3661 if (ret != MEDIA_CONTENT_ERROR_NONE)
3662 return MEDIA_CONTENT_ERROR_NONE;
3664 ret = test_face_add_del();
3665 if (ret != MEDIA_CONTENT_ERROR_NONE)
3666 return MEDIA_CONTENT_ERROR_NONE;
3668 ret = test_playlist_operation_v2();
3669 if (ret != MEDIA_CONTENT_ERROR_NONE)
3670 return MEDIA_CONTENT_ERROR_NONE;
3672 ret = test_bookmark_operation_v2();
3673 if (ret != MEDIA_CONTENT_ERROR_NONE)
3674 return MEDIA_CONTENT_ERROR_NONE;
3676 ret = test_tag_operation_v2();
3677 if (ret != MEDIA_CONTENT_ERROR_NONE)
3678 return MEDIA_CONTENT_ERROR_NONE;
3681 ret = test_disconnect_database();
3682 if (ret != MEDIA_CONTENT_ERROR_NONE)
3685 media_content_debug("--- content manager test end ---\n");