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>
28 filter_h g_filter = NULL;
29 filter_h g_filter_g = NULL; //filter for group like folder, tag, playlist, album, year ...
31 GMainLoop *g_loop = NULL;
33 static int g_media_cnt = 0;
35 #define test_audio_id "0f999626-6218-450c-a4ad-181a3bab6ebf"
36 #define test_video_id "c1a92494-cc5b-4d74-aa7d-253199234548"
37 #define test_image_id "db1c184c-6f31-43b4-b924-8c00ac5b6197"
38 media_folder_h g_folder = NULL;
40 bool get_audio_meta(audio_meta_h audio)
45 int ret = MEDIA_CONTENT_ERROR_NONE;
47 media_content_debug("=== audio meta ===");
49 ret = audio_meta_get_media_id(audio, &c_value);
50 if(ret != MEDIA_CONTENT_ERROR_NONE)
51 media_content_error("error when get meta : [%d]", ret);
52 media_content_debug("audio_id : [%s]", c_value);
55 ret = audio_meta_get_album(audio, &c_value);
56 if(ret != MEDIA_CONTENT_ERROR_NONE)
57 media_content_error("error when get meta : [%d]", ret);
58 media_content_debug("album : [%s]", c_value);
61 ret = audio_meta_get_artist(audio, &c_value);
62 if(ret != MEDIA_CONTENT_ERROR_NONE)
63 media_content_error("error when get meta : [%d]", ret);
64 media_content_debug("artist : [%s]", c_value);
67 ret = audio_meta_get_album_artist(audio, &c_value);
68 if(ret != MEDIA_CONTENT_ERROR_NONE)
69 media_content_error("error when get meta : [%d]", ret);
70 media_content_debug("album_artist : [%s]", c_value);
73 ret = audio_meta_get_genre(audio, &c_value);
74 if(ret != MEDIA_CONTENT_ERROR_NONE)
75 media_content_error("error when get meta : [%d]", ret);
76 media_content_debug("genre : [%s]", c_value);
79 ret = audio_meta_get_composer(audio, &c_value);
80 if(ret != MEDIA_CONTENT_ERROR_NONE)
81 media_content_error("error when get meta : [%d]", ret);
82 media_content_debug("composer : [%s]", c_value);
85 ret = audio_meta_get_year(audio, &c_value);
86 if(ret != MEDIA_CONTENT_ERROR_NONE)
87 media_content_error("error when get meta : [%d]", ret);
88 media_content_debug("year : [%s]", c_value);
91 ret = audio_meta_get_recorded_date(audio, &c_value);
92 if(ret != MEDIA_CONTENT_ERROR_NONE)
93 media_content_error("error when get meta : [%d]", ret);
94 media_content_debug("recorded_date : [%s]", c_value);
97 ret = audio_meta_get_copyright(audio, &c_value);
98 if(ret != MEDIA_CONTENT_ERROR_NONE)
99 media_content_error("error when get meta : [%d]", ret);
100 media_content_debug("copyright : [%s]", c_value);
103 ret = audio_meta_get_track_num(audio, &c_value);
104 if(ret != MEDIA_CONTENT_ERROR_NONE)
105 media_content_error("error when get meta : [%d]", ret);
106 media_content_debug("track_num : [%s]", c_value);
109 ret = audio_meta_get_bit_rate(audio, &i_value);
110 if(ret != MEDIA_CONTENT_ERROR_NONE)
111 media_content_error("error when get meta : [%d]", ret);
112 media_content_debug("bitrate : [%d]", i_value);
114 ret = audio_meta_get_sample_rate(audio, &i_value);
115 if(ret != MEDIA_CONTENT_ERROR_NONE)
116 media_content_error("error when get meta : [%d]", ret);
117 media_content_debug("samplerate : [%d]", i_value);
119 ret = audio_meta_get_channel(audio, &i_value);
120 if(ret != MEDIA_CONTENT_ERROR_NONE)
121 media_content_error("error when get meta : [%d]", ret);
122 media_content_debug("channel : [%d]", i_value);
124 ret = audio_meta_get_duration(audio, &i_value);
125 if(ret != MEDIA_CONTENT_ERROR_NONE)
126 media_content_error("error when get meta : [%d]", ret);
127 media_content_debug("duration : [%d]", i_value);
129 ret = audio_meta_get_played_count(audio, &i_value);
130 if(ret != MEDIA_CONTENT_ERROR_NONE)
131 media_content_error("error when get meta : [%d]", ret);
132 media_content_debug("played_count : [%d]", i_value);
134 ret = audio_meta_get_played_time(audio, &t_value);
135 if(ret != MEDIA_CONTENT_ERROR_NONE)
136 media_content_error("error when get meta : [%d]", ret);
137 media_content_debug("played_time : [%d]", t_value);
139 ret = audio_meta_get_played_position(audio, &i_value);
140 if(ret != MEDIA_CONTENT_ERROR_NONE)
141 media_content_error("error when get meta : [%d]", ret);
142 media_content_debug("played_position : [%d]", i_value);
147 bool get_video_meta(video_meta_h video)
149 char *c_value = NULL;
152 int ret = MEDIA_CONTENT_ERROR_NONE;
154 media_content_debug("=== video meta ===");
156 ret = video_meta_get_media_id(video, &c_value);
157 if(ret != MEDIA_CONTENT_ERROR_NONE)
158 media_content_error("error when get meta : [%d]", ret);
159 media_content_debug("video_id : [%s]", c_value);
162 ret = video_meta_get_album(video, &c_value);
163 if(ret != MEDIA_CONTENT_ERROR_NONE)
164 media_content_error("error when get meta : [%d]", ret);
165 media_content_debug("album : [%s]", c_value);
168 ret = video_meta_get_artist(video, &c_value);
169 if(ret != MEDIA_CONTENT_ERROR_NONE)
170 media_content_error("error when get meta : [%d]", ret);
171 media_content_debug("artist : [%s]", c_value);
174 ret = video_meta_get_album_artist(video, &c_value);
175 if(ret != MEDIA_CONTENT_ERROR_NONE)
176 media_content_error("error when get meta : [%d]", ret);
177 media_content_debug("album_artist : [%s]", c_value);
180 ret = video_meta_get_genre(video, &c_value);
181 if(ret != MEDIA_CONTENT_ERROR_NONE)
182 media_content_error("error when get meta : [%d]", ret);
183 media_content_debug("genre : [%s]", c_value);
186 ret = video_meta_get_composer(video, &c_value);
187 if(ret != MEDIA_CONTENT_ERROR_NONE)
188 media_content_error("error when get meta : [%d]", ret);
189 media_content_debug("omposer : [%s]", c_value);
192 ret = video_meta_get_year(video, &c_value);
193 if(ret != MEDIA_CONTENT_ERROR_NONE)
194 media_content_error("error when get meta : [%d]", ret);
195 media_content_debug("year : [%s]", c_value);
198 ret = video_meta_get_recorded_date(video, &c_value);
199 if(ret != MEDIA_CONTENT_ERROR_NONE)
200 media_content_error("error when get meta : [%d]", ret);
201 media_content_debug("recorded_date : [%s]", c_value);
204 ret = video_meta_get_copyright(video, &c_value);
205 if(ret != MEDIA_CONTENT_ERROR_NONE)
206 media_content_error("error when get meta : [%d]", ret);
207 media_content_debug("copyright : [%s]", c_value);
210 ret = video_meta_get_track_num(video, &c_value);
211 if(ret != MEDIA_CONTENT_ERROR_NONE)
212 media_content_error("error when get meta : [%d]", ret);
213 media_content_debug("track_num : [%s]", c_value);
216 ret = video_meta_get_bit_rate(video, &i_value);
217 if(ret != MEDIA_CONTENT_ERROR_NONE)
218 media_content_error("error when get meta : [%d]", ret);
219 media_content_debug("bitrate : [%d]", i_value);
221 ret = video_meta_get_duration(video, &i_value);
222 if(ret != MEDIA_CONTENT_ERROR_NONE)
223 media_content_error("error when get meta : [%d]", ret);
224 media_content_debug("duration : [%d]", i_value);
226 ret = video_meta_get_width(video, &i_value);
227 if(ret != MEDIA_CONTENT_ERROR_NONE)
228 media_content_error("error when get meta : [%d]", ret);
229 media_content_debug("width : [%d]", i_value);
231 ret = video_meta_get_height(video, &i_value);
232 if(ret != MEDIA_CONTENT_ERROR_NONE)
233 media_content_error("error when get meta : [%d]", ret);
234 media_content_debug("height : [%d]", i_value);
236 ret = video_meta_get_played_count(video, &i_value);
237 if(ret != MEDIA_CONTENT_ERROR_NONE)
238 media_content_error("error when get meta : [%d]", ret);
239 media_content_debug("played_count : [%d]", i_value);
241 ret = video_meta_get_played_time(video, &t_value);
242 if(ret != MEDIA_CONTENT_ERROR_NONE)
243 media_content_error("error when get meta : [%d]", ret);
244 media_content_debug("played_time : [%d]", t_value);
246 ret = video_meta_get_played_position(video, &i_value);
247 if(ret != MEDIA_CONTENT_ERROR_NONE)
248 media_content_error("error when get meta : [%d]", ret);
249 media_content_debug("played_position : [%d]", i_value);
254 bool gallery_folder_list_cb(media_folder_h folder, void *user_data)
256 media_folder_h new_folder = NULL;
257 media_folder_clone(&new_folder, folder);
259 GList **list = (GList**)user_data;
260 *list = g_list_append(*list, new_folder);
265 bool gallery_media_item_cb(media_info_h media, void *user_data)
267 media_info_h new_media = NULL;
268 media_info_clone(&new_media, media);
270 GList **list = (GList**)user_data;
271 *list = g_list_append(*list, new_media);
276 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
278 media_tag_h new_tag = NULL;
279 media_tag_clone(&new_tag, tag);
281 GList **list = (GList**)user_data;
282 *list = g_list_append(*list, new_tag);
287 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
289 media_bookmark_h new_bm = NULL;
290 int ret = MEDIA_CONTENT_ERROR_NONE;
292 ret = media_bookmark_clone(&new_bm, bookmark);
293 if(ret != MEDIA_CONTENT_ERROR_NONE)
294 media_content_error("error media_bookmark_clone : [%d]", ret);
296 GList **list = (GList**)user_data;
297 *list = g_list_append(*list, new_bm);
302 bool media_item_cb(media_info_h media, void *user_data)
304 char *c_value = NULL;
305 char *media_id = NULL;
308 bool b_value = false;
309 media_content_type_e media_type = 0;
310 unsigned long long size = 0;
311 int ret = MEDIA_CONTENT_ERROR_NONE;
315 media_content_debug("NO Item");
319 ret = media_info_get_media_type(media, &media_type);
320 if(ret != MEDIA_CONTENT_ERROR_NONE)
321 media_content_error("error when get info : [%d]", ret);
322 media_content_debug("media_type : [%d]", media_type);
324 ret = media_info_get_media_id(media, &media_id);
325 if(ret != MEDIA_CONTENT_ERROR_NONE)
326 media_content_error("error when get info : [%d]", ret);
327 media_content_debug("media_id : [%s]", media_id);
329 ret = media_info_get_file_path(media, &c_value);
330 if(ret != MEDIA_CONTENT_ERROR_NONE)
331 media_content_error("error when get info : [%d]", ret);
332 media_content_debug("file_path : [%s]", c_value);
336 if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
340 if(media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE)
342 get_audio_meta(audio);
343 ret = audio_meta_destroy(audio);
344 if(ret != MEDIA_CONTENT_ERROR_NONE)
345 media_content_error("error audio_meta_destroy : [%d]", ret);
348 media_content_error("[audio_error]");
351 else if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
354 media_content_orientation_e orientation = 0;
355 bool is_burst_shot = false;
356 char *burst_id = NULL;
357 char *weather = NULL;
359 if(media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE)
361 ret = image_meta_get_orientation(image, &orientation);
362 if(ret != MEDIA_CONTENT_ERROR_NONE)
363 media_content_error("error image_meta_get_orientation : [%d]", ret);
365 media_content_debug("[image] orientation : %d", orientation);
367 ret = image_meta_is_burst_shot(image, &is_burst_shot);
368 if(ret != MEDIA_CONTENT_ERROR_NONE)
369 media_content_error("error image_meta_is_burst_shot : [%d]", ret);
372 ret = image_meta_get_burst_id(image, &burst_id);
373 if(ret != MEDIA_CONTENT_ERROR_NONE)
374 media_content_error("error image_meta_get_burst_id : [%d]", ret);
376 media_content_debug("[image] burst_id : [%s]", burst_id);
381 ret = image_meta_destroy(image);
382 if(ret != MEDIA_CONTENT_ERROR_NONE)
383 media_content_error("error image_meta_destroy : [%d]", ret);
386 media_content_error("[image_error]");
389 else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
393 if(media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE)
395 get_video_meta(video);
396 ret = video_meta_destroy(video);
397 if(ret != MEDIA_CONTENT_ERROR_NONE)
398 media_content_error("error video_meta_destroy : [%d]", ret);
401 media_content_error("[video_error]");
406 media_content_debug("Other Content");
409 media_content_debug("=== media_info ===");
410 ret = media_info_get_file_path(media, &c_value);
411 if(ret != MEDIA_CONTENT_ERROR_NONE)
412 media_content_error("error when get info : [%d]", ret);
413 media_content_debug("file_path : [%s]", c_value);
416 ret = media_info_get_display_name(media, &c_value);
417 if(ret != MEDIA_CONTENT_ERROR_NONE)
418 media_content_error("error when get info : [%d]", ret);
419 media_content_debug("display_name : [%s]", c_value);
422 ret = media_info_get_mime_type(media, &c_value);
423 if(ret != MEDIA_CONTENT_ERROR_NONE)
424 media_content_error("error when get info : [%d]", ret);
425 media_content_debug("mime_type : [%s]", c_value);
428 ret = media_info_get_thumbnail_path(media, &c_value);
429 if(ret != MEDIA_CONTENT_ERROR_NONE)
430 media_content_error("error when get info : [%d]", ret);
431 media_content_debug("thumbnail_path : [%s]", c_value);
434 ret = media_info_get_description(media, &c_value);
435 if(ret != MEDIA_CONTENT_ERROR_NONE)
436 media_content_error("error when get info : [%d]", ret);
437 media_content_debug("description : [%s]", c_value);
440 ret = media_info_get_author(media, &c_value);
441 if(ret != MEDIA_CONTENT_ERROR_NONE)
442 media_content_error("error when get info : [%d]", ret);
443 media_content_debug("author : [%s]", c_value);
446 ret = media_info_get_provider(media, &c_value);
447 if(ret != MEDIA_CONTENT_ERROR_NONE)
448 media_content_error("error when get info : [%d]", ret);
449 media_content_debug("provider : [%s]", c_value);
452 ret = media_info_get_content_name(media, &c_value);
453 if(ret != MEDIA_CONTENT_ERROR_NONE)
454 media_content_error("error when get info : [%d]", ret);
455 media_content_debug("content_name : [%s]", c_value);
458 ret = media_info_get_category(media, &c_value);
459 if(ret != MEDIA_CONTENT_ERROR_NONE)
460 media_content_error("error when get info : [%d]", ret);
461 media_content_debug("category : [%s]", c_value);
464 ret = media_info_get_location_tag(media, &c_value);
465 if(ret != MEDIA_CONTENT_ERROR_NONE)
466 media_content_error("error when get info : [%d]", ret);
467 media_content_debug("location_tag : [%s]", c_value);
470 ret = media_info_get_age_rating(media, &c_value);
471 if(ret != MEDIA_CONTENT_ERROR_NONE)
472 media_content_error("error when get info : [%d]", ret);
473 media_content_debug("age_rating : [%s]", c_value);
476 ret = media_info_get_keyword(media, &c_value);
477 if(ret != MEDIA_CONTENT_ERROR_NONE)
478 media_content_error("error when get info : [%d]", ret);
479 media_content_debug("keyword : [%s]", c_value);
482 ret = media_info_get_size(media, &size);
483 if(ret != MEDIA_CONTENT_ERROR_NONE)
484 media_content_error("error when get info : [%d]", ret);
485 media_content_debug("size : [%lld]", size);
487 ret = media_info_get_added_time(media, &t_value);
488 if(ret != MEDIA_CONTENT_ERROR_NONE)
489 media_content_error("error when get info : [%d]", ret);
490 media_content_debug("added_time : [%d]", t_value);
492 ret = media_info_get_modified_time(media, &t_value);
493 if(ret != MEDIA_CONTENT_ERROR_NONE)
494 media_content_error("error when get info : [%d]", ret);
495 media_content_debug("modified_time : [%d]", t_value);
497 ret = media_info_get_timeline(media, &t_value);
498 if(ret != MEDIA_CONTENT_ERROR_NONE)
499 media_content_error("error when get info : [%d]", ret);
500 media_content_debug("timeline : [%d]", t_value);
502 ret = media_info_get_rating(media, &i_value);
503 if(ret != MEDIA_CONTENT_ERROR_NONE)
504 media_content_error("error when get info : [%d]", ret);
505 media_content_debug("rating : [%d]", i_value);
507 ret = media_info_get_favorite(media, &b_value);
508 if(ret != MEDIA_CONTENT_ERROR_NONE)
509 media_content_error("error when get info : [%d]", ret);
510 media_content_debug("favorite : [%d]", b_value);
512 ret = media_info_is_drm(media, &b_value);
513 if(ret != MEDIA_CONTENT_ERROR_NONE)
514 media_content_error("error when get info : [%d]", ret);
515 media_content_debug("is_drm : [%d]", b_value);
519 ret = media_info_set_weather(media, "Sunny");
520 if(ret != MEDIA_CONTENT_ERROR_NONE) {
521 media_content_error("Fail to set weather");
524 ret = media_info_get_weather(media, &c_value);
525 if(ret != MEDIA_CONTENT_ERROR_NONE)
526 media_content_error("error when get info : [%d]", ret);
527 media_content_debug("weather : [%s]", c_value);
531 /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
532 //ret = media_info_set_location_tag(media, "Test location tag");
533 //media_info_update_to_db(media);
539 bool folder_list_cb(media_folder_h folder, void *user_data)
542 char *folder_id = NULL;
543 char *folder_path = NULL;
544 char *folder_name = NULL;
545 media_content_storage_e storage_type;
547 media_folder_h *_folder = (media_folder_h*)user_data;
552 media_folder_clone(_folder, folder);
554 if(media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE)
556 media_content_error("[ERROR] media_folder_get_folder_id is failed");
559 media_content_debug("folder_id = [%s]", folder_id);
561 if(media_folder_get_path(folder, &folder_path) != MEDIA_CONTENT_ERROR_NONE)
563 SAFE_FREE(folder_id);
564 media_content_error("[ERROR] media_folder_get_path is failed");
567 media_content_debug("folder_path = [%s]", folder_path);
568 SAFE_FREE(folder_path);
570 if(media_folder_get_name(folder, &folder_name) != MEDIA_CONTENT_ERROR_NONE)
572 SAFE_FREE(folder_id);
573 SAFE_FREE(folder_path);
574 media_content_error("[ERROR] media_folder_get_name is failed");
577 media_content_debug("folder_name = [%s]", folder_name);
578 SAFE_FREE(folder_name);
580 if(media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE)
582 SAFE_FREE(folder_id);
583 SAFE_FREE(folder_path);
584 SAFE_FREE(folder_name);
585 media_content_error("[ERROR] media_folder_get_storage_type is failed");
588 media_content_debug("storage_type = [%d]", storage_type);
590 if(media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE)
592 SAFE_FREE(folder_id);
593 SAFE_FREE(folder_path);
594 SAFE_FREE(folder_name);
595 media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
599 if(media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
601 SAFE_FREE(folder_id);
602 SAFE_FREE(folder_path);
603 SAFE_FREE(folder_name);
604 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
608 SAFE_FREE(folder_id);
609 SAFE_FREE(folder_path);
610 SAFE_FREE(folder_name);
622 bool test_album_from_db(int album_id)
624 int ret = MEDIA_CONTENT_ERROR_NONE;
625 media_album_h album_h;
626 int test_album_id = 0;
627 char *album_name = NULL;
630 ret = media_album_get_album_from_db(album_id, &album_h);
631 if(ret != MEDIA_CONTENT_ERROR_NONE)
633 media_content_error("error when get album");
637 if(media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE)
639 media_album_destroy(album_h);
643 media_content_debug("test_album_id : [%d]", test_album_id);
645 if(media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE)
647 media_album_destroy(album_h);
651 media_content_debug("album_name : [%s]", album_name);
653 if(media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE)
655 media_album_destroy(album_h);
659 media_content_debug("artist : [%s]", artist);
661 SAFE_FREE(album_name);
664 media_album_destroy(album_h);
669 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
672 char *playlist_name = NULL;
673 media_playlist_h playlist_h;
674 char *playlist_thumbnail_path = NULL;
676 media_content_debug("playlist_list_cb ======");
678 GList **list = (GList**)user_data;
682 media_content_debug(" playlist handle is NULL");
686 media_playlist_get_playlist_id(playlist, &playlist_id);
687 media_content_debug("playlist_id : %d", playlist_id);
689 if(user_data != NULL)
690 *list = g_list_append(*list, (gpointer)playlist_id);
692 media_playlist_get_name(playlist, &playlist_name);
693 media_content_debug("playlist_name : %s", playlist_name);
694 SAFE_FREE(playlist_name);
696 media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
697 media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
698 SAFE_FREE(playlist_thumbnail_path);
700 media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
702 media_playlist_destroy(playlist_h);
707 bool tag_list_cb(media_tag_h tag, void *user_data)
710 char *tag_name = NULL;
711 int ret = MEDIA_CONTENT_ERROR_NONE;
715 media_content_debug(" tag handle is NULL");
719 ret = media_tag_get_tag_id(tag, &tag_id);
720 if(ret != MEDIA_CONTENT_ERROR_NONE)
721 media_content_error("error media_tag_get_tag_id : [%d]", ret);
723 media_content_debug("tag_id : %d", tag_id);
725 ret = media_tag_get_name(tag, &tag_name);
726 if(ret != MEDIA_CONTENT_ERROR_NONE)
727 media_content_error("error media_tag_get_name : [%d]", ret);
729 media_content_debug("tag_name : %s", tag_name);
735 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
737 media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
738 int ret = MEDIA_CONTENT_ERROR_NONE;
740 if(_bookmark != NULL)
746 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
747 if(ret != MEDIA_CONTENT_ERROR_NONE)
748 media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
750 media_content_debug("bookmark_id : %d", bookmark_id);
752 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
753 if(ret != MEDIA_CONTENT_ERROR_NONE)
754 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
756 media_content_debug("bookmark thumbnail_path : %s", name);
759 ret = media_bookmark_get_marked_time(bookmark, &time);
760 if(ret != MEDIA_CONTENT_ERROR_NONE)
761 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
763 media_content_debug("bookmark marked_time : %d", time);
769 bool album_list_cb(media_album_h album, void *user_data)
772 char *album_name = NULL;
774 char *album_art = NULL;
776 int ret = MEDIA_CONTENT_ERROR_NONE;
777 filter_h filter = NULL;
780 char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
782 ret = media_filter_create(&filter);
783 if(ret != MEDIA_CONTENT_ERROR_NONE) {
784 media_content_error("Fail to create filter");
787 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
788 if(ret != MEDIA_CONTENT_ERROR_NONE) {
789 media_filter_destroy(filter);
790 media_content_error("Fail to set condition");
793 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
794 if(ret != MEDIA_CONTENT_ERROR_NONE) {
795 media_filter_destroy(filter);
796 media_content_error("Fail to set order");
802 if(media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE)
804 media_filter_destroy(filter);
808 media_content_debug("album_id : [%d]", album_id);
810 if(media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE)
812 media_filter_destroy(filter);
816 media_content_debug("album_name : [%s]", album_name);
817 SAFE_FREE(album_name);
819 if(media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE)
821 media_filter_destroy(filter);
825 media_content_debug("artist : [%s]", artist);
828 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)
839 media_filter_destroy(filter);
843 media_content_debug("media_count : [%d]", media_count);
845 if(media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
847 media_filter_destroy(filter);
851 test_album_from_db(album_id);
855 media_content_error("album item not Found!!");
858 media_filter_destroy(filter);
863 bool group_list_cb(const char *group_name, void *user_data)
866 int *idx = user_data;
868 media_content_debug("group item : [%s] [%d]", group_name, *idx);
870 if(media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
873 media_content_debug("media_count : [%d]", media_count);
875 if(media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
881 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
883 media_content_debug("playlist_member_id : [%d]", playlist_member_id);
885 GList **list = (GList**)user_data;
886 *list = g_list_append(*list, (gpointer)playlist_member_id);
888 //media_item_cb(media, user_data);
893 int test_filter_create(void)
895 media_content_debug("\n============Filter Create============\n\n");
897 int ret = MEDIA_CONTENT_ERROR_NONE;
899 /* Filter for media */
900 char *condition = "MEDIA_TYPE=1"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
901 //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*/
903 ret = media_filter_create(&g_filter);
905 /* Set condition and collate
906 * Condition string : You can make where statement of sql.
907 * Colation : You can use collation when comparing.
908 * Ex) In case of FILE_NAME='Samsung' as condition string,
909 * if you want to compare with NOCASE collation,
910 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
911 * if you want to compare in case-sensitive,
912 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
914 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
916 /* Collation of ordering
917 * If you want to get list, which is sorted by NOCASE,
918 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
920 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
922 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
924 /* Filter for group */
925 //char *g_condition = "TAG_NAME like \"\%my\%\"";
926 //char *g_condition = "BOOKMARK_MARKED_TIME > 300";
928 ret = media_filter_create(&g_filter_g);
930 //ret = media_filter_set_condition(g_filter_g, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
931 //ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
936 int test_filter_destroy(void)
938 media_content_debug("\n============Filter Create============\n\n");
940 int ret = MEDIA_CONTENT_ERROR_NONE;
942 ret = media_filter_destroy(g_filter);
947 int test_connect_database(void)
949 int ret = MEDIA_CONTENT_ERROR_NONE;
951 media_content_debug("\n============DB Connection Test============\n\n");
953 ret = media_content_connect();
955 if(ret == MEDIA_CONTENT_ERROR_NONE)
957 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);
1004 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
1005 /* User should free these string */
1006 SAFE_FREE(folder_id);
1007 SAFE_FREE(folder_name);
1008 SAFE_FREE(folder_path);
1009 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1010 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
1013 media_content_debug("media count [%d] : %d", i, count);
1018 /* To check performance */
1019 struct timeval start, end;
1020 gettimeofday(&start, NULL);
1022 /* Second, Get all item list */
1023 media_info_h media_handle = NULL;
1024 GList *all_item_list = NULL;
1026 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1027 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1028 ret = media_filter_create(&filter);
1029 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1030 media_content_error("Fail to create filter");
1033 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1034 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1035 media_filter_destroy(filter);
1036 media_content_error("Fail to set condition");
1039 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1040 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1041 media_filter_destroy(filter);
1042 media_content_error("Fail to set order");
1046 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1047 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1048 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1049 media_filter_destroy(filter);
1052 media_content_debug("media_info_foreach_media_from_db success");
1053 media_content_type_e media_type;
1054 char *media_id = NULL;
1055 char *media_name = NULL;
1056 char *media_path = NULL;
1058 for(i = 0; i < g_list_length(all_item_list); i++) {
1059 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1061 ret = media_info_get_media_id(media_handle, &media_id);
1062 if(ret != MEDIA_CONTENT_ERROR_NONE)
1063 media_content_error("media_info_get_media_id failed: %d", ret);
1064 ret = media_info_get_media_type(media_handle, &media_type);
1065 if(ret != MEDIA_CONTENT_ERROR_NONE)
1066 media_content_error("media_info_get_media_type failed: %d", ret);
1067 ret = media_info_get_display_name(media_handle, &media_name);
1068 if(ret != MEDIA_CONTENT_ERROR_NONE)
1069 media_content_error("media_info_get_display_name failed: %d", ret);
1070 ret = media_info_get_file_path(media_handle, &media_path);
1071 if(ret != MEDIA_CONTENT_ERROR_NONE)
1072 media_content_error("media_info_get_file_path failed: %d", ret);
1074 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1075 image_meta_h image_handle;
1076 int width = 0, height = 0;
1077 media_content_orientation_e orientation = 0;
1078 char *datetaken = NULL;
1079 char *burst_id = NULL;
1081 ret = media_info_get_image(media_handle, &image_handle);
1082 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1083 media_content_error("media_info_get_image failed: %d", ret);
1085 ret = image_meta_get_width(image_handle, &width);
1086 if(ret != MEDIA_CONTENT_ERROR_NONE)
1087 media_content_error("error image_meta_get_width : [%d]", ret);
1088 ret = image_meta_get_height(image_handle, &height);
1089 if(ret != MEDIA_CONTENT_ERROR_NONE)
1090 media_content_error("error image_meta_get_height : [%d]", ret);
1091 ret = image_meta_get_orientation(image_handle, &orientation);
1092 if(ret != MEDIA_CONTENT_ERROR_NONE)
1093 media_content_error("error image_meta_get_orientation : [%d]", ret);
1094 ret = image_meta_get_date_taken(image_handle, &datetaken);
1095 if(ret != MEDIA_CONTENT_ERROR_NONE)
1096 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1097 ret = image_meta_get_burst_id(image_handle, &burst_id);
1098 if(ret != MEDIA_CONTENT_ERROR_NONE)
1099 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1101 media_content_debug("This is Image");
1102 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1105 SAFE_FREE(datetaken);
1106 SAFE_FREE(burst_id);
1107 ret = image_meta_destroy(image_handle);
1108 if(ret != MEDIA_CONTENT_ERROR_NONE)
1109 media_content_error("error image_meta_destroy : [%d]", ret);
1111 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1112 video_meta_h video_handle;
1113 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1115 time_t time_played = 0;
1117 ret = media_info_get_video(media_handle, &video_handle);
1118 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1119 media_content_error("media_info_get_video failed: %d", ret);
1121 ret = video_meta_get_artist(video_handle, &artist);
1122 if(ret != MEDIA_CONTENT_ERROR_NONE)
1123 media_content_error("error video_meta_get_artist : [%d]", ret);
1124 ret = video_meta_get_album(video_handle, &album);
1125 if(ret != MEDIA_CONTENT_ERROR_NONE)
1126 media_content_error("error video_meta_get_album : [%d]", ret);
1127 ret = video_meta_get_album_artist(video_handle, &album_artist);
1128 if(ret != MEDIA_CONTENT_ERROR_NONE)
1129 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1130 ret = video_meta_get_duration(video_handle, &duration);
1131 if(ret != MEDIA_CONTENT_ERROR_NONE)
1132 media_content_error("error video_meta_get_duration : [%d]", ret);
1133 ret = video_meta_get_played_time(video_handle, &time_played);
1134 if(ret != MEDIA_CONTENT_ERROR_NONE)
1135 media_content_error("error video_meta_get_played_time : [%d]", ret);
1137 media_content_debug("This is Video");
1138 media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d, Played time: %d", title, album, artist, album_artist, duration, time_played);
1144 SAFE_FREE(album_artist);
1146 ret = video_meta_destroy(video_handle);
1147 if(ret != MEDIA_CONTENT_ERROR_NONE)
1148 media_content_error("error video_meta_destroy : [%d]", ret);
1150 //media_content_debug("media_id [%d] : %s", i, media_id);
1151 //media_content_debug("media_name [%d] : %s", i, media_name);
1152 //media_content_debug("media_path [%d] : %s", i, media_path);
1154 SAFE_FREE(media_id);
1155 SAFE_FREE(media_name);
1156 SAFE_FREE(media_path);
1160 media_filter_destroy(filter);
1163 /* To check performance */
1164 gettimeofday(&end, NULL);
1165 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1166 printf("Time : %ld\n", time);
1168 /* Third, Get item list of a folder */
1169 GList *item_list = NULL;
1171 for(i = 0; i < g_list_length(folder_list); i++) {
1173 char *folder_id = NULL;
1174 char *folder_name = NULL;
1175 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1177 media_folder_get_folder_id(folder_handle, &folder_id);
1178 media_folder_get_name(folder_handle, &folder_name);
1180 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1181 SAFE_FREE(folder_id);
1182 SAFE_FREE(folder_name);
1184 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1185 media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1188 media_content_error("media_folder_foreach_media_from_db success!", ret);
1189 char *media_id = NULL;
1190 char *media_name = NULL;
1191 char *media_path = NULL;
1192 media_content_type_e media_type = 0;
1194 for(j = 0; j < g_list_length(item_list); j++) {
1195 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1197 ret = media_info_get_media_id(media_handle, &media_id);
1198 if(ret != MEDIA_CONTENT_ERROR_NONE)
1199 media_content_error("media_info_get_media_id failed: %d", ret);
1200 ret = media_info_get_display_name(media_handle, &media_name);
1201 if(ret != MEDIA_CONTENT_ERROR_NONE)
1202 media_content_error("media_info_get_display_name failed: %d", ret);
1203 ret = media_info_get_file_path(media_handle, &media_path);
1204 if(ret != MEDIA_CONTENT_ERROR_NONE)
1205 media_content_error("media_info_get_file_path failed: %d", ret);
1206 ret = media_info_get_media_type(media_handle, &media_type);
1207 if(ret != MEDIA_CONTENT_ERROR_NONE)
1208 media_content_error("media_info_get_media_type failed: %d", ret);
1210 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1211 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1212 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1213 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1215 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1216 image_meta_h image_handle;
1217 int width = 0, height = 0;
1218 media_content_orientation_e orientation = 0;
1219 char *datetaken = NULL;
1221 ret = media_info_get_image(media_handle, &image_handle);
1222 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1223 media_content_error("media_info_get_image failed: %d", ret);
1225 ret = image_meta_get_width(image_handle, &width);
1226 if(ret != MEDIA_CONTENT_ERROR_NONE)
1227 media_content_error("error image_meta_get_width : [%d]", ret);
1228 ret = image_meta_get_height(image_handle, &height);
1229 if(ret != MEDIA_CONTENT_ERROR_NONE)
1230 media_content_error("error image_meta_get_height : [%d]", ret);
1231 ret = image_meta_get_orientation(image_handle, &orientation);
1232 if(ret != MEDIA_CONTENT_ERROR_NONE)
1233 media_content_error("error image_meta_get_orientation : [%d]", ret);
1234 ret = image_meta_get_date_taken(image_handle, &datetaken);
1235 if(ret != MEDIA_CONTENT_ERROR_NONE)
1236 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1238 media_content_debug("This is Image");
1239 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1242 SAFE_FREE(datetaken);
1243 ret = image_meta_destroy(image_handle);
1244 if(ret != MEDIA_CONTENT_ERROR_NONE)
1245 media_content_error("error image_meta_destroy : [%d]", ret);
1247 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1248 video_meta_h video_handle;
1249 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1253 ret = media_info_get_video(media_handle, &video_handle);
1254 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1255 media_content_error("media_info_get_video failed: %d", ret);
1257 ret = video_meta_get_artist(video_handle, &artist);
1258 if(ret != MEDIA_CONTENT_ERROR_NONE)
1259 media_content_error("error video_meta_get_artist : [%d]", ret);
1260 ret = video_meta_get_album(video_handle, &album);
1261 if(ret != MEDIA_CONTENT_ERROR_NONE)
1262 media_content_error("error video_meta_get_album : [%d]", ret);
1263 ret = video_meta_get_album_artist(video_handle, &album_artist);
1264 if(ret != MEDIA_CONTENT_ERROR_NONE)
1265 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1266 ret = video_meta_get_duration(video_handle, &duration);
1267 if(ret != MEDIA_CONTENT_ERROR_NONE)
1268 media_content_error("error video_meta_get_duration : [%d]", ret);
1269 ret = video_meta_get_played_time(video_handle, &time_played);
1270 if(ret != MEDIA_CONTENT_ERROR_NONE)
1271 media_content_error("error video_meta_get_played_time : [%d]", ret);
1273 media_content_debug("This is Video");
1274 media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d, Played time: %d\n", title, album, artist, album_artist, duration, time_played);
1280 SAFE_FREE(album_artist);
1282 ret = video_meta_destroy(video_handle);
1283 if(ret != MEDIA_CONTENT_ERROR_NONE)
1284 media_content_error("error video_meta_destroy : [%d]", ret);
1286 /* Get bookmar list in case of video */
1287 media_bookmark_h bm_handle;
1288 GList *bm_list = NULL;
1290 ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1291 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1292 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1294 media_content_debug("media_info_foreach_bookmark_from_db success");
1298 for(k = 0; k < g_list_length(bm_list); k++) {
1299 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1301 char *thumb_path = NULL;
1303 ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1304 if(ret != MEDIA_CONTENT_ERROR_NONE)
1305 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1306 ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1307 if(ret != MEDIA_CONTENT_ERROR_NONE)
1308 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1310 media_content_debug("Bookmark time : %d\nBookmar thumb: %s", marked_time, thumb_path);
1311 SAFE_FREE(thumb_path);
1314 /* Remove bookmark list */
1317 for(l = 0; l < g_list_length(bm_list); l++) {
1318 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1319 ret = media_bookmark_destroy(bm_handle);
1320 if(ret != MEDIA_CONTENT_ERROR_NONE)
1321 media_content_error("error media_bookmark_destroy : [%d]", ret);
1324 g_list_free(bm_list);
1330 SAFE_FREE(media_id);
1331 SAFE_FREE(media_name);
1332 SAFE_FREE(media_path);
1338 media_tag_h tag_handle = NULL;
1339 GList *tag_list = NULL;
1340 GList *media_list_in_tag = NULL;
1342 ret = media_tag_foreach_tag_from_db (filter, gallery_tag_item_cb, &tag_list);
1344 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1345 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1348 media_content_error("media_tag_foreach_tag_from_db success");
1349 char *tag_name = NULL;
1352 for(i = 0; i < g_list_length(tag_list); i++) {
1353 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1354 media_tag_get_tag_id(tag_handle, &tag_id);
1355 media_tag_get_name(tag_handle, &tag_name);
1357 printf("[%d] %s", tag_id, tag_name);
1359 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1360 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1361 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1364 media_content_error("media_tag_foreach_media_from_db success");
1366 media_info_h tag_media_handle;
1367 char *media_id = NULL;
1368 char *media_name = NULL;
1369 char *media_path = NULL;
1370 media_content_type_e media_type = 0;
1372 for(j = 0; j < g_list_length(media_list_in_tag); j++) {
1373 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1374 ret = media_info_get_media_id(tag_media_handle, &media_id);
1375 if(ret != MEDIA_CONTENT_ERROR_NONE)
1376 media_content_error("media_info_get_media_id failed: %d", ret);
1377 ret = media_info_get_display_name(tag_media_handle, &media_name);
1378 if(ret != MEDIA_CONTENT_ERROR_NONE)
1379 media_content_error("media_info_get_display_name failed: %d", ret);
1380 ret = media_info_get_file_path(tag_media_handle, &media_path);
1381 if(ret != MEDIA_CONTENT_ERROR_NONE)
1382 media_content_error("media_info_get_file_path failed: %d", ret);
1383 ret = media_info_get_media_type(tag_media_handle, &media_type);
1384 if(ret != MEDIA_CONTENT_ERROR_NONE)
1385 media_content_error("media_info_get_media_type failed: %d", ret);
1387 media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1388 media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1389 media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1390 media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1392 SAFE_FREE(media_id);
1393 SAFE_FREE(media_name);
1394 SAFE_FREE(media_path);
1396 SAFE_FREE(tag_name);
1400 /* Remove folder list */
1402 for(i = 0; i < g_list_length(folder_list); i++) {
1403 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1404 media_folder_destroy(folder_handle);
1407 g_list_free(folder_list);
1410 /* Remove all items list */
1412 for(i = 0; i < g_list_length(all_item_list); i++) {
1413 media_handle = (media_info_h)g_list_nth_data(all_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(all_item_list);
1422 /* Remove items list */
1424 for(i = 0; i < g_list_length(item_list); i++) {
1425 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1426 ret = media_info_destroy(media_handle);
1427 if(ret != MEDIA_CONTENT_ERROR_NONE)
1428 media_content_error("media_info_destroy failed: %d", ret);
1431 g_list_free(item_list);
1434 /* Remove tag list */
1436 for(i = 0; i < g_list_length(tag_list); i++) {
1437 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1438 ret = media_tag_destroy(tag_handle);
1439 if(ret != MEDIA_CONTENT_ERROR_NONE)
1440 media_content_error("error media_tag_destroy : [%d]", ret);
1443 g_list_free(tag_list);
1446 /* Remove media list in a tag */
1447 if(media_list_in_tag) {
1448 for(i = 0; i < g_list_length(media_list_in_tag); i++) {
1449 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1450 ret = media_info_destroy(media_handle);
1451 if(ret != MEDIA_CONTENT_ERROR_NONE)
1452 media_content_error("media_info_destroy failed: %d", ret);
1455 g_list_free(media_list_in_tag);
1458 return MEDIA_CONTENT_ERROR_NONE;
1461 /*Get All Music file. sort by Title and not case sensitive*/
1462 int test_get_all_music_files(void)
1464 int ret = MEDIA_CONTENT_ERROR_NONE;
1465 int media_count = 0;
1469 char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1471 ret = media_filter_create(&filter);
1472 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1473 media_content_error("Fail to create filter");
1476 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1477 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1478 media_filter_destroy(filter);
1479 media_content_error("Fail to set condition");
1482 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
1483 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1484 media_filter_destroy(filter);
1485 media_content_error("Fail to set order");
1490 ret = media_info_get_media_count_from_db(filter, &media_count);
1491 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1492 media_filter_destroy(filter);
1493 media_content_error("Fail to get media count");
1497 media_content_debug("media_count : [%d]", media_count);
1499 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1500 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1501 media_filter_destroy(filter);
1502 media_content_error("Fail to get media");
1506 ret = media_filter_destroy(filter);
1511 int test_media_info_operation(void)
1513 int ret = MEDIA_CONTENT_ERROR_NONE;
1514 int media_count = 0;
1516 media_content_debug("\n============Media info Test============\n\n");
1518 test_filter_create();
1520 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1521 if(ret != MEDIA_CONTENT_ERROR_NONE)
1522 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1524 media_content_debug("media_count : [%d]", media_count);
1526 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1527 if(ret == MEDIA_CONTENT_ERROR_NONE)
1528 media_content_debug("media_info_foreach_media_from_db is success");
1530 media_content_error("media_info_foreach_media_from_db is failed");
1532 test_filter_destroy();
1537 int test_media_info_operation_2(void)
1539 int ret = MEDIA_CONTENT_ERROR_NONE;
1540 int bookmark_count = 0;
1542 media_content_debug("\n============Media info Test 2============\n\n");
1544 test_filter_create();
1548 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
1549 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1550 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1552 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1554 media_content_debug("bookmark_count : [%d]", bookmark_count);
1556 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1560 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1561 if(ret != MEDIA_CONTENT_ERROR_NONE)
1562 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1564 media_content_debug("tag_count : [%d]", bookmark_count);
1566 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1567 if(ret != MEDIA_CONTENT_ERROR_NONE)
1568 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1570 test_filter_destroy();
1575 int test_folder_operation(void)
1577 int ret = MEDIA_CONTENT_ERROR_NONE;
1579 media_folder_h folder = NULL;
1580 char *folder_id = NULL;
1581 int folder_count = 0;
1583 media_content_debug("\n============Folder Test============\n\n");
1585 test_filter_create();
1587 ret = media_filter_create(&filter);
1588 if(ret != MEDIA_CONTENT_ERROR_NONE)
1590 media_content_error("[ERROR] media_folder_filter_create is failed");
1594 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*/
1595 media_filter_set_offset(filter, 0,5);
1596 media_filter_set_order(filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1598 ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1599 media_content_debug("Folder count : %d", folder_count);
1601 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1603 //test.3 get the media list in first folder
1604 filter_h m_filter = NULL;
1605 ret = media_filter_create(&m_filter);
1606 if(ret != MEDIA_CONTENT_ERROR_NONE)
1608 test_filter_destroy();
1609 media_filter_destroy(filter);
1610 media_content_error("[ERROR] media_info_filter_create is failed");
1614 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*/
1615 media_filter_set_offset(m_filter, 0,5);
1616 media_filter_set_order(m_filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1618 media_folder_get_folder_id(folder, &folder_id);
1619 media_content_debug("folder_id : %s", folder_id);
1621 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1623 if(ret != MEDIA_CONTENT_ERROR_NONE)
1625 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1628 media_filter_destroy(filter);
1629 media_filter_destroy(m_filter);
1631 test_filter_destroy();
1633 /* fix prevent: Resource Leak */
1634 SAFE_FREE(folder_id);
1639 bool folder_update_cb(media_folder_h folder, void *user_data)
1641 char *folder_id = NULL;
1642 char *folder_path = NULL;
1643 char *folder_name = NULL;
1648 ret = media_folder_get_folder_id(folder, &folder_id);
1649 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1650 media_content_debug("folder_id = [%s]", folder_id);
1651 SAFE_FREE(folder_id);
1653 ret = media_folder_get_path(folder, &folder_path);
1654 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1655 media_content_debug("folder_path = [%s]", folder_path);
1656 SAFE_FREE(folder_path);
1658 ret = media_folder_get_name(folder, &folder_name);
1659 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1660 media_content_debug("folder_name = [%s]", folder_name);
1661 SAFE_FREE(folder_name);
1663 ret = media_folder_clone(&g_folder, folder);
1664 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1677 int test_folder_update(void)
1679 int ret = MEDIA_CONTENT_ERROR_NONE;
1681 int folder_count = 0;
1683 media_content_debug("\n============Folder Update Test============\n\n");
1685 ret = media_filter_create(&filter);
1686 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1688 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*/
1690 ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1692 media_content_debug("Folder count : %d", folder_count);
1694 ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1696 media_filter_destroy(filter);
1698 ret = media_folder_set_name(g_folder, "test_folder");
1700 ret = media_folder_update_to_db(g_folder);
1702 ret = media_folder_destroy(g_folder);
1707 int test_playlist_operation(void)
1709 int ret = MEDIA_CONTENT_ERROR_NONE;
1710 media_playlist_h playlist_1 = NULL;
1711 media_playlist_h playlist_2 = NULL;
1712 media_playlist_h playlist_3 = NULL;
1713 int playlist_id_1 = 0;
1714 int playlist_id_2 = 0;
1715 int playlist_id_3 = 0;
1716 char *playlist_name_1 = "myPlaylist_1";
1717 char *playlist_name_2 = "myPlaylist_2";
1718 char *playlist_name_3 = "myPlaylist_3";
1719 int playlist_count = 0;
1720 int media_count = 0;
1726 filter_h filter = NULL;
1727 filter_h m_filter = NULL;
1729 media_content_debug("\n============Playlist Test============\n\n");
1731 /* Filter for playlist */
1733 char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1735 ret = media_filter_create(&filter);
1736 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1737 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1739 /* Create Playlist */
1740 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1741 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1742 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1744 if(playlist_1 != NULL)
1746 /* Add media to Playlist */
1747 media_playlist_add_media(playlist_1, test_audio_id);
1748 media_playlist_add_media(playlist_1, test_audio_id);
1749 media_playlist_add_media(playlist_1, test_video_id);
1752 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
1753 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1756 media_playlist_update_to_db(playlist_1);
1759 if(playlist_2 != NULL)
1761 media_playlist_add_media(playlist_2, test_audio_id);
1762 media_playlist_add_media(playlist_2, test_audio_id);
1763 media_playlist_update_to_db(playlist_2);
1766 /* Get Playlist Count*/
1767 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1769 media_content_debug("playlist_count [%d]", playlist_count);
1772 GList *playlist_id_list = NULL;
1773 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1775 /* Get Playlist id*/
1776 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1777 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1778 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1779 media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1780 media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1781 media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1783 /* Filter for media*/
1784 ret = media_filter_create(&m_filter);
1786 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1788 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1790 /* Get media count */
1791 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1792 media_content_debug("playlist_1_media_count [%d]", media_count);
1794 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1795 media_content_debug("playlist_2_media_count [%d]", media_count);
1797 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1798 media_content_debug("playlist_3_media_count [%d]", media_count);
1800 /* Get media of playlist */
1801 GList *playlist_member_id_list = NULL;
1802 GList *playlist_member_id_list_1 = NULL;
1804 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1805 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1807 int playlist_member_id_1_1 =0;
1808 int playlist_member_id_1_2 =0;
1809 int playlist_member_id_1_3 =0;
1810 int playlist_member_id_2_1 =0;
1811 int playlist_member_id_2_2 =0;
1813 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1814 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1815 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1816 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1817 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1819 media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1820 media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1821 media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1822 media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1823 media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1825 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1826 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1827 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1828 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1829 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1830 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);
1832 /* Update Playlist */
1833 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1834 media_playlist_add_media(playlist_2, test_video_id);
1835 media_playlist_set_name(playlist_2, "test_playlist");
1836 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1837 media_playlist_update_to_db(playlist_2);
1839 /* Get Updated Playlist*/
1840 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1842 /* deletes the playlist */
1843 //media_playlist_delete_from_db(playlist_id_1);
1844 //media_playlist_delete_from_db(playlist_id_2);
1846 if(playlist_1 != NULL)
1847 media_playlist_destroy(playlist_1);
1848 if(playlist_2 != NULL)
1849 media_playlist_destroy(playlist_2);
1850 if(playlist_3 != NULL)
1851 media_playlist_destroy(playlist_3);
1853 g_list_free(playlist_id_list);
1854 g_list_free(playlist_member_id_list);
1855 g_list_free(playlist_member_id_list_1);
1858 ret = media_filter_destroy(filter);
1859 if(m_filter != NULL)
1860 ret = media_filter_destroy(m_filter);
1865 int test_tag_operation(void)
1867 int ret = MEDIA_CONTENT_ERROR_NONE;
1874 char *tag_name_1 = "myTag_1";
1875 char *tag_name_2 = "myTag_2";
1876 char *tag_name_3 = "myTag_3";
1878 int media_count = 0;
1881 media_content_debug("\n============Tag Test============\n\n");
1883 char *g_condition = "TAG_NAME like \"%%my%%\"";
1885 ret = media_filter_create(&filter);
1887 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1889 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1892 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1893 if(ret != MEDIA_CONTENT_ERROR_NONE)
1894 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1895 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1896 if(ret != MEDIA_CONTENT_ERROR_NONE)
1897 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1898 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1899 if(ret != MEDIA_CONTENT_ERROR_NONE)
1900 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1902 /* Add media to Tag */
1903 ret = media_tag_add_media(tag_1, test_audio_id);
1904 if(ret != MEDIA_CONTENT_ERROR_NONE)
1905 media_content_error("error media_tag_add_media : [%d]", ret);
1906 ret = media_tag_add_media(tag_1, test_video_id);
1907 if(ret != MEDIA_CONTENT_ERROR_NONE)
1908 media_content_error("error media_tag_add_media : [%d]", ret);
1909 ret = media_tag_update_to_db(tag_1);
1910 if(ret != MEDIA_CONTENT_ERROR_NONE)
1911 media_content_error("error media_tag_update_to_db : [%d]", ret);
1913 ret = media_tag_add_media(tag_2, test_audio_id);
1914 if(ret != MEDIA_CONTENT_ERROR_NONE)
1915 media_content_error("error media_tag_add_media : [%d]", ret);
1916 ret = media_tag_update_to_db(tag_2);
1917 if(ret != MEDIA_CONTENT_ERROR_NONE)
1918 media_content_error("error media_tag_update_to_db : [%d]", ret);
1921 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1922 if(ret != MEDIA_CONTENT_ERROR_NONE)
1923 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1925 media_content_debug("tag_count [%d]", tag_count);
1928 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1929 if(ret != MEDIA_CONTENT_ERROR_NONE)
1930 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1933 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1934 if(ret != MEDIA_CONTENT_ERROR_NONE)
1935 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1937 media_content_debug("tag_id_1 [%d]", tag_id_1);
1939 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1940 if(ret != MEDIA_CONTENT_ERROR_NONE)
1941 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1943 media_content_debug("tag_id_2 [%d]", tag_id_2);
1945 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1946 if(ret != MEDIA_CONTENT_ERROR_NONE)
1947 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1949 media_content_debug("tag_id_3 [%d]", tag_id_3);
1951 /* Get media count */
1952 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1953 if(ret != MEDIA_CONTENT_ERROR_NONE)
1954 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1956 media_content_debug("tag_1_media_count [%d]", media_count);
1958 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1959 if(ret != MEDIA_CONTENT_ERROR_NONE)
1960 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1962 media_content_debug("tag_2_media_count [%d]", media_count);
1964 /* Get media of Tag */
1965 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1966 if(ret != MEDIA_CONTENT_ERROR_NONE)
1967 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1969 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1970 if(ret != MEDIA_CONTENT_ERROR_NONE)
1971 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1974 ret = media_tag_add_media(tag_2, test_video_id);
1975 if(ret != MEDIA_CONTENT_ERROR_NONE)
1976 media_content_error("error media_tag_add_media : [%d]", ret);
1977 ret = media_tag_set_name(tag_2, "test_tag");
1978 if(ret != MEDIA_CONTENT_ERROR_NONE)
1979 media_content_error("error media_tag_set_name : [%d]", ret);
1980 ret = media_tag_update_to_db(tag_2);
1981 if(ret != MEDIA_CONTENT_ERROR_NONE)
1982 media_content_error("error media_tag_update_to_db : [%d]", ret);
1984 /* Get Updated Tag*/
1985 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1986 if(ret != MEDIA_CONTENT_ERROR_NONE)
1987 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1989 /* deletes the tag */
1990 ret = media_tag_delete_from_db(tag_id_1);
1991 if(ret != MEDIA_CONTENT_ERROR_NONE)
1992 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1993 ret = media_tag_delete_from_db(tag_id_2);
1994 if(ret != MEDIA_CONTENT_ERROR_NONE)
1995 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1997 ret = media_tag_destroy(tag_1);
1998 if(ret != MEDIA_CONTENT_ERROR_NONE)
1999 media_content_error("error media_tag_destroy : [%d]", ret);
2000 ret = media_tag_destroy(tag_2);
2001 if(ret != MEDIA_CONTENT_ERROR_NONE)
2002 media_content_error("error media_tag_destroy : [%d]", ret);
2003 ret = media_filter_destroy(filter);
2004 if(ret != MEDIA_CONTENT_ERROR_NONE)
2005 media_content_error("error media_filter_destroy : [%d]", ret);
2011 int test_bookmark_operation(void)
2013 //bookmark is only supported for video information.
2014 int ret = MEDIA_CONTENT_ERROR_NONE;
2015 int bookmark_count = 0;
2018 media_content_debug("\n============Bookmark Test============\n\n");
2020 char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2022 ret = media_filter_create(&filter);
2023 if(ret != MEDIA_CONTENT_ERROR_NONE)
2024 media_content_error("error media_filter_create : [%d]", ret);
2026 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2027 if(ret != MEDIA_CONTENT_ERROR_NONE)
2028 media_content_error("error media_filter_set_condition : [%d]", ret);
2030 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2031 if(ret != MEDIA_CONTENT_ERROR_NONE)
2032 media_content_error("error media_filter_set_order : [%d]", ret);
2034 //insert bookmark to video
2035 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
2037 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2038 if(ret != MEDIA_CONTENT_ERROR_NONE)
2039 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2041 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2042 if(ret != MEDIA_CONTENT_ERROR_NONE)
2043 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2045 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2046 if(ret != MEDIA_CONTENT_ERROR_NONE)
2047 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2049 media_content_debug("bookmark_count = [%d]", bookmark_count);
2051 ret = media_filter_destroy(filter);
2052 if(ret != MEDIA_CONTENT_ERROR_NONE)
2053 media_content_error("error media_filter_destroy : [%d]", ret);
2058 int test_album_list(void)
2060 media_content_debug("\n============Album Test============\n\n");
2062 int ret = MEDIA_CONTENT_ERROR_NONE;
2063 int album_count = 0;
2067 char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2069 ret = media_filter_create(&filter);
2070 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2071 media_content_error("Fail to create filter");
2074 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2075 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2076 media_filter_destroy(filter);
2077 media_content_error("Fail to set condition");
2080 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2081 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2082 media_filter_destroy(filter);
2083 media_content_error("Fail to set order");
2087 ret = media_album_get_album_count_from_db(filter, &album_count);
2088 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2089 media_filter_destroy(filter);
2092 media_content_debug("album_count [%d]", album_count);
2095 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2096 if(ret != MEDIA_CONTENT_ERROR_NONE)
2097 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2099 ret = media_filter_destroy(filter);
2100 if(ret != MEDIA_CONTENT_ERROR_NONE)
2101 media_content_error("error media_filter_destroy : [%d]", ret);
2106 int test_group_operation(void)
2108 media_content_debug("\n============Group Test============\n\n");
2110 int ret = MEDIA_CONTENT_ERROR_NONE;
2111 int group_count = 0;
2114 ret = test_filter_create();
2115 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2116 media_content_error("[%d]error(0x%08x)", __LINE__, ret);
2120 for(idx = 0; idx <= MEDIA_CONTENT_GROUP_KEYWORD; idx++)
2122 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2123 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2124 test_filter_destroy();
2125 media_content_error("media_group_get_group_count_from_db fail. idx=[%d]", ret, idx);
2128 media_content_debug("[%2d]group_count [%d]", idx, group_count);
2131 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2133 ret = test_filter_destroy();
2138 int test_update_operation()
2140 int ret = MEDIA_CONTENT_ERROR_NONE;
2142 media_info_h media_handle = NULL;
2143 GList *all_item_list = NULL;
2145 /* Get all item list */
2146 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2147 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2148 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2151 media_content_debug("media_info_foreach_media_from_db success");
2152 char *media_id = NULL;
2153 char *media_path = NULL;
2154 media_content_type_e media_type = 0;
2156 for(i = 0; i < g_list_length(all_item_list); i++) {
2157 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2159 ret = media_info_get_media_id(media_handle, &media_id);
2160 if(ret != MEDIA_CONTENT_ERROR_NONE)
2161 media_content_error("media_info_get_media_id failed: %d", ret);
2162 ret = media_info_get_file_path(media_handle, &media_path);
2163 if(ret != MEDIA_CONTENT_ERROR_NONE)
2164 media_content_error("media_info_get_file_path failed: %d", ret);
2165 ret = media_info_get_media_type(media_handle, &media_type);
2166 if(ret != MEDIA_CONTENT_ERROR_NONE)
2167 media_content_error("media_info_get_media_type failed: %d", ret);
2169 media_content_debug("media_id [%d] : %s", i, media_id);
2170 media_content_debug("media_type [%d] : %d", i, media_type);
2171 media_content_debug("media_path [%d] : %s", i, media_path);
2173 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2174 image_meta_h image_handle;
2175 media_content_orientation_e orientation;
2177 ret = media_info_get_image(media_handle, &image_handle);
2178 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2179 media_content_error("media_info_get_image failed: %d", ret);
2181 media_content_debug("media_info_get_image success");
2184 orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2185 image_meta_set_orientation(image_handle, orientation);
2187 ret = image_meta_update_to_db(image_handle);
2188 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2189 media_content_error("image_meta_update_to_db failed: %d", ret);
2191 media_content_debug("image_meta_update_to_db success");
2195 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2196 video_meta_h video_handle;
2198 ret = media_info_get_video(media_handle, &video_handle);
2199 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2200 media_content_error("media_info_get_video failed: %d", ret);
2202 media_content_debug("media_info_get_video success");
2205 video_meta_set_played_count(video_handle,5);
2206 video_meta_set_played_time(video_handle,5);
2207 video_meta_set_played_position(video_handle,5);
2208 video_meta_update_to_db(video_handle);
2210 ret = video_meta_update_to_db(video_handle);
2211 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2212 media_content_error("video_meta_update_to_db failed: %d", ret);
2214 media_content_debug("video_meta_update_to_db success");
2217 } else if(media_type == MEDIA_CONTENT_TYPE_MUSIC) {//update audio meta
2218 audio_meta_h audio_handle = NULL;
2219 ret = media_info_get_audio(media_handle, &audio_handle);
2220 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2221 media_content_error("media_info_get_audio failed: %d", ret);
2223 media_content_debug("media_info_get_audio success");
2225 audio_meta_set_played_count(audio_handle,5);
2226 audio_meta_set_played_time(audio_handle,1000);
2227 audio_meta_set_played_position(audio_handle,180);
2229 ret = audio_meta_update_to_db(audio_handle);
2230 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2231 media_content_error("audio_meta_update_to_db failed: %d", ret);
2233 media_content_debug("audio_meta_update_to_db success");
2241 /* fix prevent: Resource Leak */
2242 SAFE_FREE(media_id);
2243 SAFE_FREE(media_path);
2246 return MEDIA_CONTENT_ERROR_NONE;
2249 int test_insert(void)
2251 int ret = MEDIA_CONTENT_ERROR_NONE;
2252 char *path = "/opt/usr/media/Images/Default.jpg";
2253 //char *path = "/opt/usr/media/Others/other.txt";
2254 //char *path = NULL;
2255 media_info_h media_item = NULL;
2256 media_content_debug("\n============DB Insert Test============\n\n");
2258 ret = media_info_insert_to_db(path, &media_item);
2260 if((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL))
2262 media_content_debug("Insertion is success");
2266 media_content_error("Insertion is failed");
2267 ret = media_info_destroy(media_item);
2271 char *media_id = NULL;
2273 ret = media_info_get_media_id(media_item, &media_id);
2274 if(ret != MEDIA_CONTENT_ERROR_NONE)
2275 media_content_error("media_info_get_media_id failed: %d", ret);
2277 media_content_debug("Media ID: %s", media_id);
2279 SAFE_FREE(media_id);
2281 ret = media_info_update_to_db(media_item);
2282 if(ret == MEDIA_CONTENT_ERROR_NONE)
2283 media_content_debug("media_info_update_to_db is success");
2285 media_content_error("media_info_update_to_db is failed");
2287 ret = media_info_destroy(media_item);
2288 if(ret != MEDIA_CONTENT_ERROR_NONE)
2289 media_content_error("media_info_destroy failed: %d", ret);
2296 int ret = MEDIA_CONTENT_ERROR_NONE;
2297 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2298 char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
2299 media_info_h move_media = NULL;
2301 ret = media_info_get_media_from_db(move_media_id, &move_media);
2302 if(ret == MEDIA_CONTENT_ERROR_NONE)
2303 media_content_debug("media_info_get_media_from_db success");
2305 media_content_error("media_info_get_media_from_db failed: %d", ret);
2307 media_content_debug("\n============DB Move Test============\n\n");
2310 ret = media_info_move_to_db(move_media, dst_path);
2312 if(ret == MEDIA_CONTENT_ERROR_NONE)
2313 media_content_debug("Move is success");
2315 media_content_error("Move is failed");
2317 ret = media_info_destroy(move_media);
2319 media_content_debug("There is no item : %s", move_media_id);
2325 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2327 char *thumbnail_path = NULL;
2328 int ret = MEDIA_CONTENT_ERROR_NONE;
2331 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2332 media_content_debug("error_code [%d]", error);
2333 media_content_debug("thumbnail_path [%s]", path);
2334 if(user_data != NULL)
2336 media_info_h media = (media_info_h)user_data;
2337 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2338 if(ret != MEDIA_CONTENT_ERROR_NONE)
2339 media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2341 media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2342 SAFE_FREE(thumbnail_path);
2343 ret = media_info_destroy(media);
2344 if(ret != MEDIA_CONTENT_ERROR_NONE)
2345 media_content_error("media_info_destroy failed: %d", ret);
2348 if(g_cnt == g_media_cnt)
2349 g_main_loop_quit(g_loop);
2354 bool thumbnail_create_cb(media_info_h media, void *user_data)
2356 char *media_id = NULL;
2357 media_info_h dst = NULL;
2358 int ret = MEDIA_CONTENT_ERROR_NONE;
2362 media_content_debug("NO Item");
2366 ret = media_info_get_media_id(media, &media_id);
2367 if(ret != MEDIA_CONTENT_ERROR_NONE)
2368 media_content_error("media_info_get_media_id failed: %d", ret);
2370 media_content_debug("media_id : [%s]", media_id);
2372 ret = media_info_clone(&dst, media);
2373 if(ret != MEDIA_CONTENT_ERROR_NONE)
2374 media_content_error("media_info_clone failed: %d", ret);
2377 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2378 if(ret != MEDIA_CONTENT_ERROR_NONE)
2379 media_content_error("media_info_create_thumbnail failed: %d", ret);
2382 /* fix prevent: Resource leak */
2383 SAFE_FREE(media_id);
2388 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2390 int ret = MEDIA_CONTENT_ERROR_NONE;
2392 char *media_id = NULL;
2393 media_info_h dst = NULL;
2399 media_content_debug("NO Item");
2403 ret = media_info_get_media_id(media, &media_id);
2404 if(ret != MEDIA_CONTENT_ERROR_NONE)
2405 media_content_error("media_info_get_media_id failed: %d", ret);
2407 media_content_debug("media_id : [%s]", media_id);
2409 ret = media_info_clone(&dst, media);
2410 if(ret != MEDIA_CONTENT_ERROR_NONE)
2411 media_content_error("media_info_clone failed: %d", ret);
2413 ret = media_info_cancel_thumbnail(dst);
2414 if(ret != MEDIA_CONTENT_ERROR_NONE)
2415 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2417 ret = media_info_destroy(dst);
2418 if(ret != MEDIA_CONTENT_ERROR_NONE)
2419 media_content_error("media_info_destroy failed: %d", ret);
2421 if(g_cnt == g_media_cnt)
2422 g_main_loop_quit(g_loop);
2424 /* fix prevent: Resource leak */
2425 SAFE_FREE(media_id);
2430 gboolean create_thumbnail_start(gpointer data)
2432 int ret = MEDIA_CONTENT_ERROR_NONE;
2434 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2436 if(ret == MEDIA_CONTENT_ERROR_NONE)
2437 media_content_debug("media_info_foreach_media_from_db is success");
2439 media_content_error("media_info_foreach_media_from_db is failed");
2444 gboolean cancel_thumbnail_start(gpointer data)
2446 int ret = MEDIA_CONTENT_ERROR_NONE;
2448 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2450 if(ret == MEDIA_CONTENT_ERROR_NONE)
2451 media_content_debug("media_info_foreach_media_from_db is success");
2453 media_content_error("media_info_foreach_media_from_db is failed");
2458 int test_create_thumbnail(int cancel)
2460 int ret = MEDIA_CONTENT_ERROR_NONE;
2461 GSource *source = NULL;
2462 GMainContext *context = NULL;
2464 test_filter_create();
2466 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2467 if(ret != MEDIA_CONTENT_ERROR_NONE)
2468 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2470 media_content_debug("media_count : [%d]", g_media_cnt);
2472 g_loop = g_main_loop_new(NULL, FALSE);
2473 context = g_main_loop_get_context(g_loop);
2474 source = g_idle_source_new();
2475 g_source_set_callback (source, create_thumbnail_start, NULL, NULL);
2476 g_source_attach (source, context);
2478 /* Logic to cancel */
2480 GSource *cancel_src = NULL;
2481 cancel_src = g_idle_source_new();
2482 g_source_set_callback (cancel_src, cancel_thumbnail_start, NULL, NULL);
2483 g_source_attach (cancel_src, context);
2486 g_main_loop_run(g_loop);
2487 g_main_loop_unref(g_loop);
2489 test_filter_destroy();
2494 int test_disconnect_database(void)
2496 int ret = MEDIA_CONTENT_ERROR_NONE;
2497 media_content_debug("\n============DB Disconnection Test============\n\n");
2499 ret = media_content_disconnect();
2501 if(ret == MEDIA_CONTENT_ERROR_NONE)
2502 media_content_debug("disconnection is success");
2504 media_content_error("disconnection is failed");
2509 int test_request_update_db(void)
2511 int ret = MEDIA_CONTENT_ERROR_NONE;
2512 media_info_h media = NULL;
2514 //get the content of Over the horizon
2515 ret = media_info_get_media_from_db("0f999626-6218-450c-a4ad-181a3bab6ebf", &media);
2516 if(ret != MEDIA_CONTENT_ERROR_NONE)
2517 media_content_error("media_info_get_media_from_db failed: %d", ret);
2519 test_disconnect_database();
2521 ret = media_info_set_content_name(media, "TEST_content_name");
2522 if(ret != MEDIA_CONTENT_ERROR_NONE)
2523 media_content_error("media_info_set_content_name failed: %d", ret);
2525 ret = media_info_update_to_db(media);
2526 if(ret == MEDIA_CONTENT_ERROR_NONE)
2527 media_content_debug("media_info_update_to_db is success");
2529 media_content_error("media_info_update_to_db is failed");
2532 media_info_destroy(media);
2537 int g_total_photo_size = 0;
2538 int g_total_video_size = 0;
2539 int g_total_mp3_size = 0;
2540 int g_total_voice_memo_size = 0;
2542 bool dft_cb(media_info_h media, void *user_data)
2544 unsigned long long file_size = 0;
2545 media_content_type_e media_type = -1;
2546 char *mime_type = NULL;
2547 int ret = MEDIA_CONTENT_ERROR_NONE;
2554 ret = media_info_get_media_type(media, &media_type);
2555 if(ret != MEDIA_CONTENT_ERROR_NONE)
2556 media_content_error("media_info_get_media_type failed: %d", ret);
2557 ret = media_info_get_size(media, &file_size);
2558 if(ret != MEDIA_CONTENT_ERROR_NONE)
2559 media_content_error("media_info_get_size failed: %d", ret);
2560 ret = media_info_get_mime_type(media, &mime_type);
2561 if(ret != MEDIA_CONTENT_ERROR_NONE)
2562 media_content_error("media_info_get_mime_type failed: %d", ret);
2564 if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
2566 g_total_photo_size += file_size;
2568 else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
2570 g_total_video_size += file_size;
2572 else if(media_type == MEDIA_CONTENT_TYPE_SOUND)
2574 g_total_voice_memo_size += file_size;
2576 else if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
2578 if((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2580 g_total_mp3_size += file_size;
2584 g_total_voice_memo_size += file_size;
2589 printf("invalid media_type");
2592 if(mime_type != NULL)
2601 int ret = MEDIA_CONTENT_ERROR_NONE;
2602 printf("\n============DFT_test============\n\n");
2604 filter_h filter = NULL;
2607 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2609 ret = media_filter_create(&filter);
2612 printf("[Internal Memory]\n");
2613 /*1. Photo ============================================================*/
2614 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2617 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2618 printf("Photo count = [%d]\n", media_cnt);
2621 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2622 printf("Photo size = [%d]\n", g_total_photo_size);
2624 /*2. Video ============================================================*/
2625 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2628 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2629 printf("Video count = [%d]\n", media_cnt);
2632 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2633 printf("Video size = [%d]\n", g_total_video_size);
2635 /*3. MP3 ============================================================*/
2636 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2639 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2640 printf("MP3 count = [%d]\n", media_cnt);
2643 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2644 printf("MP3 size = [%d]\n", g_total_mp3_size);
2646 /*4. Voice Memo ============================================================*/
2647 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);
2649 /*Get Voice Memo Count*/
2650 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2651 printf("Voice Memo count = [%d]\n", media_cnt);
2653 /*Get Voice Memo Size*/
2654 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2655 printf("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2657 g_total_photo_size = 0;
2658 g_total_video_size = 0;
2659 g_total_mp3_size = 0;
2660 g_total_voice_memo_size = 0;
2663 printf("\n[External Memory]\n");
2664 /*1. Photo ============================================================*/
2665 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2668 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2669 printf("Photo count = [%d]\n", media_cnt);
2672 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2673 printf("Photo size = [%d]\n", g_total_photo_size);
2675 /*2. Video ============================================================*/
2676 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2679 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2680 printf("Video count = [%d]\n", media_cnt);
2683 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2684 printf("Video size = [%d]\n", g_total_video_size);
2686 /*3. MP3 ============================================================*/
2687 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2690 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2691 printf("MP3 count = [%d]\n", media_cnt);
2694 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2695 printf("MP3 size = [%d]\n", g_total_mp3_size);
2697 /*4. Voice Memo ============================================================*/
2698 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);
2700 /*Get Voice Memo Count*/
2701 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2702 printf("Voice Memo count = [%d]\n", media_cnt);
2704 /*Get Voice Memo Size*/
2705 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2706 printf("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2707 ret = media_filter_destroy(filter);
2712 void insert_batch_cb(media_content_error_e error, void * user_data)
2714 printf("media_info_insert_batch_to_db completed!\n");
2717 int test_batch_operations()
2721 char *file_list[10];
2723 for (i = 0; i < 10; i++) {
2724 char filepath[255] = {0,};
2725 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2726 media_content_debug("File : %s\n", filepath);
2727 file_list[i] = strdup(filepath);
2730 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2731 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2732 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2736 char *condition = "MEDIA_PATH LIKE \'";
2737 strncat (condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2738 ret = media_filter_create(&filter);
2739 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2740 media_content_error("Fail to create filter");
2744 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2745 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2746 media_filter_destroy(filter);
2747 media_content_error("Fail to set condition");
2751 ret = media_info_delete_batch_from_db(filter);
2752 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2753 media_filter_destroy(filter);
2754 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2758 ret = media_filter_destroy(filter);
2763 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
2765 printf("media_info_insert_burst_shot_to_db completed![%d]\n", error);
2766 g_main_loop_quit(g_loop);
2769 gboolean test_insert_burst_shot_to_db_start(gpointer data)
2771 int ret = MEDIA_CONTENT_ERROR_NONE;
2773 char *file_list[10];
2775 for (i = 0; i < 10; i++) {
2776 char filepath[255] = {0,};
2777 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2778 media_content_debug("File : %s\n", filepath);
2779 file_list[i] = strdup(filepath);
2782 ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
2783 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2784 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
2790 int test_insert_burst_shot_to_db(void)
2792 GSource *source = NULL;
2793 GMainContext *context = NULL;
2795 g_loop = g_main_loop_new(NULL, FALSE);
2796 context = g_main_loop_get_context(g_loop);
2797 source = g_idle_source_new();
2798 g_source_set_callback (source, test_insert_burst_shot_to_db_start, NULL, NULL);
2799 g_source_attach (source, context);
2801 g_main_loop_run(g_loop);
2802 g_main_loop_unref(g_loop);
2807 void _scan_cb(media_content_error_e err, void *user_data)
2809 printf("scan callback is called : %d\n", err);
2810 g_main_loop_quit(g_loop);
2815 int test_scan_file()
2819 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2820 ret = media_content_scan_file(file_path);
2821 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2822 media_content_error("Fail to media_content_scan_file : %d", ret);
2829 gboolean test_scan_dir_start(gpointer data)
2833 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2835 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2837 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2838 media_content_error("Fail to media_content_scan_file : %d", ret);
2847 GSource *source = NULL;
2848 GMainContext *context = NULL;
2850 g_loop = g_main_loop_new(NULL, FALSE);
2851 context = g_main_loop_get_context(g_loop);
2852 source = g_idle_source_new();
2853 g_source_set_callback (source, test_scan_dir_start, NULL, NULL);
2854 g_source_attach (source, context);
2856 g_main_loop_run(g_loop);
2857 g_main_loop_unref(g_loop);
2862 void _noti_cb(media_content_error_e error,
2864 media_content_db_update_item_type_e update_item,
2865 media_content_db_update_type_e update_type,
2866 media_content_type_e media_type,
2873 printf("noti success! : %d\n", error);
2875 printf("error occured! : %d\n", error);
2878 printf("Noti from PID(%d)\n", pid);
2880 if (update_item == MEDIA_ITEM_FILE) {
2881 printf("Noti item : MEDIA_ITEM_FILE\n");
2882 } else if (update_item == MEDIA_ITEM_DIRECTORY) {
2883 printf("Noti item : MEDIA_ITEM_DIRECTORY\n");
2886 if (update_type == MEDIA_CONTENT_INSERT) {
2887 printf("Noti type : MEDIA_CONTENT_INSERT\n");
2888 } else if (update_type == MEDIA_CONTENT_DELETE) {
2889 printf("Noti type : MEDIA_CONTENT_DELETE\n");
2890 } else if (update_type == MEDIA_CONTENT_UPDATE) {
2891 printf("Noti type : MEDIA_CONTENT_UPDATE\n");
2894 printf("content type : %d\n", media_type);
2897 printf("path : %s\n", path);
2899 printf("path not\n");
2902 printf("uuid : %s\n", uuid);
2904 printf("uuid not\n");
2907 printf("mime_type : %s\n", mime_type);
2909 printf("mime not\n");
2911 if (user_data) printf("String : %s\n", (char *)user_data);
2913 //g_main_loop_quit(g_loop);
2917 gboolean _send_noti_operations(gpointer data)
2919 int ret = MEDIA_CONTENT_ERROR_NONE;
2921 /* First of all, noti subscription */
2922 char *user_str = strdup("hi");
2923 media_content_set_db_updated_cb(_noti_cb, (void*)user_str);
2925 /* media_info_insert_to_db */
2926 media_info_h media_item = NULL;
2927 char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2929 ret = media_info_insert_to_db(path, &media_item);
2930 if (ret < MEDIA_CONTENT_ERROR_NONE) {
2931 media_content_error("media_info_insert_to_db failed : %d", ret);
2932 media_info_destroy(media_item);
2936 media_content_debug("media_info_insert_to_db success");
2938 /* media_info_delete_batch_from_db */
2940 char *condition = "MEDIA_PATH LIKE \'";
2941 strncat (condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2943 ret = media_filter_create(&filter);
2944 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2945 media_content_error("Fail to create filter");
2946 media_info_destroy(media_item);
2950 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2951 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2952 media_filter_destroy(filter);
2953 media_info_destroy(media_item);
2954 media_content_error("Fail to set condition");
2957 ret = media_info_delete_batch_from_db(filter);
2958 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2959 media_filter_destroy(filter);
2960 media_info_destroy(media_item);
2961 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2965 media_filter_destroy(filter);
2967 /* media_info_update_to_db */
2968 ret = media_info_update_to_db(media_item);
2969 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2970 media_content_error("media_info_update_to_db failed : %d\n", ret);
2971 media_info_destroy(media_item);
2975 media_info_destroy(media_item);
2982 int ret = MEDIA_CONTENT_ERROR_NONE;
2983 GSource *source = NULL;
2984 GMainContext *context = NULL;
2986 g_loop = g_main_loop_new(NULL, FALSE);
2987 context = g_main_loop_get_context(g_loop);
2988 source = g_idle_source_new();
2989 g_source_set_callback (source, _send_noti_operations, NULL, NULL);
2990 g_source_attach (source, context);
2992 g_main_loop_run(g_loop);
2993 g_main_loop_unref(g_loop);
2995 test_filter_destroy();
2996 media_content_unset_db_updated_cb();
3001 int main(int argc, char *argv[])
3003 int ret = MEDIA_CONTENT_ERROR_NONE;
3005 media_content_debug("--- content manager test start ---\n\n");
3007 ret = test_connect_database();
3008 if(ret != MEDIA_CONTENT_ERROR_NONE)
3009 return MEDIA_CONTENT_ERROR_NONE;
3011 ret = test_media_info_operation();
3012 if(ret != MEDIA_CONTENT_ERROR_NONE)
3017 if(ret != MEDIA_CONTENT_ERROR_NONE)
3020 ret = test_gallery_scenario();
3021 if(ret != MEDIA_CONTENT_ERROR_NONE)
3024 ret = test_get_all_music_files();
3025 if(ret != MEDIA_CONTENT_ERROR_NONE)
3028 ret = test_media_info_operation();
3029 if(ret != MEDIA_CONTENT_ERROR_NONE)
3032 ret = test_folder_operation();
3033 if(ret != MEDIA_CONTENT_ERROR_NONE)
3036 ret = test_folder_update();
3037 if(ret != MEDIA_CONTENT_ERROR_NONE)
3040 ret = test_playlist_operation();
3041 if(ret != MEDIA_CONTENT_ERROR_NONE)
3044 ret = test_tag_operation();
3045 if(ret != MEDIA_CONTENT_ERROR_NONE)
3048 ret = test_bookmark_operation();
3049 if(ret != MEDIA_CONTENT_ERROR_NONE)
3052 ret = test_album_list();
3053 if(ret != MEDIA_CONTENT_ERROR_NONE)
3056 ret = test_group_operation();
3057 if(ret != MEDIA_CONTENT_ERROR_NONE)
3060 ret = test_update_operation();
3061 if(ret != MEDIA_CONTENT_ERROR_NONE)
3064 ret = test_insert();
3065 if(ret != MEDIA_CONTENT_ERROR_NONE)
3069 if(ret != MEDIA_CONTENT_ERROR_NONE)
3072 ret = test_create_thumbnail(TRUE);
3073 if(ret != MEDIA_CONTENT_ERROR_NONE)
3076 ret = test_request_update_db();
3077 if(ret != MEDIA_CONTENT_ERROR_NONE)
3081 if(ret != MEDIA_CONTENT_ERROR_NONE)
3084 ret = test_batch_operations();
3085 if(ret != MEDIA_CONTENT_ERROR_NONE)
3086 return MEDIA_CONTENT_ERROR_NONE;
3088 ret = test_insert_burst_shot_to_db();
3089 if(ret != MEDIA_CONTENT_ERROR_NONE)
3090 return MEDIA_CONTENT_ERROR_NONE;
3092 ret = test_scan_file();
3093 if(ret != MEDIA_CONTENT_ERROR_NONE)
3094 return MEDIA_CONTENT_ERROR_NONE;
3096 ret = test_scan_dir();
3097 if(ret != MEDIA_CONTENT_ERROR_NONE)
3098 return MEDIA_CONTENT_ERROR_NONE;
3101 if(ret != MEDIA_CONTENT_ERROR_NONE)
3102 return MEDIA_CONTENT_ERROR_NONE;
3105 ret = test_disconnect_database();
3106 if(ret != MEDIA_CONTENT_ERROR_NONE)
3109 media_content_debug("--- content manager test end ---\n");