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;
306 media_content_type_e media_type = 0;
307 int ret = MEDIA_CONTENT_ERROR_NONE;
311 media_content_debug("NO Item");
315 ret = media_info_get_media_type(media, &media_type);
316 if(ret != MEDIA_CONTENT_ERROR_NONE)
317 media_content_error("error when get info : [%d]", ret);
318 media_content_debug("media_type : [%d]", media_type);
320 ret = media_info_get_media_id(media, &media_id);
321 if(ret != MEDIA_CONTENT_ERROR_NONE)
322 media_content_error("error when get info : [%d]", ret);
323 media_content_debug("media_id : [%s]", media_id);
325 ret = media_info_get_file_path(media, &c_value);
326 if(ret != MEDIA_CONTENT_ERROR_NONE)
327 media_content_error("error when get info : [%d]", ret);
328 media_content_debug("file_path : [%s]", c_value);
334 bool b_value = false;
335 unsigned long long size = 0;
337 if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
341 if(media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE)
343 get_audio_meta(audio);
344 ret = audio_meta_destroy(audio);
345 if(ret != MEDIA_CONTENT_ERROR_NONE)
346 media_content_error("error audio_meta_destroy : [%d]", ret);
349 media_content_error("[audio_error]");
352 else if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
355 media_content_orientation_e orientation = 0;
356 bool is_burst_shot = false;
357 char *burst_id = NULL;
358 char *weather = NULL;
360 if(media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE)
362 ret = image_meta_get_orientation(image, &orientation);
363 if(ret != MEDIA_CONTENT_ERROR_NONE)
364 media_content_error("error image_meta_get_orientation : [%d]", ret);
366 media_content_debug("[image] orientation : %d", orientation);
368 ret = image_meta_is_burst_shot(image, &is_burst_shot);
369 if(ret != MEDIA_CONTENT_ERROR_NONE)
370 media_content_error("error image_meta_is_burst_shot : [%d]", ret);
373 ret = image_meta_get_burst_id(image, &burst_id);
374 if(ret != MEDIA_CONTENT_ERROR_NONE)
375 media_content_error("error image_meta_get_burst_id : [%d]", ret);
377 media_content_debug("[image] burst_id : [%s]", burst_id);
382 ret = image_meta_destroy(image);
383 if(ret != MEDIA_CONTENT_ERROR_NONE)
384 media_content_error("error image_meta_destroy : [%d]", ret);
387 media_content_error("[image_error]");
390 else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
394 if(media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE)
396 get_video_meta(video);
397 ret = video_meta_destroy(video);
398 if(ret != MEDIA_CONTENT_ERROR_NONE)
399 media_content_error("error video_meta_destroy : [%d]", ret);
402 media_content_error("[video_error]");
407 media_content_debug("Other Content");
410 media_content_debug("=== media_info ===");
411 ret = media_info_get_file_path(media, &c_value);
412 if(ret != MEDIA_CONTENT_ERROR_NONE)
413 media_content_error("error when get info : [%d]", ret);
414 media_content_debug("file_path : [%s]", c_value);
417 ret = media_info_get_display_name(media, &c_value);
418 if(ret != MEDIA_CONTENT_ERROR_NONE)
419 media_content_error("error when get info : [%d]", ret);
420 media_content_debug("display_name : [%s]", c_value);
423 ret = media_info_get_mime_type(media, &c_value);
424 if(ret != MEDIA_CONTENT_ERROR_NONE)
425 media_content_error("error when get info : [%d]", ret);
426 media_content_debug("mime_type : [%s]", c_value);
429 ret = media_info_get_thumbnail_path(media, &c_value);
430 if(ret != MEDIA_CONTENT_ERROR_NONE)
431 media_content_error("error when get info : [%d]", ret);
432 media_content_debug("thumbnail_path : [%s]", c_value);
435 ret = media_info_get_description(media, &c_value);
436 if(ret != MEDIA_CONTENT_ERROR_NONE)
437 media_content_error("error when get info : [%d]", ret);
438 media_content_debug("description : [%s]", c_value);
441 ret = media_info_get_author(media, &c_value);
442 if(ret != MEDIA_CONTENT_ERROR_NONE)
443 media_content_error("error when get info : [%d]", ret);
444 media_content_debug("author : [%s]", c_value);
447 ret = media_info_get_provider(media, &c_value);
448 if(ret != MEDIA_CONTENT_ERROR_NONE)
449 media_content_error("error when get info : [%d]", ret);
450 media_content_debug("provider : [%s]", c_value);
453 ret = media_info_get_content_name(media, &c_value);
454 if(ret != MEDIA_CONTENT_ERROR_NONE)
455 media_content_error("error when get info : [%d]", ret);
456 media_content_debug("content_name : [%s]", c_value);
459 ret = media_info_get_category(media, &c_value);
460 if(ret != MEDIA_CONTENT_ERROR_NONE)
461 media_content_error("error when get info : [%d]", ret);
462 media_content_debug("category : [%s]", c_value);
465 ret = media_info_get_location_tag(media, &c_value);
466 if(ret != MEDIA_CONTENT_ERROR_NONE)
467 media_content_error("error when get info : [%d]", ret);
468 media_content_debug("location_tag : [%s]", c_value);
471 ret = media_info_get_age_rating(media, &c_value);
472 if(ret != MEDIA_CONTENT_ERROR_NONE)
473 media_content_error("error when get info : [%d]", ret);
474 media_content_debug("age_rating : [%s]", c_value);
477 ret = media_info_get_keyword(media, &c_value);
478 if(ret != MEDIA_CONTENT_ERROR_NONE)
479 media_content_error("error when get info : [%d]", ret);
480 media_content_debug("keyword : [%s]", c_value);
483 ret = media_info_get_size(media, &size);
484 if(ret != MEDIA_CONTENT_ERROR_NONE)
485 media_content_error("error when get info : [%d]", ret);
486 media_content_debug("size : [%lld]", size);
488 ret = media_info_get_added_time(media, &t_value);
489 if(ret != MEDIA_CONTENT_ERROR_NONE)
490 media_content_error("error when get info : [%d]", ret);
491 media_content_debug("added_time : [%d]", t_value);
493 ret = media_info_get_modified_time(media, &t_value);
494 if(ret != MEDIA_CONTENT_ERROR_NONE)
495 media_content_error("error when get info : [%d]", ret);
496 media_content_debug("modified_time : [%d]", t_value);
498 ret = media_info_get_timeline(media, &t_value);
499 if(ret != MEDIA_CONTENT_ERROR_NONE)
500 media_content_error("error when get info : [%d]", ret);
501 media_content_debug("timeline : [%d]", t_value);
503 ret = media_info_get_rating(media, &i_value);
504 if(ret != MEDIA_CONTENT_ERROR_NONE)
505 media_content_error("error when get info : [%d]", ret);
506 media_content_debug("rating : [%d]", i_value);
508 ret = media_info_get_favorite(media, &b_value);
509 if(ret != MEDIA_CONTENT_ERROR_NONE)
510 media_content_error("error when get info : [%d]", ret);
511 media_content_debug("favorite : [%d]", b_value);
513 ret = media_info_is_drm(media, &b_value);
514 if(ret != MEDIA_CONTENT_ERROR_NONE)
515 media_content_error("error when get info : [%d]", ret);
516 media_content_debug("is_drm : [%d]", b_value);
518 ret = media_info_set_weather(media, "Sunny");
519 if(ret != MEDIA_CONTENT_ERROR_NONE) {
520 media_content_error("Fail to set weather");
523 ret = media_info_get_weather(media, &c_value);
524 if(ret != MEDIA_CONTENT_ERROR_NONE)
525 media_content_error("error when get info : [%d]", ret);
526 media_content_debug("weather : [%s]", c_value);
529 /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
530 //ret = media_info_set_location_tag(media, "Test location tag");
531 //media_info_update_to_db(media);
538 bool folder_list_cb(media_folder_h folder, void *user_data)
541 char *folder_id = NULL;
542 char *str_val = NULL;
544 media_content_storage_e storage_type;
546 media_folder_h *_folder = (media_folder_h*)user_data;
551 media_folder_clone(_folder, folder);
553 if(media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE)
555 media_content_error("[ERROR] media_folder_get_folder_id is failed");
558 media_content_debug("folder_id = [%s]", folder_id);
560 if(media_folder_get_path(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
562 SAFE_FREE(folder_id);
563 media_content_error("[ERROR] media_folder_get_path is failed");
566 media_content_debug("folder_path = [%s]", str_val);
569 if(media_folder_get_name(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
571 SAFE_FREE(folder_id);
572 media_content_error("[ERROR] media_folder_get_name is failed");
575 media_content_debug("folder_name = [%s]", str_val);
578 if(media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE)
580 SAFE_FREE(folder_id);
581 media_content_error("[ERROR] media_folder_get_storage_type is failed");
584 media_content_debug("storage_type = [%d]", storage_type);
586 if(media_folder_get_storage_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
588 SAFE_FREE(folder_id);
589 media_content_error("[ERROR] media_folder_get_name is failed");
592 media_content_debug("storage_id = [%s]", str_val);
594 if(media_folder_get_order(folder, &int_val) != MEDIA_CONTENT_ERROR_NONE)
596 media_content_error("[ERROR] media_folder_get_order is failed");
599 media_content_debug("folder_order = [%d]", int_val);
601 if(media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE)
603 SAFE_FREE(folder_id);
604 media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
608 if(media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
610 SAFE_FREE(folder_id);
611 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
615 SAFE_FREE(folder_id);
626 bool test_album_from_db(int album_id)
628 int ret = MEDIA_CONTENT_ERROR_NONE;
629 media_album_h album_h;
630 int test_album_id = 0;
631 char *album_name = NULL;
634 ret = media_album_get_album_from_db(album_id, &album_h);
635 if(ret != MEDIA_CONTENT_ERROR_NONE)
637 media_content_error("error when get album");
641 if(media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE)
643 media_album_destroy(album_h);
647 media_content_debug("test_album_id : [%d]", test_album_id);
649 if(media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE)
651 media_album_destroy(album_h);
655 media_content_debug("album_name : [%s]", album_name);
657 if(media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE)
659 media_album_destroy(album_h);
660 /* fix prevent: Resource Leak */
661 SAFE_FREE(album_name);
665 media_content_debug("artist : [%s]", artist);
667 SAFE_FREE(album_name);
670 media_album_destroy(album_h);
675 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
678 char *playlist_name = NULL;
679 media_playlist_h playlist_h;
680 char *playlist_thumbnail_path = NULL;
682 media_content_debug("playlist_list_cb ======");
684 GList **list = (GList**)user_data;
689 media_content_debug(" playlist handle is NULL");
693 media_playlist_get_playlist_id(playlist, &playlist_id);
694 media_content_debug("playlist_id : %d", playlist_id);
695 /* 64bit build issue */
697 if(user_data != NULL)
698 *list = g_list_append(*list, (gpointer)playlist_id);
700 media_playlist_get_name(playlist, &playlist_name);
701 media_content_debug("playlist_name : %s", playlist_name);
702 SAFE_FREE(playlist_name);
704 media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
705 media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
706 SAFE_FREE(playlist_thumbnail_path);
708 media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
710 media_playlist_destroy(playlist_h);
715 bool tag_list_cb(media_tag_h tag, void *user_data)
718 char *tag_name = NULL;
719 int ret = MEDIA_CONTENT_ERROR_NONE;
723 media_content_debug(" tag handle is NULL");
727 ret = media_tag_get_tag_id(tag, &tag_id);
728 if(ret != MEDIA_CONTENT_ERROR_NONE)
729 media_content_error("error media_tag_get_tag_id : [%d]", ret);
731 media_content_debug("tag_id : %d", tag_id);
733 ret = media_tag_get_name(tag, &tag_name);
734 if(ret != MEDIA_CONTENT_ERROR_NONE)
735 media_content_error("error media_tag_get_name : [%d]", ret);
737 media_content_debug("tag_name : %s", tag_name);
743 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
745 media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
746 int ret = MEDIA_CONTENT_ERROR_NONE;
748 if(_bookmark != NULL)
754 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
755 if(ret != MEDIA_CONTENT_ERROR_NONE)
756 media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
758 media_content_debug("bookmark_id : %d", bookmark_id);
760 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
761 if(ret != MEDIA_CONTENT_ERROR_NONE)
762 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
764 media_content_debug("bookmark thumbnail_path : %s", name);
767 ret = media_bookmark_get_marked_time(bookmark, &time);
768 if(ret != MEDIA_CONTENT_ERROR_NONE)
769 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
771 media_content_debug("bookmark marked_time : %d", time);
777 bool album_list_cb(media_album_h album, void *user_data)
780 char *album_name = NULL;
782 char *album_art = NULL;
784 int ret = MEDIA_CONTENT_ERROR_NONE;
785 filter_h filter = NULL;
788 char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
790 ret = media_filter_create(&filter);
791 if(ret != MEDIA_CONTENT_ERROR_NONE) {
792 media_content_error("Fail to create filter");
795 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
796 if(ret != MEDIA_CONTENT_ERROR_NONE) {
797 media_filter_destroy(filter);
798 media_content_error("Fail to set condition");
801 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
802 if(ret != MEDIA_CONTENT_ERROR_NONE) {
803 media_filter_destroy(filter);
804 media_content_error("Fail to set order");
810 if(media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE)
812 media_filter_destroy(filter);
816 media_content_debug("album_id : [%d]", album_id);
818 if(media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE)
820 media_filter_destroy(filter);
824 media_content_debug("album_name : [%s]", album_name);
825 SAFE_FREE(album_name);
827 if(media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE)
829 media_filter_destroy(filter);
833 media_content_debug("artist : [%s]", artist);
836 if(media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE)
838 media_filter_destroy(filter);
842 media_content_debug("album_art : [%s]", album_art);
843 SAFE_FREE(album_art);
845 if(media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
847 media_filter_destroy(filter);
851 media_content_debug("media_count : [%d]", media_count);
853 if(media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
855 media_filter_destroy(filter);
859 test_album_from_db(album_id);
863 media_content_error("album item not Found!!");
866 media_filter_destroy(filter);
871 bool group_list_cb(const char *group_name, void *user_data)
874 int *idx = user_data;
876 media_content_debug("group item : [%s] [%d]", group_name, *idx);
878 if(media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
881 media_content_debug("media_count : [%d]", media_count);
883 if(media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
889 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
891 media_content_debug("playlist_member_id : [%d]", playlist_member_id);
892 /* 64bit build issue */
894 GList **list = (GList**)user_data;
896 *list = g_list_append(*list, (gpointer)playlist_member_id);
898 //media_item_cb(media, user_data);
903 int test_filter_create(void)
905 media_content_debug("\n============Filter Create============\n\n");
907 int ret = MEDIA_CONTENT_ERROR_NONE;
909 /* Filter for media */
910 char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
911 //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*/
913 ret = media_filter_create(&g_filter);
915 /* Set condition and collate
916 * Condition string : You can make where statement of sql.
917 * Colation : You can use collation when comparing.
918 * Ex) In case of FILE_NAME='Samsung' as condition string,
919 * if you want to compare with NOCASE collation,
920 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
921 * if you want to compare in case-sensitive,
922 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
924 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
926 /* Collation of ordering
927 * If you want to get list, which is sorted by NOCASE,
928 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
930 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
932 /* Able to set multi column to set order */
933 //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
934 //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
935 //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
936 //ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
938 /* Filter for group */
939 //char *g_condition = "TAG_NAME like \"\%my\%\"";
940 //char *g_condition = "BOOKMARK_MARKED_TIME > 300";
942 ret = media_filter_create(&g_filter_g);
944 //ret = media_filter_set_condition(g_filter_g, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
945 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
950 int test_filter_destroy(void)
952 media_content_debug("\n============Filter Create============\n\n");
954 int ret = MEDIA_CONTENT_ERROR_NONE;
956 ret = media_filter_destroy(g_filter);
961 int test_connect_database(void)
963 int ret = MEDIA_CONTENT_ERROR_NONE;
965 media_content_debug("\n============DB Connection Test============\n\n");
967 ret = media_content_connect();
969 if(ret == MEDIA_CONTENT_ERROR_NONE)
971 media_content_debug("connection is success\n\n");
974 media_content_error("connection is failed\n\n");
979 int test_gallery_scenario(void)
981 int ret = MEDIA_CONTENT_ERROR_NONE;
983 filter_h filter = NULL;
986 GList *folder_list = NULL;
987 media_folder_h folder_handle = NULL;
989 /* First, Get folder list */
990 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
991 if(ret != MEDIA_CONTENT_ERROR_NONE) {
992 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
995 media_content_debug("media_folder_foreach_folder_from_db success!!");
996 char *folder_id = NULL;
997 char *folder_name = NULL;
998 char *folder_path = NULL;
1000 for(i = 0; i < g_list_length(folder_list); i++) {
1001 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1003 ret = media_folder_get_folder_id(folder_handle, &folder_id);
1004 if(ret != MEDIA_CONTENT_ERROR_NONE)
1005 media_content_error("media_folder_get_folder_id failed: %d", ret);
1006 ret = media_folder_get_name(folder_handle, &folder_name);
1007 if(ret != MEDIA_CONTENT_ERROR_NONE)
1008 media_content_error("media_folder_get_name failed: %d", ret);
1009 ret = media_folder_get_path(folder_handle, &folder_path);
1010 if(ret != MEDIA_CONTENT_ERROR_NONE)
1011 media_content_error("media_folder_get_path failed: %d", ret);
1013 media_content_debug("folder_id [%d] : %s", i, folder_id);
1014 media_content_debug("folder_name [%d] : %s", i, folder_name);
1015 media_content_debug("folder_path [%d] : %s", i, folder_path);
1017 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
1018 /* User should free these string */
1019 SAFE_FREE(folder_id);
1020 SAFE_FREE(folder_name);
1021 SAFE_FREE(folder_path);
1022 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1023 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
1026 media_content_debug("media count [%d] : %d", i, count);
1031 /* To check performance */
1032 struct timeval start, end;
1033 gettimeofday(&start, NULL);
1035 /* Second, Get all item list */
1036 media_info_h media_handle = NULL;
1037 GList *all_item_list = NULL;
1039 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1040 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1041 ret = media_filter_create(&filter);
1042 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1043 media_content_error("Fail to create filter");
1046 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1047 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1048 media_filter_destroy(filter);
1049 media_content_error("Fail to set condition");
1052 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1053 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1054 media_filter_destroy(filter);
1055 media_content_error("Fail to set order");
1059 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1060 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1061 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1062 media_filter_destroy(filter);
1065 media_content_debug("media_info_foreach_media_from_db success");
1066 media_content_type_e media_type;
1067 char *media_id = NULL;
1068 char *media_name = NULL;
1069 char *media_path = NULL;
1071 for(i = 0; i < g_list_length(all_item_list); i++) {
1072 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1074 ret = media_info_get_media_id(media_handle, &media_id);
1075 if(ret != MEDIA_CONTENT_ERROR_NONE)
1076 media_content_error("media_info_get_media_id failed: %d", ret);
1077 ret = media_info_get_media_type(media_handle, &media_type);
1078 if(ret != MEDIA_CONTENT_ERROR_NONE)
1079 media_content_error("media_info_get_media_type failed: %d", ret);
1080 ret = media_info_get_display_name(media_handle, &media_name);
1081 if(ret != MEDIA_CONTENT_ERROR_NONE)
1082 media_content_error("media_info_get_display_name failed: %d", ret);
1083 ret = media_info_get_file_path(media_handle, &media_path);
1084 if(ret != MEDIA_CONTENT_ERROR_NONE)
1085 media_content_error("media_info_get_file_path failed: %d", ret);
1087 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1088 image_meta_h image_handle;
1089 int width = 0, height = 0;
1090 media_content_orientation_e orientation = 0;
1091 char *datetaken = NULL;
1092 char *burst_id = NULL;
1094 ret = media_info_get_image(media_handle, &image_handle);
1095 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1096 media_content_error("media_info_get_image failed: %d", ret);
1098 ret = image_meta_get_width(image_handle, &width);
1099 if(ret != MEDIA_CONTENT_ERROR_NONE)
1100 media_content_error("error image_meta_get_width : [%d]", ret);
1101 ret = image_meta_get_height(image_handle, &height);
1102 if(ret != MEDIA_CONTENT_ERROR_NONE)
1103 media_content_error("error image_meta_get_height : [%d]", ret);
1104 ret = image_meta_get_orientation(image_handle, &orientation);
1105 if(ret != MEDIA_CONTENT_ERROR_NONE)
1106 media_content_error("error image_meta_get_orientation : [%d]", ret);
1107 ret = image_meta_get_date_taken(image_handle, &datetaken);
1108 if(ret != MEDIA_CONTENT_ERROR_NONE)
1109 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1110 ret = image_meta_get_burst_id(image_handle, &burst_id);
1111 if(ret != MEDIA_CONTENT_ERROR_NONE)
1112 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1114 media_content_debug("This is Image");
1115 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1118 SAFE_FREE(datetaken);
1119 SAFE_FREE(burst_id);
1120 ret = image_meta_destroy(image_handle);
1121 if(ret != MEDIA_CONTENT_ERROR_NONE)
1122 media_content_error("error image_meta_destroy : [%d]", ret);
1124 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1125 video_meta_h video_handle;
1126 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1128 time_t time_played = 0;
1130 ret = media_info_get_video(media_handle, &video_handle);
1131 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1132 media_content_error("media_info_get_video failed: %d", ret);
1134 ret = video_meta_get_artist(video_handle, &artist);
1135 if(ret != MEDIA_CONTENT_ERROR_NONE)
1136 media_content_error("error video_meta_get_artist : [%d]", ret);
1137 ret = video_meta_get_album(video_handle, &album);
1138 if(ret != MEDIA_CONTENT_ERROR_NONE)
1139 media_content_error("error video_meta_get_album : [%d]", ret);
1140 ret = video_meta_get_album_artist(video_handle, &album_artist);
1141 if(ret != MEDIA_CONTENT_ERROR_NONE)
1142 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1143 ret = video_meta_get_duration(video_handle, &duration);
1144 if(ret != MEDIA_CONTENT_ERROR_NONE)
1145 media_content_error("error video_meta_get_duration : [%d]", ret);
1146 ret = video_meta_get_played_time(video_handle, &time_played);
1147 if(ret != MEDIA_CONTENT_ERROR_NONE)
1148 media_content_error("error video_meta_get_played_time : [%d]", ret);
1150 media_content_debug("This is Video");
1151 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);
1157 SAFE_FREE(album_artist);
1159 ret = video_meta_destroy(video_handle);
1160 if(ret != MEDIA_CONTENT_ERROR_NONE)
1161 media_content_error("error video_meta_destroy : [%d]", ret);
1163 //media_content_debug("media_id [%d] : %s", i, media_id);
1164 //media_content_debug("media_name [%d] : %s", i, media_name);
1165 //media_content_debug("media_path [%d] : %s", i, media_path);
1167 SAFE_FREE(media_id);
1168 SAFE_FREE(media_name);
1169 SAFE_FREE(media_path);
1173 media_filter_destroy(filter);
1176 /* To check performance */
1177 gettimeofday(&end, NULL);
1178 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1179 media_content_debug("Time : %ld\n", time);
1181 /* Third, Get item list of a folder */
1182 GList *item_list = NULL;
1184 for(i = 0; i < g_list_length(folder_list); i++) {
1186 char *folder_id = NULL;
1187 char *folder_name = NULL;
1188 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1190 media_folder_get_folder_id(folder_handle, &folder_id);
1191 media_folder_get_name(folder_handle, &folder_name);
1193 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1194 SAFE_FREE(folder_id);
1195 SAFE_FREE(folder_name);
1197 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1198 media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1201 media_content_error("media_folder_foreach_media_from_db success!", ret);
1202 char *media_id = NULL;
1203 char *media_name = NULL;
1204 char *media_path = NULL;
1205 media_content_type_e media_type = 0;
1207 for(j = 0; j < g_list_length(item_list); j++) {
1208 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1210 ret = media_info_get_media_id(media_handle, &media_id);
1211 if(ret != MEDIA_CONTENT_ERROR_NONE)
1212 media_content_error("media_info_get_media_id failed: %d", ret);
1213 ret = media_info_get_display_name(media_handle, &media_name);
1214 if(ret != MEDIA_CONTENT_ERROR_NONE)
1215 media_content_error("media_info_get_display_name failed: %d", ret);
1216 ret = media_info_get_file_path(media_handle, &media_path);
1217 if(ret != MEDIA_CONTENT_ERROR_NONE)
1218 media_content_error("media_info_get_file_path failed: %d", ret);
1219 ret = media_info_get_media_type(media_handle, &media_type);
1220 if(ret != MEDIA_CONTENT_ERROR_NONE)
1221 media_content_error("media_info_get_media_type failed: %d", ret);
1223 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1224 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1225 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1226 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1228 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1229 image_meta_h image_handle;
1230 int width = 0, height = 0;
1231 media_content_orientation_e orientation = 0;
1232 char *datetaken = NULL;
1234 ret = media_info_get_image(media_handle, &image_handle);
1235 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1236 media_content_error("media_info_get_image failed: %d", ret);
1238 ret = image_meta_get_width(image_handle, &width);
1239 if(ret != MEDIA_CONTENT_ERROR_NONE)
1240 media_content_error("error image_meta_get_width : [%d]", ret);
1241 ret = image_meta_get_height(image_handle, &height);
1242 if(ret != MEDIA_CONTENT_ERROR_NONE)
1243 media_content_error("error image_meta_get_height : [%d]", ret);
1244 ret = image_meta_get_orientation(image_handle, &orientation);
1245 if(ret != MEDIA_CONTENT_ERROR_NONE)
1246 media_content_error("error image_meta_get_orientation : [%d]", ret);
1247 ret = image_meta_get_date_taken(image_handle, &datetaken);
1248 if(ret != MEDIA_CONTENT_ERROR_NONE)
1249 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1251 media_content_debug("This is Image");
1252 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1255 SAFE_FREE(datetaken);
1256 ret = image_meta_destroy(image_handle);
1257 if(ret != MEDIA_CONTENT_ERROR_NONE)
1258 media_content_error("error image_meta_destroy : [%d]", ret);
1260 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1261 video_meta_h video_handle;
1262 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1266 ret = media_info_get_video(media_handle, &video_handle);
1267 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1268 media_content_error("media_info_get_video failed: %d", ret);
1270 ret = video_meta_get_artist(video_handle, &artist);
1271 if(ret != MEDIA_CONTENT_ERROR_NONE)
1272 media_content_error("error video_meta_get_artist : [%d]", ret);
1273 ret = video_meta_get_album(video_handle, &album);
1274 if(ret != MEDIA_CONTENT_ERROR_NONE)
1275 media_content_error("error video_meta_get_album : [%d]", ret);
1276 ret = video_meta_get_album_artist(video_handle, &album_artist);
1277 if(ret != MEDIA_CONTENT_ERROR_NONE)
1278 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1279 ret = video_meta_get_duration(video_handle, &duration);
1280 if(ret != MEDIA_CONTENT_ERROR_NONE)
1281 media_content_error("error video_meta_get_duration : [%d]", ret);
1282 ret = video_meta_get_played_time(video_handle, &time_played);
1283 if(ret != MEDIA_CONTENT_ERROR_NONE)
1284 media_content_error("error video_meta_get_played_time : [%d]", ret);
1286 media_content_debug("This is Video");
1287 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);
1293 SAFE_FREE(album_artist);
1295 ret = video_meta_destroy(video_handle);
1296 if(ret != MEDIA_CONTENT_ERROR_NONE)
1297 media_content_error("error video_meta_destroy : [%d]", ret);
1299 /* Get bookmar list in case of video */
1300 media_bookmark_h bm_handle;
1301 GList *bm_list = NULL;
1303 ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1304 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1305 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1307 media_content_debug("media_info_foreach_bookmark_from_db success");
1311 for(k = 0; k < g_list_length(bm_list); k++) {
1312 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1314 char *thumb_path = NULL;
1316 ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1317 if(ret != MEDIA_CONTENT_ERROR_NONE)
1318 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1319 ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1320 if(ret != MEDIA_CONTENT_ERROR_NONE)
1321 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1323 media_content_debug("Bookmark time : %d\nBookmar thumb: %s", marked_time, thumb_path);
1324 SAFE_FREE(thumb_path);
1327 /* Remove bookmark list */
1330 for(l = 0; l < g_list_length(bm_list); l++) {
1331 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1332 ret = media_bookmark_destroy(bm_handle);
1333 if(ret != MEDIA_CONTENT_ERROR_NONE)
1334 media_content_error("error media_bookmark_destroy : [%d]", ret);
1337 g_list_free(bm_list);
1343 SAFE_FREE(media_id);
1344 SAFE_FREE(media_name);
1345 SAFE_FREE(media_path);
1351 media_tag_h tag_handle = NULL;
1352 GList *tag_list = NULL;
1353 GList *media_list_in_tag = NULL;
1355 ret = media_tag_foreach_tag_from_db (filter, gallery_tag_item_cb, &tag_list);
1357 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1358 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1361 media_content_error("media_tag_foreach_tag_from_db success");
1362 char *tag_name = NULL;
1365 for(i = 0; i < g_list_length(tag_list); i++) {
1366 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1367 media_tag_get_tag_id(tag_handle, &tag_id);
1368 media_tag_get_name(tag_handle, &tag_name);
1370 media_content_debug("[%d] %s", tag_id, tag_name);
1372 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1373 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1374 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1377 media_content_error("media_tag_foreach_media_from_db success");
1379 media_info_h tag_media_handle;
1380 char *media_id = NULL;
1381 char *media_name = NULL;
1382 char *media_path = NULL;
1383 media_content_type_e media_type = 0;
1385 for(j = 0; j < g_list_length(media_list_in_tag); j++) {
1386 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1387 ret = media_info_get_media_id(tag_media_handle, &media_id);
1388 if(ret != MEDIA_CONTENT_ERROR_NONE)
1389 media_content_error("media_info_get_media_id failed: %d", ret);
1390 ret = media_info_get_display_name(tag_media_handle, &media_name);
1391 if(ret != MEDIA_CONTENT_ERROR_NONE)
1392 media_content_error("media_info_get_display_name failed: %d", ret);
1393 ret = media_info_get_file_path(tag_media_handle, &media_path);
1394 if(ret != MEDIA_CONTENT_ERROR_NONE)
1395 media_content_error("media_info_get_file_path failed: %d", ret);
1396 ret = media_info_get_media_type(tag_media_handle, &media_type);
1397 if(ret != MEDIA_CONTENT_ERROR_NONE)
1398 media_content_error("media_info_get_media_type failed: %d", ret);
1400 media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1401 media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1402 media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1403 media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1405 SAFE_FREE(media_id);
1406 SAFE_FREE(media_name);
1407 SAFE_FREE(media_path);
1409 SAFE_FREE(tag_name);
1413 /* Remove folder list */
1415 for(i = 0; i < g_list_length(folder_list); i++) {
1416 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1417 media_folder_destroy(folder_handle);
1420 g_list_free(folder_list);
1423 /* Remove all items list */
1425 for(i = 0; i < g_list_length(all_item_list); i++) {
1426 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1427 ret = media_info_destroy(media_handle);
1428 if(ret != MEDIA_CONTENT_ERROR_NONE)
1429 media_content_error("media_info_destroy failed: %d", ret);
1432 g_list_free(all_item_list);
1435 /* Remove items list */
1437 for(i = 0; i < g_list_length(item_list); i++) {
1438 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1439 ret = media_info_destroy(media_handle);
1440 if(ret != MEDIA_CONTENT_ERROR_NONE)
1441 media_content_error("media_info_destroy failed: %d", ret);
1444 g_list_free(item_list);
1447 /* Remove tag list */
1449 for(i = 0; i < g_list_length(tag_list); i++) {
1450 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1451 ret = media_tag_destroy(tag_handle);
1452 if(ret != MEDIA_CONTENT_ERROR_NONE)
1453 media_content_error("error media_tag_destroy : [%d]", ret);
1456 g_list_free(tag_list);
1459 /* Remove media list in a tag */
1460 if(media_list_in_tag) {
1461 for(i = 0; i < g_list_length(media_list_in_tag); i++) {
1462 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1463 ret = media_info_destroy(media_handle);
1464 if(ret != MEDIA_CONTENT_ERROR_NONE)
1465 media_content_error("media_info_destroy failed: %d", ret);
1468 g_list_free(media_list_in_tag);
1471 return MEDIA_CONTENT_ERROR_NONE;
1474 /*Get All Music file. sort by Title and not case sensitive*/
1475 int test_get_all_music_files(void)
1477 int ret = MEDIA_CONTENT_ERROR_NONE;
1478 int media_count = 0;
1482 char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1484 ret = media_filter_create(&filter);
1485 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1486 media_content_error("Fail to create filter");
1489 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1490 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1491 media_filter_destroy(filter);
1492 media_content_error("Fail to set condition");
1495 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1496 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1497 media_filter_destroy(filter);
1498 media_content_error("Fail to set order");
1503 ret = media_info_get_media_count_from_db(filter, &media_count);
1504 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1505 media_filter_destroy(filter);
1506 media_content_error("Fail to get media count");
1510 media_content_debug("media_count : [%d]", media_count);
1512 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1513 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1514 media_filter_destroy(filter);
1515 media_content_error("Fail to get media");
1519 ret = media_filter_destroy(filter);
1524 int test_media_info_operation(void)
1526 int ret = MEDIA_CONTENT_ERROR_NONE;
1527 int media_count = 0;
1529 media_content_debug("\n============Media info Test============\n\n");
1531 test_filter_create();
1533 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1534 if(ret != MEDIA_CONTENT_ERROR_NONE)
1535 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1537 media_content_debug("media_count : [%d]", media_count);
1539 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1540 if(ret == MEDIA_CONTENT_ERROR_NONE)
1541 media_content_debug("media_info_foreach_media_from_db is success");
1543 media_content_error("media_info_foreach_media_from_db is failed");
1545 test_filter_destroy();
1550 int test_media_info_operation_2(void)
1552 int ret = MEDIA_CONTENT_ERROR_NONE;
1553 int bookmark_count = 0;
1555 media_content_debug("\n============Media info Test 2============\n\n");
1557 test_filter_create();
1561 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
1562 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1563 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1565 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1567 media_content_debug("bookmark_count : [%d]", bookmark_count);
1569 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1573 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1574 if(ret != MEDIA_CONTENT_ERROR_NONE)
1575 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1577 media_content_debug("tag_count : [%d]", bookmark_count);
1579 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1580 if(ret != MEDIA_CONTENT_ERROR_NONE)
1581 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1583 test_filter_destroy();
1588 int test_folder_operation(void)
1590 int ret = MEDIA_CONTENT_ERROR_NONE;
1591 filter_h filter = NULL;
1592 media_folder_h folder = NULL;
1593 char *folder_id = NULL;
1596 media_content_debug("\n============Folder Test============\n\n");
1598 test_filter_create();
1600 ret = media_filter_create(&filter);
1601 if(ret != MEDIA_CONTENT_ERROR_NONE)
1603 media_content_error("[ERROR] media_folder_filter_create is failed");
1607 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*/
1608 media_filter_set_offset(filter, 0,5);
1609 media_filter_set_order(filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1610 media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1612 ret = media_folder_get_folder_count_from_db(filter, &count);
1613 media_content_debug("Folder count : [%d]", count);
1615 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1617 //test.3 get the media list in first folder
1618 filter_h m_filter = NULL;
1620 ret = media_filter_create(&m_filter);
1621 if(ret != MEDIA_CONTENT_ERROR_NONE)
1623 test_filter_destroy();
1624 media_filter_destroy(filter);
1625 media_content_error("[ERROR] media_info_filter_create is failed");
1629 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*/
1630 media_filter_set_offset(m_filter, 0,5);
1631 media_filter_set_order(m_filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1633 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1634 if(ret != MEDIA_CONTENT_ERROR_NONE)
1635 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1637 media_filter_destroy(filter);
1638 media_filter_destroy(m_filter);
1640 test_filter_destroy();
1642 /* fix prevent: Resource Leak */
1643 SAFE_FREE(folder_id);
1648 bool folder_update_cb(media_folder_h folder, void *user_data)
1650 char *folder_id = NULL;
1651 char *folder_path = NULL;
1652 char *folder_name = NULL;
1653 int folder_order = -1;
1658 ret = media_folder_get_folder_id(folder, &folder_id);
1659 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1660 media_content_debug("folder_id = [%s]", folder_id);
1661 SAFE_FREE(folder_id);
1663 ret = media_folder_get_path(folder, &folder_path);
1664 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1665 media_content_debug("folder_path = [%s]", folder_path);
1666 SAFE_FREE(folder_path);
1668 ret = media_folder_get_name(folder, &folder_name);
1669 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1670 media_content_debug("folder_name = [%s]", folder_name);
1671 SAFE_FREE(folder_name);
1673 ret = media_folder_get_order(folder, &folder_order);
1674 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1675 media_content_debug("folder_order = [%d]", folder_order);
1677 ret = media_folder_clone(&g_folder, folder);
1678 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1691 int test_folder_update(void)
1693 int ret = MEDIA_CONTENT_ERROR_NONE;
1695 int folder_count = 0;
1697 media_content_debug("\n============Folder Update Test============\n\n");
1699 ret = media_filter_create(&filter);
1700 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1702 ret = media_filter_set_condition(filter, "MEDIA_TYPE=0 and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT); /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1703 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, FOLDER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
1705 ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1707 media_content_debug("Folder count : %d", folder_count);
1709 ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1711 media_filter_destroy(filter);
1713 ret = media_folder_set_name(g_folder, "test_folder");
1715 ret = media_folder_set_order(g_folder, 200);
1717 ret = media_folder_update_to_db(g_folder);
1719 ret = media_folder_destroy(g_folder);
1724 int test_playlist_operation(void)
1726 int ret = MEDIA_CONTENT_ERROR_NONE;
1727 media_playlist_h playlist_1 = NULL;
1728 media_playlist_h playlist_2 = NULL;
1729 media_playlist_h playlist_3 = NULL;
1730 media_playlist_h playlist_4 = NULL;
1731 int playlist_id_1 = 0;
1732 int playlist_id_2 = 0;
1733 int playlist_id_3 = 0;
1734 char *playlist_name_1 = "myPlaylist_1";
1735 char *playlist_name_2 = "myPlaylist_2";
1736 char *playlist_name_3 = "myPlaylist_3";
1737 int playlist_count = 0;
1738 int media_count = 0;
1744 filter_h filter = NULL;
1745 filter_h m_filter = NULL;
1747 media_content_debug("\n============Playlist Test============\n\n");
1749 /* Filter for playlist */
1751 char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1753 ret = media_filter_create(&filter);
1754 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1755 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1757 /* Create Playlist */
1758 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1759 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1760 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1762 if(playlist_1 != NULL)
1764 /* Add media to Playlist */
1765 media_playlist_add_media(playlist_1, test_audio_id);
1766 media_playlist_add_media(playlist_1, test_audio_id);
1767 media_playlist_add_media(playlist_1, test_video_id);
1770 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
1771 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1774 media_playlist_update_to_db(playlist_1);
1777 if(playlist_2 != NULL)
1779 media_playlist_add_media(playlist_2, test_audio_id);
1780 media_playlist_add_media(playlist_2, test_audio_id);
1781 media_playlist_update_to_db(playlist_2);
1784 /* Get Playlist Count*/
1785 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1787 media_content_debug("playlist_count [%d]", playlist_count);
1790 GList *playlist_id_list = NULL;
1791 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1792 /* 64bit build issue */
1794 /* Get Playlist id*/
1795 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1796 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1797 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1799 media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1800 media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1801 media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1803 /* Export and import playlist */
1804 media_playlist_export_to_file(playlist_3, "/opt/usr/media/Music/playlist.m3u");
1805 media_playlist_import_from_file( "/opt/usr/media/Music/playlist.m3u", "playlist_4", &playlist_4);
1807 /* Filter for media*/
1808 ret = media_filter_create(&m_filter);
1810 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1812 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1814 /* Get media count */
1815 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1816 media_content_debug("playlist_1_media_count [%d]", media_count);
1818 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1819 media_content_debug("playlist_2_media_count [%d]", media_count);
1821 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1822 media_content_debug("playlist_3_media_count [%d]", media_count);
1824 /* Get media of playlist */
1825 GList *playlist_member_id_list = NULL;
1826 GList *playlist_member_id_list_1 = NULL;
1828 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1829 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1831 int playlist_member_id_1_1 =0;
1832 int playlist_member_id_1_2 =0;
1833 int playlist_member_id_1_3 =0;
1834 int playlist_member_id_2_1 =0;
1835 int playlist_member_id_2_2 =0;
1836 /* 64bit build issue */
1838 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1839 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1840 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1841 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1842 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1844 media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1845 media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1846 media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1847 media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1848 media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1850 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1851 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1852 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1853 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1854 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1855 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);
1857 /* Update Playlist */
1858 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1859 media_playlist_add_media(playlist_2, test_video_id);
1860 media_playlist_set_name(playlist_2, "test_playlist");
1861 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1862 media_playlist_update_to_db(playlist_2);
1864 /* Get Updated Playlist*/
1865 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1867 /* deletes the playlist */
1868 //media_playlist_delete_from_db(playlist_id_1);
1869 //media_playlist_delete_from_db(playlist_id_2);
1871 if(playlist_1 != NULL)
1872 media_playlist_destroy(playlist_1);
1873 if(playlist_2 != NULL)
1874 media_playlist_destroy(playlist_2);
1875 if(playlist_3 != NULL)
1876 media_playlist_destroy(playlist_3);
1877 if(playlist_4 != NULL)
1878 media_playlist_destroy(playlist_4);
1880 g_list_free(playlist_id_list);
1881 g_list_free(playlist_member_id_list);
1882 g_list_free(playlist_member_id_list_1);
1885 ret = media_filter_destroy(filter);
1886 if(m_filter != NULL)
1887 ret = media_filter_destroy(m_filter);
1892 int test_tag_operation(void)
1894 int ret = MEDIA_CONTENT_ERROR_NONE;
1901 char *tag_name_1 = "myTag_1";
1902 char *tag_name_2 = "myTag_2";
1903 char *tag_name_3 = "myTag_3";
1905 int media_count = 0;
1908 media_content_debug("\n============Tag Test============\n\n");
1910 char *g_condition = "TAG_NAME like \"%%my%%\"";
1912 ret = media_filter_create(&filter);
1914 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1916 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1919 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1920 if(ret != MEDIA_CONTENT_ERROR_NONE)
1921 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1922 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1923 if(ret != MEDIA_CONTENT_ERROR_NONE)
1924 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1925 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1926 if(ret != MEDIA_CONTENT_ERROR_NONE)
1927 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1929 /* Add media to Tag */
1930 ret = media_tag_add_media(tag_1, test_audio_id);
1931 if(ret != MEDIA_CONTENT_ERROR_NONE)
1932 media_content_error("error media_tag_add_media : [%d]", ret);
1933 ret = media_tag_add_media(tag_1, test_video_id);
1934 if(ret != MEDIA_CONTENT_ERROR_NONE)
1935 media_content_error("error media_tag_add_media : [%d]", ret);
1936 ret = media_tag_update_to_db(tag_1);
1937 if(ret != MEDIA_CONTENT_ERROR_NONE)
1938 media_content_error("error media_tag_update_to_db : [%d]", ret);
1940 ret = media_tag_add_media(tag_2, test_audio_id);
1941 if(ret != MEDIA_CONTENT_ERROR_NONE)
1942 media_content_error("error media_tag_add_media : [%d]", ret);
1943 ret = media_tag_update_to_db(tag_2);
1944 if(ret != MEDIA_CONTENT_ERROR_NONE)
1945 media_content_error("error media_tag_update_to_db : [%d]", ret);
1948 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1949 if(ret != MEDIA_CONTENT_ERROR_NONE)
1950 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1952 media_content_debug("tag_count [%d]", tag_count);
1955 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1956 if(ret != MEDIA_CONTENT_ERROR_NONE)
1957 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1960 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1961 if(ret != MEDIA_CONTENT_ERROR_NONE)
1962 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1964 media_content_debug("tag_id_1 [%d]", tag_id_1);
1966 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1967 if(ret != MEDIA_CONTENT_ERROR_NONE)
1968 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1970 media_content_debug("tag_id_2 [%d]", tag_id_2);
1972 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1973 if(ret != MEDIA_CONTENT_ERROR_NONE)
1974 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1976 media_content_debug("tag_id_3 [%d]", tag_id_3);
1978 /* Get media count */
1979 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1980 if(ret != MEDIA_CONTENT_ERROR_NONE)
1981 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1983 media_content_debug("tag_1_media_count [%d]", media_count);
1985 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1986 if(ret != MEDIA_CONTENT_ERROR_NONE)
1987 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1989 media_content_debug("tag_2_media_count [%d]", media_count);
1991 /* Get media of Tag */
1992 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1993 if(ret != MEDIA_CONTENT_ERROR_NONE)
1994 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1996 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1997 if(ret != MEDIA_CONTENT_ERROR_NONE)
1998 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
2001 ret = media_tag_add_media(tag_2, test_video_id);
2002 if(ret != MEDIA_CONTENT_ERROR_NONE)
2003 media_content_error("error media_tag_add_media : [%d]", ret);
2004 ret = media_tag_set_name(tag_2, "test_tag");
2005 if(ret != MEDIA_CONTENT_ERROR_NONE)
2006 media_content_error("error media_tag_set_name : [%d]", ret);
2007 ret = media_tag_update_to_db(tag_2);
2008 if(ret != MEDIA_CONTENT_ERROR_NONE)
2009 media_content_error("error media_tag_update_to_db : [%d]", ret);
2011 /* Get Updated Tag*/
2012 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
2013 if(ret != MEDIA_CONTENT_ERROR_NONE)
2014 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
2016 /* deletes the tag */
2017 ret = media_tag_delete_from_db(tag_id_1);
2018 if(ret != MEDIA_CONTENT_ERROR_NONE)
2019 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2020 ret = media_tag_delete_from_db(tag_id_2);
2021 if(ret != MEDIA_CONTENT_ERROR_NONE)
2022 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2024 ret = media_tag_destroy(tag_1);
2025 if(ret != MEDIA_CONTENT_ERROR_NONE)
2026 media_content_error("error media_tag_destroy : [%d]", ret);
2027 ret = media_tag_destroy(tag_2);
2028 if(ret != MEDIA_CONTENT_ERROR_NONE)
2029 media_content_error("error media_tag_destroy : [%d]", ret);
2030 ret = media_filter_destroy(filter);
2031 if(ret != MEDIA_CONTENT_ERROR_NONE)
2032 media_content_error("error media_filter_destroy : [%d]", ret);
2038 int test_bookmark_operation(void)
2040 //bookmark is only supported for video information.
2041 int ret = MEDIA_CONTENT_ERROR_NONE;
2042 int bookmark_count = 0;
2045 media_content_debug("\n============Bookmark Test============\n\n");
2047 char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2049 ret = media_filter_create(&filter);
2050 if(ret != MEDIA_CONTENT_ERROR_NONE)
2051 media_content_error("error media_filter_create : [%d]", ret);
2053 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2054 if(ret != MEDIA_CONTENT_ERROR_NONE)
2055 media_content_error("error media_filter_set_condition : [%d]", ret);
2057 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2058 if(ret != MEDIA_CONTENT_ERROR_NONE)
2059 media_content_error("error media_filter_set_order : [%d]", ret);
2061 //insert bookmark to video
2062 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
2063 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2064 if(ret != MEDIA_CONTENT_ERROR_NONE)
2065 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2067 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2068 if(ret != MEDIA_CONTENT_ERROR_NONE)
2069 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2071 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2072 if(ret != MEDIA_CONTENT_ERROR_NONE)
2073 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2075 media_content_debug("bookmark_count = [%d]", bookmark_count);
2077 ret = media_filter_destroy(filter);
2078 if(ret != MEDIA_CONTENT_ERROR_NONE)
2079 media_content_error("error media_filter_destroy : [%d]", ret);
2084 int test_album_list(void)
2086 media_content_debug("\n============Album Test============\n\n");
2088 int ret = MEDIA_CONTENT_ERROR_NONE;
2089 int album_count = 0;
2093 char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2095 ret = media_filter_create(&filter);
2096 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2097 media_content_error("Fail to create filter");
2100 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2101 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2102 media_filter_destroy(filter);
2103 media_content_error("Fail to set condition");
2106 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2107 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2108 media_filter_destroy(filter);
2109 media_content_error("Fail to set order");
2113 ret = media_album_get_album_count_from_db(filter, &album_count);
2114 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2115 media_filter_destroy(filter);
2118 media_content_debug("album_count [%d]", album_count);
2121 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2122 if(ret != MEDIA_CONTENT_ERROR_NONE)
2123 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2125 ret = media_filter_destroy(filter);
2126 if(ret != MEDIA_CONTENT_ERROR_NONE)
2127 media_content_error("error media_filter_destroy : [%d]", ret);
2132 int test_group_operation(void)
2134 media_content_debug("\n============Group Test============\n\n");
2136 int ret = MEDIA_CONTENT_ERROR_NONE;
2137 int group_count = 0;
2140 ret = test_filter_create();
2141 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2142 media_content_error("[error(0x%08x)", ret);
2146 for(idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++)
2148 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2149 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2150 test_filter_destroy();
2151 media_content_error("media_group_get_group_count_from_db fail. idx=[%d]", ret, idx);
2154 media_content_debug("[%2d]group_count [%d]", idx, group_count);
2157 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2159 ret = test_filter_destroy();
2164 int test_update_operation()
2166 int ret = MEDIA_CONTENT_ERROR_NONE;
2168 media_info_h media_handle = NULL;
2169 GList *all_item_list = NULL;
2171 /* Get all item list */
2172 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2173 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2174 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2177 media_content_debug("media_info_foreach_media_from_db success");
2178 char *media_id = NULL;
2179 char *media_path = NULL;
2180 media_content_type_e media_type = 0;
2182 for(i = 0; i < g_list_length(all_item_list); i++) {
2183 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2185 ret = media_info_get_media_id(media_handle, &media_id);
2186 if(ret != MEDIA_CONTENT_ERROR_NONE)
2187 media_content_error("media_info_get_media_id failed: %d", ret);
2188 ret = media_info_get_file_path(media_handle, &media_path);
2189 if(ret != MEDIA_CONTENT_ERROR_NONE)
2190 media_content_error("media_info_get_file_path failed: %d", ret);
2191 ret = media_info_get_media_type(media_handle, &media_type);
2192 if(ret != MEDIA_CONTENT_ERROR_NONE)
2193 media_content_error("media_info_get_media_type failed: %d", ret);
2195 media_content_debug("media_id [%d] : %s", i, media_id);
2196 media_content_debug("media_type [%d] : %d", i, media_type);
2197 media_content_debug("media_path [%d] : %s", i, media_path);
2199 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2200 image_meta_h image_handle;
2201 media_content_orientation_e orientation;
2203 ret = media_info_get_image(media_handle, &image_handle);
2204 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2205 media_content_error("media_info_get_image failed: %d", ret);
2207 media_content_debug("media_info_get_image success");
2210 orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2211 image_meta_set_orientation(image_handle, orientation);
2213 ret = image_meta_update_to_db(image_handle);
2214 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2215 media_content_error("image_meta_update_to_db failed: %d", ret);
2217 media_content_debug("image_meta_update_to_db success");
2221 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2222 video_meta_h video_handle;
2224 ret = media_info_get_video(media_handle, &video_handle);
2225 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2226 media_content_error("media_info_get_video failed: %d", ret);
2228 media_content_debug("media_info_get_video success");
2231 video_meta_set_played_count(video_handle,5);
2232 video_meta_set_played_time(video_handle,5);
2233 video_meta_set_played_position(video_handle,5);
2234 video_meta_update_to_db(video_handle);
2236 ret = video_meta_update_to_db(video_handle);
2237 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2238 media_content_error("video_meta_update_to_db failed: %d", ret);
2240 media_content_debug("video_meta_update_to_db success");
2243 } else if(media_type == MEDIA_CONTENT_TYPE_MUSIC) {//update audio meta
2244 audio_meta_h audio_handle = NULL;
2245 ret = media_info_get_audio(media_handle, &audio_handle);
2246 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2247 media_content_error("media_info_get_audio failed: %d", ret);
2249 media_content_debug("media_info_get_audio success");
2251 audio_meta_set_played_count(audio_handle,5);
2252 audio_meta_set_played_time(audio_handle,1000);
2253 audio_meta_set_played_position(audio_handle,180);
2255 ret = audio_meta_update_to_db(audio_handle);
2256 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2257 media_content_error("audio_meta_update_to_db failed: %d", ret);
2259 media_content_debug("audio_meta_update_to_db success");
2267 /* fix prevent: Resource Leak */
2268 SAFE_FREE(media_id);
2269 SAFE_FREE(media_path);
2272 return MEDIA_CONTENT_ERROR_NONE;
2275 int test_insert(void)
2277 int ret = MEDIA_CONTENT_ERROR_NONE;
2278 char *path = "/opt/usr/media/Images/Default.jpg";
2279 //char *path = "/opt/usr/media/Others/other.txt";
2280 //char *path = NULL;
2281 media_info_h media_item = NULL;
2282 media_content_debug("\n============DB Insert Test============\n\n");
2284 ret = media_info_insert_to_db(path, &media_item);
2286 if((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL))
2288 media_content_debug("Insertion is success");
2292 media_content_error("Insertion is failed");
2293 ret = media_info_destroy(media_item);
2297 char *media_id = NULL;
2299 ret = media_info_get_media_id(media_item, &media_id);
2300 if(ret != MEDIA_CONTENT_ERROR_NONE)
2301 media_content_error("media_info_get_media_id failed: %d", ret);
2303 media_content_debug("Media ID: %s", media_id);
2305 SAFE_FREE(media_id);
2307 ret = media_info_update_to_db(media_item);
2308 if(ret == MEDIA_CONTENT_ERROR_NONE)
2309 media_content_debug("media_info_update_to_db is success");
2311 media_content_error("media_info_update_to_db is failed");
2313 ret = media_info_destroy(media_item);
2314 if(ret != MEDIA_CONTENT_ERROR_NONE)
2315 media_content_error("media_info_destroy failed: %d", ret);
2322 int ret = MEDIA_CONTENT_ERROR_NONE;
2323 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2324 const char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
2325 media_info_h move_media = NULL;
2327 ret = media_info_get_media_from_db(move_media_id, &move_media);
2328 if(ret == MEDIA_CONTENT_ERROR_NONE)
2329 media_content_debug("media_info_get_media_from_db success");
2331 media_content_error("media_info_get_media_from_db failed: %d", ret);
2333 media_content_debug("\n============DB Move Test============\n\n");
2336 ret = media_info_move_to_db(move_media, dst_path);
2338 if(ret == MEDIA_CONTENT_ERROR_NONE)
2339 media_content_debug("Move is success");
2341 media_content_error("Move is failed");
2343 ret = media_info_destroy(move_media);
2345 media_content_debug("There is no item : %s", move_media_id);
2351 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2353 char *thumbnail_path = NULL;
2354 int ret = MEDIA_CONTENT_ERROR_NONE;
2357 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2358 media_content_debug("error_code [%d]", error);
2359 media_content_debug("thumbnail_path [%s]", path);
2360 if(user_data != NULL)
2362 media_info_h media = (media_info_h)user_data;
2363 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2364 if(ret != MEDIA_CONTENT_ERROR_NONE)
2365 media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2367 media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2368 SAFE_FREE(thumbnail_path);
2369 ret = media_info_destroy(media);
2370 if(ret != MEDIA_CONTENT_ERROR_NONE)
2371 media_content_error("media_info_destroy failed: %d", ret);
2374 if(g_cnt == g_media_cnt)
2375 g_main_loop_quit(g_loop);
2380 bool thumbnail_create_cb(media_info_h media, void *user_data)
2382 char *media_id = NULL;
2383 media_info_h dst = NULL;
2384 int ret = MEDIA_CONTENT_ERROR_NONE;
2388 media_content_debug("NO Item");
2392 ret = media_info_get_media_id(media, &media_id);
2393 if(ret != MEDIA_CONTENT_ERROR_NONE)
2394 media_content_error("media_info_get_media_id failed: %d", ret);
2396 media_content_debug("media_id : [%s]", media_id);
2398 ret = media_info_clone(&dst, media);
2399 if(ret != MEDIA_CONTENT_ERROR_NONE)
2400 media_content_error("media_info_clone failed: %d", ret);
2403 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2404 if(ret != MEDIA_CONTENT_ERROR_NONE)
2405 media_content_error("media_info_create_thumbnail failed: %d", ret);
2408 /* fix prevent: Resource leak */
2409 SAFE_FREE(media_id);
2414 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2416 int ret = MEDIA_CONTENT_ERROR_NONE;
2418 char *media_id = NULL;
2419 media_info_h dst = NULL;
2425 media_content_debug("NO Item");
2429 ret = media_info_get_media_id(media, &media_id);
2430 if(ret != MEDIA_CONTENT_ERROR_NONE)
2431 media_content_error("media_info_get_media_id failed: %d", ret);
2433 media_content_debug("media_id : [%s]", media_id);
2435 ret = media_info_clone(&dst, media);
2436 if(ret != MEDIA_CONTENT_ERROR_NONE)
2437 media_content_error("media_info_clone failed: %d", ret);
2439 ret = media_info_cancel_thumbnail(dst);
2440 if(ret != MEDIA_CONTENT_ERROR_NONE)
2441 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2443 ret = media_info_destroy(dst);
2444 if(ret != MEDIA_CONTENT_ERROR_NONE)
2445 media_content_error("media_info_destroy failed: %d", ret);
2447 if(g_cnt == g_media_cnt)
2448 g_main_loop_quit(g_loop);
2450 /* fix prevent: Resource leak */
2451 SAFE_FREE(media_id);
2456 gboolean create_thumbnail_start(gpointer data)
2458 int ret = MEDIA_CONTENT_ERROR_NONE;
2460 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2462 if(ret == MEDIA_CONTENT_ERROR_NONE)
2463 media_content_debug("media_info_foreach_media_from_db is success");
2465 media_content_error("media_info_foreach_media_from_db is failed");
2470 gboolean cancel_thumbnail_start(gpointer data)
2472 int ret = MEDIA_CONTENT_ERROR_NONE;
2474 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2476 if(ret == MEDIA_CONTENT_ERROR_NONE)
2477 media_content_debug("media_info_foreach_media_from_db is success");
2479 media_content_error("media_info_foreach_media_from_db is failed");
2484 int test_create_thumbnail(int cancel)
2486 int ret = MEDIA_CONTENT_ERROR_NONE;
2487 GSource *source = NULL;
2488 GMainContext *context = NULL;
2490 test_filter_create();
2492 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2493 if(ret != MEDIA_CONTENT_ERROR_NONE)
2494 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2496 media_content_debug("media_count : [%d]", g_media_cnt);
2498 g_loop = g_main_loop_new(NULL, FALSE);
2499 context = g_main_loop_get_context(g_loop);
2500 source = g_idle_source_new();
2501 g_source_set_callback (source, create_thumbnail_start, NULL, NULL);
2502 g_source_attach (source, context);
2504 /* Logic to cancel */
2506 GSource *cancel_src = NULL;
2507 cancel_src = g_idle_source_new();
2508 g_source_set_callback (cancel_src, cancel_thumbnail_start, NULL, NULL);
2509 g_source_attach (cancel_src, context);
2512 g_main_loop_run(g_loop);
2513 g_main_loop_unref(g_loop);
2515 test_filter_destroy();
2520 int test_disconnect_database(void)
2522 int ret = MEDIA_CONTENT_ERROR_NONE;
2523 media_content_debug("\n============DB Disconnection Test============\n\n");
2525 ret = media_content_disconnect();
2527 if(ret == MEDIA_CONTENT_ERROR_NONE)
2528 media_content_debug("disconnection is success");
2530 media_content_error("disconnection is failed");
2535 int test_request_update_db(void)
2537 int ret = MEDIA_CONTENT_ERROR_NONE;
2538 media_info_h media = NULL;
2539 char *content_name = NULL;
2540 bool favorite = FALSE;
2542 //get the content of Over the horizon
2543 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2544 if(ret != MEDIA_CONTENT_ERROR_NONE)
2545 media_content_error("media_info_get_media_from_db failed: %d", ret);
2547 ret = media_info_set_content_name(media, "TEST_content_name");
2548 if(ret != MEDIA_CONTENT_ERROR_NONE)
2549 media_content_error("media_info_set_content_name failed: %d", ret);
2551 ret = media_info_set_favorite(media, TRUE);
2552 if(ret != MEDIA_CONTENT_ERROR_NONE)
2553 media_content_error("media_info_set_favorite failed: %d", ret);
2555 ret = media_info_update_to_db(media);
2556 if(ret == MEDIA_CONTENT_ERROR_NONE)
2557 media_content_debug("media_info_update_to_db is success");
2559 media_content_error("media_info_update_to_db is failed");
2562 media_info_destroy(media);
2564 /*get the updated value*/
2565 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2566 if(ret != MEDIA_CONTENT_ERROR_NONE)
2567 media_content_error("media_info_get_media_from_db failed: %d", ret);
2569 ret = media_info_get_content_name(media, &content_name);
2570 if(ret != MEDIA_CONTENT_ERROR_NONE)
2571 media_content_error("media_info_get_content_name failed: %d", ret);
2573 media_content_debug("content name [%s]", content_name);
2575 SAFE_FREE(content_name);
2577 ret = media_info_get_favorite(media, &favorite);
2578 if(ret != MEDIA_CONTENT_ERROR_NONE)
2579 media_content_error("media_info_get_favorite failed: %d", ret);
2581 media_content_debug("favorite [%d]", favorite);
2583 ret = media_info_destroy(media);
2588 int g_total_photo_size = 0;
2589 int g_total_video_size = 0;
2590 int g_total_mp3_size = 0;
2591 int g_total_voice_memo_size = 0;
2593 bool dft_cb(media_info_h media, void *user_data)
2595 unsigned long long file_size = 0;
2596 media_content_type_e media_type = -1;
2597 char *mime_type = NULL;
2598 int ret = MEDIA_CONTENT_ERROR_NONE;
2605 ret = media_info_get_media_type(media, &media_type);
2606 if(ret != MEDIA_CONTENT_ERROR_NONE)
2607 media_content_error("media_info_get_media_type failed: %d", ret);
2608 ret = media_info_get_size(media, &file_size);
2609 if(ret != MEDIA_CONTENT_ERROR_NONE)
2610 media_content_error("media_info_get_size failed: %d", ret);
2611 ret = media_info_get_mime_type(media, &mime_type);
2612 if(ret != MEDIA_CONTENT_ERROR_NONE)
2613 media_content_error("media_info_get_mime_type failed: %d", ret);
2615 if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
2617 g_total_photo_size += file_size;
2619 else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
2621 g_total_video_size += file_size;
2623 else if(media_type == MEDIA_CONTENT_TYPE_SOUND)
2625 g_total_voice_memo_size += file_size;
2627 else if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
2629 if((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2631 g_total_mp3_size += file_size;
2635 g_total_voice_memo_size += file_size;
2640 media_content_debug("invalid media_type");
2643 if(mime_type != NULL)
2652 int ret = MEDIA_CONTENT_ERROR_NONE;
2653 media_content_debug("\n============DFT_test============\n\n");
2655 filter_h filter = NULL;
2658 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2660 ret = media_filter_create(&filter);
2663 media_content_debug("[Internal Memory]\n");
2664 /*1. Photo ============================================================*/
2665 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2668 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2669 media_content_debug("Photo count = [%d]\n", media_cnt);
2672 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2673 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2675 /*2. Video ============================================================*/
2676 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2679 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2680 media_content_debug("Video count = [%d]\n", media_cnt);
2683 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2684 media_content_debug("Video size = [%d]\n", g_total_video_size);
2686 /*3. MP3 ============================================================*/
2687 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 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 media_content_debug("MP3 count = [%d]\n", media_cnt);
2694 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2695 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2697 /*4. Voice Memo ============================================================*/
2698 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);
2700 /*Get Voice Memo Count*/
2701 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2702 media_content_debug("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 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2708 g_total_photo_size = 0;
2709 g_total_video_size = 0;
2710 g_total_mp3_size = 0;
2711 g_total_voice_memo_size = 0;
2714 media_content_debug("\n[External Memory]\n");
2715 /*1. Photo ============================================================*/
2716 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2719 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2720 media_content_debug("Photo count = [%d]\n", media_cnt);
2723 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2724 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2726 /*2. Video ============================================================*/
2727 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2730 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2731 media_content_debug("Video count = [%d]\n", media_cnt);
2734 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2735 media_content_debug("Video size = [%d]\n", g_total_video_size);
2737 /*3. MP3 ============================================================*/
2738 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2741 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2742 media_content_debug("MP3 count = [%d]\n", media_cnt);
2745 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2746 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2748 /*4. Voice Memo ============================================================*/
2749 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);
2751 /*Get Voice Memo Count*/
2752 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2753 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2755 /*Get Voice Memo Size*/
2756 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2757 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2758 ret = media_filter_destroy(filter);
2763 void insert_batch_cb(media_content_error_e error, void * user_data)
2765 media_content_debug("media_info_insert_batch_to_db completed!\n");
2768 int test_batch_operations()
2772 char *file_list[10];
2774 for (i = 0; i < 10; i++) {
2775 char filepath[255] = {0,};
2776 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2777 media_content_debug("File : %s\n", filepath);
2778 file_list[i] = strdup(filepath);
2781 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2782 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2783 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2787 char *condition = "MEDIA_PATH LIKE \'";
2788 strncat (condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2789 ret = media_filter_create(&filter);
2790 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2791 media_content_error("Fail to create filter");
2795 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2796 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2797 media_filter_destroy(filter);
2798 media_content_error("Fail to set condition");
2802 ret = media_info_delete_batch_from_db(filter);
2803 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2804 media_filter_destroy(filter);
2805 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2809 ret = media_filter_destroy(filter);
2814 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
2816 media_content_debug("media_info_insert_burst_shot_to_db completed![%d]\n", error);
2817 g_main_loop_quit(g_loop);
2820 gboolean test_insert_burst_shot_to_db_start(gpointer data)
2822 int ret = MEDIA_CONTENT_ERROR_NONE;
2824 char *file_list[10];
2826 for (i = 0; i < 10; i++) {
2827 char filepath[255] = {0,};
2828 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2829 media_content_debug("File : %s\n", filepath);
2830 file_list[i] = strdup(filepath);
2833 ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
2834 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2835 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
2841 int test_insert_burst_shot_to_db(void)
2843 GSource *source = NULL;
2844 GMainContext *context = NULL;
2846 g_loop = g_main_loop_new(NULL, FALSE);
2847 context = g_main_loop_get_context(g_loop);
2848 source = g_idle_source_new();
2849 g_source_set_callback (source, test_insert_burst_shot_to_db_start, NULL, NULL);
2850 g_source_attach (source, context);
2852 g_main_loop_run(g_loop);
2853 g_main_loop_unref(g_loop);
2858 void _scan_cb(media_content_error_e err, void *user_data)
2860 media_content_debug("scan callback is called : %d\n", err);
2861 g_main_loop_quit(g_loop);
2866 int test_scan_file()
2870 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2871 ret = media_content_scan_file(file_path);
2872 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2873 media_content_error("Fail to media_content_scan_file : %d", ret);
2880 gboolean test_scan_dir_start(gpointer data)
2884 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2886 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2888 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2889 media_content_error("Fail to test_scan_dir_start : %d", ret);
2896 gboolean cancel_scan_dir_start(gpointer data)
2898 int ret = MEDIA_CONTENT_ERROR_NONE;
2900 const char *dir_path = "/opt/usr/media/Images";
2902 ret = media_content_cancel_scan_folder(dir_path);
2904 if(ret == MEDIA_CONTENT_ERROR_NONE)
2905 media_content_debug("media_content_cancel_scan_folder is success");
2907 media_content_error("media_content_cancel_scan_folder is failed");
2912 int test_scan_dir(int cancel)
2914 GSource *source = NULL;
2915 GMainContext *context = NULL;
2917 g_loop = g_main_loop_new(NULL, FALSE);
2918 context = g_main_loop_get_context(g_loop);
2919 source = g_idle_source_new();
2920 g_source_set_callback (source, test_scan_dir_start, NULL, NULL);
2921 g_source_attach (source, context);
2924 GSource *cancel_src = NULL;
2925 cancel_src = g_idle_source_new();
2926 g_source_set_callback (cancel_src, cancel_scan_dir_start, NULL, NULL);
2927 g_source_attach (cancel_src, context);
2930 g_main_loop_run(g_loop);
2931 g_main_loop_unref(g_loop);
2936 void _noti_cb(media_content_error_e error,
2938 media_content_db_update_item_type_e update_item,
2939 media_content_db_update_type_e update_type,
2940 media_content_type_e media_type,
2947 media_content_debug("noti success! : %d\n", error);
2949 media_content_debug("error occured! : %d\n", error);
2952 media_content_debug("Noti from PID(%d)\n", pid);
2954 if (update_item == MEDIA_ITEM_FILE) {
2955 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
2956 } else if (update_item == MEDIA_ITEM_DIRECTORY) {
2957 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
2960 if (update_type == MEDIA_CONTENT_INSERT) {
2961 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
2962 } else if (update_type == MEDIA_CONTENT_DELETE) {
2963 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
2964 } else if (update_type == MEDIA_CONTENT_UPDATE) {
2965 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
2968 media_content_debug("content type : %d\n", media_type);
2971 media_content_debug("path : %s\n", path);
2973 media_content_debug("path not\n");
2976 media_content_debug("uuid : %s\n", uuid);
2978 media_content_debug("uuid not\n");
2981 media_content_debug("mime_type : %s\n", mime_type);
2983 media_content_debug("mime not\n");
2985 if (user_data) media_content_debug("String : %s\n", (char *)user_data);
2987 //g_main_loop_quit(g_loop);
2991 gboolean _send_noti_operations(gpointer data)
2993 int ret = MEDIA_CONTENT_ERROR_NONE;
2995 /* First of all, noti subscription */
2996 char *user_str = strdup("hi");
2997 media_content_set_db_updated_cb(_noti_cb, (void*)user_str);
2999 /* media_info_insert_to_db */
3000 media_info_h media_item = NULL;
3001 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3003 ret = media_info_insert_to_db(path, &media_item);
3004 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3005 media_content_error("media_info_insert_to_db failed : %d", ret);
3006 media_info_destroy(media_item);
3010 media_content_debug("media_info_insert_to_db success");
3012 /* media_info_delete_batch_from_db */
3014 char *condition = "MEDIA_PATH LIKE \'";
3015 strncat (condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
3017 ret = media_filter_create(&filter);
3018 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3019 media_content_error("Fail to create filter");
3020 media_info_destroy(media_item);
3024 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3025 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3026 media_filter_destroy(filter);
3027 media_info_destroy(media_item);
3028 media_content_error("Fail to set condition");
3031 ret = media_info_delete_batch_from_db(filter);
3032 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3033 media_filter_destroy(filter);
3034 media_info_destroy(media_item);
3035 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3039 media_filter_destroy(filter);
3041 /* media_info_update_to_db */
3042 ret = media_info_update_to_db(media_item);
3043 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3044 media_content_error("media_info_update_to_db failed : %d\n", ret);
3045 media_info_destroy(media_item);
3049 media_info_destroy(media_item);
3056 int ret = MEDIA_CONTENT_ERROR_NONE;
3057 GSource *source = NULL;
3058 GMainContext *context = NULL;
3060 g_loop = g_main_loop_new(NULL, FALSE);
3061 context = g_main_loop_get_context(g_loop);
3062 source = g_idle_source_new();
3063 g_source_set_callback (source, _send_noti_operations, NULL, NULL);
3064 g_source_attach (source, context);
3066 g_main_loop_run(g_loop);
3067 g_main_loop_unref(g_loop);
3069 test_filter_destroy();
3070 media_content_unset_db_updated_cb();
3075 int main(int argc, char *argv[])
3077 int ret = MEDIA_CONTENT_ERROR_NONE;
3079 media_content_debug("--- content manager test start ---\n\n");
3081 ret = test_connect_database();
3082 if(ret != MEDIA_CONTENT_ERROR_NONE)
3083 return MEDIA_CONTENT_ERROR_NONE;
3087 if(ret != MEDIA_CONTENT_ERROR_NONE)
3090 ret = test_gallery_scenario();
3091 if(ret != MEDIA_CONTENT_ERROR_NONE)
3094 ret = test_get_all_music_files();
3095 if(ret != MEDIA_CONTENT_ERROR_NONE)
3098 ret = test_media_info_operation();
3099 if(ret != MEDIA_CONTENT_ERROR_NONE)
3102 ret = test_folder_operation();
3103 if(ret != MEDIA_CONTENT_ERROR_NONE)
3106 ret = test_folder_update();
3107 if(ret != MEDIA_CONTENT_ERROR_NONE)
3110 ret = test_playlist_operation();
3111 if(ret != MEDIA_CONTENT_ERROR_NONE)
3114 ret = test_tag_operation();
3115 if(ret != MEDIA_CONTENT_ERROR_NONE)
3118 ret = test_bookmark_operation();
3119 if(ret != MEDIA_CONTENT_ERROR_NONE)
3122 ret = test_album_list();
3123 if(ret != MEDIA_CONTENT_ERROR_NONE)
3126 ret = test_group_operation();
3127 if(ret != MEDIA_CONTENT_ERROR_NONE)
3130 ret = test_update_operation();
3131 if(ret != MEDIA_CONTENT_ERROR_NONE)
3134 ret = test_insert();
3135 if(ret != MEDIA_CONTENT_ERROR_NONE)
3139 if(ret != MEDIA_CONTENT_ERROR_NONE)
3142 ret = test_create_thumbnail(TRUE);
3143 if(ret != MEDIA_CONTENT_ERROR_NONE)
3146 ret = test_request_update_db();
3147 if(ret != MEDIA_CONTENT_ERROR_NONE)
3151 if(ret != MEDIA_CONTENT_ERROR_NONE)
3154 ret = test_batch_operations();
3155 if(ret != MEDIA_CONTENT_ERROR_NONE)
3156 return MEDIA_CONTENT_ERROR_NONE;
3158 ret = test_insert_burst_shot_to_db();
3159 if(ret != MEDIA_CONTENT_ERROR_NONE)
3160 return MEDIA_CONTENT_ERROR_NONE;
3162 ret = test_scan_file();
3163 if(ret != MEDIA_CONTENT_ERROR_NONE)
3164 return MEDIA_CONTENT_ERROR_NONE;
3166 ret = test_scan_dir(true);
3167 if(ret != MEDIA_CONTENT_ERROR_NONE)
3168 return MEDIA_CONTENT_ERROR_NONE;
3171 if(ret != MEDIA_CONTENT_ERROR_NONE)
3172 return MEDIA_CONTENT_ERROR_NONE;
3175 ret = test_disconnect_database();
3176 if(ret != MEDIA_CONTENT_ERROR_NONE)
3179 media_content_debug("--- content manager test end ---\n");