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 bool 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);
133 bool get_video_meta(video_meta_h video)
135 char *c_value = NULL;
137 int ret = MEDIA_CONTENT_ERROR_NONE;
139 media_content_debug("=== video meta ===");
141 ret = video_meta_get_media_id(video, &c_value);
142 if (ret != MEDIA_CONTENT_ERROR_NONE)
143 media_content_error("error when get meta : [%d]", ret);
144 media_content_debug("video_id : [%s]", c_value);
147 ret = video_meta_get_album(video, &c_value);
148 if (ret != MEDIA_CONTENT_ERROR_NONE)
149 media_content_error("error when get meta : [%d]", ret);
150 media_content_debug("album : [%s]", c_value);
153 ret = video_meta_get_artist(video, &c_value);
154 if (ret != MEDIA_CONTENT_ERROR_NONE)
155 media_content_error("error when get meta : [%d]", ret);
156 media_content_debug("artist : [%s]", c_value);
159 ret = video_meta_get_album_artist(video, &c_value);
160 if (ret != MEDIA_CONTENT_ERROR_NONE)
161 media_content_error("error when get meta : [%d]", ret);
162 media_content_debug("album_artist : [%s]", c_value);
165 ret = video_meta_get_genre(video, &c_value);
166 if (ret != MEDIA_CONTENT_ERROR_NONE)
167 media_content_error("error when get meta : [%d]", ret);
168 media_content_debug("genre : [%s]", c_value);
171 ret = video_meta_get_composer(video, &c_value);
172 if (ret != MEDIA_CONTENT_ERROR_NONE)
173 media_content_error("error when get meta : [%d]", ret);
174 media_content_debug("omposer : [%s]", c_value);
177 ret = video_meta_get_year(video, &c_value);
178 if (ret != MEDIA_CONTENT_ERROR_NONE)
179 media_content_error("error when get meta : [%d]", ret);
180 media_content_debug("year : [%s]", c_value);
183 ret = video_meta_get_recorded_date(video, &c_value);
184 if (ret != MEDIA_CONTENT_ERROR_NONE)
185 media_content_error("error when get meta : [%d]", ret);
186 media_content_debug("recorded_date : [%s]", c_value);
189 ret = video_meta_get_copyright(video, &c_value);
190 if (ret != MEDIA_CONTENT_ERROR_NONE)
191 media_content_error("error when get meta : [%d]", ret);
192 media_content_debug("copyright : [%s]", c_value);
195 ret = video_meta_get_track_num(video, &c_value);
196 if (ret != MEDIA_CONTENT_ERROR_NONE)
197 media_content_error("error when get meta : [%d]", ret);
198 media_content_debug("track_num : [%s]", c_value);
201 ret = video_meta_get_bit_rate(video, &i_value);
202 if (ret != MEDIA_CONTENT_ERROR_NONE)
203 media_content_error("error when get meta : [%d]", ret);
204 media_content_debug("bitrate : [%d]", i_value);
206 ret = video_meta_get_duration(video, &i_value);
207 if (ret != MEDIA_CONTENT_ERROR_NONE)
208 media_content_error("error when get meta : [%d]", ret);
209 media_content_debug("duration : [%d]", i_value);
211 ret = video_meta_get_width(video, &i_value);
212 if (ret != MEDIA_CONTENT_ERROR_NONE)
213 media_content_error("error when get meta : [%d]", ret);
214 media_content_debug("width : [%d]", i_value);
216 ret = video_meta_get_height(video, &i_value);
217 if (ret != MEDIA_CONTENT_ERROR_NONE)
218 media_content_error("error when get meta : [%d]", ret);
219 media_content_debug("height : [%d]", i_value);
224 bool gallery_folder_list_cb(media_folder_h folder, void *user_data)
226 media_folder_h new_folder = NULL;
227 media_folder_clone(&new_folder, folder);
229 GList **list = (GList**)user_data;
230 *list = g_list_append(*list, new_folder);
235 bool gallery_media_item_cb(media_info_h media, void *user_data)
237 media_info_h new_media = NULL;
238 media_info_clone(&new_media, media);
240 GList **list = (GList**)user_data;
241 *list = g_list_append(*list, new_media);
246 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
248 media_tag_h new_tag = NULL;
249 media_tag_clone(&new_tag, tag);
251 GList **list = (GList**)user_data;
252 *list = g_list_append(*list, new_tag);
257 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
259 media_bookmark_h new_bm = NULL;
260 int ret = MEDIA_CONTENT_ERROR_NONE;
262 ret = media_bookmark_clone(&new_bm, bookmark);
263 if (ret != MEDIA_CONTENT_ERROR_NONE)
264 media_content_error("error media_bookmark_clone : [%d]", ret);
266 GList **list = (GList**)user_data;
267 *list = g_list_append(*list, new_bm);
272 bool media_item_cb(media_info_h media, void *user_data)
274 char *c_value = NULL;
275 char *media_id = NULL;
276 media_content_type_e media_type = 0;
277 int ret = MEDIA_CONTENT_ERROR_NONE;
280 media_content_debug("NO Item");
284 ret = media_info_get_media_type(media, &media_type);
285 if (ret != MEDIA_CONTENT_ERROR_NONE)
286 media_content_error("error when get info : [%d]", ret);
287 media_content_debug("media_type : [%d]", media_type);
289 ret = media_info_get_media_id(media, &media_id);
290 if (ret != MEDIA_CONTENT_ERROR_NONE)
291 media_content_error("error when get info : [%d]", ret);
292 media_content_debug("media_id : [%s]", media_id);
294 ret = media_info_get_file_path(media, &c_value);
295 if (ret != MEDIA_CONTENT_ERROR_NONE)
296 media_content_error("error when get info : [%d]", ret);
297 media_content_debug("file_path : [%s]", c_value);
303 bool b_value = false;
304 unsigned long long size = 0;
306 if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
309 if (media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE) {
310 get_audio_meta(audio);
311 ret = audio_meta_destroy(audio);
312 if (ret != MEDIA_CONTENT_ERROR_NONE)
313 media_content_error("error audio_meta_destroy : [%d]", ret);
315 media_content_error("[audio_error]");
317 } else if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
319 media_content_orientation_e orientation = 0;
320 bool is_burst_shot = false;
321 char *burst_id = NULL;
322 char *weather = NULL;
324 if (media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE) {
325 ret = image_meta_get_orientation(image, &orientation);
326 if (ret != MEDIA_CONTENT_ERROR_NONE)
327 media_content_error("error image_meta_get_orientation : [%d]", ret);
329 media_content_debug("[image] orientation : %d", orientation);
331 ret = image_meta_is_burst_shot(image, &is_burst_shot);
332 if (ret != MEDIA_CONTENT_ERROR_NONE)
333 media_content_error("error image_meta_is_burst_shot : [%d]", ret);
335 ret = image_meta_get_burst_id(image, &burst_id);
336 if (ret != MEDIA_CONTENT_ERROR_NONE)
337 media_content_error("error image_meta_get_burst_id : [%d]", ret);
339 media_content_debug("[image] burst_id : [%s]", burst_id);
344 ret = image_meta_destroy(image);
345 if (ret != MEDIA_CONTENT_ERROR_NONE)
346 media_content_error("error image_meta_destroy : [%d]", ret);
348 media_content_error("[image_error]");
350 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
353 if (media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE) {
354 get_video_meta(video);
355 ret = video_meta_destroy(video);
356 if (ret != MEDIA_CONTENT_ERROR_NONE)
357 media_content_error("error video_meta_destroy : [%d]", ret);
359 media_content_error("[video_error]");
362 media_content_debug("Other Content");
365 media_content_debug("=== media_info ===");
366 ret = media_info_get_file_path(media, &c_value);
367 if (ret != MEDIA_CONTENT_ERROR_NONE)
368 media_content_error("error when get info : [%d]", ret);
369 media_content_debug("file_path : [%s]", c_value);
372 ret = media_info_get_display_name(media, &c_value);
373 if (ret != MEDIA_CONTENT_ERROR_NONE)
374 media_content_error("error when get info : [%d]", ret);
375 media_content_debug("display_name : [%s]", c_value);
378 ret = media_info_get_mime_type(media, &c_value);
379 if (ret != MEDIA_CONTENT_ERROR_NONE)
380 media_content_error("error when get info : [%d]", ret);
381 media_content_debug("mime_type : [%s]", c_value);
384 ret = media_info_get_thumbnail_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("thumbnail_path : [%s]", c_value);
390 ret = media_info_get_description(media, &c_value);
391 if (ret != MEDIA_CONTENT_ERROR_NONE)
392 media_content_error("error when get info : [%d]", ret);
393 media_content_debug("description : [%s]", c_value);
396 ret = media_info_get_author(media, &c_value);
397 if (ret != MEDIA_CONTENT_ERROR_NONE)
398 media_content_error("error when get info : [%d]", ret);
399 media_content_debug("author : [%s]", c_value);
402 ret = media_info_get_provider(media, &c_value);
403 if (ret != MEDIA_CONTENT_ERROR_NONE)
404 media_content_error("error when get info : [%d]", ret);
405 media_content_debug("provider : [%s]", c_value);
408 ret = media_info_get_content_name(media, &c_value);
409 if (ret != MEDIA_CONTENT_ERROR_NONE)
410 media_content_error("error when get info : [%d]", ret);
411 media_content_debug("content_name : [%s]", c_value);
414 ret = media_info_get_category(media, &c_value);
415 if (ret != MEDIA_CONTENT_ERROR_NONE)
416 media_content_error("error when get info : [%d]", ret);
417 media_content_debug("category : [%s]", c_value);
420 ret = media_info_get_location_tag(media, &c_value);
421 if (ret != MEDIA_CONTENT_ERROR_NONE)
422 media_content_error("error when get info : [%d]", ret);
423 media_content_debug("location_tag : [%s]", c_value);
426 ret = media_info_get_age_rating(media, &c_value);
427 if (ret != MEDIA_CONTENT_ERROR_NONE)
428 media_content_error("error when get info : [%d]", ret);
429 media_content_debug("age_rating : [%s]", c_value);
432 ret = media_info_get_keyword(media, &c_value);
433 if (ret != MEDIA_CONTENT_ERROR_NONE)
434 media_content_error("error when get info : [%d]", ret);
435 media_content_debug("keyword : [%s]", c_value);
438 ret = media_info_get_size(media, &size);
439 if (ret != MEDIA_CONTENT_ERROR_NONE)
440 media_content_error("error when get info : [%d]", ret);
441 media_content_debug("size : [%lld]", size);
443 ret = media_info_get_added_time(media, &t_value);
444 if (ret != MEDIA_CONTENT_ERROR_NONE)
445 media_content_error("error when get info : [%d]", ret);
446 media_content_debug("added_time : [%ld]", t_value);
448 ret = media_info_get_modified_time(media, &t_value);
449 if (ret != MEDIA_CONTENT_ERROR_NONE)
450 media_content_error("error when get info : [%d]", ret);
451 media_content_debug("modified_time : [%ld]", t_value);
453 ret = media_info_get_timeline(media, &t_value);
454 if (ret != MEDIA_CONTENT_ERROR_NONE)
455 media_content_error("error when get info : [%d]", ret);
456 media_content_debug("timeline : [%ld]", t_value);
458 ret = media_info_get_rating(media, &i_value);
459 if (ret != MEDIA_CONTENT_ERROR_NONE)
460 media_content_error("error when get info : [%d]", ret);
461 media_content_debug("rating : [%d]", i_value);
463 ret = media_info_get_favorite(media, &b_value);
464 if (ret != MEDIA_CONTENT_ERROR_NONE)
465 media_content_error("error when get info : [%d]", ret);
466 media_content_debug("favorite : [%d]", b_value);
468 ret = media_info_is_drm(media, &b_value);
469 if (ret != MEDIA_CONTENT_ERROR_NONE)
470 media_content_error("error when get info : [%d]", ret);
471 media_content_debug("is_drm : [%d]", b_value);
473 ret = media_info_is_360_content(media, &b_value);
474 if (ret != MEDIA_CONTENT_ERROR_NONE)
475 media_content_error("error when get info : [%d]", ret);
476 media_content_debug("is_360 : [%d]", b_value);
478 ret = media_info_get_stitched_state(media, &i_value);
479 if (ret != MEDIA_CONTENT_ERROR_NONE)
480 media_content_error("error when get info : [%d]", ret);
481 media_content_debug("360 stitched : [%d]", i_value);
483 ret = media_info_get_stitched_engine(media, &i_value);
484 if (ret != MEDIA_CONTENT_ERROR_NONE)
485 media_content_error("error when get info : [%d]", ret);
486 media_content_debug("360 engine : [%d]", i_value);
488 ret = media_info_set_weather(media, "Sunny");
489 if (ret != MEDIA_CONTENT_ERROR_NONE) {
490 media_content_error("Fail to set weather");
493 ret = media_info_get_weather(media, &c_value);
494 if (ret != MEDIA_CONTENT_ERROR_NONE)
495 media_content_error("error when get info : [%d]", ret);
496 media_content_debug("weather : [%s]", c_value);
499 /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
500 /*ret = media_info_set_location_tag(media, "Test location tag");*/
501 /*media_info_update_to_db(media);*/
508 bool folder_list_cb(media_folder_h folder, void *user_data)
511 char *folder_id = NULL;
512 char *str_val = NULL;
514 media_content_storage_e storage_type;
516 media_folder_h *_folder = (media_folder_h*)user_data;
518 media_content_debug("===========================");
519 if (folder != NULL) {
521 media_folder_clone(_folder, folder);
523 if (media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE) {
524 media_content_error("[ERROR] media_folder_get_folder_id is failed");
527 media_content_debug("folder_id = [%s]", folder_id);
529 if (media_folder_get_parent_folder_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
530 media_content_error("[ERROR] media_folder_get_parent_folder_id is failed");
533 media_content_debug("parent_folder_id = [%s]", str_val);
535 if (media_folder_get_path(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
536 SAFE_FREE(folder_id);
537 media_content_error("[ERROR] media_folder_get_path is failed");
540 media_content_debug("folder_path = [%s]", str_val);
543 if (media_folder_get_name(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
544 SAFE_FREE(folder_id);
545 media_content_error("[ERROR] media_folder_get_name is failed");
548 media_content_debug("folder_name = [%s]", str_val);
551 if (media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE) {
552 SAFE_FREE(folder_id);
553 media_content_error("[ERROR] media_folder_get_storage_type is failed");
556 media_content_debug("storage_type = [%d]", storage_type);
558 if (media_folder_get_storage_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
559 SAFE_FREE(folder_id);
560 media_content_error("[ERROR] media_folder_get_name is failed");
563 media_content_debug("storage_id = [%s]", str_val);
565 if (media_folder_get_order(folder, &int_val) != MEDIA_CONTENT_ERROR_NONE) {
566 media_content_error("[ERROR] media_folder_get_order is failed");
569 media_content_debug("folder_order = [%d]", int_val);
571 if (media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE) {
572 SAFE_FREE(folder_id);
573 media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
577 if (media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
578 SAFE_FREE(folder_id);
579 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
583 SAFE_FREE(folder_id);
592 bool test_album_from_db(int album_id)
594 int ret = MEDIA_CONTENT_ERROR_NONE;
595 media_album_h album_h;
596 int test_album_id = 0;
597 char *album_name = NULL;
600 ret = media_album_get_album_from_db(album_id, &album_h);
601 if (ret != MEDIA_CONTENT_ERROR_NONE) {
602 media_content_error("error when get album");
606 if (media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE) {
607 media_album_destroy(album_h);
611 media_content_debug("test_album_id : [%d]", test_album_id);
613 if (media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
614 media_album_destroy(album_h);
618 media_content_debug("album_name : [%s]", album_name);
620 if (media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE) {
621 media_album_destroy(album_h);
622 /* fix prevent: Resource Leak */
623 SAFE_FREE(album_name);
627 media_content_debug("artist : [%s]", artist);
629 SAFE_FREE(album_name);
632 media_album_destroy(album_h);
637 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
640 char *playlist_name = NULL;
641 media_playlist_h playlist_h;
642 char *playlist_thumbnail_path = NULL;
644 media_content_debug("playlist_list_cb ======");
646 GList **list = (GList**)user_data;
649 if (playlist == NULL) {
650 media_content_debug(" playlist handle is NULL");
654 media_playlist_get_playlist_id(playlist, &playlist_id);
655 media_content_debug("playlist_id : %d", playlist_id);
656 /* 64bit build issue */
658 if (user_data != NULL)
659 *list = g_list_append(*list, (gpointer)playlist_id);
661 media_playlist_get_name(playlist, &playlist_name);
662 media_content_debug("playlist_name : %s", playlist_name);
663 SAFE_FREE(playlist_name);
665 media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
666 media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
667 SAFE_FREE(playlist_thumbnail_path);
669 media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
671 media_playlist_destroy(playlist_h);
676 bool tag_list_cb(media_tag_h tag, void *user_data)
679 char *tag_name = NULL;
680 int ret = MEDIA_CONTENT_ERROR_NONE;
683 media_content_debug(" tag handle is NULL");
687 ret = media_tag_get_tag_id(tag, &tag_id);
688 if (ret != MEDIA_CONTENT_ERROR_NONE)
689 media_content_error("error media_tag_get_tag_id : [%d]", ret);
691 media_content_debug("tag_id : %d", tag_id);
693 ret = media_tag_get_name(tag, &tag_name);
694 if (ret != MEDIA_CONTENT_ERROR_NONE)
695 media_content_error("error media_tag_get_name : [%d]", ret);
697 media_content_debug("tag_name : %s", tag_name);
703 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
705 media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
706 int ret = MEDIA_CONTENT_ERROR_NONE;
708 if (_bookmark != NULL && user_data != NULL) {
709 media_bookmark_h new_bookmark;
711 media_bookmark_clone(&new_bookmark, bookmark);
712 GList **list = (GList**)user_data;
713 *list = g_list_append(*list, new_bookmark);
716 if (_bookmark != NULL) {
721 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
722 if (ret != MEDIA_CONTENT_ERROR_NONE)
723 media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
725 media_content_debug("bookmark_id : %d", bookmark_id);
727 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
728 if (ret != MEDIA_CONTENT_ERROR_NONE)
729 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
731 media_content_debug("bookmark thumbnail_path : %s", name);
734 ret = media_bookmark_get_marked_time(bookmark, &time);
735 if (ret != MEDIA_CONTENT_ERROR_NONE)
736 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
738 media_content_debug("bookmark marked_time : %ld", time);
740 ret = media_bookmark_get_name(bookmark, &name);
741 if (ret != MEDIA_CONTENT_ERROR_NONE)
742 media_content_error("error media_bookmark_get_name : [%d]", ret);
744 media_content_debug("bookmark name : %s", name);
753 bool album_list_cb(media_album_h album, void *user_data)
756 char *album_name = NULL;
758 char *album_art = NULL;
760 int ret = MEDIA_CONTENT_ERROR_NONE;
761 filter_h filter = NULL;
764 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
766 ret = media_filter_create(&filter);
767 if (ret != MEDIA_CONTENT_ERROR_NONE) {
768 media_content_error("Fail to create filter");
771 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
772 if (ret != MEDIA_CONTENT_ERROR_NONE) {
773 media_filter_destroy(filter);
774 media_content_error("Fail to set condition");
777 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
778 if (ret != MEDIA_CONTENT_ERROR_NONE) {
779 media_filter_destroy(filter);
780 media_content_error("Fail to set order");
785 if (media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE) {
786 media_filter_destroy(filter);
790 media_content_debug("album_id : [%d]", album_id);
792 if (media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
793 media_filter_destroy(filter);
797 media_content_debug("album_name : [%s]", album_name);
798 SAFE_FREE(album_name);
800 if (media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE) {
801 media_filter_destroy(filter);
805 media_content_debug("artist : [%s]", artist);
808 if (media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE) {
809 media_filter_destroy(filter);
813 media_content_debug("album_art : [%s]", album_art);
814 SAFE_FREE(album_art);
816 if (media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE) {
817 media_filter_destroy(filter);
821 media_content_debug("media_count : [%d]", media_count);
823 if (media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
824 media_filter_destroy(filter);
828 test_album_from_db(album_id);
830 media_content_error("album item not Found!!");
833 media_filter_destroy(filter);
838 bool group_list_cb(const char *group_name, void *user_data)
841 int *idx = user_data;
843 media_content_debug("group item : [%s] [%d]", group_name, *idx);
845 if (media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
848 media_content_debug("media_count : [%d]", media_count);
850 if (media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
856 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
858 media_content_debug("playlist_member_id : [%d]", playlist_member_id);
859 /* 64bit build issue */
861 GList **list = (GList**)user_data;
863 *list = g_list_append(*list, (gpointer)playlist_member_id);
865 /*media_item_cb(media, user_data);*/
870 int test_filter_create(void)
872 media_content_debug("\n============Filter Create============\n\n");
874 int ret = MEDIA_CONTENT_ERROR_NONE;
876 /* Filter for media */
877 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
878 /*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*/
880 ret = media_filter_create(&g_filter);
882 /* Set condition and collate
883 * Condition string : You can make where statement of sql.
884 * Colation : You can use collation when comparing.
885 * Ex) In case of FILE_NAME='Samsung' as condition string,
886 * if you want to compare with NOCASE collation,
887 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
888 * if you want to compare in case-sensitive,
889 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
891 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
893 /* Collation of ordering
894 * If you want to get list, which is sorted by NOCASE,
895 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
897 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
899 /* Able to set multi column to set order */
901 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
902 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
903 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
904 ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
906 /* Filter for group */
907 const char *g_condition = "TAG_NAME like \"\%my\%\"";
908 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
910 ret = media_filter_create(&g_filter_g);
912 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
917 int test_filter_destroy(void)
919 media_content_debug("\n============Filter Create============\n\n");
921 int ret = MEDIA_CONTENT_ERROR_NONE;
923 ret = media_filter_destroy(g_filter);
928 int test_connect_database(void)
930 int ret = MEDIA_CONTENT_ERROR_NONE;
932 media_content_debug("\n============DB Connection Test============\n\n");
934 ret = media_content_connect();
936 if (ret == MEDIA_CONTENT_ERROR_NONE)
937 media_content_debug("connection is success\n\n");
939 media_content_error("connection is failed\n\n");
944 int test_gallery_scenario(void)
946 int ret = MEDIA_CONTENT_ERROR_NONE;
948 filter_h filter = NULL;
951 GList *folder_list = NULL;
952 media_folder_h folder_handle = NULL;
954 /* First, Get folder list */
955 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
956 if (ret != MEDIA_CONTENT_ERROR_NONE) {
957 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
960 media_content_debug("media_folder_foreach_folder_from_db success!!");
961 char *folder_id = NULL;
962 char *folder_name = NULL;
963 char *folder_path = NULL;
965 for (i = 0; i < g_list_length(folder_list); i++) {
966 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
968 ret = media_folder_get_folder_id(folder_handle, &folder_id);
969 if (ret != MEDIA_CONTENT_ERROR_NONE)
970 media_content_error("media_folder_get_folder_id failed: %d", ret);
971 ret = media_folder_get_name(folder_handle, &folder_name);
972 if (ret != MEDIA_CONTENT_ERROR_NONE)
973 media_content_error("media_folder_get_name failed: %d", ret);
974 ret = media_folder_get_path(folder_handle, &folder_path);
975 if (ret != MEDIA_CONTENT_ERROR_NONE)
976 media_content_error("media_folder_get_path failed: %d", ret);
978 media_content_debug("folder_id [%d] : %s", i, folder_id);
979 media_content_debug("folder_name [%d] : %s", i, folder_name);
980 media_content_debug("folder_path [%d] : %s", i, folder_path);
982 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
983 /* User should free these string */
984 SAFE_FREE(folder_id);
985 SAFE_FREE(folder_name);
986 SAFE_FREE(folder_path);
987 if (ret != MEDIA_CONTENT_ERROR_NONE) {
988 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
991 media_content_debug("media count [%d] : %d", i, count);
996 /* To check performance */
997 struct timeval start, end;
998 gettimeofday(&start, NULL);
1000 /* Second, Get all item list */
1001 media_info_h media_handle = NULL;
1002 GList *all_item_list = NULL;
1004 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1005 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1006 ret = media_filter_create(&filter);
1007 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1008 media_content_error("Fail to create filter");
1011 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1012 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1013 media_filter_destroy(filter);
1014 media_content_error("Fail to set condition");
1017 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1018 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1019 media_filter_destroy(filter);
1020 media_content_error("Fail to set order");
1024 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1025 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1026 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1027 media_filter_destroy(filter);
1030 media_content_debug("media_info_foreach_media_from_db success");
1031 media_content_type_e media_type;
1032 char *media_id = NULL;
1033 char *media_name = NULL;
1034 char *media_path = NULL;
1036 for (i = 0; i < g_list_length(all_item_list); i++) {
1037 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1039 ret = media_info_get_media_id(media_handle, &media_id);
1040 if (ret != MEDIA_CONTENT_ERROR_NONE)
1041 media_content_error("media_info_get_media_id failed: %d", ret);
1042 ret = media_info_get_media_type(media_handle, &media_type);
1043 if (ret != MEDIA_CONTENT_ERROR_NONE)
1044 media_content_error("media_info_get_media_type failed: %d", ret);
1045 ret = media_info_get_display_name(media_handle, &media_name);
1046 if (ret != MEDIA_CONTENT_ERROR_NONE)
1047 media_content_error("media_info_get_display_name failed: %d", ret);
1048 ret = media_info_get_file_path(media_handle, &media_path);
1049 if (ret != MEDIA_CONTENT_ERROR_NONE)
1050 media_content_error("media_info_get_file_path failed: %d", ret);
1052 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1053 image_meta_h image_handle;
1054 int width = 0, height = 0;
1055 media_content_orientation_e orientation = 0;
1056 char *datetaken = NULL;
1057 char *burst_id = NULL;
1059 ret = media_info_get_image(media_handle, &image_handle);
1060 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1061 media_content_error("media_info_get_image failed: %d", ret);
1063 ret = image_meta_get_width(image_handle, &width);
1064 if (ret != MEDIA_CONTENT_ERROR_NONE)
1065 media_content_error("error image_meta_get_width : [%d]", ret);
1066 ret = image_meta_get_height(image_handle, &height);
1067 if (ret != MEDIA_CONTENT_ERROR_NONE)
1068 media_content_error("error image_meta_get_height : [%d]", ret);
1069 ret = image_meta_get_orientation(image_handle, &orientation);
1070 if (ret != MEDIA_CONTENT_ERROR_NONE)
1071 media_content_error("error image_meta_get_orientation : [%d]", ret);
1072 ret = image_meta_get_date_taken(image_handle, &datetaken);
1073 if (ret != MEDIA_CONTENT_ERROR_NONE)
1074 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1075 ret = image_meta_get_burst_id(image_handle, &burst_id);
1076 if (ret != MEDIA_CONTENT_ERROR_NONE)
1077 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1079 media_content_debug("This is Image");
1080 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1083 SAFE_FREE(datetaken);
1084 SAFE_FREE(burst_id);
1085 ret = image_meta_destroy(image_handle);
1086 if (ret != MEDIA_CONTENT_ERROR_NONE)
1087 media_content_error("error image_meta_destroy : [%d]", ret);
1089 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1090 video_meta_h video_handle;
1091 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1094 ret = media_info_get_video(media_handle, &video_handle);
1095 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1096 media_content_error("media_info_get_video failed: %d", ret);
1098 ret = video_meta_get_artist(video_handle, &artist);
1099 if (ret != MEDIA_CONTENT_ERROR_NONE)
1100 media_content_error("error video_meta_get_artist : [%d]", ret);
1101 ret = video_meta_get_album(video_handle, &album);
1102 if (ret != MEDIA_CONTENT_ERROR_NONE)
1103 media_content_error("error video_meta_get_album : [%d]", ret);
1104 ret = video_meta_get_album_artist(video_handle, &album_artist);
1105 if (ret != MEDIA_CONTENT_ERROR_NONE)
1106 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1107 ret = video_meta_get_duration(video_handle, &duration);
1108 if (ret != MEDIA_CONTENT_ERROR_NONE)
1109 media_content_error("error video_meta_get_duration : [%d]", ret);
1111 media_content_debug("This is Video");
1112 media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d", title, album, artist, album_artist, duration);
1118 SAFE_FREE(album_artist);
1120 ret = video_meta_destroy(video_handle);
1121 if (ret != MEDIA_CONTENT_ERROR_NONE)
1122 media_content_error("error video_meta_destroy : [%d]", ret);
1125 SAFE_FREE(media_id);
1126 SAFE_FREE(media_name);
1127 SAFE_FREE(media_path);
1131 media_filter_destroy(filter);
1134 /* To check performance */
1135 gettimeofday(&end, NULL);
1136 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1137 media_content_debug("Time : %ld\n", time);
1139 /* Third, Get item list of a folder */
1140 GList *item_list = NULL;
1142 for (i = 0; i < g_list_length(folder_list); i++) {
1144 char *folder_id = NULL;
1145 char *folder_name = NULL;
1146 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1148 media_folder_get_folder_id(folder_handle, &folder_id);
1149 media_folder_get_name(folder_handle, &folder_name);
1151 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1152 SAFE_FREE(folder_id);
1153 SAFE_FREE(folder_name);
1155 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1156 media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1159 media_content_error("media_folder_foreach_media_from_db success!");
1160 char *media_id = NULL;
1161 char *media_name = NULL;
1162 char *media_path = NULL;
1163 media_content_type_e media_type = 0;
1165 for (j = 0; j < g_list_length(item_list); j++) {
1166 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1168 ret = media_info_get_media_id(media_handle, &media_id);
1169 if (ret != MEDIA_CONTENT_ERROR_NONE)
1170 media_content_error("media_info_get_media_id failed: %d", ret);
1171 ret = media_info_get_display_name(media_handle, &media_name);
1172 if (ret != MEDIA_CONTENT_ERROR_NONE)
1173 media_content_error("media_info_get_display_name failed: %d", ret);
1174 ret = media_info_get_file_path(media_handle, &media_path);
1175 if (ret != MEDIA_CONTENT_ERROR_NONE)
1176 media_content_error("media_info_get_file_path failed: %d", ret);
1177 ret = media_info_get_media_type(media_handle, &media_type);
1178 if (ret != MEDIA_CONTENT_ERROR_NONE)
1179 media_content_error("media_info_get_media_type failed: %d", ret);
1181 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1182 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1183 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1184 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1186 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1187 image_meta_h image_handle;
1188 int width = 0, height = 0;
1189 media_content_orientation_e orientation = 0;
1190 char *datetaken = NULL;
1192 ret = media_info_get_image(media_handle, &image_handle);
1193 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1194 media_content_error("media_info_get_image failed: %d", ret);
1196 ret = image_meta_get_width(image_handle, &width);
1197 if (ret != MEDIA_CONTENT_ERROR_NONE)
1198 media_content_error("error image_meta_get_width : [%d]", ret);
1199 ret = image_meta_get_height(image_handle, &height);
1200 if (ret != MEDIA_CONTENT_ERROR_NONE)
1201 media_content_error("error image_meta_get_height : [%d]", ret);
1202 ret = image_meta_get_orientation(image_handle, &orientation);
1203 if (ret != MEDIA_CONTENT_ERROR_NONE)
1204 media_content_error("error image_meta_get_orientation : [%d]", ret);
1205 ret = image_meta_get_date_taken(image_handle, &datetaken);
1206 if (ret != MEDIA_CONTENT_ERROR_NONE)
1207 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1209 media_content_debug("This is Image");
1210 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1213 SAFE_FREE(datetaken);
1214 ret = image_meta_destroy(image_handle);
1215 if (ret != MEDIA_CONTENT_ERROR_NONE)
1216 media_content_error("error image_meta_destroy : [%d]", ret);
1218 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1219 video_meta_h video_handle;
1220 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1223 ret = media_info_get_video(media_handle, &video_handle);
1224 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1225 media_content_error("media_info_get_video failed: %d", ret);
1227 ret = video_meta_get_artist(video_handle, &artist);
1228 if (ret != MEDIA_CONTENT_ERROR_NONE)
1229 media_content_error("error video_meta_get_artist : [%d]", ret);
1230 ret = video_meta_get_album(video_handle, &album);
1231 if (ret != MEDIA_CONTENT_ERROR_NONE)
1232 media_content_error("error video_meta_get_album : [%d]", ret);
1233 ret = video_meta_get_album_artist(video_handle, &album_artist);
1234 if (ret != MEDIA_CONTENT_ERROR_NONE)
1235 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1236 ret = video_meta_get_duration(video_handle, &duration);
1237 if (ret != MEDIA_CONTENT_ERROR_NONE)
1238 media_content_error("error video_meta_get_duration : [%d]", ret);
1240 media_content_debug("This is Video");
1241 media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d\n", title, album, artist, album_artist, duration);
1247 SAFE_FREE(album_artist);
1249 ret = video_meta_destroy(video_handle);
1250 if (ret != MEDIA_CONTENT_ERROR_NONE)
1251 media_content_error("error video_meta_destroy : [%d]", ret);
1253 /* Get bookmar list in case of video */
1254 media_bookmark_h bm_handle;
1255 GList *bm_list = NULL;
1257 ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1258 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1259 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1261 media_content_debug("media_info_foreach_bookmark_from_db success");
1265 for (k = 0; k < g_list_length(bm_list); k++) {
1266 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1268 char *thumb_path = NULL;
1270 ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1271 if (ret != MEDIA_CONTENT_ERROR_NONE)
1272 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1273 ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1274 if (ret != MEDIA_CONTENT_ERROR_NONE)
1275 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1277 media_content_debug("Bookmark time : %ld\nBookmar thumb: %s", marked_time, thumb_path);
1278 SAFE_FREE(thumb_path);
1281 /* Remove bookmark list */
1284 for (l = 0; l < g_list_length(bm_list); l++) {
1285 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1286 ret = media_bookmark_destroy(bm_handle);
1287 if (ret != MEDIA_CONTENT_ERROR_NONE)
1288 media_content_error("error media_bookmark_destroy : [%d]", ret);
1291 g_list_free(bm_list);
1297 SAFE_FREE(media_id);
1298 SAFE_FREE(media_name);
1299 SAFE_FREE(media_path);
1305 media_tag_h tag_handle = NULL;
1306 GList *tag_list = NULL;
1307 GList *media_list_in_tag = NULL;
1309 ret = media_tag_foreach_tag_from_db(filter, gallery_tag_item_cb, &tag_list);
1311 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1312 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1315 media_content_error("media_tag_foreach_tag_from_db success");
1316 char *tag_name = NULL;
1319 for (i = 0; i < g_list_length(tag_list); i++) {
1320 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1321 media_tag_get_tag_id(tag_handle, &tag_id);
1322 media_tag_get_name(tag_handle, &tag_name);
1324 media_content_debug("[%d] %s", tag_id, tag_name);
1326 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1327 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1328 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1331 media_content_error("media_tag_foreach_media_from_db success");
1333 media_info_h tag_media_handle;
1334 char *media_id = NULL;
1335 char *media_name = NULL;
1336 char *media_path = NULL;
1337 media_content_type_e media_type = 0;
1339 for (j = 0; j < g_list_length(media_list_in_tag); j++) {
1340 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1341 ret = media_info_get_media_id(tag_media_handle, &media_id);
1342 if (ret != MEDIA_CONTENT_ERROR_NONE)
1343 media_content_error("media_info_get_media_id failed: %d", ret);
1344 ret = media_info_get_display_name(tag_media_handle, &media_name);
1345 if (ret != MEDIA_CONTENT_ERROR_NONE)
1346 media_content_error("media_info_get_display_name failed: %d", ret);
1347 ret = media_info_get_file_path(tag_media_handle, &media_path);
1348 if (ret != MEDIA_CONTENT_ERROR_NONE)
1349 media_content_error("media_info_get_file_path failed: %d", ret);
1350 ret = media_info_get_media_type(tag_media_handle, &media_type);
1351 if (ret != MEDIA_CONTENT_ERROR_NONE)
1352 media_content_error("media_info_get_media_type failed: %d", ret);
1354 media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1355 media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1356 media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1357 media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1359 SAFE_FREE(media_id);
1360 SAFE_FREE(media_name);
1361 SAFE_FREE(media_path);
1363 SAFE_FREE(tag_name);
1367 /* Remove folder list */
1369 for (i = 0; i < g_list_length(folder_list); i++) {
1370 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1371 media_folder_destroy(folder_handle);
1374 g_list_free(folder_list);
1377 /* Remove all items list */
1378 if (all_item_list) {
1379 for (i = 0; i < g_list_length(all_item_list); i++) {
1380 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1381 ret = media_info_destroy(media_handle);
1382 if (ret != MEDIA_CONTENT_ERROR_NONE)
1383 media_content_error("media_info_destroy failed: %d", ret);
1386 g_list_free(all_item_list);
1389 /* Remove items list */
1391 for (i = 0; i < g_list_length(item_list); i++) {
1392 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1393 ret = media_info_destroy(media_handle);
1394 if (ret != MEDIA_CONTENT_ERROR_NONE)
1395 media_content_error("media_info_destroy failed: %d", ret);
1398 g_list_free(item_list);
1401 /* Remove tag list */
1403 for (i = 0; i < g_list_length(tag_list); i++) {
1404 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1405 ret = media_tag_destroy(tag_handle);
1406 if (ret != MEDIA_CONTENT_ERROR_NONE)
1407 media_content_error("error media_tag_destroy : [%d]", ret);
1410 g_list_free(tag_list);
1413 /* Remove media list in a tag */
1414 if (media_list_in_tag) {
1415 for (i = 0; i < g_list_length(media_list_in_tag); i++) {
1416 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1417 ret = media_info_destroy(media_handle);
1418 if (ret != MEDIA_CONTENT_ERROR_NONE)
1419 media_content_error("media_info_destroy failed: %d", ret);
1422 g_list_free(media_list_in_tag);
1425 return MEDIA_CONTENT_ERROR_NONE;
1428 /*Get All Music file. sort by Title and not case sensitive*/
1429 int test_get_all_music_files(void)
1431 int ret = MEDIA_CONTENT_ERROR_NONE;
1432 int media_count = 0;
1436 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1438 ret = media_filter_create(&filter);
1439 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1440 media_content_error("Fail to create filter");
1443 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1444 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1445 media_filter_destroy(filter);
1446 media_content_error("Fail to set condition");
1449 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1450 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1451 media_filter_destroy(filter);
1452 media_content_error("Fail to set order");
1457 ret = media_info_get_media_count_from_db(filter, &media_count);
1458 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1459 media_filter_destroy(filter);
1460 media_content_error("Fail to get media count");
1464 media_content_debug("media_count : [%d]", media_count);
1466 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1467 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1468 media_filter_destroy(filter);
1469 media_content_error("Fail to get media");
1473 ret = media_filter_destroy(filter);
1478 int test_media_info_operation(void)
1480 int ret = MEDIA_CONTENT_ERROR_NONE;
1481 int media_count = 0;
1483 media_content_debug("\n============Media info Test============\n\n");
1485 test_filter_create();
1487 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1488 if (ret != MEDIA_CONTENT_ERROR_NONE)
1489 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1491 media_content_debug("media_count : [%d]", media_count);
1493 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1494 if (ret == MEDIA_CONTENT_ERROR_NONE)
1495 media_content_debug("media_info_foreach_media_from_db is success");
1497 media_content_error("media_info_foreach_media_from_db is failed");
1499 test_filter_destroy();
1504 int test_media_info_operation_2(void)
1506 int ret = MEDIA_CONTENT_ERROR_NONE;
1507 int bookmark_count = 0;
1509 media_content_debug("\n============Media info Test 2============\n\n");
1511 test_filter_create();
1515 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1516 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1517 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1519 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1521 media_content_debug("bookmark_count : [%d]", bookmark_count);
1523 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1527 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1528 if (ret != MEDIA_CONTENT_ERROR_NONE)
1529 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1531 media_content_debug("tag_count : [%d]", bookmark_count);
1533 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1534 if (ret != MEDIA_CONTENT_ERROR_NONE)
1535 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1537 test_filter_destroy();
1542 int test_folder_operation(void)
1544 int ret = MEDIA_CONTENT_ERROR_NONE;
1545 filter_h filter = NULL;
1546 media_folder_h folder = NULL;
1547 char *folder_id = NULL;
1550 media_content_debug("\n============Folder Test============\n\n");
1552 test_filter_create();
1554 ret = media_filter_create(&filter);
1555 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1556 media_content_error("[ERROR] media_folder_filter_create is failed");
1560 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*/
1561 media_filter_set_offset(filter, 0, 5);
1562 media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1563 media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1565 ret = media_folder_get_folder_count_from_db(filter, &count);
1566 media_content_debug("Folder count : [%d]", count);
1568 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1570 filter_h m_filter = NULL;
1572 ret = media_filter_create(&m_filter);
1573 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1574 test_filter_destroy();
1575 media_filter_destroy(filter);
1576 media_content_error("[ERROR] media_info_filter_create is failed");
1580 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*/
1581 media_filter_set_offset(m_filter, 0, 5);
1582 media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1584 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1585 if (ret != MEDIA_CONTENT_ERROR_NONE)
1586 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1588 media_filter_destroy(filter);
1589 media_filter_destroy(m_filter);
1591 test_filter_destroy();
1593 /* fix prevent: Resource Leak */
1594 SAFE_FREE(folder_id);
1599 bool folder_update_cb(media_folder_h folder, void *user_data)
1601 char *folder_id = NULL;
1602 char *folder_path = NULL;
1603 char *folder_name = NULL;
1604 int folder_order = -1;
1607 if (folder != NULL) {
1608 ret = media_folder_get_folder_id(folder, &folder_id);
1609 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1610 media_content_debug("folder_id = [%s]", folder_id);
1611 SAFE_FREE(folder_id);
1613 ret = media_folder_get_path(folder, &folder_path);
1614 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1615 media_content_debug("folder_path = [%s]", folder_path);
1616 SAFE_FREE(folder_path);
1618 ret = media_folder_get_name(folder, &folder_name);
1619 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1620 media_content_debug("folder_name = [%s]", folder_name);
1621 SAFE_FREE(folder_name);
1623 ret = media_folder_get_order(folder, &folder_order);
1624 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1625 media_content_debug("folder_order = [%d]", folder_order);
1627 ret = media_folder_clone(&g_folder, folder);
1628 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1639 int test_folder_update(void)
1641 int ret = MEDIA_CONTENT_ERROR_NONE;
1643 int folder_count = 0;
1645 media_content_debug("\n============Folder Update Test============\n\n");
1647 ret = media_filter_create(&filter);
1648 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1650 ret = media_filter_set_condition(filter, "MEDIA_TYPE=0 and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT); /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1651 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, FOLDER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
1653 ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1655 media_content_debug("Folder count : %d", folder_count);
1657 ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1659 media_filter_destroy(filter);
1661 ret = media_folder_set_name(g_folder, "test_folder");
1663 ret = media_folder_set_order(g_folder, 200);
1665 ret = media_folder_update_to_db(g_folder);
1667 ret = media_folder_destroy(g_folder);
1672 int test_playlist_operation(void)
1674 int ret = MEDIA_CONTENT_ERROR_NONE;
1675 media_playlist_h playlist_1 = NULL;
1676 media_playlist_h playlist_2 = NULL;
1677 media_playlist_h playlist_3 = NULL;
1678 media_playlist_h playlist_4 = NULL;
1679 int playlist_id_1 = 0;
1680 int playlist_id_2 = 0;
1681 int playlist_id_3 = 0;
1682 const char *playlist_name_1 = "myPlaylist_1";
1683 const char *playlist_name_2 = "myPlaylist_2";
1684 const char *playlist_name_3 = "myPlaylist_3";
1685 int playlist_count = 0;
1686 int media_count = 0;
1692 filter_h filter = NULL;
1693 filter_h m_filter = NULL;
1695 media_content_debug("\n============Playlist Test============\n\n");
1697 /* Filter for playlist */
1699 const char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1701 ret = media_filter_create(&filter);
1702 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1703 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1705 /* Create Playlist */
1706 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1707 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1708 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1710 if (playlist_1 != NULL) {
1711 /* Add media to Playlist */
1712 media_playlist_add_media(playlist_1, test_audio_id);
1713 media_playlist_add_media(playlist_1, test_audio_id);
1714 media_playlist_add_media(playlist_1, test_video_id);
1717 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg"));
1718 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1721 media_playlist_update_to_db(playlist_1);
1724 if (playlist_2 != NULL) {
1725 media_playlist_add_media(playlist_2, test_audio_id);
1726 media_playlist_add_media(playlist_2, test_audio_id);
1727 media_playlist_update_to_db(playlist_2);
1730 /* Get Playlist Count*/
1731 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1733 media_content_debug("playlist_count [%d]", playlist_count);
1736 GList *playlist_id_list = NULL;
1737 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1738 /* 64bit build issue */
1740 /* Get Playlist id*/
1741 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1742 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1743 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1745 media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1746 media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1747 media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1749 /* Export and import playlist */
1750 media_playlist_export_to_file(playlist_3, tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"));
1751 media_playlist_import_from_file(tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"), "playlist_4", &playlist_4);
1753 /* Filter for media*/
1754 ret = media_filter_create(&m_filter);
1756 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1758 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1760 /* Get media count */
1761 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1762 media_content_debug("playlist_1_media_count [%d]", media_count);
1764 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1765 media_content_debug("playlist_2_media_count [%d]", media_count);
1767 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1768 media_content_debug("playlist_3_media_count [%d]", media_count);
1770 /* Get media of playlist */
1771 GList *playlist_member_id_list = NULL;
1772 GList *playlist_member_id_list_1 = NULL;
1774 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1775 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1777 int playlist_member_id_1_1 = 0;
1778 int playlist_member_id_1_2 = 0;
1779 int playlist_member_id_1_3 = 0;
1780 int playlist_member_id_2_1 = 0;
1781 int playlist_member_id_2_2 = 0;
1782 /* 64bit build issue */
1784 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1785 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1786 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1787 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1788 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1790 media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1791 media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1792 media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1793 media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1794 media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1796 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1797 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1798 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1799 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1800 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1801 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);
1803 /* Update Playlist */
1804 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1805 media_playlist_add_media(playlist_2, test_video_id);
1806 media_playlist_set_name(playlist_2, "test_playlist");
1807 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1808 media_playlist_update_to_db(playlist_2);
1810 /* Get Updated Playlist*/
1811 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1813 /* deletes the playlist */
1815 media_playlist_delete_from_db(playlist_id_1);
1816 media_playlist_delete_from_db(playlist_id_2);
1819 if (playlist_1 != NULL)
1820 media_playlist_destroy(playlist_1);
1821 if (playlist_2 != NULL)
1822 media_playlist_destroy(playlist_2);
1823 if (playlist_3 != NULL)
1824 media_playlist_destroy(playlist_3);
1825 if (playlist_4 != NULL)
1826 media_playlist_destroy(playlist_4);
1828 g_list_free(playlist_id_list);
1829 g_list_free(playlist_member_id_list);
1830 g_list_free(playlist_member_id_list_1);
1833 ret = media_filter_destroy(filter);
1834 if (m_filter != NULL)
1835 ret = media_filter_destroy(m_filter);
1840 int test_playlist_operation_v2(void)
1842 int ret = MEDIA_CONTENT_ERROR_NONE;
1843 media_playlist_h playlist_1 = NULL;
1844 const char *playlist_name_1 = "myPlaylist_1";
1845 const char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
1846 int playlist_id = 0;
1848 media_content_debug("\n============Playlist Test V2============\n\n");
1850 ret = media_playlist_create(&playlist_1);
1851 if (ret != MEDIA_CONTENT_ERROR_NONE)
1852 media_content_error("error media_playlist_create : [%d]", ret);
1854 ret = media_playlist_set_name(playlist_1, playlist_name_1);
1855 if (ret != MEDIA_CONTENT_ERROR_NONE)
1856 media_content_error("error media_playlist_set_name : [%d]", ret);
1858 ret = media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1859 if (ret != MEDIA_CONTENT_ERROR_NONE)
1860 media_content_error("error media_playlist_set_thumbnail_path : [%d]", ret);
1862 ret = media_playlist_insert_to_db_v2(playlist_1);
1863 if (ret != MEDIA_CONTENT_ERROR_NONE)
1864 media_content_error("error media_playlist_insert_to_db_v2 : [%d]", ret);
1866 ret = media_playlist_set_name(playlist_1, "myPlaylist_3");
1867 if (ret != MEDIA_CONTENT_ERROR_NONE)
1868 media_content_error("error media_playlist_set_name : [%d]", ret);
1870 ret = media_playlist_get_playlist_id(playlist_1, &playlist_id);
1871 if (ret != MEDIA_CONTENT_ERROR_NONE)
1872 media_content_error("error media_playlist_get_playlist_id : [%d]", ret);
1874 ret = media_playlist_update_to_db_v2(playlist_id, playlist_1);
1875 if (ret != MEDIA_CONTENT_ERROR_NONE)
1876 media_content_error("error media_playlist_update_to_db_v2 : [%d]", ret);
1878 ret = media_playlist_destroy(playlist_1);
1879 if (ret != MEDIA_CONTENT_ERROR_NONE)
1880 media_content_error("error media_playlist_destroy : [%d]", ret);
1885 int test_tag_operation(void)
1887 int ret = MEDIA_CONTENT_ERROR_NONE;
1894 const char *tag_name_1 = "myTag_1";
1895 const char *tag_name_2 = "myTag_2";
1896 const char *tag_name_3 = "myTag_3";
1898 int media_count = 0;
1901 media_content_debug("\n============Tag Test============\n\n");
1903 const char *g_condition = "TAG_NAME like \"%%my%%\"";
1905 ret = media_filter_create(&filter);
1907 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1909 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1912 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1913 if (ret != MEDIA_CONTENT_ERROR_NONE)
1914 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1915 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1916 if (ret != MEDIA_CONTENT_ERROR_NONE)
1917 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1918 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1919 if (ret != MEDIA_CONTENT_ERROR_NONE)
1920 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1922 /* Add media to Tag */
1923 ret = media_tag_add_media(tag_1, test_audio_id);
1924 if (ret != MEDIA_CONTENT_ERROR_NONE)
1925 media_content_error("error media_tag_add_media : [%d]", ret);
1926 ret = media_tag_add_media(tag_1, test_video_id);
1927 if (ret != MEDIA_CONTENT_ERROR_NONE)
1928 media_content_error("error media_tag_add_media : [%d]", ret);
1929 ret = media_tag_update_to_db(tag_1);
1930 if (ret != MEDIA_CONTENT_ERROR_NONE)
1931 media_content_error("error media_tag_update_to_db : [%d]", ret);
1933 ret = media_tag_add_media(tag_2, test_audio_id);
1934 if (ret != MEDIA_CONTENT_ERROR_NONE)
1935 media_content_error("error media_tag_add_media : [%d]", ret);
1936 ret = media_tag_update_to_db(tag_2);
1937 if (ret != MEDIA_CONTENT_ERROR_NONE)
1938 media_content_error("error media_tag_update_to_db : [%d]", ret);
1941 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1942 if (ret != MEDIA_CONTENT_ERROR_NONE)
1943 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1945 media_content_debug("tag_count [%d]", tag_count);
1948 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1949 if (ret != MEDIA_CONTENT_ERROR_NONE)
1950 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1953 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1954 if (ret != MEDIA_CONTENT_ERROR_NONE)
1955 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1957 media_content_debug("tag_id_1 [%d]", tag_id_1);
1959 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1960 if (ret != MEDIA_CONTENT_ERROR_NONE)
1961 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1963 media_content_debug("tag_id_2 [%d]", tag_id_2);
1965 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1966 if (ret != MEDIA_CONTENT_ERROR_NONE)
1967 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1969 media_content_debug("tag_id_3 [%d]", tag_id_3);
1971 /* Get media count */
1972 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1973 if (ret != MEDIA_CONTENT_ERROR_NONE)
1974 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1976 media_content_debug("tag_1_media_count [%d]", media_count);
1978 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1979 if (ret != MEDIA_CONTENT_ERROR_NONE)
1980 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1982 media_content_debug("tag_2_media_count [%d]", media_count);
1984 /* Get media of Tag */
1985 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1986 if (ret != MEDIA_CONTENT_ERROR_NONE)
1987 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1989 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1990 if (ret != MEDIA_CONTENT_ERROR_NONE)
1991 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1994 ret = media_tag_add_media(tag_2, test_video_id);
1995 if (ret != MEDIA_CONTENT_ERROR_NONE)
1996 media_content_error("error media_tag_add_media : [%d]", ret);
1997 ret = media_tag_set_name(tag_2, "test_tag");
1998 if (ret != MEDIA_CONTENT_ERROR_NONE)
1999 media_content_error("error media_tag_set_name : [%d]", ret);
2000 ret = media_tag_update_to_db(tag_2);
2001 if (ret != MEDIA_CONTENT_ERROR_NONE)
2002 media_content_error("error media_tag_update_to_db : [%d]", ret);
2004 /* Get Updated Tag*/
2005 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
2006 if (ret != MEDIA_CONTENT_ERROR_NONE)
2007 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
2009 /* deletes the tag */
2010 ret = media_tag_delete_from_db(tag_id_1);
2011 if (ret != MEDIA_CONTENT_ERROR_NONE)
2012 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2013 ret = media_tag_delete_from_db(tag_id_2);
2014 if (ret != MEDIA_CONTENT_ERROR_NONE)
2015 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2017 ret = media_tag_destroy(tag_1);
2018 if (ret != MEDIA_CONTENT_ERROR_NONE)
2019 media_content_error("error media_tag_destroy : [%d]", ret);
2020 ret = media_tag_destroy(tag_2);
2021 if (ret != MEDIA_CONTENT_ERROR_NONE)
2022 media_content_error("error media_tag_destroy : [%d]", ret);
2023 ret = media_filter_destroy(filter);
2024 if (ret != MEDIA_CONTENT_ERROR_NONE)
2025 media_content_error("error media_filter_destroy : [%d]", ret);
2030 int test_tag_operation_v2(void)
2032 int ret = MEDIA_CONTENT_ERROR_NONE;
2034 const char *tag_name_1 = "myTag_1";
2037 media_content_debug("\n============Tag Test V2============\n\n");
2040 ret = media_tag_create(&tag_1);
2041 if (ret != MEDIA_CONTENT_ERROR_NONE)
2042 media_content_error("error media_tag_create : [%d]", ret);
2044 ret = media_tag_set_name(tag_1, tag_name_1);
2045 if (ret != MEDIA_CONTENT_ERROR_NONE)
2046 media_content_error("error media_tag_set_name : [%d]", ret);
2048 /* Add media to Tag */
2049 ret = media_tag_add_media(tag_1, test_audio_id);
2050 if (ret != MEDIA_CONTENT_ERROR_NONE)
2051 media_content_error("error media_tag_add_media : [%d]", ret);
2053 ret = media_tag_add_media(tag_1, test_video_id);
2054 if (ret != MEDIA_CONTENT_ERROR_NONE)
2055 media_content_error("error media_tag_add_media : [%d]", ret);
2057 ret = media_tag_insert_to_db_v2(tag_1);
2058 if (ret != MEDIA_CONTENT_ERROR_NONE)
2059 media_content_error("error media_tag_insert_to_db_v2 : [%d]", ret);
2062 ret = media_tag_get_tag_id(tag_1, &tag_id);
2063 if (ret != MEDIA_CONTENT_ERROR_NONE)
2064 media_content_error("error media_tag_get_tag_id : [%d]", ret);
2066 ret = media_tag_remove_media(tag_1, test_video_id);
2067 if (ret != MEDIA_CONTENT_ERROR_NONE)
2068 media_content_error("error media_tag_add_media : [%d]", ret);
2070 ret = media_tag_update_to_db_v2(tag_id, tag_1);
2071 if (ret != MEDIA_CONTENT_ERROR_NONE)
2072 media_content_error("error media_tag_update_to_db_v2 : [%d]", ret);
2075 ret = media_tag_destroy(tag_1);
2076 if (ret != MEDIA_CONTENT_ERROR_NONE)
2077 media_content_error("error media_tag_destroy : [%d]", ret);
2082 int test_bookmark_operation(void)
2084 /* bookmark is only supported for video information. */
2085 int ret = MEDIA_CONTENT_ERROR_NONE;
2086 int bookmark_count = 0;
2088 GList *all_item_list = NULL;
2091 media_content_debug("\n============Bookmark Test============\n\n");
2093 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2095 ret = media_filter_create(&filter);
2096 if (ret != MEDIA_CONTENT_ERROR_NONE)
2097 media_content_error("error media_filter_create : [%d]", ret);
2099 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2100 if (ret != MEDIA_CONTENT_ERROR_NONE)
2101 media_content_error("error media_filter_set_condition : [%d]", ret);
2103 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2104 if (ret != MEDIA_CONTENT_ERROR_NONE)
2105 media_content_error("error media_filter_set_order : [%d]", ret);
2107 /* insert bookmark to video */
2108 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
2109 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2110 if (ret != MEDIA_CONTENT_ERROR_NONE)
2111 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2113 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2114 if (ret != MEDIA_CONTENT_ERROR_NONE)
2115 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2117 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2118 if (ret != MEDIA_CONTENT_ERROR_NONE)
2119 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2121 media_content_debug("bookmark_count = [%d]", bookmark_count);
2123 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, &all_item_list);
2124 if (ret != MEDIA_CONTENT_ERROR_NONE)
2125 media_content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
2127 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
2128 media_bookmark_h bookmark_handle;
2129 bookmark_handle = (media_bookmark_h)g_list_nth_data(all_item_list, idx);
2131 ret = media_bookmark_set_name(bookmark_handle, "test 1");
2132 if (ret != MEDIA_CONTENT_ERROR_NONE)
2133 media_content_error("error media_bookmark_set_name : [%d]", ret);
2135 ret = media_bookmark_update_to_db(bookmark_handle);
2138 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, NULL);
2139 if (ret != MEDIA_CONTENT_ERROR_NONE)
2140 media_content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
2142 ret = media_filter_destroy(filter);
2143 if (ret != MEDIA_CONTENT_ERROR_NONE)
2144 media_content_error("error media_filter_destroy : [%d]", ret);
2149 int test_bookmark_operation_v2(void)
2151 media_content_debug("\n============Bookmark Test V2============\n\n");
2153 int ret = MEDIA_CONTENT_ERROR_NONE;
2154 media_bookmark_h bookmark = NULL;
2155 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
2157 ret = media_bookmark_create(test_video_id, 400, &bookmark);
2158 if (ret != MEDIA_CONTENT_ERROR_NONE)
2159 media_content_error("error media_bookmark_create : [%d]", ret);
2161 ret = media_bookmark_set_name(bookmark, "test bookmark");
2162 if (ret != MEDIA_CONTENT_ERROR_NONE)
2163 media_content_error("error media_bookmark_set_name : [%d]", ret);
2165 ret = media_bookmark_set_thumbnail_path(bookmark, thumbnail_path1);
2166 if (ret != MEDIA_CONTENT_ERROR_NONE)
2167 media_content_error("error media_bookmark_set_thumbnail_path : [%d]", ret);
2169 ret = media_bookmark_insert_to_db_v2(bookmark);
2170 if (ret != MEDIA_CONTENT_ERROR_NONE)
2171 media_content_error("error media_bookmark_insert_to_db_v2 : [%d]", ret);
2173 ret = media_bookmark_set_name(bookmark, "test bookmark 2");
2174 if (ret != MEDIA_CONTENT_ERROR_NONE)
2175 media_content_error("error media_bookmark_set_name : [%d]", ret);
2177 ret = media_bookmark_update_to_db(bookmark);
2178 if (ret != MEDIA_CONTENT_ERROR_NONE)
2179 media_content_error("error media_bookmark_update_to_db : [%d]", ret);
2181 ret = media_bookmark_destroy(bookmark);
2182 if (ret != MEDIA_CONTENT_ERROR_NONE)
2183 media_content_error("error media_bookmark_destroy : [%d]", ret);
2188 int test_album_list(void)
2190 media_content_debug("\n============Album Test============\n\n");
2192 int ret = MEDIA_CONTENT_ERROR_NONE;
2193 int album_count = 0;
2197 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2199 ret = media_filter_create(&filter);
2200 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2201 media_content_error("Fail to create filter");
2204 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2205 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2206 media_filter_destroy(filter);
2207 media_content_error("Fail to set condition");
2210 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2211 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2212 media_filter_destroy(filter);
2213 media_content_error("Fail to set order");
2217 ret = media_album_get_album_count_from_db(filter, &album_count);
2218 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2219 media_filter_destroy(filter);
2222 media_content_debug("album_count [%d]", album_count);
2225 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2226 if (ret != MEDIA_CONTENT_ERROR_NONE)
2227 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2229 ret = media_filter_destroy(filter);
2230 if (ret != MEDIA_CONTENT_ERROR_NONE)
2231 media_content_error("error media_filter_destroy : [%d]", ret);
2236 int test_group_operation(void)
2238 media_content_debug("\n============Group Test============\n\n");
2240 int ret = MEDIA_CONTENT_ERROR_NONE;
2241 int group_count = 0;
2244 ret = test_filter_create();
2245 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2246 media_content_error("[error(0x%08x)", ret);
2250 for (idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++) {
2251 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2252 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2253 test_filter_destroy();
2254 media_content_error("media_group_get_group_count_from_db fail. ret=[%d] idx=[%d]", ret, idx);
2257 media_content_debug("[%2d]group_count [%d]", idx, group_count);
2260 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2262 ret = test_filter_destroy();
2267 int test_update_operation()
2269 int ret = MEDIA_CONTENT_ERROR_NONE;
2271 media_info_h media_handle = NULL;
2272 GList *all_item_list = NULL;
2274 /* Get all item list */
2275 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2276 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2277 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2280 media_content_debug("media_info_foreach_media_from_db success");
2281 char *media_id = NULL;
2282 char *media_path = NULL;
2283 media_content_type_e media_type = 0;
2285 for (i = 0; i < g_list_length(all_item_list); i++) {
2286 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2288 ret = media_info_get_media_id(media_handle, &media_id);
2289 if (ret != MEDIA_CONTENT_ERROR_NONE)
2290 media_content_error("media_info_get_media_id failed: %d", ret);
2291 ret = media_info_get_file_path(media_handle, &media_path);
2292 if (ret != MEDIA_CONTENT_ERROR_NONE)
2293 media_content_error("media_info_get_file_path failed: %d", ret);
2294 ret = media_info_get_media_type(media_handle, &media_type);
2295 if (ret != MEDIA_CONTENT_ERROR_NONE)
2296 media_content_error("media_info_get_media_type failed: %d", ret);
2298 media_content_debug("media_id [%d] : %s", i, media_id);
2299 media_content_debug("media_type [%d] : %d", i, media_type);
2300 media_content_debug("media_path [%d] : %s", i, media_path);
2302 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2303 image_meta_h image_handle;
2304 media_content_orientation_e orientation;
2306 ret = media_info_get_image(media_handle, &image_handle);
2307 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2308 media_content_error("media_info_get_image failed: %d", ret);
2310 media_content_debug("media_info_get_image success");
2312 /* update image meta */
2313 orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2314 image_meta_set_orientation(image_handle, orientation);
2316 ret = image_meta_update_to_db(image_handle);
2317 if (ret != MEDIA_CONTENT_ERROR_NONE)
2318 media_content_error("image_meta_update_to_db failed: %d", ret);
2320 media_content_debug("image_meta_update_to_db success");
2323 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2324 video_meta_h video_handle;
2326 ret = media_info_get_video(media_handle, &video_handle);
2327 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2328 media_content_error("media_info_get_video failed: %d", ret);
2330 media_content_debug("media_info_get_video success");
2332 /* update video meta */
2333 video_meta_set_played_count(video_handle, 5);
2334 video_meta_set_played_time(video_handle, 5);
2335 video_meta_set_played_position(video_handle, 5);
2336 video_meta_update_to_db(video_handle);
2338 ret = video_meta_update_to_db(video_handle);
2339 if (ret != MEDIA_CONTENT_ERROR_NONE)
2340 media_content_error("video_meta_update_to_db failed: %d", ret);
2342 media_content_debug("video_meta_update_to_db success");
2344 } else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2345 audio_meta_h audio_handle = NULL;
2346 ret = media_info_get_audio(media_handle, &audio_handle);
2347 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2348 media_content_error("media_info_get_audio failed: %d", ret);
2350 media_content_debug("media_info_get_audio success");
2352 audio_meta_set_played_count(audio_handle, 5);
2353 audio_meta_set_played_time(audio_handle, 1000);
2354 audio_meta_set_played_position(audio_handle, 180);
2356 ret = audio_meta_update_to_db(audio_handle);
2357 if (ret != MEDIA_CONTENT_ERROR_NONE)
2358 media_content_error("audio_meta_update_to_db failed: %d", ret);
2360 media_content_debug("audio_meta_update_to_db success");
2367 /* fix prevent: Resource Leak */
2368 SAFE_FREE(media_id);
2369 SAFE_FREE(media_path);
2372 return MEDIA_CONTENT_ERROR_NONE;
2375 int test_insert(void)
2377 int ret = MEDIA_CONTENT_ERROR_NONE;
2378 const char *path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
2380 const char *path = tzplatform_mkpath(TZ_USER_DOCUMENTS, "other.txt"));
2383 media_info_h media_item = NULL;
2384 media_content_debug("\n============DB Insert Test============\n\n");
2386 ret = media_info_insert_to_db(path, &media_item);
2388 if ((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL)) {
2389 media_content_debug("Insertion is success");
2391 media_content_error("Insertion is failed");
2392 ret = media_info_destroy(media_item);
2396 char *media_id = NULL;
2398 ret = media_info_get_media_id(media_item, &media_id);
2399 if (ret != MEDIA_CONTENT_ERROR_NONE)
2400 media_content_error("media_info_get_media_id failed: %d", ret);
2402 media_content_debug("Media ID: %s", media_id);
2404 SAFE_FREE(media_id);
2406 ret = media_info_update_to_db(media_item);
2407 if (ret == MEDIA_CONTENT_ERROR_NONE)
2408 media_content_debug("media_info_update_to_db is success");
2410 media_content_error("media_info_update_to_db is failed");
2412 ret = media_info_destroy(media_item);
2413 if (ret != MEDIA_CONTENT_ERROR_NONE)
2414 media_content_error("media_info_destroy failed: %d", ret);
2421 int ret = MEDIA_CONTENT_ERROR_NONE;
2422 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2423 const char *dst_path = tzplatform_mkpath(TZ_USER_IMAGES, "XX/Default1.jpg");
2424 media_info_h move_media = NULL;
2426 ret = media_info_get_media_from_db(move_media_id, &move_media);
2427 if (ret == MEDIA_CONTENT_ERROR_NONE)
2428 media_content_debug("media_info_get_media_from_db success");
2430 media_content_error("media_info_get_media_from_db failed: %d", ret);
2432 media_content_debug("\n============DB Move Test============\n\n");
2435 ret = media_info_move_to_db(move_media, dst_path);
2437 if (ret == MEDIA_CONTENT_ERROR_NONE)
2438 media_content_debug("Move is success");
2440 media_content_error("Move is failed");
2442 ret = media_info_destroy(move_media);
2444 media_content_debug("There is no item : %s", move_media_id);
2450 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2452 char *thumbnail_path = NULL;
2453 int ret = MEDIA_CONTENT_ERROR_NONE;
2456 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2457 media_content_debug("error_code [%d]", error);
2458 media_content_debug("thumbnail_path [%s]", path);
2459 if (user_data != NULL) {
2460 media_info_h media = (media_info_h)user_data;
2461 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2462 if (ret != MEDIA_CONTENT_ERROR_NONE)
2463 media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2465 media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2466 SAFE_FREE(thumbnail_path);
2467 ret = media_info_destroy(media);
2468 if (ret != MEDIA_CONTENT_ERROR_NONE)
2469 media_content_error("media_info_destroy failed: %d", ret);
2472 if (g_cnt == g_media_cnt)
2473 g_main_loop_quit(g_loop);
2478 bool thumbnail_create_cb(media_info_h media, void *user_data)
2480 char *media_id = NULL;
2481 media_info_h dst = NULL;
2482 int ret = MEDIA_CONTENT_ERROR_NONE;
2484 if (media == NULL) {
2485 media_content_debug("NO Item");
2489 ret = media_info_get_media_id(media, &media_id);
2490 if (ret != MEDIA_CONTENT_ERROR_NONE)
2491 media_content_error("media_info_get_media_id failed: %d", ret);
2493 media_content_debug("media_id : [%s]", media_id);
2495 ret = media_info_clone(&dst, media);
2496 if (ret != MEDIA_CONTENT_ERROR_NONE)
2497 media_content_error("media_info_clone failed: %d", ret);
2499 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2500 if (ret != MEDIA_CONTENT_ERROR_NONE)
2501 media_content_error("media_info_create_thumbnail failed: %d", ret);
2504 /* fix prevent: Resource leak */
2505 SAFE_FREE(media_id);
2510 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2512 int ret = MEDIA_CONTENT_ERROR_NONE;
2514 char *media_id = NULL;
2515 media_info_h dst = NULL;
2519 if (media == NULL) {
2520 media_content_debug("NO Item");
2524 ret = media_info_get_media_id(media, &media_id);
2525 if (ret != MEDIA_CONTENT_ERROR_NONE)
2526 media_content_error("media_info_get_media_id failed: %d", ret);
2528 media_content_debug("media_id : [%s]", media_id);
2530 ret = media_info_clone(&dst, media);
2531 if (ret != MEDIA_CONTENT_ERROR_NONE)
2532 media_content_error("media_info_clone failed: %d", ret);
2534 ret = media_info_cancel_thumbnail(dst);
2535 if (ret != MEDIA_CONTENT_ERROR_NONE)
2536 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2538 ret = media_info_destroy(dst);
2539 if (ret != MEDIA_CONTENT_ERROR_NONE)
2540 media_content_error("media_info_destroy failed: %d", ret);
2542 if (g_cnt == g_media_cnt)
2543 g_main_loop_quit(g_loop);
2545 /* fix prevent: Resource leak */
2546 SAFE_FREE(media_id);
2551 gboolean create_thumbnail_start(gpointer data)
2553 int ret = MEDIA_CONTENT_ERROR_NONE;
2555 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2557 if (ret == MEDIA_CONTENT_ERROR_NONE)
2558 media_content_debug("media_info_foreach_media_from_db is success");
2560 media_content_error("media_info_foreach_media_from_db is failed");
2565 gboolean cancel_thumbnail_start(gpointer data)
2567 int ret = MEDIA_CONTENT_ERROR_NONE;
2569 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2571 if (ret == MEDIA_CONTENT_ERROR_NONE)
2572 media_content_debug("media_info_foreach_media_from_db is success");
2574 media_content_error("media_info_foreach_media_from_db is failed");
2579 int test_create_thumbnail(int cancel)
2581 int ret = MEDIA_CONTENT_ERROR_NONE;
2582 GSource *source = NULL;
2583 GMainContext *context = NULL;
2585 test_filter_create();
2587 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2588 if (ret != MEDIA_CONTENT_ERROR_NONE)
2589 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2591 media_content_debug("media_count : [%d]", g_media_cnt);
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, create_thumbnail_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, cancel_thumbnail_start, NULL, NULL);
2604 g_source_attach(cancel_src, context);
2607 g_main_loop_run(g_loop);
2608 g_main_loop_unref(g_loop);
2610 test_filter_destroy();
2615 bool face_cb(media_face_h face, void *user_data)
2617 if (user_data != NULL) {
2618 unsigned x, y, rect_w, rect_h;
2619 media_face_get_face_rect(face, &x, &y, &rect_w, &rect_h);
2620 media_content_debug("face(%p) x = %d, y = %d [%d, %d]", face, x, y, rect_w, rect_h);
2626 void face_detection_complete_cb(media_content_error_e error, int count, void *user_data)
2628 int ret = MEDIA_CONTENT_ERROR_NONE;
2631 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2632 media_content_debug("error_code [%d]", error);
2633 media_content_debug("face_count [%d]", count);
2635 media_content_debug("No faces are detected!");
2636 } else if (user_data != NULL) {
2637 media_info_h media = (media_info_h)user_data;
2638 char *media_id = NULL;
2639 ret = media_info_get_media_id(media, &media_id);
2640 if (ret != MEDIA_CONTENT_ERROR_NONE)
2641 media_content_error("media_info_get_media_id failed: %d", ret);
2642 if (media_id != NULL) {
2643 ret = media_info_foreach_face_from_db(media_id, NULL, face_cb, NULL);
2644 if (ret != MEDIA_CONTENT_ERROR_NONE)
2645 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
2647 ret = media_info_destroy(media);
2648 if (ret != MEDIA_CONTENT_ERROR_NONE)
2649 media_content_error("media_info_destroy failed: %d", ret);
2652 if (g_cnt == g_media_cnt)
2653 g_main_loop_quit(g_loop);
2658 bool start_face_detection_cb(media_info_h media, void *user_data)
2660 char *media_id = NULL;
2661 media_info_h dst = NULL;
2662 int ret = MEDIA_CONTENT_ERROR_NONE;
2664 if (media == NULL) {
2665 media_content_debug("NO Item");
2669 ret = media_info_get_media_id(media, &media_id);
2670 if (ret != MEDIA_CONTENT_ERROR_NONE)
2671 media_content_error("media_info_get_media_id failed: %d", ret);
2673 media_content_debug("media_id : [%s]", media_id);
2675 ret = media_info_clone(&dst, media);
2676 if (ret != MEDIA_CONTENT_ERROR_NONE)
2677 media_content_error("media_info_clone failed: %d", ret);
2679 GList **list = (GList**)user_data;
2680 *list = g_list_append(*list, dst);
2682 /* fix prevent: Resource leak */
2683 SAFE_FREE(media_id);
2688 bool cancel_face_detection_cb(media_info_h media, void *user_data)
2690 int ret = MEDIA_CONTENT_ERROR_NONE;
2692 char *media_id = NULL;
2693 media_info_h dst = NULL;
2697 if (media == NULL) {
2698 media_content_debug("NO Item");
2702 ret = media_info_get_media_id(media, &media_id);
2703 if (ret != MEDIA_CONTENT_ERROR_NONE)
2704 media_content_error("media_info_get_media_id failed: %d", ret);
2706 media_content_debug("media_id : [%s]", media_id);
2708 ret = media_info_clone(&dst, media);
2709 if (ret != MEDIA_CONTENT_ERROR_NONE)
2710 media_content_error("media_info_clone failed: %d", ret);
2712 ret = media_info_cancel_face_detection(dst);
2713 if (ret != MEDIA_CONTENT_ERROR_NONE)
2714 media_content_error("media_info_cancel_face_detection failed: %d", ret);
2716 ret = media_info_destroy(dst);
2717 if (ret != MEDIA_CONTENT_ERROR_NONE)
2718 media_content_error("media_info_destroy failed: %d", ret);
2720 if (g_cnt == g_media_cnt)
2721 g_main_loop_quit(g_loop);
2723 /* fix prevent: Resource leak */
2724 SAFE_FREE(media_id);
2729 gboolean face_detection_start(gpointer data)
2731 int ret = MEDIA_CONTENT_ERROR_NONE;
2732 GList *all_item_list = NULL;
2735 ret = media_info_foreach_media_from_db(g_filter, start_face_detection_cb, &all_item_list);
2737 if (ret == MEDIA_CONTENT_ERROR_NONE)
2738 media_content_debug("media_info_foreach_media_from_db is success");
2740 media_content_error("media_info_foreach_media_from_db is failed");
2742 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
2743 media_info_h media_handle = NULL;
2745 media_handle = (media_info_h)g_list_nth_data(all_item_list, idx);
2747 ret = media_info_start_face_detection(media_handle, face_detection_complete_cb, NULL);
2748 if (ret != MEDIA_CONTENT_ERROR_NONE)
2749 media_content_error("media_info_start_face_detection failed: %d", ret);
2756 gboolean face_detection_cancel(gpointer data)
2758 int ret = MEDIA_CONTENT_ERROR_NONE;
2760 ret = media_info_foreach_media_from_db(g_filter, cancel_face_detection_cb, NULL);
2762 if (ret == MEDIA_CONTENT_ERROR_NONE)
2763 media_content_debug("media_info_foreach_media_from_db is success");
2765 media_content_error("media_info_foreach_media_from_db is failed");
2770 int test_start_face_detection(int cancel)
2772 int ret = MEDIA_CONTENT_ERROR_NONE;
2773 GSource *source = NULL;
2774 GMainContext *context = NULL;
2776 test_filter_create();
2778 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2779 if (ret != MEDIA_CONTENT_ERROR_NONE)
2780 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2782 media_content_debug("media_count : [%d]", g_media_cnt);
2784 if (g_media_cnt == 0)
2787 g_loop = g_main_loop_new(NULL, FALSE);
2788 context = g_main_loop_get_context(g_loop);
2789 source = g_idle_source_new();
2790 g_source_set_callback(source, face_detection_start, NULL, NULL);
2791 g_source_attach(source, context);
2793 /* Logic to cancel */
2795 GSource *cancel_src = NULL;
2796 cancel_src = g_idle_source_new();
2797 g_source_set_callback(cancel_src, face_detection_cancel, NULL, NULL);
2798 g_source_attach(cancel_src, context);
2801 g_main_loop_run(g_loop);
2802 g_main_loop_unref(g_loop);
2805 test_filter_destroy();
2810 int test_disconnect_database(void)
2812 int ret = MEDIA_CONTENT_ERROR_NONE;
2813 media_content_debug("\n============DB Disconnection Test============\n\n");
2815 ret = media_content_disconnect();
2817 if (ret == MEDIA_CONTENT_ERROR_NONE)
2818 media_content_debug("disconnection is success");
2820 media_content_error("disconnection is failed");
2825 int test_request_update_db(void)
2827 int ret = MEDIA_CONTENT_ERROR_NONE;
2828 media_info_h media = NULL;
2829 char *content_name = NULL;
2830 bool favorite = FALSE;
2832 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2833 if (ret != MEDIA_CONTENT_ERROR_NONE)
2834 media_content_error("media_info_get_media_from_db failed: %d", ret);
2836 ret = media_info_set_content_name(media, "TEST_content_name");
2837 if (ret != MEDIA_CONTENT_ERROR_NONE)
2838 media_content_error("media_info_set_content_name failed: %d", ret);
2840 ret = media_info_set_favorite(media, TRUE);
2841 if (ret != MEDIA_CONTENT_ERROR_NONE)
2842 media_content_error("media_info_set_favorite failed: %d", ret);
2844 ret = media_info_update_to_db(media);
2845 if (ret == MEDIA_CONTENT_ERROR_NONE)
2846 media_content_debug("media_info_update_to_db is success");
2848 media_content_error("media_info_update_to_db is failed");
2851 media_info_destroy(media);
2853 /*get the updated value*/
2854 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2855 if (ret != MEDIA_CONTENT_ERROR_NONE)
2856 media_content_error("media_info_get_media_from_db failed: %d", ret);
2858 ret = media_info_get_content_name(media, &content_name);
2859 if (ret != MEDIA_CONTENT_ERROR_NONE)
2860 media_content_error("media_info_get_content_name failed: %d", ret);
2862 media_content_debug("content name [%s]", content_name);
2864 SAFE_FREE(content_name);
2866 ret = media_info_get_favorite(media, &favorite);
2867 if (ret != MEDIA_CONTENT_ERROR_NONE)
2868 media_content_error("media_info_get_favorite failed: %d", ret);
2870 media_content_debug("favorite [%d]", favorite);
2872 ret = media_info_destroy(media);
2877 int g_total_photo_size = 0;
2878 int g_total_video_size = 0;
2879 int g_total_mp3_size = 0;
2880 int g_total_voice_memo_size = 0;
2882 bool dft_cb(media_info_h media, void *user_data)
2884 unsigned long long file_size = 0;
2885 media_content_type_e media_type = -1;
2886 char *mime_type = NULL;
2887 int ret = MEDIA_CONTENT_ERROR_NONE;
2892 ret = media_info_get_media_type(media, &media_type);
2893 if (ret != MEDIA_CONTENT_ERROR_NONE)
2894 media_content_error("media_info_get_media_type failed: %d", ret);
2895 ret = media_info_get_size(media, &file_size);
2896 if (ret != MEDIA_CONTENT_ERROR_NONE)
2897 media_content_error("media_info_get_size failed: %d", ret);
2898 ret = media_info_get_mime_type(media, &mime_type);
2899 if (ret != MEDIA_CONTENT_ERROR_NONE)
2900 media_content_error("media_info_get_mime_type failed: %d", ret);
2902 if (media_type == MEDIA_CONTENT_TYPE_IMAGE)
2903 g_total_photo_size += file_size;
2904 else if (media_type == MEDIA_CONTENT_TYPE_VIDEO)
2905 g_total_video_size += file_size;
2906 else if (media_type == MEDIA_CONTENT_TYPE_SOUND)
2907 g_total_voice_memo_size += file_size;
2908 else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2909 if ((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2910 g_total_mp3_size += file_size;
2912 g_total_voice_memo_size += file_size;
2914 media_content_debug("invalid media_type");
2916 SAFE_FREE(mime_type);
2924 int ret = MEDIA_CONTENT_ERROR_NONE;
2925 media_content_debug("\n============DFT_test============\n\n");
2927 filter_h filter = NULL;
2930 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2932 ret = media_filter_create(&filter);
2935 media_content_debug("[Internal Memory]\n");
2936 /*1. Photo ============================================================*/
2937 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2940 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2941 media_content_debug("Photo count = [%d]\n", media_cnt);
2944 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2945 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2947 /*2. Video ============================================================*/
2948 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2951 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2952 media_content_debug("Video count = [%d]\n", media_cnt);
2955 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2956 media_content_debug("Video size = [%d]\n", g_total_video_size);
2958 /*3. MP3 ============================================================*/
2959 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2962 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2963 media_content_debug("MP3 count = [%d]\n", media_cnt);
2966 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2967 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2969 /*4. Voice Memo ============================================================*/
2970 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);
2972 /*Get Voice Memo Count*/
2973 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2974 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2976 /*Get Voice Memo Size*/
2977 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2978 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2980 g_total_photo_size = 0;
2981 g_total_video_size = 0;
2982 g_total_mp3_size = 0;
2983 g_total_voice_memo_size = 0;
2986 media_content_debug("\n[External Memory]\n");
2987 /*1. Photo ============================================================*/
2988 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2991 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2992 media_content_debug("Photo count = [%d]\n", media_cnt);
2995 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2996 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2998 /*2. Video ============================================================*/
2999 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
3002 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3003 media_content_debug("Video count = [%d]\n", media_cnt);
3006 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3007 media_content_debug("Video size = [%d]\n", g_total_video_size);
3009 /*3. MP3 ============================================================*/
3010 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
3013 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3014 media_content_debug("MP3 count = [%d]\n", media_cnt);
3017 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3018 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
3020 /*4. Voice Memo ============================================================*/
3021 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);
3023 /*Get Voice Memo Count*/
3024 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3025 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
3027 /*Get Voice Memo Size*/
3028 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3029 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
3030 ret = media_filter_destroy(filter);
3035 void insert_batch_cb(media_content_error_e error, void * user_data)
3037 media_content_debug("media_info_insert_batch_to_db completed!\n");
3040 int test_batch_operations()
3044 char *file_list[10];
3046 for (i = 0; i < 10; i++) {
3047 char filepath[255] = {0,};
3048 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
3049 media_content_debug("File : %s\n", filepath);
3050 file_list[i] = strdup(filepath);
3053 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
3054 if (ret != MEDIA_CONTENT_ERROR_NONE)
3055 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
3058 char condition[2048] = {0, };
3059 const char *temp = NULL;
3060 memset(condition, 0x00, sizeof(condition));
3062 temp = tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'");
3063 snprintf(condition, sizeof(condition), "MEDIA_PATH LIKE \'%s", temp);
3065 ret = media_filter_create(&filter);
3066 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3067 media_content_error("Fail to create filter");
3071 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3072 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3073 media_filter_destroy(filter);
3074 media_content_error("Fail to set condition");
3078 ret = media_info_delete_batch_from_db(filter);
3079 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3080 media_filter_destroy(filter);
3081 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3085 ret = media_filter_destroy(filter);
3090 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
3092 media_content_debug("media_info_insert_burst_shot_to_db completed![%d]\n", error);
3093 g_main_loop_quit(g_loop);
3096 gboolean test_insert_burst_shot_to_db_start(gpointer data)
3098 int ret = MEDIA_CONTENT_ERROR_NONE;
3100 char *file_list[10];
3102 for (i = 0; i < 10; i++) {
3103 char filepath[255] = {0,};
3104 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
3105 media_content_debug("File : %s\n", filepath);
3106 file_list[i] = strdup(filepath);
3109 ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
3110 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3111 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
3112 g_main_loop_quit(g_loop);
3118 int test_insert_burst_shot_to_db(void)
3120 GSource *source = NULL;
3121 GMainContext *context = NULL;
3123 g_loop = g_main_loop_new(NULL, FALSE);
3124 context = g_main_loop_get_context(g_loop);
3125 source = g_idle_source_new();
3126 g_source_set_callback(source, test_insert_burst_shot_to_db_start, NULL, NULL);
3127 g_source_attach(source, context);
3129 g_main_loop_run(g_loop);
3130 g_main_loop_unref(g_loop);
3135 void _scan_cb(media_content_error_e err, void *user_data)
3137 media_content_debug("scan callback is called : %d\n", err);
3138 g_main_loop_quit(g_loop);
3143 int test_scan_file()
3147 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3148 ret = media_content_scan_file(file_path);
3149 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3150 media_content_error("Fail to media_content_scan_file : %d", ret);
3157 gboolean test_scan_dir_start(gpointer data)
3161 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
3163 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
3165 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3166 media_content_error("Fail to test_scan_dir_start : %d", ret);
3173 gboolean cancel_scan_dir_start(gpointer data)
3175 int ret = MEDIA_CONTENT_ERROR_NONE;
3177 const char *dir_path = tzplatform_getenv(TZ_USER_IMAGES);
3179 ret = media_content_cancel_scan_folder(dir_path);
3181 if (ret == MEDIA_CONTENT_ERROR_NONE)
3182 media_content_debug("media_content_cancel_scan_folder is success");
3184 media_content_error("media_content_cancel_scan_folder is failed");
3189 int test_scan_dir(int cancel)
3191 GSource *source = NULL;
3192 GMainContext *context = NULL;
3194 g_loop = g_main_loop_new(NULL, FALSE);
3195 context = g_main_loop_get_context(g_loop);
3196 source = g_idle_source_new();
3197 g_source_set_callback(source, test_scan_dir_start, NULL, NULL);
3198 g_source_attach(source, context);
3201 GSource *cancel_src = NULL;
3202 cancel_src = g_idle_source_new();
3203 g_source_set_callback(cancel_src, cancel_scan_dir_start, NULL, NULL);
3204 g_source_attach(cancel_src, context);
3207 g_main_loop_run(g_loop);
3208 g_main_loop_unref(g_loop);
3213 void _noti_cb(media_content_error_e error,
3215 media_content_db_update_item_type_e update_item,
3216 media_content_db_update_type_e update_type,
3217 media_content_type_e media_type,
3224 media_content_debug("noti success! : %d\n", error);
3226 media_content_debug("error occured! : %d\n", error);
3228 media_content_debug("Noti from PID(%d)\n", pid);
3230 if (update_item == MEDIA_ITEM_FILE)
3231 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
3232 else if (update_item == MEDIA_ITEM_DIRECTORY)
3233 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
3235 if (update_type == MEDIA_CONTENT_INSERT)
3236 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
3237 else if (update_type == MEDIA_CONTENT_DELETE)
3238 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
3239 else if (update_type == MEDIA_CONTENT_UPDATE)
3240 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
3242 media_content_debug("content type : %d\n", media_type);
3245 media_content_debug("path : %s\n", path);
3247 media_content_debug("path not\n");
3250 media_content_debug("uuid : %s\n", uuid);
3252 media_content_debug("uuid not\n");
3255 media_content_debug("mime_type : %s\n", mime_type);
3257 media_content_debug("mime not\n");
3259 if (user_data) media_content_debug("String : %s\n", (char *)user_data);
3264 void _noti_cb_2(media_content_error_e error,
3266 media_content_db_update_item_type_e update_item,
3267 media_content_db_update_type_e update_type,
3268 media_content_type_e media_type,
3275 media_content_debug("noti_2 success! : %d\n", error);
3277 media_content_debug("error occured! : %d\n", error);
3279 media_content_debug("Noti_2 from PID(%d)\n", pid);
3281 g_main_loop_quit(g_loop);
3285 static media_content_noti_h noti_h;
3286 static media_content_noti_h noti_h_2;
3288 gboolean _send_noti_operations(gpointer data)
3290 int ret = MEDIA_CONTENT_ERROR_NONE;
3292 /* First of all, noti subscription */
3293 char *user_str = strdup("hi");
3294 media_content_add_db_updated_cb(_noti_cb, (void*)user_str, ¬i_h);
3295 media_content_add_db_updated_cb(_noti_cb_2, (void*)user_str, ¬i_h_2);
3297 /* media_info_insert_to_db */
3298 media_info_h media_item = NULL;
3299 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3301 ret = media_info_insert_to_db(path, &media_item);
3302 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3303 media_content_error("media_info_insert_to_db failed : %d", ret);
3304 media_info_destroy(media_item);
3308 media_content_debug("media_info_insert_to_db success");
3310 /* media_info_delete_batch_from_db */
3312 char condition[2048] = {0,};
3313 const char *temp = NULL;
3314 memset(condition, 0x00, sizeof(condition));
3316 temp = tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%\'");
3317 snprintf(condition, sizeof(condition), "MEDIA_PATH LIKE \'%s", temp);
3319 ret = media_filter_create(&filter);
3320 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3321 media_content_error("Fail to create filter");
3322 media_info_destroy(media_item);
3326 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3327 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3328 media_filter_destroy(filter);
3329 media_info_destroy(media_item);
3330 media_content_error("Fail to set condition");
3333 ret = media_info_delete_batch_from_db(filter);
3334 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3335 media_filter_destroy(filter);
3336 media_info_destroy(media_item);
3337 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3341 media_filter_destroy(filter);
3343 media_content_remove_db_updated_cb(noti_h);
3345 /* media_info_update_to_db */
3346 ret = media_info_update_to_db(media_item);
3347 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3348 media_content_error("media_info_update_to_db failed : %d\n", ret);
3349 media_info_destroy(media_item);
3353 media_info_destroy(media_item);
3360 int ret = MEDIA_CONTENT_ERROR_NONE;
3361 GSource *source = NULL;
3362 GMainContext *context = NULL;
3364 g_loop = g_main_loop_new(NULL, FALSE);
3365 context = g_main_loop_get_context(g_loop);
3366 source = g_idle_source_new();
3367 g_source_set_callback(source, _send_noti_operations, NULL, NULL);
3368 g_source_attach(source, context);
3370 g_main_loop_run(g_loop);
3371 g_main_loop_unref(g_loop);
3373 test_filter_destroy();
3374 media_content_remove_db_updated_cb(noti_h_2);
3379 int test_create_handle(void)
3381 int ret = MEDIA_CONTENT_ERROR_NONE;
3382 media_info_h media = NULL;
3383 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/test.txt");
3384 char *str_value = NULL;
3386 bool bool_value = FALSE;
3387 unsigned long long content_size = 0;
3388 time_t modified_time = 0;
3389 double double_value = 0.0;
3391 ret = media_info_create(path, &media);
3393 ret = media_info_set_title(media, "test_title");
3394 ret = media_info_set_album(media, "test_album");
3395 ret = media_info_set_artist(media, "test_artist");
3396 ret = media_info_set_genre(media, "test_genre");
3397 ret = media_info_set_recorded_date(media, "test_recorded_date");
3398 ret = media_info_set_age_rating(media, "test_age_rating");
3399 ret = media_info_set_author(media, "test_author");
3400 ret = media_info_set_category(media, "test_category");
3401 ret = media_info_set_content_name(media, "test_content_name");
3402 ret = media_info_set_description(media, "test_description");
3403 ret = media_info_set_display_name(media, "test_display_name");
3404 ret = media_info_set_keyword(media, "test_keyword");
3405 ret = media_info_set_location_tag(media, "test_location_tag");
3406 ret = media_info_set_weather(media, "test_weather");
3407 ret = media_info_set_provider(media, "test_provider");
3409 ret = media_info_set_altitude(media, 100.10);
3410 ret = media_info_set_latitude(media, 200.20);
3411 ret = media_info_set_longitude(media, 300.30);
3412 ret = media_info_set_rating(media, 10);
3413 ret = media_info_set_played_time(media);
3414 ret = media_info_set_favorite(media, TRUE);
3415 ret = media_info_increase_played_count(media);
3416 ret = media_info_set_added_time(media, 12345);
3418 ret = media_info_insert_to_db_with_data(media);
3419 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3420 media_content_error("media_info_insert_to_db_with_data failed : %d\n", ret);
3421 media_info_destroy(media);
3425 ret = media_info_get_media_id(media, &str_value);
3426 media_content_debug("media_id = [%s]", str_value);
3427 SAFE_FREE(str_value);
3429 ret = media_info_get_file_path(media, &str_value);
3430 media_content_debug("file_path = [%s]", str_value);
3431 SAFE_FREE(str_value);
3433 ret = media_info_get_title(media, &str_value);
3434 media_content_debug("title = [%s]", str_value);
3435 SAFE_FREE(str_value);
3437 ret = media_info_get_age_rating(media, &str_value);
3438 media_content_debug("age_rating = [%s]", str_value);
3439 SAFE_FREE(str_value);
3441 ret = media_info_get_author(media, &str_value);
3442 media_content_debug("author = [%s]", str_value);
3443 SAFE_FREE(str_value);
3445 ret = media_info_get_category(media, &str_value);
3446 media_content_debug("category = [%s]", str_value);
3447 SAFE_FREE(str_value);
3449 ret = media_info_get_content_name(media, &str_value);
3450 media_content_debug("content_name = [%s]", str_value);
3451 SAFE_FREE(str_value);
3453 ret = media_info_get_description(media, &str_value);
3454 media_content_debug("description = [%s]", str_value);
3455 SAFE_FREE(str_value);
3457 ret = media_info_get_display_name(media, &str_value);
3458 media_content_debug("display_name = [%s]", str_value);
3459 SAFE_FREE(str_value);
3461 ret = media_info_get_keyword(media, &str_value);
3462 media_content_debug("keyword = [%s]", str_value);
3463 SAFE_FREE(str_value);
3465 ret = media_info_get_location_tag(media, &str_value);
3466 media_content_debug("location_tag = [%s]", str_value);
3467 SAFE_FREE(str_value);
3469 ret = media_info_get_weather(media, &str_value);
3470 media_content_debug("weather = [%s]", str_value);
3471 SAFE_FREE(str_value);
3473 ret = media_info_get_provider(media, &str_value);
3474 media_content_debug("provider = [%s]", str_value);
3475 SAFE_FREE(str_value);
3477 ret = media_info_get_longitude(media, &double_value);
3478 media_content_debug("longitude = [%lf]", double_value);
3480 ret = media_info_get_latitude(media, &double_value);
3481 media_content_debug("latitude = [%lf]", double_value);
3483 ret = media_info_get_altitude(media, &double_value);
3484 media_content_debug("altitud = [%lf]", double_value);
3486 ret = media_info_get_rating(media, &int_value);
3487 media_content_debug("rating = [%d]", int_value);
3489 ret = media_info_get_favorite(media, &bool_value);
3490 media_content_debug("favorite = [%d]", bool_value);
3492 ret = media_info_get_played_time(media, &modified_time);
3493 media_content_debug("played_time = [%ld]", modified_time);
3495 ret = media_info_get_played_count(media, &int_value);
3496 media_content_debug("played_count = [%d]", int_value);
3498 ret = media_info_get_added_time(media, &modified_time);
3499 media_content_debug("added_time = [%ld]", modified_time);
3501 ret = media_info_get_size(media, &content_size);
3502 media_content_debug("size = [%llu]", content_size);
3504 ret = media_info_get_modified_time(media, &modified_time);
3505 media_content_debug("modified_time = [%ld]", modified_time);
3507 ret = media_info_get_media_type(media, (media_content_type_e *)&int_value);
3508 media_content_debug("media_type = [%d]", int_value);
3510 ret = media_info_get_storage_type(media, (media_content_storage_e *)&int_value);
3511 media_content_debug("storage_type = [%d]", int_value);
3513 media_info_destroy(media);
3519 bool media_face_test_cb(media_face_h face, void *user_data)
3521 char *face_id = NULL;
3522 char *media_id = NULL;
3523 unsigned int rect_x = 0;
3524 unsigned int rect_y = 0;
3525 unsigned int rect_w = 0;
3526 unsigned int rect_h = 0;
3527 media_content_orientation_e orientation = 0;
3528 char *face_tag = NULL;
3530 media_face_get_face_id(face, &face_id);
3531 media_face_get_media_id(face, &media_id);
3532 media_face_get_face_rect(face, &rect_x, &rect_y, &rect_w, &rect_h);
3533 media_face_get_orientation(face, &orientation);
3534 media_face_get_tag(face, &face_tag);
3536 media_content_debug("face_id [%s] media_id [%s]", face_id, media_id);
3537 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);
3538 media_content_debug("tag [%s]", face_tag);
3540 if (user_data != NULL) {
3541 media_face_h new_face = NULL;
3542 media_face_clone(&new_face, face);
3544 GList **list = (GList**)user_data;
3545 *list = g_list_append(*list, new_face);
3549 SAFE_FREE(media_id);
3550 SAFE_FREE(face_tag);
3557 int ret = MEDIA_CONTENT_ERROR_NONE;
3558 filter_h filter = NULL;
3559 GList *all_item_list = NULL;
3562 ret = media_filter_create(&filter);
3563 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3565 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", MEDIA_CONTENT_COLLATE_DEFAULT);
3566 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3567 media_filter_destroy(filter);
3568 media_content_error("Fail to set condition");
3572 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
3573 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3574 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
3575 media_filter_destroy(filter);
3579 for (i = 0; i < g_list_length(all_item_list); i++) {
3580 media_info_h media_handle = NULL;
3581 char *media_id = NULL;
3584 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
3586 ret = media_info_get_media_id(media_handle, &media_id);
3587 if (ret != MEDIA_CONTENT_ERROR_NONE)
3588 media_content_error("media_info_get_media_id failed: %d", ret);
3590 ret = media_info_get_face_count_from_db(media_id, filter, &face_count);
3591 if (ret != MEDIA_CONTENT_ERROR_NONE)
3592 media_content_error("media_info_get_face_count_from_db failed: %d", ret);
3594 media_content_error("media_id [%s] face_count [%d]", media_id, face_count);
3596 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, NULL);
3597 if (ret != MEDIA_CONTENT_ERROR_NONE)
3598 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
3600 media_info_destroy(media_handle);
3603 media_filter_destroy(filter);
3608 int test_face_add_del(void)
3610 int ret = MEDIA_CONTENT_ERROR_NONE;
3611 char *media_id = "ecca7366-e085-41d8-a12b-cbdfc2b9c5fc";
3614 media_face_h face = NULL;
3616 char *face_tag = "test_face_tag";
3618 ret = media_face_create(media_id, &face);
3619 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_face_create");
3621 ret = media_face_set_face_rect(face, 10, 12, 50, 100);
3622 ret = media_face_set_orientation(face, 5);
3623 ret = media_face_set_tag(face, face_tag);
3625 ret = media_face_insert_to_db(face);
3626 ret = media_face_destroy(face);
3629 GList *all_item_list = NULL;
3630 filter_h filter = NULL;
3631 ret = media_filter_create(&filter);
3632 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3634 ret = media_filter_set_condition(filter, "MEDIA_FACE_TAG IS NOT NULL", MEDIA_CONTENT_COLLATE_DEFAULT);
3635 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3636 media_filter_destroy(filter);
3637 media_content_error("Fail to set condition");
3641 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, &all_item_list);
3643 if (g_list_length(all_item_list) > 0) {
3644 media_face_h face_handle = NULL;
3645 face_handle = (media_face_h)g_list_nth_data(all_item_list, 0);
3647 ret = media_face_set_face_rect(face_handle, 20, 22, 70, 70);
3648 ret = media_face_set_orientation(face_handle, 3);
3649 ret = media_face_set_tag(face_handle, NULL);
3650 ret = media_face_update_to_db(face_handle);
3652 media_face_destroy(face_handle);
3655 media_filter_destroy(filter);
3658 char *face_id = "5e58a3a8-f0b2-4c29-b799-b49a70dc2313";
3661 ret = media_face_delete_from_db(face_id);
3666 #ifdef _USE_TVPD_MODE
3667 filter_h g_tv_filter = NULL;
3669 int test_tv_filter_create(void)
3671 media_content_debug("\n============Filter Create============\n\n");
3673 int ret = MEDIA_CONTENT_ERROR_NONE;
3675 ret = media_filter_create(&g_tv_filter);
3677 ret = media_filter_set_storage(g_tv_filter, "0a22a163-e634-4a2e-ba14-0469a969eea0");
3679 ret = media_filter_set_order(g_tv_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_STORAGE_ID, MEDIA_CONTENT_COLLATE_DEFAULT);
3684 int test_tv_filter_destroy(void)
3686 media_content_debug("\n============Filter Destroy============\n\n");
3688 int ret = MEDIA_CONTENT_ERROR_NONE;
3690 ret = media_filter_destroy(g_tv_filter);
3695 bool pvr_item_cb(media_pvr_h pvr, void *user_data)
3697 int ret = MEDIA_CONTENT_ERROR_NONE;
3698 char *c_value = NULL;
3700 bool b_value = false;
3701 unsigned long long l_value = 0;
3704 media_content_debug("NO Item");
3708 ret = media_pvr_get_media_id(pvr, &c_value);
3709 if (ret != MEDIA_CONTENT_ERROR_NONE)
3710 media_content_error("Fail to media_pvr_get_media_id");
3711 media_content_debug("media_id [%s]", c_value);
3714 ret = media_pvr_get_channel_name(pvr, &c_value);
3715 if (ret != MEDIA_CONTENT_ERROR_NONE)
3716 media_content_error("Fail to media_pvr_get_channel_name");
3717 media_content_debug("channel_name [%s]", c_value);
3720 ret = media_pvr_get_program_title(pvr, &c_value);
3721 if (ret != MEDIA_CONTENT_ERROR_NONE)
3722 media_content_error("Fail to media_pvr_get_program_title");
3723 media_content_debug("program_title [%s]", c_value);
3726 ret = media_pvr_get_program_crid(pvr, &c_value);
3727 if (ret != MEDIA_CONTENT_ERROR_NONE)
3728 media_content_error("Fail to media_pvr_get_program_crid");
3729 media_content_debug("program_crid [%s]", c_value);
3732 ret = media_pvr_get_guidance(pvr, &c_value);
3733 if (ret != MEDIA_CONTENT_ERROR_NONE)
3734 media_content_error("Fail to media_pvr_get_guidance");
3735 media_content_debug("guidance [%s]", c_value);
3738 ret = media_pvr_get_synopsis(pvr, &c_value);
3739 if (ret != MEDIA_CONTENT_ERROR_NONE)
3740 media_content_error("Fail to media_pvr_get_synopsis");
3741 media_content_debug("synopsis [%s]", c_value);
3744 ret = media_pvr_get_genre(pvr, &c_value);
3745 if (ret != MEDIA_CONTENT_ERROR_NONE)
3746 media_content_error("Fail to media_pvr_get_synopsis");
3747 media_content_debug("genre [%s]", c_value);
3750 ret = media_pvr_get_language(pvr, &c_value);
3751 if (ret != MEDIA_CONTENT_ERROR_NONE)
3752 media_content_error("Fail to media_pvr_get_language");
3753 media_content_debug("language [%s]", c_value);
3756 ret = media_pvr_get_path(pvr, &c_value);
3757 if (ret != MEDIA_CONTENT_ERROR_NONE)
3758 media_content_error("Fail to media_pvr_get_path");
3759 media_content_debug("path [%s]", c_value);
3762 ret = media_pvr_get_storage_id(pvr, &c_value);
3763 if (ret != MEDIA_CONTENT_ERROR_NONE)
3764 media_content_error("Fail to media_pvr_get_storage_id");
3765 media_content_debug("storage_id [%s]", c_value);
3768 ret = media_pvr_get_size(pvr, &l_value);
3769 if (ret != MEDIA_CONTENT_ERROR_NONE)
3770 media_content_error("Fail to media_pvr_get_size");
3771 media_content_debug("size [%lld]", l_value);
3773 ret = media_pvr_get_timezone(pvr, &i_value);
3774 if (ret != MEDIA_CONTENT_ERROR_NONE)
3775 media_content_error("Fail to media_pvr_get_timezone");
3776 media_content_debug("timezone [%d]", i_value);
3778 ret = media_pvr_get_ptc(pvr, &i_value);
3779 if (ret != MEDIA_CONTENT_ERROR_NONE)
3780 media_content_error("Fail to media_pvr_get_ptc");
3781 media_content_debug("ptc [%d]", i_value);
3783 ret = media_pvr_get_major(pvr, &i_value);
3784 if (ret != MEDIA_CONTENT_ERROR_NONE)
3785 media_content_error("Fail to media_pvr_get_major");
3786 media_content_debug("[%d]", i_value);
3788 ret = media_pvr_get_minor(pvr, &i_value);
3789 if (ret != MEDIA_CONTENT_ERROR_NONE)
3790 media_content_error("Fail to media_pvr_get_minor");
3791 media_content_debug("minor [%d]", i_value);
3793 ret = media_pvr_get_channel_type(pvr, &i_value);
3794 if (ret != MEDIA_CONTENT_ERROR_NONE)
3795 media_content_error("Fail to media_pvr_get_channel_type");
3796 media_content_debug("channel_type [%d]", i_value);
3798 ret = media_pvr_get_program_num(pvr, &i_value);
3799 if (ret != MEDIA_CONTENT_ERROR_NONE)
3800 media_content_error("Fail to media_pvr_get_program_num");
3801 media_content_debug("program_num [%d]", i_value);
3803 ret = media_pvr_get_duration(pvr, &i_value);
3804 if (ret != MEDIA_CONTENT_ERROR_NONE)
3805 media_content_error("Fail to media_pvr_get_duration");
3806 media_content_debug("duration [%d]", i_value);
3808 ret = media_pvr_get_embargo_time(pvr, &i_value);
3809 if (ret != MEDIA_CONTENT_ERROR_NONE)
3810 media_content_error("Fail to media_pvr_get_embargo_time");
3811 media_content_debug("embargo_time [%d]", i_value);
3813 ret = media_pvr_get_expiry_time(pvr, &i_value);
3814 if (ret != MEDIA_CONTENT_ERROR_NONE)
3815 media_content_error("Fail to media_pvr_get_expiry_time");
3816 media_content_debug("expiry_time [%d]", i_value);
3818 ret = media_pvr_get_parental_rating(pvr, &i_value);
3819 if (ret != MEDIA_CONTENT_ERROR_NONE)
3820 media_content_error("Fail to media_pvr_get_parental_rating");
3821 media_content_debug("parental_rating [%d]", i_value);
3823 ret = media_pvr_get_start_time(pvr, &i_value);
3824 if (ret != MEDIA_CONTENT_ERROR_NONE)
3825 media_content_error("Fail to media_pvr_get_start_time");
3826 media_content_debug("start_time [%d]", i_value);
3828 ret = media_pvr_get_program_start_time(pvr, &i_value);
3829 if (ret != MEDIA_CONTENT_ERROR_NONE)
3830 media_content_error("Fail to media_pvr_get_program_start_time");
3831 media_content_debug("program_start_time [%d]", i_value);
3833 ret = media_pvr_get_program_end_time(pvr, &i_value);
3834 if (ret != MEDIA_CONTENT_ERROR_NONE)
3835 media_content_error("Fail to media_pvr_get_program_end_time");
3836 media_content_debug("program_end_time [%d]", i_value);
3838 ret = media_pvr_get_program_date(pvr, &i_value);
3839 if (ret != MEDIA_CONTENT_ERROR_NONE)
3840 media_content_error("Fail to media_pvr_get_program_date");
3841 media_content_debug("program_date [%d]", i_value);
3843 ret = media_pvr_get_timer_record(pvr, &b_value);
3844 if (ret != MEDIA_CONTENT_ERROR_NONE)
3845 media_content_error("Fail to media_pvr_get_timer_record");
3846 media_content_debug("timer_record [%d]", b_value);
3848 ret = media_pvr_get_series_record(pvr, &b_value);
3849 if (ret != MEDIA_CONTENT_ERROR_NONE)
3850 media_content_error("Fail to media_pvr_get_series_record");
3851 media_content_debug("series_record [%d]", b_value);
3853 ret = media_pvr_get_hd(pvr, &i_value);
3854 if (ret != MEDIA_CONTENT_ERROR_NONE)
3855 media_content_error("Fail to media_pvr_get_hd");
3856 media_content_debug("hd [%d]", i_value);
3858 ret = media_pvr_get_subtitle(pvr, &b_value);
3859 if (ret != MEDIA_CONTENT_ERROR_NONE)
3860 media_content_error("Fail to media_pvr_get_subtitle");
3861 media_content_debug("subtitle [%d]", b_value);
3863 ret = media_pvr_get_ttx(pvr, &b_value);
3864 if (ret != MEDIA_CONTENT_ERROR_NONE)
3865 media_content_error("Fail to media_pvr_get_ttx");
3866 media_content_debug("ttx [%d]", b_value);
3868 ret = media_pvr_get_ad(pvr, &b_value);
3869 if (ret != MEDIA_CONTENT_ERROR_NONE)
3870 media_content_error("Fail to media_pvr_get_ad");
3871 media_content_debug("ad [%d]", b_value);
3873 ret = media_pvr_get_hard_of_hearing_radio(pvr, &b_value);
3874 if (ret != MEDIA_CONTENT_ERROR_NONE)
3875 media_content_error("Fail to media_pvr_get_hard_of_hearing_radio");
3876 media_content_debug("hard_of_hearing_radio [%d]", b_value);
3878 ret = media_pvr_get_data_service(pvr, &b_value);
3879 if (ret != MEDIA_CONTENT_ERROR_NONE)
3880 media_content_error("Fail to media_pvr_get_data_service");
3881 media_content_debug("data_service [%d]", b_value);
3883 ret = media_pvr_get_content_lock(pvr, &b_value);
3884 if (ret != MEDIA_CONTENT_ERROR_NONE)
3885 media_content_error("Fail to media_pvr_get_content_lock");
3886 media_content_debug("content_lock [%d]", b_value);
3888 ret = media_pvr_get_content_watch(pvr, &b_value);
3889 if (ret != MEDIA_CONTENT_ERROR_NONE)
3890 media_content_error("Fail to media_pvr_get_content_watch");
3891 media_content_debug("content_watch [%d]", b_value);
3893 ret = media_pvr_get_has_audio_only(pvr, &b_value);
3894 if (ret != MEDIA_CONTENT_ERROR_NONE)
3895 media_content_error("Fail to media_pvr_get_has_audio_only");
3896 media_content_debug("has_audio_only [%d]", b_value);
3898 ret = media_pvr_get_is_local_record(pvr, &b_value);
3899 if (ret != MEDIA_CONTENT_ERROR_NONE)
3900 media_content_error("Fail to media_pvr_get_is_local_record");
3901 media_content_debug("is_local_record [%d]", b_value);
3903 ret = media_pvr_get_resolution(pvr, (media_pvr_resolution_e*)&i_value);
3904 if (ret != MEDIA_CONTENT_ERROR_NONE)
3905 media_content_error("Fail to media_pvr_get_resolution");
3906 media_content_debug("resolution [%d]", i_value);
3908 ret = media_pvr_get_aspectratio(pvr, (media_pvr_aspectratio_e*)&i_value);
3909 if (ret != MEDIA_CONTENT_ERROR_NONE)
3910 media_content_error("Fail to media_pvr_get_aspectratio");
3911 media_content_debug("aspectratio [%d]", i_value);
3913 ret = media_pvr_get_highlight(pvr, &b_value);
3914 if (ret != MEDIA_CONTENT_ERROR_NONE)
3915 media_content_error("Fail to media_pvr_get_highlight");
3916 media_content_debug("highlight [%d]", b_value);
3924 int ret = MEDIA_CONTENT_ERROR_NONE;
3925 int media_count = 0;
3927 media_content_debug("\n============PVR Test============\n\n");
3929 test_tv_filter_create();
3931 ret = media_pvr_get_media_count_from_db(g_tv_filter, &media_count);
3932 if (ret != MEDIA_CONTENT_ERROR_NONE)
3933 media_content_error("media_pvr_get_media_count_from_db failed: %d", ret);
3935 media_content_debug("media_count : [%d]", media_count);
3937 ret = media_pvr_foreach_media_from_db(g_tv_filter, pvr_item_cb, NULL);
3938 if (ret != MEDIA_CONTENT_ERROR_NONE)
3939 media_content_error("media_pvr_foreach_media_from_db is failed");
3941 test_tv_filter_destroy();
3946 int test_pvr_update_db(void)
3948 int ret = MEDIA_CONTENT_ERROR_NONE;
3949 media_pvr_h pvr = NULL;
3951 ret = media_pvr_get_pvr_from_db("ff9b5a9a-a7b4-47f4-8255-84e007e25f13", &pvr);
3952 if (ret != MEDIA_CONTENT_ERROR_NONE)
3953 media_content_error("media_pvr_get_pvr_from_db failed: %d", ret);
3955 ret = media_pvr_set_content_lock(pvr, TRUE);
3956 if (ret != MEDIA_CONTENT_ERROR_NONE)
3957 media_content_error("Fail to media_pvr_set_content_lock");
3959 ret = media_pvr_set_content_watch(pvr, TRUE);
3960 if (ret != MEDIA_CONTENT_ERROR_NONE)
3961 media_content_error("Fail to media_pvr_set_content_watch");
3963 ret = media_pvr_set_program_title(pvr, "TEST TITLE");
3964 if (ret != MEDIA_CONTENT_ERROR_NONE)
3965 media_content_error("Fail to media_pvr_set_program_title");
3967 ret = media_pvr_set_highlight(pvr, TRUE);
3968 if (ret != MEDIA_CONTENT_ERROR_NONE)
3969 media_content_error("Fail to media_pvr_set_highlight");
3971 ret = media_pvr_update_to_db(pvr);
3972 if (ret != MEDIA_CONTENT_ERROR_NONE)
3973 media_content_error("Fail to media_pvr_update_to_db");
3976 media_pvr_destroy(pvr);
3982 int main(int argc, char *argv[])
3984 int ret = MEDIA_CONTENT_ERROR_NONE;
3986 media_content_debug("--- content manager test start ---\n\n");
3988 ret = test_connect_database();
3989 if (ret != MEDIA_CONTENT_ERROR_NONE)
3990 return MEDIA_CONTENT_ERROR_NONE;
3991 #ifdef _USE_TVPD_MODE
3994 test_pvr_update_db();
4000 ret = test_start_face_detection(FALSE);
4001 if (ret != MEDIA_CONTENT_ERROR_NONE)
4005 if (ret != MEDIA_CONTENT_ERROR_NONE)
4008 ret = test_gallery_scenario();
4009 if (ret != MEDIA_CONTENT_ERROR_NONE)
4012 ret = test_get_all_music_files();
4013 if (ret != MEDIA_CONTENT_ERROR_NONE)
4016 ret = test_media_info_operation();
4017 if (ret != MEDIA_CONTENT_ERROR_NONE)
4020 ret = test_folder_operation();
4021 if (ret != MEDIA_CONTENT_ERROR_NONE)
4024 ret = test_folder_update();
4025 if (ret != MEDIA_CONTENT_ERROR_NONE)
4028 ret = test_playlist_operation();
4029 if (ret != MEDIA_CONTENT_ERROR_NONE)
4032 ret = test_tag_operation();
4033 if (ret != MEDIA_CONTENT_ERROR_NONE)
4036 ret = test_bookmark_operation();
4037 if (ret != MEDIA_CONTENT_ERROR_NONE)
4040 ret = test_album_list();
4041 if (ret != MEDIA_CONTENT_ERROR_NONE)
4044 ret = test_group_operation();
4045 if (ret != MEDIA_CONTENT_ERROR_NONE)
4048 ret = test_update_operation();
4049 if (ret != MEDIA_CONTENT_ERROR_NONE)
4052 ret = test_insert();
4053 if (ret != MEDIA_CONTENT_ERROR_NONE)
4057 if (ret != MEDIA_CONTENT_ERROR_NONE)
4060 ret = test_create_thumbnail(TRUE);
4061 if (ret != MEDIA_CONTENT_ERROR_NONE)
4064 ret = test_extrace_face(TRUE);
4065 if (ret != MEDIA_CONTENT_ERROR_NONE)
4068 ret = test_request_update_db();
4069 if (ret != MEDIA_CONTENT_ERROR_NONE)
4073 if (ret != MEDIA_CONTENT_ERROR_NONE)
4076 ret = test_batch_operations();
4077 if (ret != MEDIA_CONTENT_ERROR_NONE)
4078 return MEDIA_CONTENT_ERROR_NONE;
4080 ret = test_insert_burst_shot_to_db();
4081 if (ret != MEDIA_CONTENT_ERROR_NONE)
4082 return MEDIA_CONTENT_ERROR_NONE;
4084 ret = test_scan_file();
4085 if (ret != MEDIA_CONTENT_ERROR_NONE)
4086 return MEDIA_CONTENT_ERROR_NONE;
4088 ret = test_scan_dir(true);
4089 if (ret != MEDIA_CONTENT_ERROR_NONE)
4090 return MEDIA_CONTENT_ERROR_NONE;
4093 if (ret != MEDIA_CONTENT_ERROR_NONE)
4094 return MEDIA_CONTENT_ERROR_NONE;
4096 ret = test_create_handle();
4097 if (ret != MEDIA_CONTENT_ERROR_NONE)
4098 return MEDIA_CONTENT_ERROR_NONE;
4101 if (ret != MEDIA_CONTENT_ERROR_NONE)
4102 return MEDIA_CONTENT_ERROR_NONE;
4104 ret = test_face_add_del();
4105 if (ret != MEDIA_CONTENT_ERROR_NONE)
4106 return MEDIA_CONTENT_ERROR_NONE;
4108 ret = test_playlist_operation_v2();
4109 if (ret != MEDIA_CONTENT_ERROR_NONE)
4110 return MEDIA_CONTENT_ERROR_NONE;
4112 ret = test_bookmark_operation_v2();
4113 if (ret != MEDIA_CONTENT_ERROR_NONE)
4114 return MEDIA_CONTENT_ERROR_NONE;
4116 ret = test_tag_operation_v2();
4117 if (ret != MEDIA_CONTENT_ERROR_NONE)
4118 return MEDIA_CONTENT_ERROR_NONE;
4121 ret = test_disconnect_database();
4122 if (ret != MEDIA_CONTENT_ERROR_NONE)
4125 media_content_debug("--- content manager test end ---\n");