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 int ret = MEDIA_CONTENT_ERROR_NONE;
240 ret = media_info_clone(&new_media, media);
242 if (ret != MEDIA_CONTENT_ERROR_NONE) {
243 GList **list = (GList**)user_data;
244 *list = g_list_append(*list, new_media);
250 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
252 media_tag_h new_tag = NULL;
253 media_tag_clone(&new_tag, tag);
255 GList **list = (GList**)user_data;
256 *list = g_list_append(*list, new_tag);
261 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
263 media_bookmark_h new_bm = NULL;
264 int ret = MEDIA_CONTENT_ERROR_NONE;
266 ret = media_bookmark_clone(&new_bm, bookmark);
267 if (ret != MEDIA_CONTENT_ERROR_NONE)
268 media_content_error("error media_bookmark_clone : [%d]", ret);
270 GList **list = (GList**)user_data;
271 *list = g_list_append(*list, new_bm);
276 bool media_item_cb(media_info_h media, void *user_data)
278 char *c_value = NULL;
279 char *media_id = NULL;
280 media_content_type_e media_type = 0;
281 int ret = MEDIA_CONTENT_ERROR_NONE;
284 media_content_debug("NO Item");
288 ret = media_info_get_media_type(media, &media_type);
289 if (ret != MEDIA_CONTENT_ERROR_NONE)
290 media_content_error("error when get info : [%d]", ret);
291 media_content_debug("media_type : [%d]", media_type);
293 ret = media_info_get_media_id(media, &media_id);
294 if (ret != MEDIA_CONTENT_ERROR_NONE)
295 media_content_error("error when get info : [%d]", ret);
296 media_content_debug("media_id : [%s]", media_id);
298 ret = media_info_get_file_path(media, &c_value);
299 if (ret != MEDIA_CONTENT_ERROR_NONE)
300 media_content_error("error when get info : [%d]", ret);
301 media_content_debug("file_path : [%s]", c_value);
307 bool b_value = false;
308 unsigned long long size = 0;
310 if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
313 if (media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE) {
314 get_audio_meta(audio);
315 ret = audio_meta_destroy(audio);
316 if (ret != MEDIA_CONTENT_ERROR_NONE)
317 media_content_error("error audio_meta_destroy : [%d]", ret);
319 media_content_error("[audio_error]");
321 } else if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
323 media_content_orientation_e orientation = 0;
324 bool is_burst_shot = false;
325 char *burst_id = NULL;
326 char *weather = NULL;
328 if (media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE) {
329 ret = image_meta_get_orientation(image, &orientation);
330 if (ret != MEDIA_CONTENT_ERROR_NONE)
331 media_content_error("error image_meta_get_orientation : [%d]", ret);
333 media_content_debug("[image] orientation : %d", orientation);
335 ret = image_meta_is_burst_shot(image, &is_burst_shot);
336 if (ret != MEDIA_CONTENT_ERROR_NONE)
337 media_content_error("error image_meta_is_burst_shot : [%d]", ret);
339 ret = image_meta_get_burst_id(image, &burst_id);
340 if (ret != MEDIA_CONTENT_ERROR_NONE)
341 media_content_error("error image_meta_get_burst_id : [%d]", ret);
343 media_content_debug("[image] burst_id : [%s]", burst_id);
348 ret = image_meta_destroy(image);
349 if (ret != MEDIA_CONTENT_ERROR_NONE)
350 media_content_error("error image_meta_destroy : [%d]", ret);
352 media_content_error("[image_error]");
354 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
357 if (media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE) {
358 get_video_meta(video);
359 ret = video_meta_destroy(video);
360 if (ret != MEDIA_CONTENT_ERROR_NONE)
361 media_content_error("error video_meta_destroy : [%d]", ret);
363 media_content_error("[video_error]");
366 media_content_debug("Other Content");
369 media_content_debug("=== media_info ===");
370 ret = media_info_get_file_path(media, &c_value);
371 if (ret != MEDIA_CONTENT_ERROR_NONE)
372 media_content_error("error when get info : [%d]", ret);
373 media_content_debug("file_path : [%s]", c_value);
376 ret = media_info_get_display_name(media, &c_value);
377 if (ret != MEDIA_CONTENT_ERROR_NONE)
378 media_content_error("error when get info : [%d]", ret);
379 media_content_debug("display_name : [%s]", c_value);
382 ret = media_info_get_mime_type(media, &c_value);
383 if (ret != MEDIA_CONTENT_ERROR_NONE)
384 media_content_error("error when get info : [%d]", ret);
385 media_content_debug("mime_type : [%s]", c_value);
388 ret = media_info_get_thumbnail_path(media, &c_value);
389 if (ret != MEDIA_CONTENT_ERROR_NONE)
390 media_content_error("error when get info : [%d]", ret);
391 media_content_debug("thumbnail_path : [%s]", c_value);
394 ret = media_info_get_description(media, &c_value);
395 if (ret != MEDIA_CONTENT_ERROR_NONE)
396 media_content_error("error when get info : [%d]", ret);
397 media_content_debug("description : [%s]", c_value);
400 ret = media_info_get_author(media, &c_value);
401 if (ret != MEDIA_CONTENT_ERROR_NONE)
402 media_content_error("error when get info : [%d]", ret);
403 media_content_debug("author : [%s]", c_value);
406 ret = media_info_get_provider(media, &c_value);
407 if (ret != MEDIA_CONTENT_ERROR_NONE)
408 media_content_error("error when get info : [%d]", ret);
409 media_content_debug("provider : [%s]", c_value);
412 ret = media_info_get_content_name(media, &c_value);
413 if (ret != MEDIA_CONTENT_ERROR_NONE)
414 media_content_error("error when get info : [%d]", ret);
415 media_content_debug("content_name : [%s]", c_value);
418 ret = media_info_get_category(media, &c_value);
419 if (ret != MEDIA_CONTENT_ERROR_NONE)
420 media_content_error("error when get info : [%d]", ret);
421 media_content_debug("category : [%s]", c_value);
424 ret = media_info_get_location_tag(media, &c_value);
425 if (ret != MEDIA_CONTENT_ERROR_NONE)
426 media_content_error("error when get info : [%d]", ret);
427 media_content_debug("location_tag : [%s]", c_value);
430 ret = media_info_get_age_rating(media, &c_value);
431 if (ret != MEDIA_CONTENT_ERROR_NONE)
432 media_content_error("error when get info : [%d]", ret);
433 media_content_debug("age_rating : [%s]", c_value);
436 ret = media_info_get_keyword(media, &c_value);
437 if (ret != MEDIA_CONTENT_ERROR_NONE)
438 media_content_error("error when get info : [%d]", ret);
439 media_content_debug("keyword : [%s]", c_value);
442 ret = media_info_get_size(media, &size);
443 if (ret != MEDIA_CONTENT_ERROR_NONE)
444 media_content_error("error when get info : [%d]", ret);
445 media_content_debug("size : [%lld]", size);
447 ret = media_info_get_added_time(media, &t_value);
448 if (ret != MEDIA_CONTENT_ERROR_NONE)
449 media_content_error("error when get info : [%d]", ret);
450 media_content_debug("added_time : [%ld]", t_value);
452 ret = media_info_get_modified_time(media, &t_value);
453 if (ret != MEDIA_CONTENT_ERROR_NONE)
454 media_content_error("error when get info : [%d]", ret);
455 media_content_debug("modified_time : [%ld]", t_value);
457 ret = media_info_get_timeline(media, &t_value);
458 if (ret != MEDIA_CONTENT_ERROR_NONE)
459 media_content_error("error when get info : [%d]", ret);
460 media_content_debug("timeline : [%ld]", t_value);
462 ret = media_info_get_rating(media, &i_value);
463 if (ret != MEDIA_CONTENT_ERROR_NONE)
464 media_content_error("error when get info : [%d]", ret);
465 media_content_debug("rating : [%d]", i_value);
467 ret = media_info_get_favorite(media, &b_value);
468 if (ret != MEDIA_CONTENT_ERROR_NONE)
469 media_content_error("error when get info : [%d]", ret);
470 media_content_debug("favorite : [%d]", b_value);
472 ret = media_info_is_drm(media, &b_value);
473 if (ret != MEDIA_CONTENT_ERROR_NONE)
474 media_content_error("error when get info : [%d]", ret);
475 media_content_debug("is_drm : [%d]", b_value);
477 ret = media_info_is_360_content(media, &b_value);
478 if (ret != MEDIA_CONTENT_ERROR_NONE)
479 media_content_error("error when get info : [%d]", ret);
480 media_content_debug("is_360 : [%d]", b_value);
482 ret = media_info_get_stitched_state(media, &i_value);
483 if (ret != MEDIA_CONTENT_ERROR_NONE)
484 media_content_error("error when get info : [%d]", ret);
485 media_content_debug("360 stitched : [%d]", i_value);
487 ret = media_info_get_stitched_engine(media, &i_value);
488 if (ret != MEDIA_CONTENT_ERROR_NONE)
489 media_content_error("error when get info : [%d]", ret);
490 media_content_debug("360 engine : [%d]", i_value);
492 ret = media_info_set_weather(media, "Sunny");
493 if (ret != MEDIA_CONTENT_ERROR_NONE) {
494 media_content_error("Fail to set weather");
497 ret = media_info_get_weather(media, &c_value);
498 if (ret != MEDIA_CONTENT_ERROR_NONE)
499 media_content_error("error when get info : [%d]", ret);
500 media_content_debug("weather : [%s]", c_value);
503 /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
504 /*ret = media_info_set_location_tag(media, "Test location tag");*/
505 /*media_info_update_to_db(media);*/
512 bool folder_list_cb(media_folder_h folder, void *user_data)
515 char *folder_id = NULL;
516 char *str_val = NULL;
518 media_content_storage_e storage_type;
520 media_folder_h *_folder = (media_folder_h*)user_data;
522 media_content_debug("===========================");
523 if (folder != NULL) {
525 media_folder_clone(_folder, folder);
527 if (media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE) {
528 media_content_error("[ERROR] media_folder_get_folder_id is failed");
531 media_content_debug("folder_id = [%s]", folder_id);
533 if (media_folder_get_parent_folder_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
534 SAFE_FREE(folder_id);
535 media_content_error("[ERROR] media_folder_get_parent_folder_id is failed");
538 media_content_debug("parent_folder_id = [%s]", str_val);
541 if (media_folder_get_path(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
542 SAFE_FREE(folder_id);
543 media_content_error("[ERROR] media_folder_get_path is failed");
546 media_content_debug("folder_path = [%s]", str_val);
549 if (media_folder_get_name(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
550 SAFE_FREE(folder_id);
551 media_content_error("[ERROR] media_folder_get_name is failed");
554 media_content_debug("folder_name = [%s]", str_val);
557 if (media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE) {
558 SAFE_FREE(folder_id);
559 media_content_error("[ERROR] media_folder_get_storage_type is failed");
562 media_content_debug("storage_type = [%d]", storage_type);
564 if (media_folder_get_storage_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
565 SAFE_FREE(folder_id);
566 media_content_error("[ERROR] media_folder_get_name is failed");
569 media_content_debug("storage_id = [%s]", str_val);
572 if (media_folder_get_order(folder, &int_val) != MEDIA_CONTENT_ERROR_NONE) {
573 media_content_error("[ERROR] media_folder_get_order is failed");
576 media_content_debug("folder_order = [%d]", int_val);
578 if (media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE) {
579 SAFE_FREE(folder_id);
580 media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
584 if (media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
585 SAFE_FREE(folder_id);
586 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
590 SAFE_FREE(folder_id);
599 bool test_album_from_db(int album_id)
601 int ret = MEDIA_CONTENT_ERROR_NONE;
602 media_album_h album_h;
603 int test_album_id = 0;
604 char *album_name = NULL;
607 ret = media_album_get_album_from_db(album_id, &album_h);
608 if (ret != MEDIA_CONTENT_ERROR_NONE) {
609 media_content_error("error when get album");
613 if (media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE) {
614 media_album_destroy(album_h);
618 media_content_debug("test_album_id : [%d]", test_album_id);
620 if (media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
621 media_album_destroy(album_h);
625 media_content_debug("album_name : [%s]", album_name);
627 if (media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE) {
628 media_album_destroy(album_h);
629 /* fix prevent: Resource Leak */
630 SAFE_FREE(album_name);
634 media_content_debug("artist : [%s]", artist);
636 SAFE_FREE(album_name);
639 media_album_destroy(album_h);
644 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
646 int ret = MEDIA_CONTENT_ERROR_NONE;
648 char *playlist_name = NULL;
649 media_playlist_h playlist_h;
650 char *playlist_thumbnail_path = NULL;
652 media_content_debug("playlist_list_cb ======");
654 GList **list = (GList**)user_data;
657 if (playlist == NULL) {
658 media_content_debug(" playlist handle is NULL");
662 ret = media_playlist_get_playlist_id(playlist, &playlist_id);
663 if (ret != MEDIA_CONTENT_ERROR_NONE)
664 media_content_error("error media_playlist_get_playlist_id : [%d]", ret);
666 media_content_debug("playlist_id : %d", playlist_id);
667 /* 64bit build issue */
669 if (user_data != NULL)
670 *list = g_list_append(*list, (gpointer)playlist_id);
672 ret = media_playlist_get_name(playlist, &playlist_name);
673 if (ret != MEDIA_CONTENT_ERROR_NONE)
674 media_content_error("error media_playlist_get_name : [%d]", ret);
676 media_content_debug("playlist_name : %s", playlist_name);
677 SAFE_FREE(playlist_name);
679 ret = media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
680 if (ret != MEDIA_CONTENT_ERROR_NONE)
681 media_content_error("error media_playlist_get_thumbnail_path : [%d]", ret);
683 media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
684 SAFE_FREE(playlist_thumbnail_path);
686 ret = media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
687 if (ret != MEDIA_CONTENT_ERROR_NONE)
688 media_content_error("error media_playlist_get_playlist_from_db : [%d]", ret);
690 ret = media_playlist_destroy(playlist_h);
691 if (ret != MEDIA_CONTENT_ERROR_NONE)
692 media_content_error("error media_playlist_destroy : [%d]", ret);
697 bool tag_list_cb(media_tag_h tag, void *user_data)
700 char *tag_name = NULL;
701 int ret = MEDIA_CONTENT_ERROR_NONE;
704 media_content_debug(" tag handle is NULL");
708 ret = media_tag_get_tag_id(tag, &tag_id);
709 if (ret != MEDIA_CONTENT_ERROR_NONE)
710 media_content_error("error media_tag_get_tag_id : [%d]", ret);
712 media_content_debug("tag_id : %d", tag_id);
714 ret = media_tag_get_name(tag, &tag_name);
715 if (ret != MEDIA_CONTENT_ERROR_NONE)
716 media_content_error("error media_tag_get_name : [%d]", ret);
718 media_content_debug("tag_name : %s", tag_name);
724 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
726 media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
727 int ret = MEDIA_CONTENT_ERROR_NONE;
729 if (_bookmark != NULL && user_data != NULL) {
730 media_bookmark_h new_bookmark;
732 media_bookmark_clone(&new_bookmark, bookmark);
733 GList **list = (GList**)user_data;
734 *list = g_list_append(*list, new_bookmark);
737 if (_bookmark != NULL) {
742 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
743 if (ret != MEDIA_CONTENT_ERROR_NONE)
744 media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
746 media_content_debug("bookmark_id : %d", bookmark_id);
748 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
749 if (ret != MEDIA_CONTENT_ERROR_NONE)
750 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
752 media_content_debug("bookmark thumbnail_path : %s", name);
755 ret = media_bookmark_get_marked_time(bookmark, &time);
756 if (ret != MEDIA_CONTENT_ERROR_NONE)
757 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
759 media_content_debug("bookmark marked_time : %ld", time);
761 ret = media_bookmark_get_name(bookmark, &name);
762 if (ret != MEDIA_CONTENT_ERROR_NONE)
763 media_content_error("error media_bookmark_get_name : [%d]", ret);
765 media_content_debug("bookmark name : %s", name);
774 bool album_list_cb(media_album_h album, void *user_data)
777 char *album_name = NULL;
779 char *album_art = NULL;
781 int ret = MEDIA_CONTENT_ERROR_NONE;
782 filter_h filter = NULL;
785 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
787 ret = media_filter_create(&filter);
788 if (ret != MEDIA_CONTENT_ERROR_NONE) {
789 media_content_error("Fail to create filter");
792 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
793 if (ret != MEDIA_CONTENT_ERROR_NONE) {
794 media_filter_destroy(filter);
795 media_content_error("Fail to set condition");
798 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
799 if (ret != MEDIA_CONTENT_ERROR_NONE) {
800 media_filter_destroy(filter);
801 media_content_error("Fail to set order");
806 if (media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE) {
807 media_filter_destroy(filter);
811 media_content_debug("album_id : [%d]", album_id);
813 if (media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
814 media_filter_destroy(filter);
818 media_content_debug("album_name : [%s]", album_name);
819 SAFE_FREE(album_name);
821 if (media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE) {
822 media_filter_destroy(filter);
826 media_content_debug("artist : [%s]", artist);
829 if (media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE) {
830 media_filter_destroy(filter);
834 media_content_debug("album_art : [%s]", album_art);
835 SAFE_FREE(album_art);
837 if (media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE) {
838 media_filter_destroy(filter);
842 media_content_debug("media_count : [%d]", media_count);
844 if (media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
845 media_filter_destroy(filter);
849 test_album_from_db(album_id);
851 media_content_error("album item not Found!!");
854 media_filter_destroy(filter);
859 bool group_list_cb(const char *group_name, void *user_data)
862 int *idx = user_data;
864 media_content_debug("group item : [%s] [%d]", group_name, *idx);
866 if (media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
869 media_content_debug("media_count : [%d]", media_count);
871 if (media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
877 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
879 media_content_debug("playlist_member_id : [%d]", playlist_member_id);
880 /* 64bit build issue */
882 GList **list = (GList**)user_data;
884 *list = g_list_append(*list, (gpointer)playlist_member_id);
886 /*media_item_cb(media, user_data);*/
891 int test_filter_create(void)
893 media_content_debug("\n============Filter Create============\n\n");
895 int ret = MEDIA_CONTENT_ERROR_NONE;
897 /* Filter for media */
898 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
899 /*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*/
901 ret = media_filter_create(&g_filter);
903 /* Set condition and collate
904 * Condition string : You can make where statement of sql.
905 * Colation : You can use collation when comparing.
906 * Ex) In case of FILE_NAME='Samsung' as condition string,
907 * if you want to compare with NOCASE collation,
908 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
909 * if you want to compare in case-sensitive,
910 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
912 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
914 /* Collation of ordering
915 * If you want to get list, which is sorted by NOCASE,
916 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
918 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
920 /* Able to set multi column to set order */
922 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
923 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
924 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
925 ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
927 /* Filter for group */
928 const char *g_condition = "TAG_NAME like \"\%my\%\"";
929 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
931 ret = media_filter_create(&g_filter_g);
933 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
938 int test_filter_destroy(void)
940 media_content_debug("\n============Filter Create============\n\n");
942 int ret = MEDIA_CONTENT_ERROR_NONE;
944 ret = media_filter_destroy(g_filter);
949 int test_connect_database(void)
951 int ret = MEDIA_CONTENT_ERROR_NONE;
953 media_content_debug("\n============DB Connection Test============\n\n");
955 ret = media_content_connect();
957 if (ret == MEDIA_CONTENT_ERROR_NONE)
958 media_content_debug("connection is success\n\n");
960 media_content_error("connection is failed\n\n");
965 int test_gallery_scenario(void)
967 int ret = MEDIA_CONTENT_ERROR_NONE;
969 filter_h filter = NULL;
972 GList *folder_list = NULL;
973 media_folder_h folder_handle = NULL;
975 /* First, Get folder list */
976 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
977 if (ret != MEDIA_CONTENT_ERROR_NONE) {
978 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
981 media_content_debug("media_folder_foreach_folder_from_db success!!");
982 char *folder_id = NULL;
983 char *folder_name = NULL;
984 char *folder_path = NULL;
986 for (i = 0; i < g_list_length(folder_list); i++) {
987 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
989 ret = media_folder_get_folder_id(folder_handle, &folder_id);
990 if (ret != MEDIA_CONTENT_ERROR_NONE)
991 media_content_error("media_folder_get_folder_id failed: %d", ret);
992 ret = media_folder_get_name(folder_handle, &folder_name);
993 if (ret != MEDIA_CONTENT_ERROR_NONE)
994 media_content_error("media_folder_get_name failed: %d", ret);
995 ret = media_folder_get_path(folder_handle, &folder_path);
996 if (ret != MEDIA_CONTENT_ERROR_NONE)
997 media_content_error("media_folder_get_path failed: %d", ret);
999 media_content_debug("folder_id [%d] : %s", i, folder_id);
1000 media_content_debug("folder_name [%d] : %s", i, folder_name);
1001 media_content_debug("folder_path [%d] : %s", i, folder_path);
1003 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
1004 /* User should free these string */
1005 SAFE_FREE(folder_id);
1006 SAFE_FREE(folder_name);
1007 SAFE_FREE(folder_path);
1008 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1009 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
1012 media_content_debug("media count [%d] : %d", i, count);
1017 /* To check performance */
1018 struct timeval start, end;
1019 gettimeofday(&start, NULL);
1021 /* Second, Get all item list */
1022 media_info_h media_handle = NULL;
1023 GList *all_item_list = NULL;
1025 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1026 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1027 ret = media_filter_create(&filter);
1028 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1029 media_content_error("Fail to create filter");
1032 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1033 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1034 media_filter_destroy(filter);
1035 media_content_error("Fail to set condition");
1038 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1039 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1040 media_filter_destroy(filter);
1041 media_content_error("Fail to set order");
1045 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1046 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1047 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1048 media_filter_destroy(filter);
1051 media_content_debug("media_info_foreach_media_from_db success");
1052 media_content_type_e media_type;
1053 char *media_id = NULL;
1054 char *media_name = NULL;
1055 char *media_path = NULL;
1057 for (i = 0; i < g_list_length(all_item_list); i++) {
1058 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1060 ret = media_info_get_media_id(media_handle, &media_id);
1061 if (ret != MEDIA_CONTENT_ERROR_NONE)
1062 media_content_error("media_info_get_media_id failed: %d", ret);
1063 ret = media_info_get_media_type(media_handle, &media_type);
1064 if (ret != MEDIA_CONTENT_ERROR_NONE)
1065 media_content_error("media_info_get_media_type failed: %d", ret);
1066 ret = media_info_get_display_name(media_handle, &media_name);
1067 if (ret != MEDIA_CONTENT_ERROR_NONE)
1068 media_content_error("media_info_get_display_name failed: %d", ret);
1069 ret = media_info_get_file_path(media_handle, &media_path);
1070 if (ret != MEDIA_CONTENT_ERROR_NONE)
1071 media_content_error("media_info_get_file_path failed: %d", ret);
1073 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1074 image_meta_h image_handle;
1075 int width = 0, height = 0;
1076 media_content_orientation_e orientation = 0;
1077 char *datetaken = NULL;
1078 char *burst_id = NULL;
1080 ret = media_info_get_image(media_handle, &image_handle);
1081 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1082 media_content_error("media_info_get_image failed: %d", ret);
1084 ret = image_meta_get_width(image_handle, &width);
1085 if (ret != MEDIA_CONTENT_ERROR_NONE)
1086 media_content_error("error image_meta_get_width : [%d]", ret);
1087 ret = image_meta_get_height(image_handle, &height);
1088 if (ret != MEDIA_CONTENT_ERROR_NONE)
1089 media_content_error("error image_meta_get_height : [%d]", ret);
1090 ret = image_meta_get_orientation(image_handle, &orientation);
1091 if (ret != MEDIA_CONTENT_ERROR_NONE)
1092 media_content_error("error image_meta_get_orientation : [%d]", ret);
1093 ret = image_meta_get_date_taken(image_handle, &datetaken);
1094 if (ret != MEDIA_CONTENT_ERROR_NONE)
1095 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1096 ret = image_meta_get_burst_id(image_handle, &burst_id);
1097 if (ret != MEDIA_CONTENT_ERROR_NONE)
1098 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1100 media_content_debug("This is Image");
1101 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1104 SAFE_FREE(datetaken);
1105 SAFE_FREE(burst_id);
1106 ret = image_meta_destroy(image_handle);
1107 if (ret != MEDIA_CONTENT_ERROR_NONE)
1108 media_content_error("error image_meta_destroy : [%d]", ret);
1110 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1111 video_meta_h video_handle;
1112 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1115 ret = media_info_get_video(media_handle, &video_handle);
1116 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1117 media_content_error("media_info_get_video failed: %d", ret);
1119 ret = video_meta_get_artist(video_handle, &artist);
1120 if (ret != MEDIA_CONTENT_ERROR_NONE)
1121 media_content_error("error video_meta_get_artist : [%d]", ret);
1122 ret = video_meta_get_album(video_handle, &album);
1123 if (ret != MEDIA_CONTENT_ERROR_NONE)
1124 media_content_error("error video_meta_get_album : [%d]", ret);
1125 ret = video_meta_get_album_artist(video_handle, &album_artist);
1126 if (ret != MEDIA_CONTENT_ERROR_NONE)
1127 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1128 ret = video_meta_get_duration(video_handle, &duration);
1129 if (ret != MEDIA_CONTENT_ERROR_NONE)
1130 media_content_error("error video_meta_get_duration : [%d]", ret);
1132 media_content_debug("This is Video");
1133 media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d", title, album, artist, album_artist, duration);
1139 SAFE_FREE(album_artist);
1141 ret = video_meta_destroy(video_handle);
1142 if (ret != MEDIA_CONTENT_ERROR_NONE)
1143 media_content_error("error video_meta_destroy : [%d]", ret);
1146 SAFE_FREE(media_id);
1147 SAFE_FREE(media_name);
1148 SAFE_FREE(media_path);
1152 media_filter_destroy(filter);
1155 /* To check performance */
1156 gettimeofday(&end, NULL);
1157 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1158 media_content_debug("Time : %ld\n", time);
1160 /* Third, Get item list of a folder */
1161 GList *item_list = NULL;
1163 for (i = 0; i < g_list_length(folder_list); i++) {
1165 char *folder_id = NULL;
1166 char *folder_name = NULL;
1167 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1169 media_folder_get_folder_id(folder_handle, &folder_id);
1170 media_folder_get_name(folder_handle, &folder_name);
1172 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1173 SAFE_FREE(folder_id);
1174 SAFE_FREE(folder_name);
1176 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1177 media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1180 media_content_error("media_folder_foreach_media_from_db success!");
1181 char *media_id = NULL;
1182 char *media_name = NULL;
1183 char *media_path = NULL;
1184 media_content_type_e media_type = 0;
1186 for (j = 0; j < g_list_length(item_list); j++) {
1187 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1189 ret = media_info_get_media_id(media_handle, &media_id);
1190 if (ret != MEDIA_CONTENT_ERROR_NONE)
1191 media_content_error("media_info_get_media_id failed: %d", ret);
1192 ret = media_info_get_display_name(media_handle, &media_name);
1193 if (ret != MEDIA_CONTENT_ERROR_NONE)
1194 media_content_error("media_info_get_display_name failed: %d", ret);
1195 ret = media_info_get_file_path(media_handle, &media_path);
1196 if (ret != MEDIA_CONTENT_ERROR_NONE)
1197 media_content_error("media_info_get_file_path failed: %d", ret);
1198 ret = media_info_get_media_type(media_handle, &media_type);
1199 if (ret != MEDIA_CONTENT_ERROR_NONE)
1200 media_content_error("media_info_get_media_type failed: %d", ret);
1202 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1203 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1204 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1205 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1207 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1208 image_meta_h image_handle;
1209 int width = 0, height = 0;
1210 media_content_orientation_e orientation = 0;
1211 char *datetaken = NULL;
1213 ret = media_info_get_image(media_handle, &image_handle);
1214 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1215 media_content_error("media_info_get_image failed: %d", ret);
1217 ret = image_meta_get_width(image_handle, &width);
1218 if (ret != MEDIA_CONTENT_ERROR_NONE)
1219 media_content_error("error image_meta_get_width : [%d]", ret);
1220 ret = image_meta_get_height(image_handle, &height);
1221 if (ret != MEDIA_CONTENT_ERROR_NONE)
1222 media_content_error("error image_meta_get_height : [%d]", ret);
1223 ret = image_meta_get_orientation(image_handle, &orientation);
1224 if (ret != MEDIA_CONTENT_ERROR_NONE)
1225 media_content_error("error image_meta_get_orientation : [%d]", ret);
1226 ret = image_meta_get_date_taken(image_handle, &datetaken);
1227 if (ret != MEDIA_CONTENT_ERROR_NONE)
1228 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1230 media_content_debug("This is Image");
1231 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1234 SAFE_FREE(datetaken);
1235 ret = image_meta_destroy(image_handle);
1236 if (ret != MEDIA_CONTENT_ERROR_NONE)
1237 media_content_error("error image_meta_destroy : [%d]", ret);
1239 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1240 video_meta_h video_handle;
1241 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1244 ret = media_info_get_video(media_handle, &video_handle);
1245 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1246 media_content_error("media_info_get_video failed: %d", ret);
1248 ret = video_meta_get_artist(video_handle, &artist);
1249 if (ret != MEDIA_CONTENT_ERROR_NONE)
1250 media_content_error("error video_meta_get_artist : [%d]", ret);
1251 ret = video_meta_get_album(video_handle, &album);
1252 if (ret != MEDIA_CONTENT_ERROR_NONE)
1253 media_content_error("error video_meta_get_album : [%d]", ret);
1254 ret = video_meta_get_album_artist(video_handle, &album_artist);
1255 if (ret != MEDIA_CONTENT_ERROR_NONE)
1256 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1257 ret = video_meta_get_duration(video_handle, &duration);
1258 if (ret != MEDIA_CONTENT_ERROR_NONE)
1259 media_content_error("error video_meta_get_duration : [%d]", ret);
1261 media_content_debug("This is Video");
1262 media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d\n", title, album, artist, album_artist, duration);
1268 SAFE_FREE(album_artist);
1270 ret = video_meta_destroy(video_handle);
1271 if (ret != MEDIA_CONTENT_ERROR_NONE)
1272 media_content_error("error video_meta_destroy : [%d]", ret);
1274 /* Get bookmar list in case of video */
1275 media_bookmark_h bm_handle;
1276 GList *bm_list = NULL;
1278 ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1279 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1280 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1282 media_content_debug("media_info_foreach_bookmark_from_db success");
1286 for (k = 0; k < g_list_length(bm_list); k++) {
1287 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1289 char *thumb_path = NULL;
1291 ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1292 if (ret != MEDIA_CONTENT_ERROR_NONE)
1293 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1294 ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1295 if (ret != MEDIA_CONTENT_ERROR_NONE)
1296 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1298 media_content_debug("Bookmark time : %ld\nBookmar thumb: %s", marked_time, thumb_path);
1299 SAFE_FREE(thumb_path);
1302 /* Remove bookmark list */
1305 for (l = 0; l < g_list_length(bm_list); l++) {
1306 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1307 ret = media_bookmark_destroy(bm_handle);
1308 if (ret != MEDIA_CONTENT_ERROR_NONE)
1309 media_content_error("error media_bookmark_destroy : [%d]", ret);
1312 g_list_free(bm_list);
1318 SAFE_FREE(media_id);
1319 SAFE_FREE(media_name);
1320 SAFE_FREE(media_path);
1326 media_tag_h tag_handle = NULL;
1327 GList *tag_list = NULL;
1328 GList *media_list_in_tag = NULL;
1330 ret = media_tag_foreach_tag_from_db(filter, gallery_tag_item_cb, &tag_list);
1332 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1333 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1336 media_content_error("media_tag_foreach_tag_from_db success");
1337 char *tag_name = NULL;
1340 for (i = 0; i < g_list_length(tag_list); i++) {
1341 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1342 media_tag_get_tag_id(tag_handle, &tag_id);
1343 media_tag_get_name(tag_handle, &tag_name);
1345 media_content_debug("[%d] %s", tag_id, tag_name);
1347 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1348 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1349 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1352 media_content_error("media_tag_foreach_media_from_db success");
1354 media_info_h tag_media_handle;
1355 char *media_id = NULL;
1356 char *media_name = NULL;
1357 char *media_path = NULL;
1358 media_content_type_e media_type = 0;
1360 for (j = 0; j < g_list_length(media_list_in_tag); j++) {
1361 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1362 ret = media_info_get_media_id(tag_media_handle, &media_id);
1363 if (ret != MEDIA_CONTENT_ERROR_NONE)
1364 media_content_error("media_info_get_media_id failed: %d", ret);
1365 ret = media_info_get_display_name(tag_media_handle, &media_name);
1366 if (ret != MEDIA_CONTENT_ERROR_NONE)
1367 media_content_error("media_info_get_display_name failed: %d", ret);
1368 ret = media_info_get_file_path(tag_media_handle, &media_path);
1369 if (ret != MEDIA_CONTENT_ERROR_NONE)
1370 media_content_error("media_info_get_file_path failed: %d", ret);
1371 ret = media_info_get_media_type(tag_media_handle, &media_type);
1372 if (ret != MEDIA_CONTENT_ERROR_NONE)
1373 media_content_error("media_info_get_media_type failed: %d", ret);
1375 media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1376 media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1377 media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1378 media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1380 SAFE_FREE(media_id);
1381 SAFE_FREE(media_name);
1382 SAFE_FREE(media_path);
1384 SAFE_FREE(tag_name);
1388 /* Remove folder list */
1390 for (i = 0; i < g_list_length(folder_list); i++) {
1391 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1392 media_folder_destroy(folder_handle);
1395 g_list_free(folder_list);
1398 /* Remove all items list */
1399 if (all_item_list) {
1400 for (i = 0; i < g_list_length(all_item_list); i++) {
1401 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1402 ret = media_info_destroy(media_handle);
1403 if (ret != MEDIA_CONTENT_ERROR_NONE)
1404 media_content_error("media_info_destroy failed: %d", ret);
1407 g_list_free(all_item_list);
1410 /* Remove items list */
1412 for (i = 0; i < g_list_length(item_list); i++) {
1413 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1414 ret = media_info_destroy(media_handle);
1415 if (ret != MEDIA_CONTENT_ERROR_NONE)
1416 media_content_error("media_info_destroy failed: %d", ret);
1419 g_list_free(item_list);
1422 /* Remove tag list */
1424 for (i = 0; i < g_list_length(tag_list); i++) {
1425 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1426 ret = media_tag_destroy(tag_handle);
1427 if (ret != MEDIA_CONTENT_ERROR_NONE)
1428 media_content_error("error media_tag_destroy : [%d]", ret);
1431 g_list_free(tag_list);
1434 /* Remove media list in a tag */
1435 if (media_list_in_tag) {
1436 for (i = 0; i < g_list_length(media_list_in_tag); i++) {
1437 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1438 ret = media_info_destroy(media_handle);
1439 if (ret != MEDIA_CONTENT_ERROR_NONE)
1440 media_content_error("media_info_destroy failed: %d", ret);
1443 g_list_free(media_list_in_tag);
1446 return MEDIA_CONTENT_ERROR_NONE;
1449 /*Get All Music file. sort by Title and not case sensitive*/
1450 int test_get_all_music_files(void)
1452 int ret = MEDIA_CONTENT_ERROR_NONE;
1453 int media_count = 0;
1457 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1459 ret = media_filter_create(&filter);
1460 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1461 media_content_error("Fail to create filter");
1464 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1465 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1466 media_filter_destroy(filter);
1467 media_content_error("Fail to set condition");
1470 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1471 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1472 media_filter_destroy(filter);
1473 media_content_error("Fail to set order");
1478 ret = media_info_get_media_count_from_db(filter, &media_count);
1479 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1480 media_filter_destroy(filter);
1481 media_content_error("Fail to get media count");
1485 media_content_debug("media_count : [%d]", media_count);
1487 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1488 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1489 media_filter_destroy(filter);
1490 media_content_error("Fail to get media");
1494 ret = media_filter_destroy(filter);
1499 int test_media_info_operation(void)
1501 int ret = MEDIA_CONTENT_ERROR_NONE;
1502 int media_count = 0;
1504 media_content_debug("\n============Media info Test============\n\n");
1506 test_filter_create();
1508 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1509 if (ret != MEDIA_CONTENT_ERROR_NONE)
1510 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1512 media_content_debug("media_count : [%d]", media_count);
1514 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1515 if (ret == MEDIA_CONTENT_ERROR_NONE)
1516 media_content_debug("media_info_foreach_media_from_db is success");
1518 media_content_error("media_info_foreach_media_from_db is failed");
1520 test_filter_destroy();
1525 int test_media_info_operation_2(void)
1527 int ret = MEDIA_CONTENT_ERROR_NONE;
1528 int bookmark_count = 0;
1530 media_content_debug("\n============Media info Test 2============\n\n");
1532 test_filter_create();
1536 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
1537 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1538 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1540 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1542 media_content_debug("bookmark_count : [%d]", bookmark_count);
1544 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1548 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1549 if (ret != MEDIA_CONTENT_ERROR_NONE)
1550 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1552 media_content_debug("tag_count : [%d]", bookmark_count);
1554 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1555 if (ret != MEDIA_CONTENT_ERROR_NONE)
1556 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1558 test_filter_destroy();
1563 int test_folder_operation(void)
1565 int ret = MEDIA_CONTENT_ERROR_NONE;
1566 filter_h filter = NULL;
1567 media_folder_h folder = NULL;
1568 char *folder_id = NULL;
1571 media_content_debug("\n============Folder Test============\n\n");
1573 test_filter_create();
1575 ret = media_filter_create(&filter);
1576 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1577 media_content_error("[ERROR] media_folder_filter_create is failed");
1581 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*/
1582 media_filter_set_offset(filter, 0, 5);
1583 media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1584 media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1586 ret = media_folder_get_folder_count_from_db(filter, &count);
1587 media_content_debug("Folder count : [%d]", count);
1589 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1591 filter_h m_filter = NULL;
1593 ret = media_filter_create(&m_filter);
1594 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1595 test_filter_destroy();
1596 media_filter_destroy(filter);
1597 media_content_error("[ERROR] media_info_filter_create is failed");
1601 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*/
1602 media_filter_set_offset(m_filter, 0, 5);
1603 media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1605 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1606 if (ret != MEDIA_CONTENT_ERROR_NONE)
1607 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1609 media_filter_destroy(filter);
1610 media_filter_destroy(m_filter);
1612 test_filter_destroy();
1614 /* fix prevent: Resource Leak */
1615 SAFE_FREE(folder_id);
1620 bool folder_update_cb(media_folder_h folder, void *user_data)
1622 char *folder_id = NULL;
1623 char *folder_path = NULL;
1624 char *folder_name = NULL;
1625 int folder_order = -1;
1628 if (folder != NULL) {
1629 ret = media_folder_get_folder_id(folder, &folder_id);
1630 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1631 media_content_debug("folder_id = [%s]", folder_id);
1632 SAFE_FREE(folder_id);
1634 ret = media_folder_get_path(folder, &folder_path);
1635 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1636 media_content_debug("folder_path = [%s]", folder_path);
1637 SAFE_FREE(folder_path);
1639 ret = media_folder_get_name(folder, &folder_name);
1640 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1641 media_content_debug("folder_name = [%s]", folder_name);
1642 SAFE_FREE(folder_name);
1644 ret = media_folder_get_order(folder, &folder_order);
1645 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1646 media_content_debug("folder_order = [%d]", folder_order);
1648 ret = media_folder_clone(&g_folder, folder);
1649 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1660 int test_folder_update(void)
1662 int ret = MEDIA_CONTENT_ERROR_NONE;
1664 int folder_count = 0;
1666 media_content_debug("\n============Folder Update Test============\n\n");
1668 ret = media_filter_create(&filter);
1669 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1671 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*/
1672 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, FOLDER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
1674 ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1676 media_content_debug("Folder count : %d", folder_count);
1678 ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1680 media_filter_destroy(filter);
1682 ret = media_folder_set_name(g_folder, "test_folder");
1684 ret = media_folder_set_order(g_folder, 200);
1686 ret = media_folder_update_to_db(g_folder);
1688 ret = media_folder_destroy(g_folder);
1693 int test_playlist_operation(void)
1695 int ret = MEDIA_CONTENT_ERROR_NONE;
1696 media_playlist_h playlist_1 = NULL;
1697 media_playlist_h playlist_2 = NULL;
1698 media_playlist_h playlist_3 = NULL;
1699 media_playlist_h playlist_4 = NULL;
1700 int playlist_id_1 = 0;
1701 int playlist_id_2 = 0;
1702 int playlist_id_3 = 0;
1703 const char *playlist_name_1 = "myPlaylist_1";
1704 const char *playlist_name_2 = "myPlaylist_2";
1705 const char *playlist_name_3 = "myPlaylist_3";
1706 int playlist_count = 0;
1707 int media_count = 0;
1713 filter_h filter = NULL;
1714 filter_h m_filter = NULL;
1716 media_content_debug("\n============Playlist Test============\n\n");
1718 /* Filter for playlist */
1720 const char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1722 ret = media_filter_create(&filter);
1723 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1724 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1726 /* Create Playlist */
1727 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1728 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1729 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1731 if (playlist_1 != NULL) {
1732 /* Add media to Playlist */
1733 media_playlist_add_media(playlist_1, test_audio_id);
1734 media_playlist_add_media(playlist_1, test_audio_id);
1735 media_playlist_add_media(playlist_1, test_video_id);
1738 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg"));
1739 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1742 media_playlist_update_to_db(playlist_1);
1745 if (playlist_2 != NULL) {
1746 media_playlist_add_media(playlist_2, test_audio_id);
1747 media_playlist_add_media(playlist_2, test_audio_id);
1748 media_playlist_update_to_db(playlist_2);
1751 /* Get Playlist Count*/
1752 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1754 media_content_debug("playlist_count [%d]", playlist_count);
1757 GList *playlist_id_list = NULL;
1758 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1759 /* 64bit build issue */
1761 /* Get Playlist id*/
1762 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1763 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1764 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1766 media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1767 media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1768 media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1770 /* Export and import playlist */
1771 media_playlist_export_to_file(playlist_3, tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"));
1772 media_playlist_import_from_file(tzplatform_mkpath(TZ_USER_MUSIC, "playlist.m3u"), "playlist_4", &playlist_4);
1774 /* Filter for media*/
1775 ret = media_filter_create(&m_filter);
1777 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1779 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1781 /* Get media count */
1782 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1783 media_content_debug("playlist_1_media_count [%d]", media_count);
1785 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1786 media_content_debug("playlist_2_media_count [%d]", media_count);
1788 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1789 media_content_debug("playlist_3_media_count [%d]", media_count);
1791 /* Get media of playlist */
1792 GList *playlist_member_id_list = NULL;
1793 GList *playlist_member_id_list_1 = NULL;
1795 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1796 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1798 int playlist_member_id_1_1 = 0;
1799 int playlist_member_id_1_2 = 0;
1800 int playlist_member_id_1_3 = 0;
1801 int playlist_member_id_2_1 = 0;
1802 int playlist_member_id_2_2 = 0;
1803 /* 64bit build issue */
1805 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1806 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1807 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1808 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1809 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1811 media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1812 media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1813 media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1814 media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1815 media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1817 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1818 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1819 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1820 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1821 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1822 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);
1824 /* Update Playlist */
1825 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1826 media_playlist_add_media(playlist_2, test_video_id);
1827 media_playlist_set_name(playlist_2, "test_playlist");
1828 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1829 media_playlist_update_to_db(playlist_2);
1831 /* Get Updated Playlist*/
1832 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1834 /* deletes the playlist */
1836 media_playlist_delete_from_db(playlist_id_1);
1837 media_playlist_delete_from_db(playlist_id_2);
1840 if (playlist_1 != NULL)
1841 media_playlist_destroy(playlist_1);
1842 if (playlist_2 != NULL)
1843 media_playlist_destroy(playlist_2);
1844 if (playlist_3 != NULL)
1845 media_playlist_destroy(playlist_3);
1846 if (playlist_4 != NULL)
1847 media_playlist_destroy(playlist_4);
1849 g_list_free(playlist_id_list);
1850 g_list_free(playlist_member_id_list);
1851 g_list_free(playlist_member_id_list_1);
1854 ret = media_filter_destroy(filter);
1855 if (m_filter != NULL)
1856 ret = media_filter_destroy(m_filter);
1861 int test_playlist_operation_v2(void)
1863 int ret = MEDIA_CONTENT_ERROR_NONE;
1864 media_playlist_h playlist_1 = NULL;
1865 const char *playlist_name_1 = "myPlaylist_1";
1866 const char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
1867 int playlist_id = 0;
1869 media_content_debug("\n============Playlist Test V2============\n\n");
1871 ret = media_playlist_create(&playlist_1);
1872 if (ret != MEDIA_CONTENT_ERROR_NONE)
1873 media_content_error("error media_playlist_create : [%d]", ret);
1875 ret = media_playlist_set_name(playlist_1, playlist_name_1);
1876 if (ret != MEDIA_CONTENT_ERROR_NONE)
1877 media_content_error("error media_playlist_set_name : [%d]", ret);
1879 ret = media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1880 if (ret != MEDIA_CONTENT_ERROR_NONE)
1881 media_content_error("error media_playlist_set_thumbnail_path : [%d]", ret);
1883 ret = media_playlist_insert_to_db_v2(playlist_1);
1884 if (ret != MEDIA_CONTENT_ERROR_NONE)
1885 media_content_error("error media_playlist_insert_to_db_v2 : [%d]", ret);
1887 ret = media_playlist_set_name(playlist_1, "myPlaylist_3");
1888 if (ret != MEDIA_CONTENT_ERROR_NONE)
1889 media_content_error("error media_playlist_set_name : [%d]", ret);
1891 ret = media_playlist_get_playlist_id(playlist_1, &playlist_id);
1892 if (ret != MEDIA_CONTENT_ERROR_NONE)
1893 media_content_error("error media_playlist_get_playlist_id : [%d]", ret);
1895 ret = media_playlist_update_to_db_v2(playlist_id, playlist_1);
1896 if (ret != MEDIA_CONTENT_ERROR_NONE)
1897 media_content_error("error media_playlist_update_to_db_v2 : [%d]", ret);
1899 ret = media_playlist_destroy(playlist_1);
1900 if (ret != MEDIA_CONTENT_ERROR_NONE)
1901 media_content_error("error media_playlist_destroy : [%d]", ret);
1906 int test_tag_operation(void)
1908 int ret = MEDIA_CONTENT_ERROR_NONE;
1915 const char *tag_name_1 = "myTag_1";
1916 const char *tag_name_2 = "myTag_2";
1917 const char *tag_name_3 = "myTag_3";
1919 int media_count = 0;
1922 media_content_debug("\n============Tag Test============\n\n");
1924 const char *g_condition = "TAG_NAME like \"%%my%%\"";
1926 ret = media_filter_create(&filter);
1928 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1930 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1933 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1934 if (ret != MEDIA_CONTENT_ERROR_NONE)
1935 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1936 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1937 if (ret != MEDIA_CONTENT_ERROR_NONE)
1938 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1939 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1940 if (ret != MEDIA_CONTENT_ERROR_NONE)
1941 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1943 /* Add media to Tag */
1944 ret = media_tag_add_media(tag_1, test_audio_id);
1945 if (ret != MEDIA_CONTENT_ERROR_NONE)
1946 media_content_error("error media_tag_add_media : [%d]", ret);
1947 ret = media_tag_add_media(tag_1, test_video_id);
1948 if (ret != MEDIA_CONTENT_ERROR_NONE)
1949 media_content_error("error media_tag_add_media : [%d]", ret);
1950 ret = media_tag_update_to_db(tag_1);
1951 if (ret != MEDIA_CONTENT_ERROR_NONE)
1952 media_content_error("error media_tag_update_to_db : [%d]", ret);
1954 ret = media_tag_add_media(tag_2, test_audio_id);
1955 if (ret != MEDIA_CONTENT_ERROR_NONE)
1956 media_content_error("error media_tag_add_media : [%d]", ret);
1957 ret = media_tag_update_to_db(tag_2);
1958 if (ret != MEDIA_CONTENT_ERROR_NONE)
1959 media_content_error("error media_tag_update_to_db : [%d]", ret);
1962 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1963 if (ret != MEDIA_CONTENT_ERROR_NONE)
1964 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1966 media_content_debug("tag_count [%d]", tag_count);
1969 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1970 if (ret != MEDIA_CONTENT_ERROR_NONE)
1971 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1974 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1975 if (ret != MEDIA_CONTENT_ERROR_NONE)
1976 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1978 media_content_debug("tag_id_1 [%d]", tag_id_1);
1980 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1981 if (ret != MEDIA_CONTENT_ERROR_NONE)
1982 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1984 media_content_debug("tag_id_2 [%d]", tag_id_2);
1986 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1987 if (ret != MEDIA_CONTENT_ERROR_NONE)
1988 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1990 media_content_debug("tag_id_3 [%d]", tag_id_3);
1992 /* Get media count */
1993 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1994 if (ret != MEDIA_CONTENT_ERROR_NONE)
1995 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1997 media_content_debug("tag_1_media_count [%d]", media_count);
1999 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
2000 if (ret != MEDIA_CONTENT_ERROR_NONE)
2001 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
2003 media_content_debug("tag_2_media_count [%d]", media_count);
2005 /* Get media of Tag */
2006 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
2007 if (ret != MEDIA_CONTENT_ERROR_NONE)
2008 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
2010 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
2011 if (ret != MEDIA_CONTENT_ERROR_NONE)
2012 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
2015 ret = media_tag_add_media(tag_2, test_video_id);
2016 if (ret != MEDIA_CONTENT_ERROR_NONE)
2017 media_content_error("error media_tag_add_media : [%d]", ret);
2018 ret = media_tag_set_name(tag_2, "test_tag");
2019 if (ret != MEDIA_CONTENT_ERROR_NONE)
2020 media_content_error("error media_tag_set_name : [%d]", ret);
2021 ret = media_tag_update_to_db(tag_2);
2022 if (ret != MEDIA_CONTENT_ERROR_NONE)
2023 media_content_error("error media_tag_update_to_db : [%d]", ret);
2025 /* Get Updated Tag*/
2026 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
2027 if (ret != MEDIA_CONTENT_ERROR_NONE)
2028 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
2030 /* deletes the tag */
2031 ret = media_tag_delete_from_db(tag_id_1);
2032 if (ret != MEDIA_CONTENT_ERROR_NONE)
2033 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2034 ret = media_tag_delete_from_db(tag_id_2);
2035 if (ret != MEDIA_CONTENT_ERROR_NONE)
2036 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2038 ret = media_tag_destroy(tag_1);
2039 if (ret != MEDIA_CONTENT_ERROR_NONE)
2040 media_content_error("error media_tag_destroy : [%d]", ret);
2041 ret = media_tag_destroy(tag_2);
2042 if (ret != MEDIA_CONTENT_ERROR_NONE)
2043 media_content_error("error media_tag_destroy : [%d]", ret);
2044 ret = media_tag_destroy(tag_3);
2045 if (ret != MEDIA_CONTENT_ERROR_NONE)
2046 media_content_error("error media_tag_destroy : [%d]", ret);
2047 ret = media_filter_destroy(filter);
2048 if (ret != MEDIA_CONTENT_ERROR_NONE)
2049 media_content_error("error media_filter_destroy : [%d]", ret);
2054 int test_tag_operation_v2(void)
2056 int ret = MEDIA_CONTENT_ERROR_NONE;
2058 const char *tag_name_1 = "myTag_1";
2061 media_content_debug("\n============Tag Test V2============\n\n");
2064 ret = media_tag_create(&tag_1);
2065 if (ret != MEDIA_CONTENT_ERROR_NONE)
2066 media_content_error("error media_tag_create : [%d]", ret);
2068 ret = media_tag_set_name(tag_1, tag_name_1);
2069 if (ret != MEDIA_CONTENT_ERROR_NONE)
2070 media_content_error("error media_tag_set_name : [%d]", ret);
2072 /* Add media to Tag */
2073 ret = media_tag_add_media(tag_1, test_audio_id);
2074 if (ret != MEDIA_CONTENT_ERROR_NONE)
2075 media_content_error("error media_tag_add_media : [%d]", ret);
2077 ret = media_tag_add_media(tag_1, test_video_id);
2078 if (ret != MEDIA_CONTENT_ERROR_NONE)
2079 media_content_error("error media_tag_add_media : [%d]", ret);
2081 ret = media_tag_insert_to_db_v2(tag_1);
2082 if (ret != MEDIA_CONTENT_ERROR_NONE)
2083 media_content_error("error media_tag_insert_to_db_v2 : [%d]", ret);
2086 ret = media_tag_get_tag_id(tag_1, &tag_id);
2087 if (ret != MEDIA_CONTENT_ERROR_NONE)
2088 media_content_error("error media_tag_get_tag_id : [%d]", ret);
2090 ret = media_tag_remove_media(tag_1, test_video_id);
2091 if (ret != MEDIA_CONTENT_ERROR_NONE)
2092 media_content_error("error media_tag_add_media : [%d]", ret);
2094 ret = media_tag_update_to_db_v2(tag_id, tag_1);
2095 if (ret != MEDIA_CONTENT_ERROR_NONE)
2096 media_content_error("error media_tag_update_to_db_v2 : [%d]", ret);
2099 ret = media_tag_destroy(tag_1);
2100 if (ret != MEDIA_CONTENT_ERROR_NONE)
2101 media_content_error("error media_tag_destroy : [%d]", ret);
2106 int test_bookmark_operation(void)
2108 /* bookmark is only supported for video information. */
2109 int ret = MEDIA_CONTENT_ERROR_NONE;
2110 int bookmark_count = 0;
2112 GList *all_item_list = NULL;
2115 media_content_debug("\n============Bookmark Test============\n\n");
2117 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2119 ret = media_filter_create(&filter);
2120 if (ret != MEDIA_CONTENT_ERROR_NONE)
2121 media_content_error("error media_filter_create : [%d]", ret);
2123 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2124 if (ret != MEDIA_CONTENT_ERROR_NONE)
2125 media_content_error("error media_filter_set_condition : [%d]", ret);
2127 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2128 if (ret != MEDIA_CONTENT_ERROR_NONE)
2129 media_content_error("error media_filter_set_order : [%d]", ret);
2131 /* insert bookmark to video */
2132 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
2133 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2134 if (ret != MEDIA_CONTENT_ERROR_NONE)
2135 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2137 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2138 if (ret != MEDIA_CONTENT_ERROR_NONE)
2139 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2141 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2142 if (ret != MEDIA_CONTENT_ERROR_NONE)
2143 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2145 media_content_debug("bookmark_count = [%d]", bookmark_count);
2147 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, &all_item_list);
2148 if (ret != MEDIA_CONTENT_ERROR_NONE)
2149 media_content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
2151 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
2152 media_bookmark_h bookmark_handle;
2153 bookmark_handle = (media_bookmark_h)g_list_nth_data(all_item_list, idx);
2155 ret = media_bookmark_set_name(bookmark_handle, "test 1");
2156 if (ret != MEDIA_CONTENT_ERROR_NONE)
2157 media_content_error("error media_bookmark_set_name : [%d]", ret);
2159 ret = media_bookmark_update_to_db(bookmark_handle);
2160 if (ret != MEDIA_CONTENT_ERROR_NONE)
2161 media_content_error("error media_bookmark_update_to_db : [%d]", ret);
2164 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, NULL);
2165 if (ret != MEDIA_CONTENT_ERROR_NONE)
2166 media_content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
2168 ret = media_filter_destroy(filter);
2169 if (ret != MEDIA_CONTENT_ERROR_NONE)
2170 media_content_error("error media_filter_destroy : [%d]", ret);
2175 int test_bookmark_operation_v2(void)
2177 media_content_debug("\n============Bookmark Test V2============\n\n");
2179 int ret = MEDIA_CONTENT_ERROR_NONE;
2180 media_bookmark_h bookmark = NULL;
2181 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_VIDEOS, "teat11.jpg");
2183 ret = media_bookmark_create(test_video_id, 400, &bookmark);
2184 if (ret != MEDIA_CONTENT_ERROR_NONE)
2185 media_content_error("error media_bookmark_create : [%d]", ret);
2187 ret = media_bookmark_set_name(bookmark, "test bookmark");
2188 if (ret != MEDIA_CONTENT_ERROR_NONE)
2189 media_content_error("error media_bookmark_set_name : [%d]", ret);
2191 ret = media_bookmark_set_thumbnail_path(bookmark, thumbnail_path1);
2192 if (ret != MEDIA_CONTENT_ERROR_NONE)
2193 media_content_error("error media_bookmark_set_thumbnail_path : [%d]", ret);
2195 ret = media_bookmark_insert_to_db_v2(bookmark);
2196 if (ret != MEDIA_CONTENT_ERROR_NONE)
2197 media_content_error("error media_bookmark_insert_to_db_v2 : [%d]", ret);
2199 ret = media_bookmark_set_name(bookmark, "test bookmark 2");
2200 if (ret != MEDIA_CONTENT_ERROR_NONE)
2201 media_content_error("error media_bookmark_set_name : [%d]", ret);
2203 ret = media_bookmark_update_to_db(bookmark);
2204 if (ret != MEDIA_CONTENT_ERROR_NONE)
2205 media_content_error("error media_bookmark_update_to_db : [%d]", ret);
2207 ret = media_bookmark_destroy(bookmark);
2208 if (ret != MEDIA_CONTENT_ERROR_NONE)
2209 media_content_error("error media_bookmark_destroy : [%d]", ret);
2214 int test_album_list(void)
2216 media_content_debug("\n============Album Test============\n\n");
2218 int ret = MEDIA_CONTENT_ERROR_NONE;
2219 int album_count = 0;
2223 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2225 ret = media_filter_create(&filter);
2226 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2227 media_content_error("Fail to create filter");
2230 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2231 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2232 media_filter_destroy(filter);
2233 media_content_error("Fail to set condition");
2236 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2237 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2238 media_filter_destroy(filter);
2239 media_content_error("Fail to set order");
2243 ret = media_album_get_album_count_from_db(filter, &album_count);
2244 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2245 media_filter_destroy(filter);
2248 media_content_debug("album_count [%d]", album_count);
2251 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2252 if (ret != MEDIA_CONTENT_ERROR_NONE)
2253 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2255 ret = media_filter_destroy(filter);
2256 if (ret != MEDIA_CONTENT_ERROR_NONE)
2257 media_content_error("error media_filter_destroy : [%d]", ret);
2262 int test_group_operation(void)
2264 media_content_debug("\n============Group Test============\n\n");
2266 int ret = MEDIA_CONTENT_ERROR_NONE;
2267 int group_count = 0;
2270 ret = test_filter_create();
2271 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2272 media_content_error("[error(0x%08x)", ret);
2276 for (idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++) {
2277 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2278 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2279 test_filter_destroy();
2280 media_content_error("media_group_get_group_count_from_db fail. ret=[%d] idx=[%d]", ret, idx);
2283 media_content_debug("[%2d]group_count [%d]", idx, group_count);
2286 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2287 if (ret != MEDIA_CONTENT_ERROR_NONE)
2288 media_content_error("media_group_foreach_group_from_db failed: %d", ret);
2290 ret = test_filter_destroy();
2295 int test_update_operation()
2297 int ret = MEDIA_CONTENT_ERROR_NONE;
2299 media_info_h media_handle = NULL;
2300 GList *all_item_list = NULL;
2302 /* Get all item list */
2303 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2304 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2305 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2308 media_content_debug("media_info_foreach_media_from_db success");
2309 char *media_id = NULL;
2310 char *media_path = NULL;
2311 media_content_type_e media_type = 0;
2313 for (i = 0; i < g_list_length(all_item_list); i++) {
2314 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2316 ret = media_info_get_media_id(media_handle, &media_id);
2317 if (ret != MEDIA_CONTENT_ERROR_NONE)
2318 media_content_error("media_info_get_media_id failed: %d", ret);
2319 ret = media_info_get_file_path(media_handle, &media_path);
2320 if (ret != MEDIA_CONTENT_ERROR_NONE)
2321 media_content_error("media_info_get_file_path failed: %d", ret);
2322 ret = media_info_get_media_type(media_handle, &media_type);
2323 if (ret != MEDIA_CONTENT_ERROR_NONE)
2324 media_content_error("media_info_get_media_type failed: %d", ret);
2326 media_content_debug("media_id [%d] : %s", i, media_id);
2327 media_content_debug("media_type [%d] : %d", i, media_type);
2328 media_content_debug("media_path [%d] : %s", i, media_path);
2330 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2331 image_meta_h image_handle;
2332 media_content_orientation_e orientation;
2334 ret = media_info_get_image(media_handle, &image_handle);
2335 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2336 media_content_error("media_info_get_image failed: %d", ret);
2338 media_content_debug("media_info_get_image success");
2340 /* update image meta */
2341 orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2342 image_meta_set_orientation(image_handle, orientation);
2344 ret = image_meta_update_to_db(image_handle);
2345 if (ret != MEDIA_CONTENT_ERROR_NONE)
2346 media_content_error("image_meta_update_to_db failed: %d", ret);
2348 media_content_debug("image_meta_update_to_db success");
2351 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2352 video_meta_h video_handle;
2354 ret = media_info_get_video(media_handle, &video_handle);
2355 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2356 media_content_error("media_info_get_video failed: %d", ret);
2358 media_content_debug("media_info_get_video success");
2360 /* update video meta */
2361 video_meta_set_played_count(video_handle, 5);
2362 video_meta_set_played_time(video_handle, 5);
2363 video_meta_set_played_position(video_handle, 5);
2364 video_meta_update_to_db(video_handle);
2366 ret = video_meta_update_to_db(video_handle);
2367 if (ret != MEDIA_CONTENT_ERROR_NONE)
2368 media_content_error("video_meta_update_to_db failed: %d", ret);
2370 media_content_debug("video_meta_update_to_db success");
2372 } else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2373 audio_meta_h audio_handle = NULL;
2374 ret = media_info_get_audio(media_handle, &audio_handle);
2375 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2376 media_content_error("media_info_get_audio failed: %d", ret);
2378 media_content_debug("media_info_get_audio success");
2380 audio_meta_set_played_count(audio_handle, 5);
2381 audio_meta_set_played_time(audio_handle, 1000);
2382 audio_meta_set_played_position(audio_handle, 180);
2384 ret = audio_meta_update_to_db(audio_handle);
2385 if (ret != MEDIA_CONTENT_ERROR_NONE)
2386 media_content_error("audio_meta_update_to_db failed: %d", ret);
2388 media_content_debug("audio_meta_update_to_db success");
2395 /* fix prevent: Resource Leak */
2396 SAFE_FREE(media_id);
2397 SAFE_FREE(media_path);
2400 return MEDIA_CONTENT_ERROR_NONE;
2403 int test_insert(void)
2405 int ret = MEDIA_CONTENT_ERROR_NONE;
2406 const char *path = tzplatform_mkpath(TZ_USER_IMAGES, "Default.jpg");
2408 const char *path = tzplatform_mkpath(TZ_USER_DOCUMENTS, "other.txt"));
2411 media_info_h media_item = NULL;
2412 media_content_debug("\n============DB Insert Test============\n\n");
2414 ret = media_info_insert_to_db(path, &media_item);
2416 if ((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL)) {
2417 media_content_debug("Insertion is success");
2419 media_content_error("Insertion is failed");
2420 ret = media_info_destroy(media_item);
2424 char *media_id = NULL;
2426 ret = media_info_get_media_id(media_item, &media_id);
2427 if (ret != MEDIA_CONTENT_ERROR_NONE)
2428 media_content_error("media_info_get_media_id failed: %d", ret);
2430 media_content_debug("Media ID: %s", media_id);
2432 SAFE_FREE(media_id);
2434 ret = media_info_update_to_db(media_item);
2435 if (ret == MEDIA_CONTENT_ERROR_NONE)
2436 media_content_debug("media_info_update_to_db is success");
2438 media_content_error("media_info_update_to_db is failed");
2440 ret = media_info_destroy(media_item);
2441 if (ret != MEDIA_CONTENT_ERROR_NONE)
2442 media_content_error("media_info_destroy failed: %d", ret);
2449 int ret = MEDIA_CONTENT_ERROR_NONE;
2450 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2451 const char *dst_path = tzplatform_mkpath(TZ_USER_IMAGES, "XX/Default1.jpg");
2452 media_info_h move_media = NULL;
2454 ret = media_info_get_media_from_db(move_media_id, &move_media);
2455 if (ret == MEDIA_CONTENT_ERROR_NONE)
2456 media_content_debug("media_info_get_media_from_db success");
2458 media_content_error("media_info_get_media_from_db failed: %d", ret);
2460 media_content_debug("\n============DB Move Test============\n\n");
2463 ret = media_info_move_to_db(move_media, dst_path);
2465 if (ret == MEDIA_CONTENT_ERROR_NONE)
2466 media_content_debug("Move is success");
2468 media_content_error("Move is failed");
2470 ret = media_info_destroy(move_media);
2472 media_content_debug("There is no item : %s", move_media_id);
2478 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2480 char *thumbnail_path = NULL;
2481 int ret = MEDIA_CONTENT_ERROR_NONE;
2484 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2485 media_content_debug("error_code [%d]", error);
2486 media_content_debug("thumbnail_path [%s]", path);
2487 if (user_data != NULL) {
2488 media_info_h media = (media_info_h)user_data;
2489 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2490 if (ret != MEDIA_CONTENT_ERROR_NONE)
2491 media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2493 media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2494 SAFE_FREE(thumbnail_path);
2495 ret = media_info_destroy(media);
2496 if (ret != MEDIA_CONTENT_ERROR_NONE)
2497 media_content_error("media_info_destroy failed: %d", ret);
2500 if (g_cnt == g_media_cnt)
2501 g_main_loop_quit(g_loop);
2506 bool thumbnail_create_cb(media_info_h media, void *user_data)
2508 char *media_id = NULL;
2509 media_info_h dst = NULL;
2510 int ret = MEDIA_CONTENT_ERROR_NONE;
2512 if (media == NULL) {
2513 media_content_debug("NO Item");
2517 ret = media_info_get_media_id(media, &media_id);
2518 if (ret != MEDIA_CONTENT_ERROR_NONE)
2519 media_content_error("media_info_get_media_id failed: %d", ret);
2521 media_content_debug("media_id : [%s]", media_id);
2523 ret = media_info_clone(&dst, media);
2524 if (ret != MEDIA_CONTENT_ERROR_NONE)
2525 media_content_error("media_info_clone failed: %d", ret);
2527 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2528 if (ret != MEDIA_CONTENT_ERROR_NONE)
2529 media_content_error("media_info_create_thumbnail failed: %d", ret);
2532 /* fix prevent: Resource leak */
2533 SAFE_FREE(media_id);
2538 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2540 int ret = MEDIA_CONTENT_ERROR_NONE;
2542 char *media_id = NULL;
2543 media_info_h dst = NULL;
2547 if (media == NULL) {
2548 media_content_debug("NO Item");
2552 ret = media_info_get_media_id(media, &media_id);
2553 if (ret != MEDIA_CONTENT_ERROR_NONE)
2554 media_content_error("media_info_get_media_id failed: %d", ret);
2556 media_content_debug("media_id : [%s]", media_id);
2558 ret = media_info_clone(&dst, media);
2559 if (ret != MEDIA_CONTENT_ERROR_NONE)
2560 media_content_error("media_info_clone failed: %d", ret);
2562 ret = media_info_cancel_thumbnail(dst);
2563 if (ret != MEDIA_CONTENT_ERROR_NONE)
2564 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2566 ret = media_info_destroy(dst);
2567 if (ret != MEDIA_CONTENT_ERROR_NONE)
2568 media_content_error("media_info_destroy failed: %d", ret);
2570 if (g_cnt == g_media_cnt)
2571 g_main_loop_quit(g_loop);
2573 /* fix prevent: Resource leak */
2574 SAFE_FREE(media_id);
2579 gboolean create_thumbnail_start(gpointer data)
2581 int ret = MEDIA_CONTENT_ERROR_NONE;
2583 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2585 if (ret == MEDIA_CONTENT_ERROR_NONE)
2586 media_content_debug("media_info_foreach_media_from_db is success");
2588 media_content_error("media_info_foreach_media_from_db is failed");
2593 gboolean cancel_thumbnail_start(gpointer data)
2595 int ret = MEDIA_CONTENT_ERROR_NONE;
2597 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2599 if (ret == MEDIA_CONTENT_ERROR_NONE)
2600 media_content_debug("media_info_foreach_media_from_db is success");
2602 media_content_error("media_info_foreach_media_from_db is failed");
2607 int test_create_thumbnail(int cancel)
2609 int ret = MEDIA_CONTENT_ERROR_NONE;
2610 GSource *source = NULL;
2611 GMainContext *context = NULL;
2613 test_filter_create();
2615 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2616 if (ret != MEDIA_CONTENT_ERROR_NONE)
2617 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2619 media_content_debug("media_count : [%d]", g_media_cnt);
2621 g_loop = g_main_loop_new(NULL, FALSE);
2622 context = g_main_loop_get_context(g_loop);
2623 source = g_idle_source_new();
2624 g_source_set_callback(source, create_thumbnail_start, NULL, NULL);
2625 g_source_attach(source, context);
2627 /* Logic to cancel */
2629 GSource *cancel_src = NULL;
2630 cancel_src = g_idle_source_new();
2631 g_source_set_callback(cancel_src, cancel_thumbnail_start, NULL, NULL);
2632 g_source_attach(cancel_src, context);
2635 g_main_loop_run(g_loop);
2636 g_main_loop_unref(g_loop);
2638 test_filter_destroy();
2643 bool face_cb(media_face_h face, void *user_data)
2645 if (user_data != NULL) {
2646 unsigned x, y, rect_w, rect_h;
2647 media_face_get_face_rect(face, &x, &y, &rect_w, &rect_h);
2648 media_content_debug("face(%p) x = %d, y = %d [%d, %d]", face, x, y, rect_w, rect_h);
2654 void face_detection_complete_cb(media_content_error_e error, int count, void *user_data)
2656 int ret = MEDIA_CONTENT_ERROR_NONE;
2659 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2660 media_content_debug("error_code [%d]", error);
2661 media_content_debug("face_count [%d]", count);
2663 media_content_debug("No faces are detected!");
2664 } else if (user_data != NULL) {
2665 media_info_h media = (media_info_h)user_data;
2666 char *media_id = NULL;
2667 ret = media_info_get_media_id(media, &media_id);
2668 if (ret != MEDIA_CONTENT_ERROR_NONE)
2669 media_content_error("media_info_get_media_id failed: %d", ret);
2670 if (media_id != NULL) {
2671 ret = media_info_foreach_face_from_db(media_id, NULL, face_cb, NULL);
2672 SAFE_FREE(media_id);
2673 if (ret != MEDIA_CONTENT_ERROR_NONE)
2674 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
2676 ret = media_info_destroy(media);
2677 if (ret != MEDIA_CONTENT_ERROR_NONE)
2678 media_content_error("media_info_destroy failed: %d", ret);
2681 if (g_cnt == g_media_cnt)
2682 g_main_loop_quit(g_loop);
2687 bool start_face_detection_cb(media_info_h media, void *user_data)
2689 char *media_id = NULL;
2690 media_info_h dst = NULL;
2691 int ret = MEDIA_CONTENT_ERROR_NONE;
2693 if (media == NULL) {
2694 media_content_debug("NO Item");
2698 ret = media_info_get_media_id(media, &media_id);
2699 if (ret != MEDIA_CONTENT_ERROR_NONE)
2700 media_content_error("media_info_get_media_id failed: %d", ret);
2702 media_content_debug("media_id : [%s]", media_id);
2704 ret = media_info_clone(&dst, media);
2705 if (ret != MEDIA_CONTENT_ERROR_NONE)
2706 media_content_error("media_info_clone failed: %d", ret);
2708 GList **list = (GList**)user_data;
2709 *list = g_list_append(*list, dst);
2711 /* fix prevent: Resource leak */
2712 SAFE_FREE(media_id);
2717 bool cancel_face_detection_cb(media_info_h media, void *user_data)
2719 int ret = MEDIA_CONTENT_ERROR_NONE;
2721 char *media_id = NULL;
2722 media_info_h dst = NULL;
2726 if (media == NULL) {
2727 media_content_debug("NO Item");
2731 ret = media_info_get_media_id(media, &media_id);
2732 if (ret != MEDIA_CONTENT_ERROR_NONE)
2733 media_content_error("media_info_get_media_id failed: %d", ret);
2735 media_content_debug("media_id : [%s]", media_id);
2737 ret = media_info_clone(&dst, media);
2738 if (ret != MEDIA_CONTENT_ERROR_NONE)
2739 media_content_error("media_info_clone failed: %d", ret);
2741 ret = media_info_cancel_face_detection(dst);
2742 if (ret != MEDIA_CONTENT_ERROR_NONE)
2743 media_content_error("media_info_cancel_face_detection failed: %d", ret);
2745 ret = media_info_destroy(dst);
2746 if (ret != MEDIA_CONTENT_ERROR_NONE)
2747 media_content_error("media_info_destroy failed: %d", ret);
2749 if (g_cnt == g_media_cnt)
2750 g_main_loop_quit(g_loop);
2752 /* fix prevent: Resource leak */
2753 SAFE_FREE(media_id);
2758 gboolean face_detection_start(gpointer data)
2760 int ret = MEDIA_CONTENT_ERROR_NONE;
2761 GList *all_item_list = NULL;
2764 ret = media_info_foreach_media_from_db(g_filter, start_face_detection_cb, &all_item_list);
2766 if (ret == MEDIA_CONTENT_ERROR_NONE)
2767 media_content_debug("media_info_foreach_media_from_db is success");
2769 media_content_error("media_info_foreach_media_from_db is failed");
2771 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
2772 media_info_h media_handle = NULL;
2774 media_handle = (media_info_h)g_list_nth_data(all_item_list, idx);
2776 ret = media_info_start_face_detection(media_handle, face_detection_complete_cb, NULL);
2777 if (ret != MEDIA_CONTENT_ERROR_NONE)
2778 media_content_error("media_info_start_face_detection failed: %d", ret);
2785 gboolean face_detection_cancel(gpointer data)
2787 int ret = MEDIA_CONTENT_ERROR_NONE;
2789 ret = media_info_foreach_media_from_db(g_filter, cancel_face_detection_cb, NULL);
2791 if (ret == MEDIA_CONTENT_ERROR_NONE)
2792 media_content_debug("media_info_foreach_media_from_db is success");
2794 media_content_error("media_info_foreach_media_from_db is failed");
2799 int test_start_face_detection(int cancel)
2801 int ret = MEDIA_CONTENT_ERROR_NONE;
2802 GSource *source = NULL;
2803 GMainContext *context = NULL;
2805 test_filter_create();
2807 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2808 if (ret != MEDIA_CONTENT_ERROR_NONE)
2809 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2811 media_content_debug("media_count : [%d]", g_media_cnt);
2813 if (g_media_cnt == 0)
2816 g_loop = g_main_loop_new(NULL, FALSE);
2817 context = g_main_loop_get_context(g_loop);
2818 source = g_idle_source_new();
2819 g_source_set_callback(source, face_detection_start, NULL, NULL);
2820 g_source_attach(source, context);
2822 /* Logic to cancel */
2824 GSource *cancel_src = NULL;
2825 cancel_src = g_idle_source_new();
2826 g_source_set_callback(cancel_src, face_detection_cancel, NULL, NULL);
2827 g_source_attach(cancel_src, context);
2830 g_main_loop_run(g_loop);
2831 g_main_loop_unref(g_loop);
2834 test_filter_destroy();
2839 int test_disconnect_database(void)
2841 int ret = MEDIA_CONTENT_ERROR_NONE;
2842 media_content_debug("\n============DB Disconnection Test============\n\n");
2844 ret = media_content_disconnect();
2846 if (ret == MEDIA_CONTENT_ERROR_NONE)
2847 media_content_debug("disconnection is success");
2849 media_content_error("disconnection is failed");
2854 int test_request_update_db(void)
2856 int ret = MEDIA_CONTENT_ERROR_NONE;
2857 media_info_h media = NULL;
2858 char *content_name = NULL;
2859 bool favorite = FALSE;
2861 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2862 if (ret != MEDIA_CONTENT_ERROR_NONE)
2863 media_content_error("media_info_get_media_from_db failed: %d", ret);
2865 ret = media_info_set_content_name(media, "TEST_content_name");
2866 if (ret != MEDIA_CONTENT_ERROR_NONE)
2867 media_content_error("media_info_set_content_name failed: %d", ret);
2869 ret = media_info_set_favorite(media, TRUE);
2870 if (ret != MEDIA_CONTENT_ERROR_NONE)
2871 media_content_error("media_info_set_favorite failed: %d", ret);
2873 ret = media_info_update_to_db(media);
2874 if (ret == MEDIA_CONTENT_ERROR_NONE)
2875 media_content_debug("media_info_update_to_db is success");
2877 media_content_error("media_info_update_to_db is failed");
2880 media_info_destroy(media);
2882 /*get the updated value*/
2883 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2884 if (ret != MEDIA_CONTENT_ERROR_NONE)
2885 media_content_error("media_info_get_media_from_db failed: %d", ret);
2887 ret = media_info_get_content_name(media, &content_name);
2888 if (ret != MEDIA_CONTENT_ERROR_NONE)
2889 media_content_error("media_info_get_content_name failed: %d", ret);
2891 media_content_debug("content name [%s]", content_name);
2893 SAFE_FREE(content_name);
2895 ret = media_info_get_favorite(media, &favorite);
2896 if (ret != MEDIA_CONTENT_ERROR_NONE)
2897 media_content_error("media_info_get_favorite failed: %d", ret);
2899 media_content_debug("favorite [%d]", favorite);
2901 ret = media_info_destroy(media);
2906 int g_total_photo_size = 0;
2907 int g_total_video_size = 0;
2908 int g_total_mp3_size = 0;
2909 int g_total_voice_memo_size = 0;
2911 bool dft_cb(media_info_h media, void *user_data)
2913 unsigned long long file_size = 0;
2914 media_content_type_e media_type = -1;
2915 char *mime_type = NULL;
2916 int ret = MEDIA_CONTENT_ERROR_NONE;
2921 ret = media_info_get_media_type(media, &media_type);
2922 if (ret != MEDIA_CONTENT_ERROR_NONE)
2923 media_content_error("media_info_get_media_type failed: %d", ret);
2924 ret = media_info_get_size(media, &file_size);
2925 if (ret != MEDIA_CONTENT_ERROR_NONE)
2926 media_content_error("media_info_get_size failed: %d", ret);
2927 ret = media_info_get_mime_type(media, &mime_type);
2928 if (ret != MEDIA_CONTENT_ERROR_NONE)
2929 media_content_error("media_info_get_mime_type failed: %d", ret);
2931 if (media_type == MEDIA_CONTENT_TYPE_IMAGE)
2932 g_total_photo_size += file_size;
2933 else if (media_type == MEDIA_CONTENT_TYPE_VIDEO)
2934 g_total_video_size += file_size;
2935 else if (media_type == MEDIA_CONTENT_TYPE_SOUND)
2936 g_total_voice_memo_size += file_size;
2937 else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2938 if ((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2939 g_total_mp3_size += file_size;
2941 g_total_voice_memo_size += file_size;
2943 media_content_debug("invalid media_type");
2945 SAFE_FREE(mime_type);
2953 int ret = MEDIA_CONTENT_ERROR_NONE;
2954 media_content_debug("\n============DFT_test============\n\n");
2956 filter_h filter = NULL;
2959 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2961 ret = media_filter_create(&filter);
2964 media_content_debug("[Internal Memory]\n");
2965 /*1. Photo ============================================================*/
2966 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2969 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2970 media_content_debug("Photo count = [%d]\n", media_cnt);
2973 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2974 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2976 /*2. Video ============================================================*/
2977 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2980 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2981 media_content_debug("Video count = [%d]\n", media_cnt);
2984 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2985 media_content_debug("Video size = [%d]\n", g_total_video_size);
2987 /*3. MP3 ============================================================*/
2988 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2991 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2992 media_content_debug("MP3 count = [%d]\n", media_cnt);
2995 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2996 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2998 /*4. Voice Memo ============================================================*/
2999 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);
3001 /*Get Voice Memo Count*/
3002 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3003 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
3005 /*Get Voice Memo Size*/
3006 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3007 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
3009 g_total_photo_size = 0;
3010 g_total_video_size = 0;
3011 g_total_mp3_size = 0;
3012 g_total_voice_memo_size = 0;
3015 media_content_debug("\n[External Memory]\n");
3016 /*1. Photo ============================================================*/
3017 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
3020 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3021 media_content_debug("Photo count = [%d]\n", media_cnt);
3024 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3025 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
3027 /*2. Video ============================================================*/
3028 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
3031 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3032 media_content_debug("Video count = [%d]\n", media_cnt);
3035 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3036 media_content_debug("Video size = [%d]\n", g_total_video_size);
3038 /*3. MP3 ============================================================*/
3039 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
3042 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3043 media_content_debug("MP3 count = [%d]\n", media_cnt);
3046 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3047 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
3049 /*4. Voice Memo ============================================================*/
3050 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);
3052 /*Get Voice Memo Count*/
3053 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3054 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
3056 /*Get Voice Memo Size*/
3057 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3058 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
3059 ret = media_filter_destroy(filter);
3064 void insert_batch_cb(media_content_error_e error, void * user_data)
3066 media_content_debug("media_info_insert_batch_to_db completed!\n");
3069 int test_batch_operations()
3073 char *file_list[10];
3075 for (i = 0; i < 10; i++) {
3076 char filepath[255] = {0,};
3077 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
3078 media_content_debug("File : %s\n", filepath);
3079 file_list[i] = strdup(filepath);
3082 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
3083 if (ret != MEDIA_CONTENT_ERROR_NONE)
3084 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
3087 char condition[2048] = {0, };
3088 const char *temp = NULL;
3089 memset(condition, 0x00, sizeof(condition));
3091 temp = tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'");
3092 snprintf(condition, sizeof(condition), "MEDIA_PATH LIKE \'%s", temp);
3094 ret = media_filter_create(&filter);
3095 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3096 media_content_error("Fail to create filter");
3100 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3101 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3102 media_filter_destroy(filter);
3103 media_content_error("Fail to set condition");
3107 ret = media_info_delete_batch_from_db(filter);
3108 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3109 media_filter_destroy(filter);
3110 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3114 ret = media_filter_destroy(filter);
3119 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
3121 media_content_debug("media_info_insert_burst_shot_to_db completed![%d]\n", error);
3122 g_main_loop_quit(g_loop);
3125 gboolean test_insert_burst_shot_to_db_start(gpointer data)
3127 int ret = MEDIA_CONTENT_ERROR_NONE;
3129 char *file_list[10];
3131 for (i = 0; i < 10; i++) {
3132 char filepath[255] = {0,};
3133 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
3134 media_content_debug("File : %s\n", filepath);
3135 file_list[i] = strdup(filepath);
3138 ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
3139 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3140 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
3141 g_main_loop_quit(g_loop);
3147 int test_insert_burst_shot_to_db(void)
3149 GSource *source = NULL;
3150 GMainContext *context = NULL;
3152 g_loop = g_main_loop_new(NULL, FALSE);
3153 context = g_main_loop_get_context(g_loop);
3154 source = g_idle_source_new();
3155 g_source_set_callback(source, test_insert_burst_shot_to_db_start, NULL, NULL);
3156 g_source_attach(source, context);
3158 g_main_loop_run(g_loop);
3159 g_main_loop_unref(g_loop);
3164 void _scan_cb(media_content_error_e err, void *user_data)
3166 media_content_debug("scan callback is called : %d\n", err);
3167 g_main_loop_quit(g_loop);
3172 int test_scan_file()
3176 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3177 ret = media_content_scan_file(file_path);
3178 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3179 media_content_error("Fail to media_content_scan_file : %d", ret);
3186 gboolean test_scan_dir_start(gpointer data)
3190 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
3192 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
3194 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3195 media_content_error("Fail to test_scan_dir_start : %d", ret);
3202 gboolean cancel_scan_dir_start(gpointer data)
3204 int ret = MEDIA_CONTENT_ERROR_NONE;
3206 const char *dir_path = tzplatform_getenv(TZ_USER_IMAGES);
3208 ret = media_content_cancel_scan_folder(dir_path);
3210 if (ret == MEDIA_CONTENT_ERROR_NONE)
3211 media_content_debug("media_content_cancel_scan_folder is success");
3213 media_content_error("media_content_cancel_scan_folder is failed");
3218 int test_scan_dir(int cancel)
3220 GSource *source = NULL;
3221 GMainContext *context = NULL;
3223 g_loop = g_main_loop_new(NULL, FALSE);
3224 context = g_main_loop_get_context(g_loop);
3225 source = g_idle_source_new();
3226 g_source_set_callback(source, test_scan_dir_start, NULL, NULL);
3227 g_source_attach(source, context);
3230 GSource *cancel_src = NULL;
3231 cancel_src = g_idle_source_new();
3232 g_source_set_callback(cancel_src, cancel_scan_dir_start, NULL, NULL);
3233 g_source_attach(cancel_src, context);
3236 g_main_loop_run(g_loop);
3237 g_main_loop_unref(g_loop);
3242 void _noti_cb(media_content_error_e error,
3244 media_content_db_update_item_type_e update_item,
3245 media_content_db_update_type_e update_type,
3246 media_content_type_e media_type,
3253 media_content_debug("noti success! : %d\n", error);
3255 media_content_debug("error occured! : %d\n", error);
3257 media_content_debug("Noti from PID(%d)\n", pid);
3259 if (update_item == MEDIA_ITEM_FILE)
3260 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
3261 else if (update_item == MEDIA_ITEM_DIRECTORY)
3262 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
3264 if (update_type == MEDIA_CONTENT_INSERT)
3265 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
3266 else if (update_type == MEDIA_CONTENT_DELETE)
3267 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
3268 else if (update_type == MEDIA_CONTENT_UPDATE)
3269 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
3271 media_content_debug("content type : %d\n", media_type);
3274 media_content_debug("path : %s\n", path);
3276 media_content_debug("path not\n");
3279 media_content_debug("uuid : %s\n", uuid);
3281 media_content_debug("uuid not\n");
3284 media_content_debug("mime_type : %s\n", mime_type);
3286 media_content_debug("mime not\n");
3288 if (user_data) media_content_debug("String : %s\n", (char *)user_data);
3293 void _noti_cb_2(media_content_error_e error,
3295 media_content_db_update_item_type_e update_item,
3296 media_content_db_update_type_e update_type,
3297 media_content_type_e media_type,
3304 media_content_debug("noti_2 success! : %d\n", error);
3306 media_content_debug("error occured! : %d\n", error);
3308 media_content_debug("Noti_2 from PID(%d)\n", pid);
3310 g_main_loop_quit(g_loop);
3314 static media_content_noti_h noti_h;
3315 static media_content_noti_h noti_h_2;
3317 gboolean _send_noti_operations(gpointer data)
3319 int ret = MEDIA_CONTENT_ERROR_NONE;
3321 /* First of all, noti subscription */
3322 char *user_str = strdup("hi");
3323 media_content_add_db_updated_cb(_noti_cb, (void*)user_str, ¬i_h);
3324 media_content_add_db_updated_cb(_noti_cb_2, (void*)user_str, ¬i_h_2);
3326 /* media_info_insert_to_db */
3327 media_info_h media_item = NULL;
3328 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3330 ret = media_info_insert_to_db(path, &media_item);
3331 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3332 media_content_error("media_info_insert_to_db failed : %d", ret);
3333 media_info_destroy(media_item);
3337 media_content_debug("media_info_insert_to_db success");
3339 /* media_info_delete_batch_from_db */
3341 char condition[2048] = {0,};
3342 const char *temp = NULL;
3343 memset(condition, 0x00, sizeof(condition));
3345 temp = tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%\'");
3346 snprintf(condition, sizeof(condition), "MEDIA_PATH LIKE \'%s", temp);
3348 ret = media_filter_create(&filter);
3349 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3350 media_content_error("Fail to create filter");
3351 media_info_destroy(media_item);
3355 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3356 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3357 media_filter_destroy(filter);
3358 media_info_destroy(media_item);
3359 media_content_error("Fail to set condition");
3362 ret = media_info_delete_batch_from_db(filter);
3363 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3364 media_filter_destroy(filter);
3365 media_info_destroy(media_item);
3366 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3370 media_filter_destroy(filter);
3372 media_content_remove_db_updated_cb(noti_h);
3374 /* media_info_update_to_db */
3375 ret = media_info_update_to_db(media_item);
3376 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3377 media_content_error("media_info_update_to_db failed : %d\n", ret);
3378 media_info_destroy(media_item);
3382 media_info_destroy(media_item);
3389 int ret = MEDIA_CONTENT_ERROR_NONE;
3390 GSource *source = NULL;
3391 GMainContext *context = NULL;
3393 g_loop = g_main_loop_new(NULL, FALSE);
3394 context = g_main_loop_get_context(g_loop);
3395 source = g_idle_source_new();
3396 g_source_set_callback(source, _send_noti_operations, NULL, NULL);
3397 g_source_attach(source, context);
3399 g_main_loop_run(g_loop);
3400 g_main_loop_unref(g_loop);
3402 test_filter_destroy();
3403 media_content_remove_db_updated_cb(noti_h_2);
3408 int test_create_handle(void)
3410 int ret = MEDIA_CONTENT_ERROR_NONE;
3411 media_info_h media = NULL;
3412 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/test.txt");
3413 char *str_value = NULL;
3415 bool bool_value = FALSE;
3416 unsigned long long content_size = 0;
3417 time_t modified_time = 0;
3418 double double_value = 0.0;
3420 ret = media_info_create(path, &media);
3422 ret = media_info_set_title(media, "test_title");
3423 ret = media_info_set_album(media, "test_album");
3424 ret = media_info_set_artist(media, "test_artist");
3425 ret = media_info_set_genre(media, "test_genre");
3426 ret = media_info_set_recorded_date(media, "test_recorded_date");
3427 ret = media_info_set_age_rating(media, "test_age_rating");
3428 ret = media_info_set_author(media, "test_author");
3429 ret = media_info_set_category(media, "test_category");
3430 ret = media_info_set_content_name(media, "test_content_name");
3431 ret = media_info_set_description(media, "test_description");
3432 ret = media_info_set_display_name(media, "test_display_name");
3433 ret = media_info_set_keyword(media, "test_keyword");
3434 ret = media_info_set_location_tag(media, "test_location_tag");
3435 ret = media_info_set_weather(media, "test_weather");
3436 ret = media_info_set_provider(media, "test_provider");
3438 ret = media_info_set_altitude(media, 100.10);
3439 ret = media_info_set_latitude(media, 200.20);
3440 ret = media_info_set_longitude(media, 300.30);
3441 ret = media_info_set_rating(media, 10);
3442 ret = media_info_set_played_time(media);
3443 ret = media_info_set_favorite(media, TRUE);
3444 ret = media_info_increase_played_count(media);
3445 ret = media_info_set_added_time(media, 12345);
3447 ret = media_info_insert_to_db_with_data(media);
3448 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3449 media_content_error("media_info_insert_to_db_with_data failed : %d\n", ret);
3450 media_info_destroy(media);
3454 ret = media_info_get_media_id(media, &str_value);
3455 media_content_debug("media_id = [%s]", str_value);
3456 SAFE_FREE(str_value);
3458 ret = media_info_get_file_path(media, &str_value);
3459 media_content_debug("file_path = [%s]", str_value);
3460 SAFE_FREE(str_value);
3462 ret = media_info_get_title(media, &str_value);
3463 media_content_debug("title = [%s]", str_value);
3464 SAFE_FREE(str_value);
3466 ret = media_info_get_age_rating(media, &str_value);
3467 media_content_debug("age_rating = [%s]", str_value);
3468 SAFE_FREE(str_value);
3470 ret = media_info_get_author(media, &str_value);
3471 media_content_debug("author = [%s]", str_value);
3472 SAFE_FREE(str_value);
3474 ret = media_info_get_category(media, &str_value);
3475 media_content_debug("category = [%s]", str_value);
3476 SAFE_FREE(str_value);
3478 ret = media_info_get_content_name(media, &str_value);
3479 media_content_debug("content_name = [%s]", str_value);
3480 SAFE_FREE(str_value);
3482 ret = media_info_get_description(media, &str_value);
3483 media_content_debug("description = [%s]", str_value);
3484 SAFE_FREE(str_value);
3486 ret = media_info_get_display_name(media, &str_value);
3487 media_content_debug("display_name = [%s]", str_value);
3488 SAFE_FREE(str_value);
3490 ret = media_info_get_keyword(media, &str_value);
3491 media_content_debug("keyword = [%s]", str_value);
3492 SAFE_FREE(str_value);
3494 ret = media_info_get_location_tag(media, &str_value);
3495 media_content_debug("location_tag = [%s]", str_value);
3496 SAFE_FREE(str_value);
3498 ret = media_info_get_weather(media, &str_value);
3499 media_content_debug("weather = [%s]", str_value);
3500 SAFE_FREE(str_value);
3502 ret = media_info_get_provider(media, &str_value);
3503 media_content_debug("provider = [%s]", str_value);
3504 SAFE_FREE(str_value);
3506 ret = media_info_get_longitude(media, &double_value);
3507 media_content_debug("longitude = [%lf]", double_value);
3509 ret = media_info_get_latitude(media, &double_value);
3510 media_content_debug("latitude = [%lf]", double_value);
3512 ret = media_info_get_altitude(media, &double_value);
3513 media_content_debug("altitud = [%lf]", double_value);
3515 ret = media_info_get_rating(media, &int_value);
3516 media_content_debug("rating = [%d]", int_value);
3518 ret = media_info_get_favorite(media, &bool_value);
3519 media_content_debug("favorite = [%d]", bool_value);
3521 ret = media_info_get_played_time(media, &modified_time);
3522 media_content_debug("played_time = [%ld]", modified_time);
3524 ret = media_info_get_played_count(media, &int_value);
3525 media_content_debug("played_count = [%d]", int_value);
3527 ret = media_info_get_added_time(media, &modified_time);
3528 media_content_debug("added_time = [%ld]", modified_time);
3530 ret = media_info_get_size(media, &content_size);
3531 media_content_debug("size = [%llu]", content_size);
3533 ret = media_info_get_modified_time(media, &modified_time);
3534 media_content_debug("modified_time = [%ld]", modified_time);
3536 ret = media_info_get_media_type(media, (media_content_type_e *)&int_value);
3537 media_content_debug("media_type = [%d]", int_value);
3539 ret = media_info_get_storage_type(media, (media_content_storage_e *)&int_value);
3540 media_content_debug("storage_type = [%d]", int_value);
3542 media_info_destroy(media);
3548 bool media_face_test_cb(media_face_h face, void *user_data)
3550 char *face_id = NULL;
3551 char *media_id = NULL;
3552 unsigned int rect_x = 0;
3553 unsigned int rect_y = 0;
3554 unsigned int rect_w = 0;
3555 unsigned int rect_h = 0;
3556 media_content_orientation_e orientation = 0;
3557 char *face_tag = NULL;
3559 media_face_get_face_id(face, &face_id);
3560 media_face_get_media_id(face, &media_id);
3561 media_face_get_face_rect(face, &rect_x, &rect_y, &rect_w, &rect_h);
3562 media_face_get_orientation(face, &orientation);
3563 media_face_get_tag(face, &face_tag);
3565 media_content_debug("face_id [%s] media_id [%s]", face_id, media_id);
3566 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);
3567 media_content_debug("tag [%s]", face_tag);
3569 if (user_data != NULL) {
3570 media_face_h new_face = NULL;
3571 media_face_clone(&new_face, face);
3573 GList **list = (GList**)user_data;
3574 *list = g_list_append(*list, new_face);
3578 SAFE_FREE(media_id);
3579 SAFE_FREE(face_tag);
3586 int ret = MEDIA_CONTENT_ERROR_NONE;
3587 filter_h filter = NULL;
3588 GList *all_item_list = NULL;
3591 ret = media_filter_create(&filter);
3592 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3594 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", MEDIA_CONTENT_COLLATE_DEFAULT);
3595 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3596 media_filter_destroy(filter);
3597 media_content_error("Fail to set condition");
3601 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
3602 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3603 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
3604 media_filter_destroy(filter);
3608 for (i = 0; i < g_list_length(all_item_list); i++) {
3609 media_info_h media_handle = NULL;
3610 char *media_id = NULL;
3613 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
3615 ret = media_info_get_media_id(media_handle, &media_id);
3616 if (ret != MEDIA_CONTENT_ERROR_NONE)
3617 media_content_error("media_info_get_media_id failed: %d", ret);
3619 ret = media_info_get_face_count_from_db(media_id, filter, &face_count);
3620 if (ret != MEDIA_CONTENT_ERROR_NONE)
3621 media_content_error("media_info_get_face_count_from_db failed: %d", ret);
3623 media_content_error("media_id [%s] face_count [%d]", media_id, face_count);
3625 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, NULL);
3626 if (ret != MEDIA_CONTENT_ERROR_NONE)
3627 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
3629 media_info_destroy(media_handle);
3632 media_filter_destroy(filter);
3637 int test_face_add_del(void)
3639 int ret = MEDIA_CONTENT_ERROR_NONE;
3640 char *media_id = "ecca7366-e085-41d8-a12b-cbdfc2b9c5fc";
3643 media_face_h face = NULL;
3645 char *face_tag = "test_face_tag";
3647 ret = media_face_create(media_id, &face);
3648 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_face_create");
3650 ret = media_face_set_face_rect(face, 10, 12, 50, 100);
3651 if (ret != MEDIA_CONTENT_ERROR_NONE)
3652 media_content_error("media_face_set_face_rect failed: %d", ret);
3654 ret = media_face_set_orientation(face, 5);
3655 if (ret != MEDIA_CONTENT_ERROR_NONE)
3656 media_content_error("media_face_set_orientation failed: %d", ret);
3658 ret = media_face_set_tag(face, face_tag);
3659 if (ret != MEDIA_CONTENT_ERROR_NONE)
3660 media_content_error("media_face_set_tag failed: %d", ret);
3662 ret = media_face_insert_to_db(face);
3663 if (ret != MEDIA_CONTENT_ERROR_NONE)
3664 media_content_error("media_face_insert_to_db failed: %d", ret);
3666 ret = media_face_destroy(face);
3667 if (ret != MEDIA_CONTENT_ERROR_NONE)
3668 media_content_error("media_face_destroy failed: %d", ret);
3671 GList *all_item_list = NULL;
3672 filter_h filter = NULL;
3673 ret = media_filter_create(&filter);
3674 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3676 ret = media_filter_set_condition(filter, "MEDIA_FACE_TAG IS NOT NULL", MEDIA_CONTENT_COLLATE_DEFAULT);
3677 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3678 media_filter_destroy(filter);
3679 media_content_error("Fail to set condition");
3683 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, &all_item_list);
3685 if (g_list_length(all_item_list) > 0) {
3686 media_face_h face_handle = NULL;
3687 face_handle = (media_face_h)g_list_nth_data(all_item_list, 0);
3689 ret = media_face_set_face_rect(face_handle, 20, 22, 70, 70);
3690 if (ret != MEDIA_CONTENT_ERROR_NONE)
3691 media_content_error("media_face_set_face_rect failed: %d", ret);
3692 ret = media_face_set_orientation(face_handle, 3);
3693 if (ret != MEDIA_CONTENT_ERROR_NONE)
3694 media_content_error("media_face_set_orientation failed: %d", ret);
3695 ret = media_face_set_tag(face_handle, NULL);
3696 if (ret != MEDIA_CONTENT_ERROR_NONE)
3697 media_content_error("media_face_set_tag failed: %d", ret);
3698 ret = media_face_update_to_db(face_handle);
3699 if (ret != MEDIA_CONTENT_ERROR_NONE)
3700 media_content_error("media_face_update_to_db failed: %d", ret);
3702 media_face_destroy(face_handle);
3705 media_filter_destroy(filter);
3708 char *face_id = "5e58a3a8-f0b2-4c29-b799-b49a70dc2313";
3711 ret = media_face_delete_from_db(face_id);
3716 #ifdef _USE_TVPD_MODE
3717 filter_h g_tv_filter = NULL;
3719 int test_tv_filter_create(void)
3721 media_content_debug("\n============Filter Create============\n\n");
3723 int ret = MEDIA_CONTENT_ERROR_NONE;
3725 ret = media_filter_create(&g_tv_filter);
3727 ret = media_filter_set_storage(g_tv_filter, "0a22a163-e634-4a2e-ba14-0469a969eea0");
3729 ret = media_filter_set_order(g_tv_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_STORAGE_ID, MEDIA_CONTENT_COLLATE_DEFAULT);
3734 int test_tv_filter_destroy(void)
3736 media_content_debug("\n============Filter Destroy============\n\n");
3738 int ret = MEDIA_CONTENT_ERROR_NONE;
3740 ret = media_filter_destroy(g_tv_filter);
3745 bool pvr_item_cb(media_pvr_h pvr, void *user_data)
3747 int ret = MEDIA_CONTENT_ERROR_NONE;
3748 char *c_value = NULL;
3750 bool b_value = false;
3751 unsigned long long l_value = 0;
3754 media_content_debug("NO Item");
3758 ret = media_pvr_get_media_id(pvr, &c_value);
3759 if (ret != MEDIA_CONTENT_ERROR_NONE)
3760 media_content_error("Fail to media_pvr_get_media_id");
3761 media_content_debug("media_id [%s]", c_value);
3764 ret = media_pvr_get_channel_name(pvr, &c_value);
3765 if (ret != MEDIA_CONTENT_ERROR_NONE)
3766 media_content_error("Fail to media_pvr_get_channel_name");
3767 media_content_debug("channel_name [%s]", c_value);
3770 ret = media_pvr_get_program_title(pvr, &c_value);
3771 if (ret != MEDIA_CONTENT_ERROR_NONE)
3772 media_content_error("Fail to media_pvr_get_program_title");
3773 media_content_debug("program_title [%s]", c_value);
3776 ret = media_pvr_get_program_crid(pvr, &c_value);
3777 if (ret != MEDIA_CONTENT_ERROR_NONE)
3778 media_content_error("Fail to media_pvr_get_program_crid");
3779 media_content_debug("program_crid [%s]", c_value);
3782 ret = media_pvr_get_guidance(pvr, &c_value);
3783 if (ret != MEDIA_CONTENT_ERROR_NONE)
3784 media_content_error("Fail to media_pvr_get_guidance");
3785 media_content_debug("guidance [%s]", c_value);
3788 ret = media_pvr_get_synopsis(pvr, &c_value);
3789 if (ret != MEDIA_CONTENT_ERROR_NONE)
3790 media_content_error("Fail to media_pvr_get_synopsis");
3791 media_content_debug("synopsis [%s]", c_value);
3794 ret = media_pvr_get_genre(pvr, &c_value);
3795 if (ret != MEDIA_CONTENT_ERROR_NONE)
3796 media_content_error("Fail to media_pvr_get_synopsis");
3797 media_content_debug("genre [%s]", c_value);
3800 ret = media_pvr_get_language(pvr, &c_value);
3801 if (ret != MEDIA_CONTENT_ERROR_NONE)
3802 media_content_error("Fail to media_pvr_get_language");
3803 media_content_debug("language [%s]", c_value);
3806 ret = media_pvr_get_path(pvr, &c_value);
3807 if (ret != MEDIA_CONTENT_ERROR_NONE)
3808 media_content_error("Fail to media_pvr_get_path");
3809 media_content_debug("path [%s]", c_value);
3812 ret = media_pvr_get_storage_id(pvr, &c_value);
3813 if (ret != MEDIA_CONTENT_ERROR_NONE)
3814 media_content_error("Fail to media_pvr_get_storage_id");
3815 media_content_debug("storage_id [%s]", c_value);
3818 ret = media_pvr_get_size(pvr, &l_value);
3819 if (ret != MEDIA_CONTENT_ERROR_NONE)
3820 media_content_error("Fail to media_pvr_get_size");
3821 media_content_debug("size [%lld]", l_value);
3823 ret = media_pvr_get_timezone(pvr, &i_value);
3824 if (ret != MEDIA_CONTENT_ERROR_NONE)
3825 media_content_error("Fail to media_pvr_get_timezone");
3826 media_content_debug("timezone [%d]", i_value);
3828 ret = media_pvr_get_ptc(pvr, &i_value);
3829 if (ret != MEDIA_CONTENT_ERROR_NONE)
3830 media_content_error("Fail to media_pvr_get_ptc");
3831 media_content_debug("ptc [%d]", i_value);
3833 ret = media_pvr_get_major(pvr, &i_value);
3834 if (ret != MEDIA_CONTENT_ERROR_NONE)
3835 media_content_error("Fail to media_pvr_get_major");
3836 media_content_debug("[%d]", i_value);
3838 ret = media_pvr_get_minor(pvr, &i_value);
3839 if (ret != MEDIA_CONTENT_ERROR_NONE)
3840 media_content_error("Fail to media_pvr_get_minor");
3841 media_content_debug("minor [%d]", i_value);
3843 ret = media_pvr_get_channel_type(pvr, &i_value);
3844 if (ret != MEDIA_CONTENT_ERROR_NONE)
3845 media_content_error("Fail to media_pvr_get_channel_type");
3846 media_content_debug("channel_type [%d]", i_value);
3848 ret = media_pvr_get_program_num(pvr, &i_value);
3849 if (ret != MEDIA_CONTENT_ERROR_NONE)
3850 media_content_error("Fail to media_pvr_get_program_num");
3851 media_content_debug("program_num [%d]", i_value);
3853 ret = media_pvr_get_duration(pvr, &i_value);
3854 if (ret != MEDIA_CONTENT_ERROR_NONE)
3855 media_content_error("Fail to media_pvr_get_duration");
3856 media_content_debug("duration [%d]", i_value);
3858 ret = media_pvr_get_embargo_time(pvr, &i_value);
3859 if (ret != MEDIA_CONTENT_ERROR_NONE)
3860 media_content_error("Fail to media_pvr_get_embargo_time");
3861 media_content_debug("embargo_time [%d]", i_value);
3863 ret = media_pvr_get_expiry_time(pvr, &i_value);
3864 if (ret != MEDIA_CONTENT_ERROR_NONE)
3865 media_content_error("Fail to media_pvr_get_expiry_time");
3866 media_content_debug("expiry_time [%d]", i_value);
3868 ret = media_pvr_get_parental_rating(pvr, &i_value);
3869 if (ret != MEDIA_CONTENT_ERROR_NONE)
3870 media_content_error("Fail to media_pvr_get_parental_rating");
3871 media_content_debug("parental_rating [%d]", i_value);
3873 ret = media_pvr_get_start_time(pvr, &i_value);
3874 if (ret != MEDIA_CONTENT_ERROR_NONE)
3875 media_content_error("Fail to media_pvr_get_start_time");
3876 media_content_debug("start_time [%d]", i_value);
3878 ret = media_pvr_get_program_start_time(pvr, &i_value);
3879 if (ret != MEDIA_CONTENT_ERROR_NONE)
3880 media_content_error("Fail to media_pvr_get_program_start_time");
3881 media_content_debug("program_start_time [%d]", i_value);
3883 ret = media_pvr_get_program_end_time(pvr, &i_value);
3884 if (ret != MEDIA_CONTENT_ERROR_NONE)
3885 media_content_error("Fail to media_pvr_get_program_end_time");
3886 media_content_debug("program_end_time [%d]", i_value);
3888 ret = media_pvr_get_program_date(pvr, &i_value);
3889 if (ret != MEDIA_CONTENT_ERROR_NONE)
3890 media_content_error("Fail to media_pvr_get_program_date");
3891 media_content_debug("program_date [%d]", i_value);
3893 ret = media_pvr_get_timer_record(pvr, &b_value);
3894 if (ret != MEDIA_CONTENT_ERROR_NONE)
3895 media_content_error("Fail to media_pvr_get_timer_record");
3896 media_content_debug("timer_record [%d]", b_value);
3898 ret = media_pvr_get_series_record(pvr, &b_value);
3899 if (ret != MEDIA_CONTENT_ERROR_NONE)
3900 media_content_error("Fail to media_pvr_get_series_record");
3901 media_content_debug("series_record [%d]", b_value);
3903 ret = media_pvr_get_hd(pvr, &i_value);
3904 if (ret != MEDIA_CONTENT_ERROR_NONE)
3905 media_content_error("Fail to media_pvr_get_hd");
3906 media_content_debug("hd [%d]", i_value);
3908 ret = media_pvr_get_subtitle(pvr, &b_value);
3909 if (ret != MEDIA_CONTENT_ERROR_NONE)
3910 media_content_error("Fail to media_pvr_get_subtitle");
3911 media_content_debug("subtitle [%d]", b_value);
3913 ret = media_pvr_get_ttx(pvr, &b_value);
3914 if (ret != MEDIA_CONTENT_ERROR_NONE)
3915 media_content_error("Fail to media_pvr_get_ttx");
3916 media_content_debug("ttx [%d]", b_value);
3918 ret = media_pvr_get_ad(pvr, &b_value);
3919 if (ret != MEDIA_CONTENT_ERROR_NONE)
3920 media_content_error("Fail to media_pvr_get_ad");
3921 media_content_debug("ad [%d]", b_value);
3923 ret = media_pvr_get_hard_of_hearing_radio(pvr, &b_value);
3924 if (ret != MEDIA_CONTENT_ERROR_NONE)
3925 media_content_error("Fail to media_pvr_get_hard_of_hearing_radio");
3926 media_content_debug("hard_of_hearing_radio [%d]", b_value);
3928 ret = media_pvr_get_data_service(pvr, &b_value);
3929 if (ret != MEDIA_CONTENT_ERROR_NONE)
3930 media_content_error("Fail to media_pvr_get_data_service");
3931 media_content_debug("data_service [%d]", b_value);
3933 ret = media_pvr_get_content_lock(pvr, &b_value);
3934 if (ret != MEDIA_CONTENT_ERROR_NONE)
3935 media_content_error("Fail to media_pvr_get_content_lock");
3936 media_content_debug("content_lock [%d]", b_value);
3938 ret = media_pvr_get_content_watch(pvr, &b_value);
3939 if (ret != MEDIA_CONTENT_ERROR_NONE)
3940 media_content_error("Fail to media_pvr_get_content_watch");
3941 media_content_debug("content_watch [%d]", b_value);
3943 ret = media_pvr_get_has_audio_only(pvr, &b_value);
3944 if (ret != MEDIA_CONTENT_ERROR_NONE)
3945 media_content_error("Fail to media_pvr_get_has_audio_only");
3946 media_content_debug("has_audio_only [%d]", b_value);
3948 ret = media_pvr_get_is_local_record(pvr, &b_value);
3949 if (ret != MEDIA_CONTENT_ERROR_NONE)
3950 media_content_error("Fail to media_pvr_get_is_local_record");
3951 media_content_debug("is_local_record [%d]", b_value);
3953 ret = media_pvr_get_resolution(pvr, (media_pvr_resolution_e*)&i_value);
3954 if (ret != MEDIA_CONTENT_ERROR_NONE)
3955 media_content_error("Fail to media_pvr_get_resolution");
3956 media_content_debug("resolution [%d]", i_value);
3958 ret = media_pvr_get_aspectratio(pvr, (media_pvr_aspectratio_e*)&i_value);
3959 if (ret != MEDIA_CONTENT_ERROR_NONE)
3960 media_content_error("Fail to media_pvr_get_aspectratio");
3961 media_content_debug("aspectratio [%d]", i_value);
3963 ret = media_pvr_get_highlight(pvr, &b_value);
3964 if (ret != MEDIA_CONTENT_ERROR_NONE)
3965 media_content_error("Fail to media_pvr_get_highlight");
3966 media_content_debug("highlight [%d]", b_value);
3974 int ret = MEDIA_CONTENT_ERROR_NONE;
3975 int media_count = 0;
3977 media_content_debug("\n============PVR Test============\n\n");
3979 test_tv_filter_create();
3981 ret = media_pvr_get_media_count_from_db(g_tv_filter, &media_count);
3982 if (ret != MEDIA_CONTENT_ERROR_NONE)
3983 media_content_error("media_pvr_get_media_count_from_db failed: %d", ret);
3985 media_content_debug("media_count : [%d]", media_count);
3987 ret = media_pvr_foreach_media_from_db(g_tv_filter, pvr_item_cb, NULL);
3988 if (ret != MEDIA_CONTENT_ERROR_NONE)
3989 media_content_error("media_pvr_foreach_media_from_db is failed");
3991 test_tv_filter_destroy();
3996 int test_pvr_update_db(void)
3998 int ret = MEDIA_CONTENT_ERROR_NONE;
3999 media_pvr_h pvr = NULL;
4001 ret = media_pvr_get_pvr_from_db("ff9b5a9a-a7b4-47f4-8255-84e007e25f13", &pvr);
4002 if (ret != MEDIA_CONTENT_ERROR_NONE)
4003 media_content_error("media_pvr_get_pvr_from_db failed: %d", ret);
4005 ret = media_pvr_set_content_lock(pvr, TRUE);
4006 if (ret != MEDIA_CONTENT_ERROR_NONE)
4007 media_content_error("Fail to media_pvr_set_content_lock");
4009 ret = media_pvr_set_content_watch(pvr, TRUE);
4010 if (ret != MEDIA_CONTENT_ERROR_NONE)
4011 media_content_error("Fail to media_pvr_set_content_watch");
4013 ret = media_pvr_set_program_title(pvr, "TEST TITLE");
4014 if (ret != MEDIA_CONTENT_ERROR_NONE)
4015 media_content_error("Fail to media_pvr_set_program_title");
4017 ret = media_pvr_set_highlight(pvr, TRUE);
4018 if (ret != MEDIA_CONTENT_ERROR_NONE)
4019 media_content_error("Fail to media_pvr_set_highlight");
4021 ret = media_pvr_update_to_db(pvr);
4022 if (ret != MEDIA_CONTENT_ERROR_NONE)
4023 media_content_error("Fail to media_pvr_update_to_db");
4026 media_pvr_destroy(pvr);
4032 int main(int argc, char *argv[])
4034 int ret = MEDIA_CONTENT_ERROR_NONE;
4036 media_content_debug("--- content manager test start ---\n\n");
4038 ret = test_connect_database();
4039 if (ret != MEDIA_CONTENT_ERROR_NONE)
4040 return MEDIA_CONTENT_ERROR_NONE;
4041 #ifdef _USE_TVPD_MODE
4044 test_pvr_update_db();
4050 ret = test_start_face_detection(FALSE);
4051 if (ret != MEDIA_CONTENT_ERROR_NONE)
4055 if (ret != MEDIA_CONTENT_ERROR_NONE)
4058 ret = test_gallery_scenario();
4059 if (ret != MEDIA_CONTENT_ERROR_NONE)
4062 ret = test_get_all_music_files();
4063 if (ret != MEDIA_CONTENT_ERROR_NONE)
4066 ret = test_media_info_operation();
4067 if (ret != MEDIA_CONTENT_ERROR_NONE)
4070 ret = test_folder_operation();
4071 if (ret != MEDIA_CONTENT_ERROR_NONE)
4074 ret = test_folder_update();
4075 if (ret != MEDIA_CONTENT_ERROR_NONE)
4078 ret = test_playlist_operation();
4079 if (ret != MEDIA_CONTENT_ERROR_NONE)
4082 ret = test_tag_operation();
4083 if (ret != MEDIA_CONTENT_ERROR_NONE)
4086 ret = test_bookmark_operation();
4087 if (ret != MEDIA_CONTENT_ERROR_NONE)
4090 ret = test_album_list();
4091 if (ret != MEDIA_CONTENT_ERROR_NONE)
4094 ret = test_group_operation();
4095 if (ret != MEDIA_CONTENT_ERROR_NONE)
4098 ret = test_update_operation();
4099 if (ret != MEDIA_CONTENT_ERROR_NONE)
4102 ret = test_insert();
4103 if (ret != MEDIA_CONTENT_ERROR_NONE)
4107 if (ret != MEDIA_CONTENT_ERROR_NONE)
4110 ret = test_create_thumbnail(TRUE);
4111 if (ret != MEDIA_CONTENT_ERROR_NONE)
4114 ret = test_extrace_face(TRUE);
4115 if (ret != MEDIA_CONTENT_ERROR_NONE)
4118 ret = test_request_update_db();
4119 if (ret != MEDIA_CONTENT_ERROR_NONE)
4123 if (ret != MEDIA_CONTENT_ERROR_NONE)
4126 ret = test_batch_operations();
4127 if (ret != MEDIA_CONTENT_ERROR_NONE)
4128 return MEDIA_CONTENT_ERROR_NONE;
4130 ret = test_insert_burst_shot_to_db();
4131 if (ret != MEDIA_CONTENT_ERROR_NONE)
4132 return MEDIA_CONTENT_ERROR_NONE;
4134 ret = test_scan_file();
4135 if (ret != MEDIA_CONTENT_ERROR_NONE)
4136 return MEDIA_CONTENT_ERROR_NONE;
4138 ret = test_scan_dir(true);
4139 if (ret != MEDIA_CONTENT_ERROR_NONE)
4140 return MEDIA_CONTENT_ERROR_NONE;
4143 if (ret != MEDIA_CONTENT_ERROR_NONE)
4144 return MEDIA_CONTENT_ERROR_NONE;
4146 ret = test_create_handle();
4147 if (ret != MEDIA_CONTENT_ERROR_NONE)
4148 return MEDIA_CONTENT_ERROR_NONE;
4151 if (ret != MEDIA_CONTENT_ERROR_NONE)
4152 return MEDIA_CONTENT_ERROR_NONE;
4154 ret = test_face_add_del();
4155 if (ret != MEDIA_CONTENT_ERROR_NONE)
4156 return MEDIA_CONTENT_ERROR_NONE;
4158 ret = test_playlist_operation_v2();
4159 if (ret != MEDIA_CONTENT_ERROR_NONE)
4160 return MEDIA_CONTENT_ERROR_NONE;
4162 ret = test_bookmark_operation_v2();
4163 if (ret != MEDIA_CONTENT_ERROR_NONE)
4164 return MEDIA_CONTENT_ERROR_NONE;
4166 ret = test_tag_operation_v2();
4167 if (ret != MEDIA_CONTENT_ERROR_NONE)
4168 return MEDIA_CONTENT_ERROR_NONE;
4171 ret = test_disconnect_database();
4172 if (ret != MEDIA_CONTENT_ERROR_NONE)
4175 media_content_debug("--- content manager test end ---\n");