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;
548 media_content_debug("===========================");
552 media_folder_clone(_folder, folder);
554 if(media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE)
556 media_content_error("[ERROR] media_folder_get_folder_id is failed");
559 media_content_debug("folder_id = [%s]", folder_id);
561 if(media_folder_get_parent_folder_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
563 media_content_error("[ERROR] media_folder_get_parent_folder_id is failed");
566 media_content_debug("parent_folder_id = [%s]", str_val);
568 if(media_folder_get_path(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
570 SAFE_FREE(folder_id);
571 media_content_error("[ERROR] media_folder_get_path is failed");
574 media_content_debug("folder_path = [%s]", str_val);
577 if(media_folder_get_name(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
579 SAFE_FREE(folder_id);
580 media_content_error("[ERROR] media_folder_get_name is failed");
583 media_content_debug("folder_name = [%s]", str_val);
586 if(media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE)
588 SAFE_FREE(folder_id);
589 media_content_error("[ERROR] media_folder_get_storage_type is failed");
592 media_content_debug("storage_type = [%d]", storage_type);
594 if(media_folder_get_storage_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE)
596 SAFE_FREE(folder_id);
597 media_content_error("[ERROR] media_folder_get_name is failed");
600 media_content_debug("storage_id = [%s]", str_val);
602 if(media_folder_get_order(folder, &int_val) != MEDIA_CONTENT_ERROR_NONE)
604 media_content_error("[ERROR] media_folder_get_order is failed");
607 media_content_debug("folder_order = [%d]", int_val);
609 if(media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE)
611 SAFE_FREE(folder_id);
612 media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
616 if(media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
618 SAFE_FREE(folder_id);
619 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
623 SAFE_FREE(folder_id);
634 bool test_album_from_db(int album_id)
636 int ret = MEDIA_CONTENT_ERROR_NONE;
637 media_album_h album_h;
638 int test_album_id = 0;
639 char *album_name = NULL;
642 ret = media_album_get_album_from_db(album_id, &album_h);
643 if(ret != MEDIA_CONTENT_ERROR_NONE)
645 media_content_error("error when get album");
649 if(media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE)
651 media_album_destroy(album_h);
655 media_content_debug("test_album_id : [%d]", test_album_id);
657 if(media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE)
659 media_album_destroy(album_h);
663 media_content_debug("album_name : [%s]", album_name);
665 if(media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE)
667 media_album_destroy(album_h);
668 /* fix prevent: Resource Leak */
669 SAFE_FREE(album_name);
673 media_content_debug("artist : [%s]", artist);
675 SAFE_FREE(album_name);
678 media_album_destroy(album_h);
683 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
686 char *playlist_name = NULL;
687 media_playlist_h playlist_h;
688 char *playlist_thumbnail_path = NULL;
690 media_content_debug("playlist_list_cb ======");
692 GList **list = (GList**)user_data;
697 media_content_debug(" playlist handle is NULL");
701 media_playlist_get_playlist_id(playlist, &playlist_id);
702 media_content_debug("playlist_id : %d", playlist_id);
703 /* 64bit build issue */
705 if(user_data != NULL)
706 *list = g_list_append(*list, (gpointer)playlist_id);
708 media_playlist_get_name(playlist, &playlist_name);
709 media_content_debug("playlist_name : %s", playlist_name);
710 SAFE_FREE(playlist_name);
712 media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
713 media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
714 SAFE_FREE(playlist_thumbnail_path);
716 media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
718 media_playlist_destroy(playlist_h);
723 bool tag_list_cb(media_tag_h tag, void *user_data)
726 char *tag_name = NULL;
727 int ret = MEDIA_CONTENT_ERROR_NONE;
731 media_content_debug(" tag handle is NULL");
735 ret = media_tag_get_tag_id(tag, &tag_id);
736 if(ret != MEDIA_CONTENT_ERROR_NONE)
737 media_content_error("error media_tag_get_tag_id : [%d]", ret);
739 media_content_debug("tag_id : %d", tag_id);
741 ret = media_tag_get_name(tag, &tag_name);
742 if(ret != MEDIA_CONTENT_ERROR_NONE)
743 media_content_error("error media_tag_get_name : [%d]", ret);
745 media_content_debug("tag_name : %s", tag_name);
751 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
753 media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
754 int ret = MEDIA_CONTENT_ERROR_NONE;
756 if(_bookmark != NULL)
762 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
763 if(ret != MEDIA_CONTENT_ERROR_NONE)
764 media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
766 media_content_debug("bookmark_id : %d", bookmark_id);
768 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
769 if(ret != MEDIA_CONTENT_ERROR_NONE)
770 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
772 media_content_debug("bookmark thumbnail_path : %s", name);
775 ret = media_bookmark_get_marked_time(bookmark, &time);
776 if(ret != MEDIA_CONTENT_ERROR_NONE)
777 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
779 media_content_debug("bookmark marked_time : %d", time);
785 bool album_list_cb(media_album_h album, void *user_data)
788 char *album_name = NULL;
790 char *album_art = NULL;
792 int ret = MEDIA_CONTENT_ERROR_NONE;
793 filter_h filter = NULL;
796 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
798 ret = media_filter_create(&filter);
799 if(ret != MEDIA_CONTENT_ERROR_NONE) {
800 media_content_error("Fail to create filter");
803 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
804 if(ret != MEDIA_CONTENT_ERROR_NONE) {
805 media_filter_destroy(filter);
806 media_content_error("Fail to set condition");
809 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
810 if(ret != MEDIA_CONTENT_ERROR_NONE) {
811 media_filter_destroy(filter);
812 media_content_error("Fail to set order");
818 if(media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE)
820 media_filter_destroy(filter);
824 media_content_debug("album_id : [%d]", album_id);
826 if(media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE)
828 media_filter_destroy(filter);
832 media_content_debug("album_name : [%s]", album_name);
833 SAFE_FREE(album_name);
835 if(media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE)
837 media_filter_destroy(filter);
841 media_content_debug("artist : [%s]", artist);
844 if(media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE)
846 media_filter_destroy(filter);
850 media_content_debug("album_art : [%s]", album_art);
851 SAFE_FREE(album_art);
853 if(media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
855 media_filter_destroy(filter);
859 media_content_debug("media_count : [%d]", media_count);
861 if(media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
863 media_filter_destroy(filter);
867 test_album_from_db(album_id);
871 media_content_error("album item not Found!!");
874 media_filter_destroy(filter);
879 bool group_list_cb(const char *group_name, void *user_data)
882 int *idx = user_data;
884 media_content_debug("group item : [%s] [%d]", group_name, *idx);
886 if(media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
889 media_content_debug("media_count : [%d]", media_count);
891 if(media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
897 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
899 media_content_debug("playlist_member_id : [%d]", playlist_member_id);
900 /* 64bit build issue */
902 GList **list = (GList**)user_data;
904 *list = g_list_append(*list, (gpointer)playlist_member_id);
906 //media_item_cb(media, user_data);
911 int test_filter_create(void)
913 media_content_debug("\n============Filter Create============\n\n");
915 int ret = MEDIA_CONTENT_ERROR_NONE;
917 /* Filter for media */
918 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
919 //const char *condition = "MEDIA_TYPE IS NOT 0 AND MEDIA_DESCRIPTION IS NOT NULL"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
921 ret = media_filter_create(&g_filter);
923 /* Set condition and collate
924 * Condition string : You can make where statement of sql.
925 * Colation : You can use collation when comparing.
926 * Ex) In case of FILE_NAME='Samsung' as condition string,
927 * if you want to compare with NOCASE collation,
928 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
929 * if you want to compare in case-sensitive,
930 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
932 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
934 /* Collation of ordering
935 * If you want to get list, which is sorted by NOCASE,
936 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
938 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
940 /* Able to set multi column to set order */
941 //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
942 //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
943 //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
944 //ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
946 /* Filter for group */
947 //const char *g_condition = "TAG_NAME like \"\%my\%\"";
948 //const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
950 ret = media_filter_create(&g_filter_g);
952 //ret = media_filter_set_condition(g_filter_g, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
953 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
958 int test_filter_destroy(void)
960 media_content_debug("\n============Filter Create============\n\n");
962 int ret = MEDIA_CONTENT_ERROR_NONE;
964 ret = media_filter_destroy(g_filter);
969 int test_connect_database(void)
971 int ret = MEDIA_CONTENT_ERROR_NONE;
973 media_content_debug("\n============DB Connection Test============\n\n");
975 ret = media_content_connect();
977 if(ret == MEDIA_CONTENT_ERROR_NONE)
979 media_content_debug("connection is success\n\n");
982 media_content_error("connection is failed\n\n");
987 int test_gallery_scenario(void)
989 int ret = MEDIA_CONTENT_ERROR_NONE;
991 filter_h filter = NULL;
994 GList *folder_list = NULL;
995 media_folder_h folder_handle = NULL;
997 /* First, Get folder list */
998 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
999 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1000 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
1003 media_content_debug("media_folder_foreach_folder_from_db success!!");
1004 char *folder_id = NULL;
1005 char *folder_name = NULL;
1006 char *folder_path = NULL;
1008 for(i = 0; i < g_list_length(folder_list); i++) {
1009 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1011 ret = media_folder_get_folder_id(folder_handle, &folder_id);
1012 if(ret != MEDIA_CONTENT_ERROR_NONE)
1013 media_content_error("media_folder_get_folder_id failed: %d", ret);
1014 ret = media_folder_get_name(folder_handle, &folder_name);
1015 if(ret != MEDIA_CONTENT_ERROR_NONE)
1016 media_content_error("media_folder_get_name failed: %d", ret);
1017 ret = media_folder_get_path(folder_handle, &folder_path);
1018 if(ret != MEDIA_CONTENT_ERROR_NONE)
1019 media_content_error("media_folder_get_path failed: %d", ret);
1021 media_content_debug("folder_id [%d] : %s", i, folder_id);
1022 media_content_debug("folder_name [%d] : %s", i, folder_name);
1023 media_content_debug("folder_path [%d] : %s", i, folder_path);
1025 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
1026 /* User should free these string */
1027 SAFE_FREE(folder_id);
1028 SAFE_FREE(folder_name);
1029 SAFE_FREE(folder_path);
1030 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1031 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
1034 media_content_debug("media count [%d] : %d", i, count);
1039 /* To check performance */
1040 struct timeval start, end;
1041 gettimeofday(&start, NULL);
1043 /* Second, Get all item list */
1044 media_info_h media_handle = NULL;
1045 GList *all_item_list = NULL;
1047 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1048 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1049 ret = media_filter_create(&filter);
1050 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1051 media_content_error("Fail to create filter");
1054 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1055 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1056 media_filter_destroy(filter);
1057 media_content_error("Fail to set condition");
1060 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1061 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1062 media_filter_destroy(filter);
1063 media_content_error("Fail to set order");
1067 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1068 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1069 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1070 media_filter_destroy(filter);
1073 media_content_debug("media_info_foreach_media_from_db success");
1074 media_content_type_e media_type;
1075 char *media_id = NULL;
1076 char *media_name = NULL;
1077 char *media_path = NULL;
1079 for(i = 0; i < g_list_length(all_item_list); i++) {
1080 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1082 ret = media_info_get_media_id(media_handle, &media_id);
1083 if(ret != MEDIA_CONTENT_ERROR_NONE)
1084 media_content_error("media_info_get_media_id failed: %d", ret);
1085 ret = media_info_get_media_type(media_handle, &media_type);
1086 if(ret != MEDIA_CONTENT_ERROR_NONE)
1087 media_content_error("media_info_get_media_type failed: %d", ret);
1088 ret = media_info_get_display_name(media_handle, &media_name);
1089 if(ret != MEDIA_CONTENT_ERROR_NONE)
1090 media_content_error("media_info_get_display_name failed: %d", ret);
1091 ret = media_info_get_file_path(media_handle, &media_path);
1092 if(ret != MEDIA_CONTENT_ERROR_NONE)
1093 media_content_error("media_info_get_file_path failed: %d", ret);
1095 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1096 image_meta_h image_handle;
1097 int width = 0, height = 0;
1098 media_content_orientation_e orientation = 0;
1099 char *datetaken = NULL;
1100 char *burst_id = NULL;
1102 ret = media_info_get_image(media_handle, &image_handle);
1103 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1104 media_content_error("media_info_get_image failed: %d", ret);
1106 ret = image_meta_get_width(image_handle, &width);
1107 if(ret != MEDIA_CONTENT_ERROR_NONE)
1108 media_content_error("error image_meta_get_width : [%d]", ret);
1109 ret = image_meta_get_height(image_handle, &height);
1110 if(ret != MEDIA_CONTENT_ERROR_NONE)
1111 media_content_error("error image_meta_get_height : [%d]", ret);
1112 ret = image_meta_get_orientation(image_handle, &orientation);
1113 if(ret != MEDIA_CONTENT_ERROR_NONE)
1114 media_content_error("error image_meta_get_orientation : [%d]", ret);
1115 ret = image_meta_get_date_taken(image_handle, &datetaken);
1116 if(ret != MEDIA_CONTENT_ERROR_NONE)
1117 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1118 ret = image_meta_get_burst_id(image_handle, &burst_id);
1119 if(ret != MEDIA_CONTENT_ERROR_NONE)
1120 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1122 media_content_debug("This is Image");
1123 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1126 SAFE_FREE(datetaken);
1127 SAFE_FREE(burst_id);
1128 ret = image_meta_destroy(image_handle);
1129 if(ret != MEDIA_CONTENT_ERROR_NONE)
1130 media_content_error("error image_meta_destroy : [%d]", ret);
1132 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1133 video_meta_h video_handle;
1134 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1136 time_t time_played = 0;
1138 ret = media_info_get_video(media_handle, &video_handle);
1139 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1140 media_content_error("media_info_get_video failed: %d", ret);
1142 ret = video_meta_get_artist(video_handle, &artist);
1143 if(ret != MEDIA_CONTENT_ERROR_NONE)
1144 media_content_error("error video_meta_get_artist : [%d]", ret);
1145 ret = video_meta_get_album(video_handle, &album);
1146 if(ret != MEDIA_CONTENT_ERROR_NONE)
1147 media_content_error("error video_meta_get_album : [%d]", ret);
1148 ret = video_meta_get_album_artist(video_handle, &album_artist);
1149 if(ret != MEDIA_CONTENT_ERROR_NONE)
1150 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1151 ret = video_meta_get_duration(video_handle, &duration);
1152 if(ret != MEDIA_CONTENT_ERROR_NONE)
1153 media_content_error("error video_meta_get_duration : [%d]", ret);
1154 ret = video_meta_get_played_time(video_handle, &time_played);
1155 if(ret != MEDIA_CONTENT_ERROR_NONE)
1156 media_content_error("error video_meta_get_played_time : [%d]", ret);
1158 media_content_debug("This is Video");
1159 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);
1165 SAFE_FREE(album_artist);
1167 ret = video_meta_destroy(video_handle);
1168 if(ret != MEDIA_CONTENT_ERROR_NONE)
1169 media_content_error("error video_meta_destroy : [%d]", ret);
1171 //media_content_debug("media_id [%d] : %s", i, media_id);
1172 //media_content_debug("media_name [%d] : %s", i, media_name);
1173 //media_content_debug("media_path [%d] : %s", i, media_path);
1175 SAFE_FREE(media_id);
1176 SAFE_FREE(media_name);
1177 SAFE_FREE(media_path);
1181 media_filter_destroy(filter);
1184 /* To check performance */
1185 gettimeofday(&end, NULL);
1186 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1187 media_content_debug("Time : %ld\n", time);
1189 /* Third, Get item list of a folder */
1190 GList *item_list = NULL;
1192 for(i = 0; i < g_list_length(folder_list); i++) {
1194 char *folder_id = NULL;
1195 char *folder_name = NULL;
1196 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1198 media_folder_get_folder_id(folder_handle, &folder_id);
1199 media_folder_get_name(folder_handle, &folder_name);
1201 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1202 SAFE_FREE(folder_id);
1203 SAFE_FREE(folder_name);
1205 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1206 media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1209 media_content_error("media_folder_foreach_media_from_db success!", ret);
1210 char *media_id = NULL;
1211 char *media_name = NULL;
1212 char *media_path = NULL;
1213 media_content_type_e media_type = 0;
1215 for(j = 0; j < g_list_length(item_list); j++) {
1216 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1218 ret = media_info_get_media_id(media_handle, &media_id);
1219 if(ret != MEDIA_CONTENT_ERROR_NONE)
1220 media_content_error("media_info_get_media_id failed: %d", ret);
1221 ret = media_info_get_display_name(media_handle, &media_name);
1222 if(ret != MEDIA_CONTENT_ERROR_NONE)
1223 media_content_error("media_info_get_display_name failed: %d", ret);
1224 ret = media_info_get_file_path(media_handle, &media_path);
1225 if(ret != MEDIA_CONTENT_ERROR_NONE)
1226 media_content_error("media_info_get_file_path failed: %d", ret);
1227 ret = media_info_get_media_type(media_handle, &media_type);
1228 if(ret != MEDIA_CONTENT_ERROR_NONE)
1229 media_content_error("media_info_get_media_type failed: %d", ret);
1231 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1232 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1233 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1234 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1236 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1237 image_meta_h image_handle;
1238 int width = 0, height = 0;
1239 media_content_orientation_e orientation = 0;
1240 char *datetaken = NULL;
1242 ret = media_info_get_image(media_handle, &image_handle);
1243 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1244 media_content_error("media_info_get_image failed: %d", ret);
1246 ret = image_meta_get_width(image_handle, &width);
1247 if(ret != MEDIA_CONTENT_ERROR_NONE)
1248 media_content_error("error image_meta_get_width : [%d]", ret);
1249 ret = image_meta_get_height(image_handle, &height);
1250 if(ret != MEDIA_CONTENT_ERROR_NONE)
1251 media_content_error("error image_meta_get_height : [%d]", ret);
1252 ret = image_meta_get_orientation(image_handle, &orientation);
1253 if(ret != MEDIA_CONTENT_ERROR_NONE)
1254 media_content_error("error image_meta_get_orientation : [%d]", ret);
1255 ret = image_meta_get_date_taken(image_handle, &datetaken);
1256 if(ret != MEDIA_CONTENT_ERROR_NONE)
1257 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1259 media_content_debug("This is Image");
1260 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1263 SAFE_FREE(datetaken);
1264 ret = image_meta_destroy(image_handle);
1265 if(ret != MEDIA_CONTENT_ERROR_NONE)
1266 media_content_error("error image_meta_destroy : [%d]", ret);
1268 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1269 video_meta_h video_handle;
1270 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1274 ret = media_info_get_video(media_handle, &video_handle);
1275 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1276 media_content_error("media_info_get_video failed: %d", ret);
1278 ret = video_meta_get_artist(video_handle, &artist);
1279 if(ret != MEDIA_CONTENT_ERROR_NONE)
1280 media_content_error("error video_meta_get_artist : [%d]", ret);
1281 ret = video_meta_get_album(video_handle, &album);
1282 if(ret != MEDIA_CONTENT_ERROR_NONE)
1283 media_content_error("error video_meta_get_album : [%d]", ret);
1284 ret = video_meta_get_album_artist(video_handle, &album_artist);
1285 if(ret != MEDIA_CONTENT_ERROR_NONE)
1286 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1287 ret = video_meta_get_duration(video_handle, &duration);
1288 if(ret != MEDIA_CONTENT_ERROR_NONE)
1289 media_content_error("error video_meta_get_duration : [%d]", ret);
1290 ret = video_meta_get_played_time(video_handle, &time_played);
1291 if(ret != MEDIA_CONTENT_ERROR_NONE)
1292 media_content_error("error video_meta_get_played_time : [%d]", ret);
1294 media_content_debug("This is Video");
1295 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);
1301 SAFE_FREE(album_artist);
1303 ret = video_meta_destroy(video_handle);
1304 if(ret != MEDIA_CONTENT_ERROR_NONE)
1305 media_content_error("error video_meta_destroy : [%d]", ret);
1307 /* Get bookmar list in case of video */
1308 media_bookmark_h bm_handle;
1309 GList *bm_list = NULL;
1311 ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1312 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1313 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1315 media_content_debug("media_info_foreach_bookmark_from_db success");
1319 for(k = 0; k < g_list_length(bm_list); k++) {
1320 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1322 char *thumb_path = NULL;
1324 ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1325 if(ret != MEDIA_CONTENT_ERROR_NONE)
1326 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1327 ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1328 if(ret != MEDIA_CONTENT_ERROR_NONE)
1329 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1331 media_content_debug("Bookmark time : %d\nBookmar thumb: %s", marked_time, thumb_path);
1332 SAFE_FREE(thumb_path);
1335 /* Remove bookmark list */
1338 for(l = 0; l < g_list_length(bm_list); l++) {
1339 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1340 ret = media_bookmark_destroy(bm_handle);
1341 if(ret != MEDIA_CONTENT_ERROR_NONE)
1342 media_content_error("error media_bookmark_destroy : [%d]", ret);
1345 g_list_free(bm_list);
1351 SAFE_FREE(media_id);
1352 SAFE_FREE(media_name);
1353 SAFE_FREE(media_path);
1359 media_tag_h tag_handle = NULL;
1360 GList *tag_list = NULL;
1361 GList *media_list_in_tag = NULL;
1363 ret = media_tag_foreach_tag_from_db (filter, gallery_tag_item_cb, &tag_list);
1365 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1366 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1369 media_content_error("media_tag_foreach_tag_from_db success");
1370 char *tag_name = NULL;
1373 for(i = 0; i < g_list_length(tag_list); i++) {
1374 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1375 media_tag_get_tag_id(tag_handle, &tag_id);
1376 media_tag_get_name(tag_handle, &tag_name);
1378 media_content_debug("[%d] %s", tag_id, tag_name);
1380 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1381 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1382 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1385 media_content_error("media_tag_foreach_media_from_db success");
1387 media_info_h tag_media_handle;
1388 char *media_id = NULL;
1389 char *media_name = NULL;
1390 char *media_path = NULL;
1391 media_content_type_e media_type = 0;
1393 for(j = 0; j < g_list_length(media_list_in_tag); j++) {
1394 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1395 ret = media_info_get_media_id(tag_media_handle, &media_id);
1396 if(ret != MEDIA_CONTENT_ERROR_NONE)
1397 media_content_error("media_info_get_media_id failed: %d", ret);
1398 ret = media_info_get_display_name(tag_media_handle, &media_name);
1399 if(ret != MEDIA_CONTENT_ERROR_NONE)
1400 media_content_error("media_info_get_display_name failed: %d", ret);
1401 ret = media_info_get_file_path(tag_media_handle, &media_path);
1402 if(ret != MEDIA_CONTENT_ERROR_NONE)
1403 media_content_error("media_info_get_file_path failed: %d", ret);
1404 ret = media_info_get_media_type(tag_media_handle, &media_type);
1405 if(ret != MEDIA_CONTENT_ERROR_NONE)
1406 media_content_error("media_info_get_media_type failed: %d", ret);
1408 media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1409 media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1410 media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1411 media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1413 SAFE_FREE(media_id);
1414 SAFE_FREE(media_name);
1415 SAFE_FREE(media_path);
1417 SAFE_FREE(tag_name);
1421 /* Remove folder list */
1423 for(i = 0; i < g_list_length(folder_list); i++) {
1424 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1425 media_folder_destroy(folder_handle);
1428 g_list_free(folder_list);
1431 /* Remove all items list */
1433 for(i = 0; i < g_list_length(all_item_list); i++) {
1434 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1435 ret = media_info_destroy(media_handle);
1436 if(ret != MEDIA_CONTENT_ERROR_NONE)
1437 media_content_error("media_info_destroy failed: %d", ret);
1440 g_list_free(all_item_list);
1443 /* Remove items list */
1445 for(i = 0; i < g_list_length(item_list); i++) {
1446 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1447 ret = media_info_destroy(media_handle);
1448 if(ret != MEDIA_CONTENT_ERROR_NONE)
1449 media_content_error("media_info_destroy failed: %d", ret);
1452 g_list_free(item_list);
1455 /* Remove tag list */
1457 for(i = 0; i < g_list_length(tag_list); i++) {
1458 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1459 ret = media_tag_destroy(tag_handle);
1460 if(ret != MEDIA_CONTENT_ERROR_NONE)
1461 media_content_error("error media_tag_destroy : [%d]", ret);
1464 g_list_free(tag_list);
1467 /* Remove media list in a tag */
1468 if(media_list_in_tag) {
1469 for(i = 0; i < g_list_length(media_list_in_tag); i++) {
1470 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1471 ret = media_info_destroy(media_handle);
1472 if(ret != MEDIA_CONTENT_ERROR_NONE)
1473 media_content_error("media_info_destroy failed: %d", ret);
1476 g_list_free(media_list_in_tag);
1479 return MEDIA_CONTENT_ERROR_NONE;
1482 /*Get All Music file. sort by Title and not case sensitive*/
1483 int test_get_all_music_files(void)
1485 int ret = MEDIA_CONTENT_ERROR_NONE;
1486 int media_count = 0;
1490 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1492 ret = media_filter_create(&filter);
1493 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1494 media_content_error("Fail to create filter");
1497 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1498 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1499 media_filter_destroy(filter);
1500 media_content_error("Fail to set condition");
1503 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1504 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1505 media_filter_destroy(filter);
1506 media_content_error("Fail to set order");
1511 ret = media_info_get_media_count_from_db(filter, &media_count);
1512 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1513 media_filter_destroy(filter);
1514 media_content_error("Fail to get media count");
1518 media_content_debug("media_count : [%d]", media_count);
1520 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1521 if(ret != MEDIA_CONTENT_ERROR_NONE) {
1522 media_filter_destroy(filter);
1523 media_content_error("Fail to get media");
1527 ret = media_filter_destroy(filter);
1532 int test_media_info_operation(void)
1534 int ret = MEDIA_CONTENT_ERROR_NONE;
1535 int media_count = 0;
1537 media_content_debug("\n============Media info Test============\n\n");
1539 test_filter_create();
1541 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1542 if(ret != MEDIA_CONTENT_ERROR_NONE)
1543 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1545 media_content_debug("media_count : [%d]", media_count);
1547 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1548 if(ret == MEDIA_CONTENT_ERROR_NONE)
1549 media_content_debug("media_info_foreach_media_from_db is success");
1551 media_content_error("media_info_foreach_media_from_db is failed");
1553 test_filter_destroy();
1558 int test_media_info_operation_2(void)
1560 int ret = MEDIA_CONTENT_ERROR_NONE;
1561 int bookmark_count = 0;
1563 media_content_debug("\n============Media info Test 2============\n\n");
1565 test_filter_create();
1569 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
1570 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1571 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1573 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1575 media_content_debug("bookmark_count : [%d]", bookmark_count);
1577 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1581 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1582 if(ret != MEDIA_CONTENT_ERROR_NONE)
1583 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1585 media_content_debug("tag_count : [%d]", bookmark_count);
1587 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1588 if(ret != MEDIA_CONTENT_ERROR_NONE)
1589 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1591 test_filter_destroy();
1596 int test_folder_operation(void)
1598 int ret = MEDIA_CONTENT_ERROR_NONE;
1599 filter_h filter = NULL;
1600 media_folder_h folder = NULL;
1601 char *folder_id = NULL;
1604 media_content_debug("\n============Folder Test============\n\n");
1606 test_filter_create();
1608 ret = media_filter_create(&filter);
1609 if(ret != MEDIA_CONTENT_ERROR_NONE)
1611 media_content_error("[ERROR] media_folder_filter_create is failed");
1615 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*/
1616 media_filter_set_offset(filter, 0,5);
1617 media_filter_set_order(filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1618 media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1620 ret = media_folder_get_folder_count_from_db(filter, &count);
1621 media_content_debug("Folder count : [%d]", count);
1623 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1625 //test.3 get the media list in first folder
1626 filter_h m_filter = NULL;
1628 ret = media_filter_create(&m_filter);
1629 if(ret != MEDIA_CONTENT_ERROR_NONE)
1631 test_filter_destroy();
1632 media_filter_destroy(filter);
1633 media_content_error("[ERROR] media_info_filter_create is failed");
1637 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*/
1638 media_filter_set_offset(m_filter, 0,5);
1639 media_filter_set_order(m_filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1641 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1642 if(ret != MEDIA_CONTENT_ERROR_NONE)
1643 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1645 media_filter_destroy(filter);
1646 media_filter_destroy(m_filter);
1648 test_filter_destroy();
1650 /* fix prevent: Resource Leak */
1651 SAFE_FREE(folder_id);
1656 bool folder_update_cb(media_folder_h folder, void *user_data)
1658 char *folder_id = NULL;
1659 char *folder_path = NULL;
1660 char *folder_name = NULL;
1661 int folder_order = -1;
1666 ret = media_folder_get_folder_id(folder, &folder_id);
1667 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1668 media_content_debug("folder_id = [%s]", folder_id);
1669 SAFE_FREE(folder_id);
1671 ret = media_folder_get_path(folder, &folder_path);
1672 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1673 media_content_debug("folder_path = [%s]", folder_path);
1674 SAFE_FREE(folder_path);
1676 ret = media_folder_get_name(folder, &folder_name);
1677 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1678 media_content_debug("folder_name = [%s]", folder_name);
1679 SAFE_FREE(folder_name);
1681 ret = media_folder_get_order(folder, &folder_order);
1682 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1683 media_content_debug("folder_order = [%d]", folder_order);
1685 ret = media_folder_clone(&g_folder, folder);
1686 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1699 int test_folder_update(void)
1701 int ret = MEDIA_CONTENT_ERROR_NONE;
1703 int folder_count = 0;
1705 media_content_debug("\n============Folder Update Test============\n\n");
1707 ret = media_filter_create(&filter);
1708 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1710 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*/
1711 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, FOLDER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
1713 ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1715 media_content_debug("Folder count : %d", folder_count);
1717 ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1719 media_filter_destroy(filter);
1721 ret = media_folder_set_name(g_folder, "test_folder");
1723 ret = media_folder_set_order(g_folder, 200);
1725 ret = media_folder_update_to_db(g_folder);
1727 ret = media_folder_destroy(g_folder);
1732 int test_playlist_operation(void)
1734 int ret = MEDIA_CONTENT_ERROR_NONE;
1735 media_playlist_h playlist_1 = NULL;
1736 media_playlist_h playlist_2 = NULL;
1737 media_playlist_h playlist_3 = NULL;
1738 media_playlist_h playlist_4 = NULL;
1739 int playlist_id_1 = 0;
1740 int playlist_id_2 = 0;
1741 int playlist_id_3 = 0;
1742 const char *playlist_name_1 = "myPlaylist_1";
1743 const char *playlist_name_2 = "myPlaylist_2";
1744 const char *playlist_name_3 = "myPlaylist_3";
1745 int playlist_count = 0;
1746 int media_count = 0;
1752 filter_h filter = NULL;
1753 filter_h m_filter = NULL;
1755 media_content_debug("\n============Playlist Test============\n\n");
1757 /* Filter for playlist */
1759 const char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1761 ret = media_filter_create(&filter);
1762 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1763 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1765 /* Create Playlist */
1766 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1767 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1768 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1770 if(playlist_1 != NULL)
1772 /* Add media to Playlist */
1773 media_playlist_add_media(playlist_1, test_audio_id);
1774 media_playlist_add_media(playlist_1, test_audio_id);
1775 media_playlist_add_media(playlist_1, test_video_id);
1778 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
1779 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1782 media_playlist_update_to_db(playlist_1);
1785 if(playlist_2 != NULL)
1787 media_playlist_add_media(playlist_2, test_audio_id);
1788 media_playlist_add_media(playlist_2, test_audio_id);
1789 media_playlist_update_to_db(playlist_2);
1792 /* Get Playlist Count*/
1793 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1795 media_content_debug("playlist_count [%d]", playlist_count);
1798 GList *playlist_id_list = NULL;
1799 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1800 /* 64bit build issue */
1802 /* Get Playlist id*/
1803 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1804 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1805 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1807 media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1808 media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1809 media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1811 /* Export and import playlist */
1812 media_playlist_export_to_file(playlist_3, "/opt/usr/media/Music/playlist.m3u");
1813 media_playlist_import_from_file( "/opt/usr/media/Music/playlist.m3u", "playlist_4", &playlist_4);
1815 /* Filter for media*/
1816 ret = media_filter_create(&m_filter);
1818 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1820 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1822 /* Get media count */
1823 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1824 media_content_debug("playlist_1_media_count [%d]", media_count);
1826 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1827 media_content_debug("playlist_2_media_count [%d]", media_count);
1829 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1830 media_content_debug("playlist_3_media_count [%d]", media_count);
1832 /* Get media of playlist */
1833 GList *playlist_member_id_list = NULL;
1834 GList *playlist_member_id_list_1 = NULL;
1836 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1837 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1839 int playlist_member_id_1_1 =0;
1840 int playlist_member_id_1_2 =0;
1841 int playlist_member_id_1_3 =0;
1842 int playlist_member_id_2_1 =0;
1843 int playlist_member_id_2_2 =0;
1844 /* 64bit build issue */
1846 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1847 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1848 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1849 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1850 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1852 media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1853 media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1854 media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1855 media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1856 media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1858 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1859 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1860 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1861 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1862 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1863 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);
1865 /* Update Playlist */
1866 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1867 media_playlist_add_media(playlist_2, test_video_id);
1868 media_playlist_set_name(playlist_2, "test_playlist");
1869 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1870 media_playlist_update_to_db(playlist_2);
1872 /* Get Updated Playlist*/
1873 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1875 /* deletes the playlist */
1876 //media_playlist_delete_from_db(playlist_id_1);
1877 //media_playlist_delete_from_db(playlist_id_2);
1879 if(playlist_1 != NULL)
1880 media_playlist_destroy(playlist_1);
1881 if(playlist_2 != NULL)
1882 media_playlist_destroy(playlist_2);
1883 if(playlist_3 != NULL)
1884 media_playlist_destroy(playlist_3);
1885 if(playlist_4 != NULL)
1886 media_playlist_destroy(playlist_4);
1888 g_list_free(playlist_id_list);
1889 g_list_free(playlist_member_id_list);
1890 g_list_free(playlist_member_id_list_1);
1893 ret = media_filter_destroy(filter);
1894 if(m_filter != NULL)
1895 ret = media_filter_destroy(m_filter);
1900 int test_tag_operation(void)
1902 int ret = MEDIA_CONTENT_ERROR_NONE;
1909 const char *tag_name_1 = "myTag_1";
1910 const char *tag_name_2 = "myTag_2";
1911 const char *tag_name_3 = "myTag_3";
1913 int media_count = 0;
1916 media_content_debug("\n============Tag Test============\n\n");
1918 const char *g_condition = "TAG_NAME like \"%%my%%\"";
1920 ret = media_filter_create(&filter);
1922 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1924 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1927 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1928 if(ret != MEDIA_CONTENT_ERROR_NONE)
1929 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1930 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1931 if(ret != MEDIA_CONTENT_ERROR_NONE)
1932 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1933 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1934 if(ret != MEDIA_CONTENT_ERROR_NONE)
1935 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1937 /* Add media to Tag */
1938 ret = media_tag_add_media(tag_1, test_audio_id);
1939 if(ret != MEDIA_CONTENT_ERROR_NONE)
1940 media_content_error("error media_tag_add_media : [%d]", ret);
1941 ret = media_tag_add_media(tag_1, test_video_id);
1942 if(ret != MEDIA_CONTENT_ERROR_NONE)
1943 media_content_error("error media_tag_add_media : [%d]", ret);
1944 ret = media_tag_update_to_db(tag_1);
1945 if(ret != MEDIA_CONTENT_ERROR_NONE)
1946 media_content_error("error media_tag_update_to_db : [%d]", ret);
1948 ret = media_tag_add_media(tag_2, test_audio_id);
1949 if(ret != MEDIA_CONTENT_ERROR_NONE)
1950 media_content_error("error media_tag_add_media : [%d]", ret);
1951 ret = media_tag_update_to_db(tag_2);
1952 if(ret != MEDIA_CONTENT_ERROR_NONE)
1953 media_content_error("error media_tag_update_to_db : [%d]", ret);
1956 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1957 if(ret != MEDIA_CONTENT_ERROR_NONE)
1958 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1960 media_content_debug("tag_count [%d]", tag_count);
1963 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1964 if(ret != MEDIA_CONTENT_ERROR_NONE)
1965 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1968 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1969 if(ret != MEDIA_CONTENT_ERROR_NONE)
1970 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1972 media_content_debug("tag_id_1 [%d]", tag_id_1);
1974 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1975 if(ret != MEDIA_CONTENT_ERROR_NONE)
1976 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1978 media_content_debug("tag_id_2 [%d]", tag_id_2);
1980 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1981 if(ret != MEDIA_CONTENT_ERROR_NONE)
1982 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1984 media_content_debug("tag_id_3 [%d]", tag_id_3);
1986 /* Get media count */
1987 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1988 if(ret != MEDIA_CONTENT_ERROR_NONE)
1989 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1991 media_content_debug("tag_1_media_count [%d]", media_count);
1993 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1994 if(ret != MEDIA_CONTENT_ERROR_NONE)
1995 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1997 media_content_debug("tag_2_media_count [%d]", media_count);
1999 /* Get media of Tag */
2000 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
2001 if(ret != MEDIA_CONTENT_ERROR_NONE)
2002 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
2004 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
2005 if(ret != MEDIA_CONTENT_ERROR_NONE)
2006 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
2009 ret = media_tag_add_media(tag_2, test_video_id);
2010 if(ret != MEDIA_CONTENT_ERROR_NONE)
2011 media_content_error("error media_tag_add_media : [%d]", ret);
2012 ret = media_tag_set_name(tag_2, (char *)"test_tag");
2013 if(ret != MEDIA_CONTENT_ERROR_NONE)
2014 media_content_error("error media_tag_set_name : [%d]", ret);
2015 ret = media_tag_update_to_db(tag_2);
2016 if(ret != MEDIA_CONTENT_ERROR_NONE)
2017 media_content_error("error media_tag_update_to_db : [%d]", ret);
2019 /* Get Updated Tag*/
2020 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
2021 if(ret != MEDIA_CONTENT_ERROR_NONE)
2022 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
2024 /* deletes the tag */
2025 ret = media_tag_delete_from_db(tag_id_1);
2026 if(ret != MEDIA_CONTENT_ERROR_NONE)
2027 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2028 ret = media_tag_delete_from_db(tag_id_2);
2029 if(ret != MEDIA_CONTENT_ERROR_NONE)
2030 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2032 ret = media_tag_destroy(tag_1);
2033 if(ret != MEDIA_CONTENT_ERROR_NONE)
2034 media_content_error("error media_tag_destroy : [%d]", ret);
2035 ret = media_tag_destroy(tag_2);
2036 if(ret != MEDIA_CONTENT_ERROR_NONE)
2037 media_content_error("error media_tag_destroy : [%d]", ret);
2038 ret = media_filter_destroy(filter);
2039 if(ret != MEDIA_CONTENT_ERROR_NONE)
2040 media_content_error("error media_filter_destroy : [%d]", ret);
2046 int test_bookmark_operation(void)
2048 //bookmark is only supported for video information.
2049 int ret = MEDIA_CONTENT_ERROR_NONE;
2050 int bookmark_count = 0;
2053 media_content_debug("\n============Bookmark Test============\n\n");
2055 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2057 ret = media_filter_create(&filter);
2058 if(ret != MEDIA_CONTENT_ERROR_NONE)
2059 media_content_error("error media_filter_create : [%d]", ret);
2061 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2062 if(ret != MEDIA_CONTENT_ERROR_NONE)
2063 media_content_error("error media_filter_set_condition : [%d]", ret);
2065 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2066 if(ret != MEDIA_CONTENT_ERROR_NONE)
2067 media_content_error("error media_filter_set_order : [%d]", ret);
2069 //insert bookmark to video
2070 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
2071 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2072 if(ret != MEDIA_CONTENT_ERROR_NONE)
2073 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2075 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2076 if(ret != MEDIA_CONTENT_ERROR_NONE)
2077 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2079 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2080 if(ret != MEDIA_CONTENT_ERROR_NONE)
2081 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2083 media_content_debug("bookmark_count = [%d]", bookmark_count);
2085 ret = media_filter_destroy(filter);
2086 if(ret != MEDIA_CONTENT_ERROR_NONE)
2087 media_content_error("error media_filter_destroy : [%d]", ret);
2092 int test_album_list(void)
2094 media_content_debug("\n============Album Test============\n\n");
2096 int ret = MEDIA_CONTENT_ERROR_NONE;
2097 int album_count = 0;
2101 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2103 ret = media_filter_create(&filter);
2104 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2105 media_content_error("Fail to create filter");
2108 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2109 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2110 media_filter_destroy(filter);
2111 media_content_error("Fail to set condition");
2114 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2115 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2116 media_filter_destroy(filter);
2117 media_content_error("Fail to set order");
2121 ret = media_album_get_album_count_from_db(filter, &album_count);
2122 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2123 media_filter_destroy(filter);
2126 media_content_debug("album_count [%d]", album_count);
2129 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2130 if(ret != MEDIA_CONTENT_ERROR_NONE)
2131 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2133 ret = media_filter_destroy(filter);
2134 if(ret != MEDIA_CONTENT_ERROR_NONE)
2135 media_content_error("error media_filter_destroy : [%d]", ret);
2140 int test_group_operation(void)
2142 media_content_debug("\n============Group Test============\n\n");
2144 int ret = MEDIA_CONTENT_ERROR_NONE;
2145 int group_count = 0;
2148 ret = test_filter_create();
2149 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2150 media_content_error("[error(0x%08x)", ret);
2154 for(idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++)
2156 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2157 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2158 test_filter_destroy();
2159 media_content_error("media_group_get_group_count_from_db fail. idx=[%d]", ret, idx);
2162 media_content_debug("[%2d]group_count [%d]", idx, group_count);
2165 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2167 ret = test_filter_destroy();
2172 int test_update_operation()
2174 int ret = MEDIA_CONTENT_ERROR_NONE;
2176 media_info_h media_handle = NULL;
2177 GList *all_item_list = NULL;
2179 /* Get all item list */
2180 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2181 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2182 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2185 media_content_debug("media_info_foreach_media_from_db success");
2186 char *media_id = NULL;
2187 char *media_path = NULL;
2188 media_content_type_e media_type = 0;
2190 for(i = 0; i < g_list_length(all_item_list); i++) {
2191 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2193 ret = media_info_get_media_id(media_handle, &media_id);
2194 if(ret != MEDIA_CONTENT_ERROR_NONE)
2195 media_content_error("media_info_get_media_id failed: %d", ret);
2196 ret = media_info_get_file_path(media_handle, &media_path);
2197 if(ret != MEDIA_CONTENT_ERROR_NONE)
2198 media_content_error("media_info_get_file_path failed: %d", ret);
2199 ret = media_info_get_media_type(media_handle, &media_type);
2200 if(ret != MEDIA_CONTENT_ERROR_NONE)
2201 media_content_error("media_info_get_media_type failed: %d", ret);
2203 media_content_debug("media_id [%d] : %s", i, media_id);
2204 media_content_debug("media_type [%d] : %d", i, media_type);
2205 media_content_debug("media_path [%d] : %s", i, media_path);
2207 if(media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2208 image_meta_h image_handle;
2209 media_content_orientation_e orientation;
2211 ret = media_info_get_image(media_handle, &image_handle);
2212 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2213 media_content_error("media_info_get_image failed: %d", ret);
2215 media_content_debug("media_info_get_image success");
2218 orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2219 image_meta_set_orientation(image_handle, orientation);
2221 ret = image_meta_update_to_db(image_handle);
2222 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2223 media_content_error("image_meta_update_to_db failed: %d", ret);
2225 media_content_debug("image_meta_update_to_db success");
2229 } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2230 video_meta_h video_handle;
2232 ret = media_info_get_video(media_handle, &video_handle);
2233 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2234 media_content_error("media_info_get_video failed: %d", ret);
2236 media_content_debug("media_info_get_video success");
2239 video_meta_set_played_count(video_handle,5);
2240 video_meta_set_played_time(video_handle,5);
2241 video_meta_set_played_position(video_handle,5);
2242 video_meta_update_to_db(video_handle);
2244 ret = video_meta_update_to_db(video_handle);
2245 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2246 media_content_error("video_meta_update_to_db failed: %d", ret);
2248 media_content_debug("video_meta_update_to_db success");
2251 } else if(media_type == MEDIA_CONTENT_TYPE_MUSIC) {//update audio meta
2252 audio_meta_h audio_handle = NULL;
2253 ret = media_info_get_audio(media_handle, &audio_handle);
2254 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2255 media_content_error("media_info_get_audio failed: %d", ret);
2257 media_content_debug("media_info_get_audio success");
2259 audio_meta_set_played_count(audio_handle,5);
2260 audio_meta_set_played_time(audio_handle,1000);
2261 audio_meta_set_played_position(audio_handle,180);
2263 ret = audio_meta_update_to_db(audio_handle);
2264 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2265 media_content_error("audio_meta_update_to_db failed: %d", ret);
2267 media_content_debug("audio_meta_update_to_db success");
2275 /* fix prevent: Resource Leak */
2276 SAFE_FREE(media_id);
2277 SAFE_FREE(media_path);
2280 return MEDIA_CONTENT_ERROR_NONE;
2283 int test_insert(void)
2285 int ret = MEDIA_CONTENT_ERROR_NONE;
2286 const char *path = "/opt/usr/media/Images/Default.jpg";
2287 //const char *path = "/opt/usr/media/Others/other.txt";
2288 //char *path = NULL;
2289 media_info_h media_item = NULL;
2290 media_content_debug("\n============DB Insert Test============\n\n");
2292 ret = media_info_insert_to_db(path, &media_item);
2294 if((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL))
2296 media_content_debug("Insertion is success");
2300 media_content_error("Insertion is failed");
2301 ret = media_info_destroy(media_item);
2305 char *media_id = NULL;
2307 ret = media_info_get_media_id(media_item, &media_id);
2308 if(ret != MEDIA_CONTENT_ERROR_NONE)
2309 media_content_error("media_info_get_media_id failed: %d", ret);
2311 media_content_debug("Media ID: %s", media_id);
2313 SAFE_FREE(media_id);
2315 ret = media_info_update_to_db(media_item);
2316 if(ret == MEDIA_CONTENT_ERROR_NONE)
2317 media_content_debug("media_info_update_to_db is success");
2319 media_content_error("media_info_update_to_db is failed");
2321 ret = media_info_destroy(media_item);
2322 if(ret != MEDIA_CONTENT_ERROR_NONE)
2323 media_content_error("media_info_destroy failed: %d", ret);
2330 int ret = MEDIA_CONTENT_ERROR_NONE;
2331 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2332 const char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
2333 media_info_h move_media = NULL;
2335 ret = media_info_get_media_from_db(move_media_id, &move_media);
2336 if(ret == MEDIA_CONTENT_ERROR_NONE)
2337 media_content_debug("media_info_get_media_from_db success");
2339 media_content_error("media_info_get_media_from_db failed: %d", ret);
2341 media_content_debug("\n============DB Move Test============\n\n");
2344 ret = media_info_move_to_db(move_media, dst_path);
2346 if(ret == MEDIA_CONTENT_ERROR_NONE)
2347 media_content_debug("Move is success");
2349 media_content_error("Move is failed");
2351 ret = media_info_destroy(move_media);
2353 media_content_debug("There is no item : %s", move_media_id);
2359 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2361 char *thumbnail_path = NULL;
2362 int ret = MEDIA_CONTENT_ERROR_NONE;
2365 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2366 media_content_debug("error_code [%d]", error);
2367 media_content_debug("thumbnail_path [%s]", path);
2368 if(user_data != NULL)
2370 media_info_h media = (media_info_h)user_data;
2371 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2372 if(ret != MEDIA_CONTENT_ERROR_NONE)
2373 media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2375 media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2376 SAFE_FREE(thumbnail_path);
2377 ret = media_info_destroy(media);
2378 if(ret != MEDIA_CONTENT_ERROR_NONE)
2379 media_content_error("media_info_destroy failed: %d", ret);
2382 if(g_cnt == g_media_cnt)
2383 g_main_loop_quit(g_loop);
2388 bool thumbnail_create_cb(media_info_h media, void *user_data)
2390 char *media_id = NULL;
2391 media_info_h dst = NULL;
2392 int ret = MEDIA_CONTENT_ERROR_NONE;
2396 media_content_debug("NO Item");
2400 ret = media_info_get_media_id(media, &media_id);
2401 if(ret != MEDIA_CONTENT_ERROR_NONE)
2402 media_content_error("media_info_get_media_id failed: %d", ret);
2404 media_content_debug("media_id : [%s]", media_id);
2406 ret = media_info_clone(&dst, media);
2407 if(ret != MEDIA_CONTENT_ERROR_NONE)
2408 media_content_error("media_info_clone failed: %d", ret);
2411 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2412 if(ret != MEDIA_CONTENT_ERROR_NONE)
2413 media_content_error("media_info_create_thumbnail failed: %d", ret);
2416 /* fix prevent: Resource leak */
2417 SAFE_FREE(media_id);
2422 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2424 int ret = MEDIA_CONTENT_ERROR_NONE;
2426 char *media_id = NULL;
2427 media_info_h dst = NULL;
2433 media_content_debug("NO Item");
2437 ret = media_info_get_media_id(media, &media_id);
2438 if(ret != MEDIA_CONTENT_ERROR_NONE)
2439 media_content_error("media_info_get_media_id failed: %d", ret);
2441 media_content_debug("media_id : [%s]", media_id);
2443 ret = media_info_clone(&dst, media);
2444 if(ret != MEDIA_CONTENT_ERROR_NONE)
2445 media_content_error("media_info_clone failed: %d", ret);
2447 ret = media_info_cancel_thumbnail(dst);
2448 if(ret != MEDIA_CONTENT_ERROR_NONE)
2449 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2451 ret = media_info_destroy(dst);
2452 if(ret != MEDIA_CONTENT_ERROR_NONE)
2453 media_content_error("media_info_destroy failed: %d", ret);
2455 if(g_cnt == g_media_cnt)
2456 g_main_loop_quit(g_loop);
2458 /* fix prevent: Resource leak */
2459 SAFE_FREE(media_id);
2464 gboolean create_thumbnail_start(gpointer data)
2466 int ret = MEDIA_CONTENT_ERROR_NONE;
2468 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2470 if(ret == MEDIA_CONTENT_ERROR_NONE)
2471 media_content_debug("media_info_foreach_media_from_db is success");
2473 media_content_error("media_info_foreach_media_from_db is failed");
2478 gboolean cancel_thumbnail_start(gpointer data)
2480 int ret = MEDIA_CONTENT_ERROR_NONE;
2482 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2484 if(ret == MEDIA_CONTENT_ERROR_NONE)
2485 media_content_debug("media_info_foreach_media_from_db is success");
2487 media_content_error("media_info_foreach_media_from_db is failed");
2492 int test_create_thumbnail(int cancel)
2494 int ret = MEDIA_CONTENT_ERROR_NONE;
2495 GSource *source = NULL;
2496 GMainContext *context = NULL;
2498 test_filter_create();
2500 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2501 if(ret != MEDIA_CONTENT_ERROR_NONE)
2502 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2504 media_content_debug("media_count : [%d]", g_media_cnt);
2506 g_loop = g_main_loop_new(NULL, FALSE);
2507 context = g_main_loop_get_context(g_loop);
2508 source = g_idle_source_new();
2509 g_source_set_callback (source, create_thumbnail_start, NULL, NULL);
2510 g_source_attach (source, context);
2512 /* Logic to cancel */
2514 GSource *cancel_src = NULL;
2515 cancel_src = g_idle_source_new();
2516 g_source_set_callback (cancel_src, cancel_thumbnail_start, NULL, NULL);
2517 g_source_attach (cancel_src, context);
2520 g_main_loop_run(g_loop);
2521 g_main_loop_unref(g_loop);
2523 test_filter_destroy();
2528 int test_disconnect_database(void)
2530 int ret = MEDIA_CONTENT_ERROR_NONE;
2531 media_content_debug("\n============DB Disconnection Test============\n\n");
2533 ret = media_content_disconnect();
2535 if(ret == MEDIA_CONTENT_ERROR_NONE)
2536 media_content_debug("disconnection is success");
2538 media_content_error("disconnection is failed");
2543 int test_request_update_db(void)
2545 int ret = MEDIA_CONTENT_ERROR_NONE;
2546 media_info_h media = NULL;
2547 char *content_name = NULL;
2548 bool favorite = FALSE;
2550 //get the content of Over the horizon
2551 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2552 if(ret != MEDIA_CONTENT_ERROR_NONE)
2553 media_content_error("media_info_get_media_from_db failed: %d", ret);
2555 ret = media_info_set_content_name(media, "TEST_content_name");
2556 if(ret != MEDIA_CONTENT_ERROR_NONE)
2557 media_content_error("media_info_set_content_name failed: %d", ret);
2559 ret = media_info_set_favorite(media, TRUE);
2560 if(ret != MEDIA_CONTENT_ERROR_NONE)
2561 media_content_error("media_info_set_favorite failed: %d", ret);
2563 ret = media_info_update_to_db(media);
2564 if(ret == MEDIA_CONTENT_ERROR_NONE)
2565 media_content_debug("media_info_update_to_db is success");
2567 media_content_error("media_info_update_to_db is failed");
2570 media_info_destroy(media);
2572 /*get the updated value*/
2573 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2574 if(ret != MEDIA_CONTENT_ERROR_NONE)
2575 media_content_error("media_info_get_media_from_db failed: %d", ret);
2577 ret = media_info_get_content_name(media, &content_name);
2578 if(ret != MEDIA_CONTENT_ERROR_NONE)
2579 media_content_error("media_info_get_content_name failed: %d", ret);
2581 media_content_debug("content name [%s]", content_name);
2583 SAFE_FREE(content_name);
2585 ret = media_info_get_favorite(media, &favorite);
2586 if(ret != MEDIA_CONTENT_ERROR_NONE)
2587 media_content_error("media_info_get_favorite failed: %d", ret);
2589 media_content_debug("favorite [%d]", favorite);
2591 ret = media_info_destroy(media);
2596 int g_total_photo_size = 0;
2597 int g_total_video_size = 0;
2598 int g_total_mp3_size = 0;
2599 int g_total_voice_memo_size = 0;
2601 bool dft_cb(media_info_h media, void *user_data)
2603 unsigned long long file_size = 0;
2604 media_content_type_e media_type = -1;
2605 char *mime_type = NULL;
2606 int ret = MEDIA_CONTENT_ERROR_NONE;
2613 ret = media_info_get_media_type(media, &media_type);
2614 if(ret != MEDIA_CONTENT_ERROR_NONE)
2615 media_content_error("media_info_get_media_type failed: %d", ret);
2616 ret = media_info_get_size(media, &file_size);
2617 if(ret != MEDIA_CONTENT_ERROR_NONE)
2618 media_content_error("media_info_get_size failed: %d", ret);
2619 ret = media_info_get_mime_type(media, &mime_type);
2620 if(ret != MEDIA_CONTENT_ERROR_NONE)
2621 media_content_error("media_info_get_mime_type failed: %d", ret);
2623 if(media_type == MEDIA_CONTENT_TYPE_IMAGE)
2625 g_total_photo_size += file_size;
2627 else if(media_type == MEDIA_CONTENT_TYPE_VIDEO)
2629 g_total_video_size += file_size;
2631 else if(media_type == MEDIA_CONTENT_TYPE_SOUND)
2633 g_total_voice_memo_size += file_size;
2635 else if(media_type == MEDIA_CONTENT_TYPE_MUSIC)
2637 if((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2639 g_total_mp3_size += file_size;
2643 g_total_voice_memo_size += file_size;
2648 media_content_debug("invalid media_type");
2651 if(mime_type != NULL)
2660 int ret = MEDIA_CONTENT_ERROR_NONE;
2661 media_content_debug("\n============DFT_test============\n\n");
2663 filter_h filter = NULL;
2666 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2668 ret = media_filter_create(&filter);
2671 media_content_debug("[Internal Memory]\n");
2672 /*1. Photo ============================================================*/
2673 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2676 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2677 media_content_debug("Photo count = [%d]\n", media_cnt);
2680 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2681 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2683 /*2. Video ============================================================*/
2684 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2687 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2688 media_content_debug("Video count = [%d]\n", media_cnt);
2691 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2692 media_content_debug("Video size = [%d]\n", g_total_video_size);
2694 /*3. MP3 ============================================================*/
2695 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2698 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2699 media_content_debug("MP3 count = [%d]\n", media_cnt);
2702 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2703 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2705 /*4. Voice Memo ============================================================*/
2706 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);
2708 /*Get Voice Memo Count*/
2709 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2710 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2712 /*Get Voice Memo Size*/
2713 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2714 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2716 g_total_photo_size = 0;
2717 g_total_video_size = 0;
2718 g_total_mp3_size = 0;
2719 g_total_voice_memo_size = 0;
2722 media_content_debug("\n[External Memory]\n");
2723 /*1. Photo ============================================================*/
2724 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2727 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2728 media_content_debug("Photo count = [%d]\n", media_cnt);
2731 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2732 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2734 /*2. Video ============================================================*/
2735 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2738 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2739 media_content_debug("Video count = [%d]\n", media_cnt);
2742 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2743 media_content_debug("Video size = [%d]\n", g_total_video_size);
2745 /*3. MP3 ============================================================*/
2746 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2749 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2750 media_content_debug("MP3 count = [%d]\n", media_cnt);
2753 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2754 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2756 /*4. Voice Memo ============================================================*/
2757 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);
2759 /*Get Voice Memo Count*/
2760 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2761 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2763 /*Get Voice Memo Size*/
2764 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2765 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2766 ret = media_filter_destroy(filter);
2771 void insert_batch_cb(media_content_error_e error, void * user_data)
2773 media_content_debug("media_info_insert_batch_to_db completed!\n");
2776 int test_batch_operations()
2780 char *file_list[10];
2782 for (i = 0; i < 10; i++) {
2783 char filepath[255] = {0,};
2784 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2785 media_content_debug("File : %s\n", filepath);
2786 file_list[i] = strdup(filepath);
2789 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2790 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2791 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2795 char *condition = "MEDIA_PATH LIKE \'";
2796 strncat (condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2797 ret = media_filter_create(&filter);
2798 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2799 media_content_error("Fail to create filter");
2803 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2804 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2805 media_filter_destroy(filter);
2806 media_content_error("Fail to set condition");
2810 ret = media_info_delete_batch_from_db(filter);
2811 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2812 media_filter_destroy(filter);
2813 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2817 ret = media_filter_destroy(filter);
2822 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
2824 media_content_debug("media_info_insert_burst_shot_to_db completed![%d]\n", error);
2825 g_main_loop_quit(g_loop);
2828 gboolean test_insert_burst_shot_to_db_start(gpointer data)
2830 int ret = MEDIA_CONTENT_ERROR_NONE;
2832 char *file_list[10];
2834 for (i = 0; i < 10; i++) {
2835 char filepath[255] = {0,};
2836 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2837 media_content_debug("File : %s\n", filepath);
2838 file_list[i] = strdup(filepath);
2841 ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
2842 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2843 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
2849 int test_insert_burst_shot_to_db(void)
2851 GSource *source = NULL;
2852 GMainContext *context = NULL;
2854 g_loop = g_main_loop_new(NULL, FALSE);
2855 context = g_main_loop_get_context(g_loop);
2856 source = g_idle_source_new();
2857 g_source_set_callback (source, test_insert_burst_shot_to_db_start, NULL, NULL);
2858 g_source_attach (source, context);
2860 g_main_loop_run(g_loop);
2861 g_main_loop_unref(g_loop);
2866 void _scan_cb(media_content_error_e err, void *user_data)
2868 media_content_debug("scan callback is called : %d\n", err);
2869 g_main_loop_quit(g_loop);
2874 int test_scan_file()
2878 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2879 ret = media_content_scan_file(file_path);
2880 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2881 media_content_error("Fail to media_content_scan_file : %d", ret);
2888 gboolean test_scan_dir_start(gpointer data)
2892 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2894 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2896 if(ret != MEDIA_CONTENT_ERROR_NONE) {
2897 media_content_error("Fail to test_scan_dir_start : %d", ret);
2904 gboolean cancel_scan_dir_start(gpointer data)
2906 int ret = MEDIA_CONTENT_ERROR_NONE;
2908 const char *dir_path = "/opt/usr/media/Images";
2910 ret = media_content_cancel_scan_folder(dir_path);
2912 if(ret == MEDIA_CONTENT_ERROR_NONE)
2913 media_content_debug("media_content_cancel_scan_folder is success");
2915 media_content_error("media_content_cancel_scan_folder is failed");
2920 int test_scan_dir(int cancel)
2922 GSource *source = NULL;
2923 GMainContext *context = NULL;
2925 g_loop = g_main_loop_new(NULL, FALSE);
2926 context = g_main_loop_get_context(g_loop);
2927 source = g_idle_source_new();
2928 g_source_set_callback (source, test_scan_dir_start, NULL, NULL);
2929 g_source_attach (source, context);
2932 GSource *cancel_src = NULL;
2933 cancel_src = g_idle_source_new();
2934 g_source_set_callback (cancel_src, cancel_scan_dir_start, NULL, NULL);
2935 g_source_attach (cancel_src, context);
2938 g_main_loop_run(g_loop);
2939 g_main_loop_unref(g_loop);
2944 void _noti_cb(media_content_error_e error,
2946 media_content_db_update_item_type_e update_item,
2947 media_content_db_update_type_e update_type,
2948 media_content_type_e media_type,
2955 media_content_debug("noti success! : %d\n", error);
2957 media_content_debug("error occured! : %d\n", error);
2960 media_content_debug("Noti from PID(%d)\n", pid);
2962 if (update_item == MEDIA_ITEM_FILE) {
2963 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
2964 } else if (update_item == MEDIA_ITEM_DIRECTORY) {
2965 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
2968 if (update_type == MEDIA_CONTENT_INSERT) {
2969 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
2970 } else if (update_type == MEDIA_CONTENT_DELETE) {
2971 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
2972 } else if (update_type == MEDIA_CONTENT_UPDATE) {
2973 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
2976 media_content_debug("content type : %d\n", media_type);
2979 media_content_debug("path : %s\n", path);
2981 media_content_debug("path not\n");
2984 media_content_debug("uuid : %s\n", uuid);
2986 media_content_debug("uuid not\n");
2989 media_content_debug("mime_type : %s\n", mime_type);
2991 media_content_debug("mime not\n");
2993 if (user_data) media_content_debug("String : %s\n", (char *)user_data);
2995 //g_main_loop_quit(g_loop);
2999 gboolean _send_noti_operations(gpointer data)
3001 int ret = MEDIA_CONTENT_ERROR_NONE;
3003 /* First of all, noti subscription */
3004 char *user_str = strdup("hi");
3005 media_content_set_db_updated_cb(_noti_cb, (void*)user_str);
3007 /* media_info_insert_to_db */
3008 media_info_h media_item = NULL;
3009 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3011 ret = media_info_insert_to_db(path, &media_item);
3012 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3013 media_content_error("media_info_insert_to_db failed : %d", ret);
3014 media_info_destroy(media_item);
3018 media_content_debug("media_info_insert_to_db success");
3020 /* media_info_delete_batch_from_db */
3022 char *condition = "MEDIA_PATH LIKE \'";
3023 strncat (condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
3025 ret = media_filter_create(&filter);
3026 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3027 media_content_error("Fail to create filter");
3028 media_info_destroy(media_item);
3032 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3033 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3034 media_filter_destroy(filter);
3035 media_info_destroy(media_item);
3036 media_content_error("Fail to set condition");
3039 ret = media_info_delete_batch_from_db(filter);
3040 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3041 media_filter_destroy(filter);
3042 media_info_destroy(media_item);
3043 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3047 media_filter_destroy(filter);
3049 /* media_info_update_to_db */
3050 ret = media_info_update_to_db(media_item);
3051 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3052 media_content_error("media_info_update_to_db failed : %d\n", ret);
3053 media_info_destroy(media_item);
3057 media_info_destroy(media_item);
3064 int ret = MEDIA_CONTENT_ERROR_NONE;
3065 GSource *source = NULL;
3066 GMainContext *context = NULL;
3068 g_loop = g_main_loop_new(NULL, FALSE);
3069 context = g_main_loop_get_context(g_loop);
3070 source = g_idle_source_new();
3071 g_source_set_callback (source, _send_noti_operations, NULL, NULL);
3072 g_source_attach (source, context);
3074 g_main_loop_run(g_loop);
3075 g_main_loop_unref(g_loop);
3077 test_filter_destroy();
3078 media_content_unset_db_updated_cb();
3083 int test_create_handle(void)
3085 int ret = MEDIA_CONTENT_ERROR_NONE;
3086 media_info_h media = NULL;
3087 const char *path = "/home/owner/content/test/test.txt";
3088 char *str_value = NULL;
3090 bool bool_value = FALSE;
3091 unsigned long long content_size = 0;
3092 time_t modified_time = 0;
3093 double double_value = 0.0;
3095 ret = media_info_create(path, &media);
3097 ret = media_info_set_title(media, "test_title");
3098 ret = media_info_set_album(media, "test_album");
3099 ret = media_info_set_artist(media, "test_artist");
3100 ret = media_info_set_genre(media, "test_genre");
3101 ret = media_info_set_recorded_date(media, "test_recorded_date");
3102 ret = media_info_set_age_rating(media, "test_age_rating");
3103 ret = media_info_set_author(media, "test_author");
3104 ret = media_info_set_category(media, "test_category");
3105 ret = media_info_set_content_name(media, "test_content_name");
3106 ret = media_info_set_description(media, "test_description");
3107 ret = media_info_set_display_name(media, "test_display_name");
3108 ret = media_info_set_keyword(media, "test_keyword");
3109 ret = media_info_set_location_tag(media, "test_location_tag");
3110 ret = media_info_set_weather(media, "test_weather");
3111 ret = media_info_set_provider(media, "test_provider");
3113 ret = media_info_set_altitude(media, 100.10);
3114 ret = media_info_set_latitude(media, 200.20);
3115 ret = media_info_set_longitude(media, 300.30);
3116 ret = media_info_set_rating(media, 10);
3117 ret = media_info_set_played_time(media);
3118 ret = media_info_set_favorite(media, TRUE);
3119 ret = media_info_increase_played_count(media);
3120 ret = media_info_set_added_time(media, 12345);
3122 ret = media_info_insert_to_db_with_data(media);
3123 if(ret != MEDIA_CONTENT_ERROR_NONE)
3125 media_content_error("media_info_insert_to_db_with_data failed : %d\n", ret);
3126 media_info_destroy(media);
3130 ret = media_info_get_media_id(media, &str_value);
3131 media_content_debug("media_id = [%s]", str_value);
3132 SAFE_FREE(str_value);
3134 ret = media_info_get_file_path(media, &str_value);
3135 media_content_debug("file_path = [%s]", str_value);
3136 SAFE_FREE(str_value);
3138 ret = media_info_get_title(media, &str_value);
3139 media_content_debug("title = [%s]", str_value);
3140 SAFE_FREE(str_value);
3142 ret = media_info_get_age_rating(media, &str_value);
3143 media_content_debug("age_rating = [%s]", str_value);
3144 SAFE_FREE(str_value);
3146 ret = media_info_get_author(media, &str_value);
3147 media_content_debug("author = [%s]", str_value);
3148 SAFE_FREE(str_value);
3150 ret = media_info_get_category(media, &str_value);
3151 media_content_debug("category = [%s]", str_value);
3152 SAFE_FREE(str_value);
3154 ret = media_info_get_content_name(media, &str_value);
3155 media_content_debug("content_name = [%s]", str_value);
3156 SAFE_FREE(str_value);
3158 ret = media_info_get_description(media, &str_value);
3159 media_content_debug("description = [%s]", str_value);
3160 SAFE_FREE(str_value);
3162 ret = media_info_get_display_name(media, &str_value);
3163 media_content_debug("display_name = [%s]", str_value);
3164 SAFE_FREE(str_value);
3166 ret = media_info_get_keyword(media, &str_value);
3167 media_content_debug("keyword = [%s]", str_value);
3168 SAFE_FREE(str_value);
3170 ret = media_info_get_location_tag(media, &str_value);
3171 media_content_debug("location_tag = [%s]", str_value);
3172 SAFE_FREE(str_value);
3174 ret = media_info_get_weather(media, &str_value);
3175 media_content_debug("weather = [%s]", str_value);
3176 SAFE_FREE(str_value);
3178 ret = media_info_get_provider(media, &str_value);
3179 media_content_debug("provider = [%s]", str_value);
3180 SAFE_FREE(str_value);
3182 ret = media_info_get_longitude(media, &double_value);
3183 media_content_debug("longitude = [%lf]", double_value);
3185 ret = media_info_get_latitude(media, &double_value);
3186 media_content_debug("latitude = [%lf]", double_value);
3188 ret = media_info_get_altitude(media, &double_value);
3189 media_content_debug("altitud = [%lf]", double_value);
3191 ret = media_info_get_rating(media, &int_value);
3192 media_content_debug("rating = [%d]", int_value);
3194 ret = media_info_get_favorite(media, &bool_value);
3195 media_content_debug("favorite = [%d]", bool_value);
3197 ret = media_info_get_played_time(media, &modified_time);
3198 media_content_debug("played_time = [%d]", modified_time);
3200 ret = media_info_get_played_count(media, &int_value);
3201 media_content_debug("played_count = [%d]", int_value);
3203 ret = media_info_get_added_time(media, &modified_time);
3204 media_content_debug("added_time = [%d]", modified_time);
3206 ret = media_info_get_size(media, &content_size);
3207 media_content_debug("size = [%d]", content_size);
3209 ret = media_info_get_modified_time(media, &modified_time);
3210 media_content_debug("modified_time = [%d]", modified_time);
3212 ret = media_info_get_media_type(media, (media_content_type_e *)&int_value);
3213 media_content_debug("media_type = [%d]", int_value);
3215 ret = media_info_get_storage_type(media, (media_content_storage_e *)&int_value);
3216 media_content_debug("storage_type = [%d]", int_value);
3218 media_info_destroy(media);
3224 bool media_face_test_cb(media_face_h face, void *user_data)
3226 char *face_id = NULL;
3227 char *media_id = NULL;
3228 unsigned int rect_x = 0;
3229 unsigned int rect_y = 0;
3230 unsigned int rect_w = 0;
3231 unsigned int rect_h = 0;
3232 media_content_orientation_e orientation = 0;
3233 char *face_tag = NULL;
3235 media_face_get_face_id(face, &face_id);
3236 media_face_get_media_id(face, &media_id);
3237 media_face_get_face_rect(face, &rect_x, &rect_y, &rect_w, &rect_h);
3238 media_face_get_orientation(face, &orientation);
3239 media_face_get_tag(face, &face_tag);
3241 media_content_debug("face_id [%s] media_id [%s]", face_id, media_id);
3242 media_content_debug("rect_x [%d] rect_y [%d] rect_w [%d] rect_h [%d] orientation [%d]", rect_x, rect_y, rect_w, rect_h, orientation);
3243 media_content_debug("tag [%s]", face_tag);
3245 if (user_data != NULL) {
3246 media_face_h new_face = NULL;
3247 media_face_clone(&new_face, face);
3249 GList **list = (GList**)user_data;
3250 *list = g_list_append(*list, new_face);
3254 SAFE_FREE(media_id);
3255 SAFE_FREE(face_tag);
3262 int ret = MEDIA_CONTENT_ERROR_NONE;
3263 filter_h filter = NULL;
3264 GList *all_item_list = NULL;
3267 ret = media_filter_create(&filter);
3268 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3270 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", MEDIA_CONTENT_COLLATE_DEFAULT);
3271 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3272 media_filter_destroy(filter);
3273 media_content_error("Fail to set condition");
3277 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
3278 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3279 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
3280 media_filter_destroy(filter);
3284 for(i = 0; i < g_list_length(all_item_list); i++) {
3285 media_info_h media_handle = NULL;
3286 char *media_id = NULL;
3289 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
3291 ret = media_info_get_media_id(media_handle, &media_id);
3292 if(ret != MEDIA_CONTENT_ERROR_NONE)
3293 media_content_error("media_info_get_media_id failed: %d", ret);
3295 ret = media_info_get_face_count_from_db(media_id, filter, &face_count);
3296 if(ret != MEDIA_CONTENT_ERROR_NONE)
3297 media_content_error("media_info_get_face_count_from_db failed: %d", ret);
3299 media_content_error("media_id [%s] face_count [%d]", media_id, face_count);
3301 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, NULL);
3302 if(ret != MEDIA_CONTENT_ERROR_NONE)
3303 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
3305 media_info_destroy(media_handle);
3308 media_filter_destroy(filter);
3313 int test_face_add_del(void)
3315 int ret = MEDIA_CONTENT_ERROR_NONE;
3316 char *media_id = "ecca7366-e085-41d8-a12b-cbdfc2b9c5fc";
3319 media_face_h face = NULL;
3321 char *face_tag = "test_face_tag";
3323 ret = media_face_create(media_id, &face);
3324 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_face_create");
3326 ret = media_face_set_face_rect(face, 10, 12, 50, 100);
3327 ret = media_face_set_orientation(face, 5);
3328 ret = media_face_set_tag(face, face_tag);
3330 ret = media_face_insert_to_db(face);
3331 ret = media_face_destroy(face);
3334 GList *all_item_list = NULL;
3335 filter_h filter = NULL;
3336 ret = media_filter_create(&filter);
3337 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3339 ret = media_filter_set_condition(filter, "MEDIA_FACE_TAG IS NOT NULL", MEDIA_CONTENT_COLLATE_DEFAULT);
3340 if(ret != MEDIA_CONTENT_ERROR_NONE) {
3341 media_filter_destroy(filter);
3342 media_content_error("Fail to set condition");
3346 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, &all_item_list);
3348 if (g_list_length(all_item_list) > 0 ) {
3349 media_face_h face_handle = NULL;
3350 face_handle = (media_face_h)g_list_nth_data(all_item_list, 0);
3352 ret = media_face_set_face_rect(face_handle, 20, 22, 70, 70);
3353 ret = media_face_set_orientation(face_handle, 3);
3354 ret = media_face_set_tag(face_handle, NULL);
3355 ret = media_face_update_to_db(face_handle);
3357 media_face_destroy(face_handle);
3360 media_filter_destroy(filter);
3363 char *face_id = "5e58a3a8-f0b2-4c29-b799-b49a70dc2313";
3366 ret = media_face_delete_from_db(face_id);
3371 int main(int argc, char *argv[])
3373 int ret = MEDIA_CONTENT_ERROR_NONE;
3375 media_content_debug("--- content manager test start ---\n\n");
3377 ret = test_connect_database();
3378 if(ret != MEDIA_CONTENT_ERROR_NONE)
3379 return MEDIA_CONTENT_ERROR_NONE;
3383 if(ret != MEDIA_CONTENT_ERROR_NONE)
3386 ret = test_gallery_scenario();
3387 if(ret != MEDIA_CONTENT_ERROR_NONE)
3390 ret = test_get_all_music_files();
3391 if(ret != MEDIA_CONTENT_ERROR_NONE)
3394 ret = test_media_info_operation();
3395 if(ret != MEDIA_CONTENT_ERROR_NONE)
3398 ret = test_folder_operation();
3399 if(ret != MEDIA_CONTENT_ERROR_NONE)
3402 ret = test_folder_update();
3403 if(ret != MEDIA_CONTENT_ERROR_NONE)
3406 ret = test_playlist_operation();
3407 if(ret != MEDIA_CONTENT_ERROR_NONE)
3410 ret = test_tag_operation();
3411 if(ret != MEDIA_CONTENT_ERROR_NONE)
3414 ret = test_bookmark_operation();
3415 if(ret != MEDIA_CONTENT_ERROR_NONE)
3418 ret = test_album_list();
3419 if(ret != MEDIA_CONTENT_ERROR_NONE)
3422 ret = test_group_operation();
3423 if(ret != MEDIA_CONTENT_ERROR_NONE)
3426 ret = test_update_operation();
3427 if(ret != MEDIA_CONTENT_ERROR_NONE)
3430 ret = test_insert();
3431 if(ret != MEDIA_CONTENT_ERROR_NONE)
3435 if(ret != MEDIA_CONTENT_ERROR_NONE)
3438 ret = test_create_thumbnail(TRUE);
3439 if(ret != MEDIA_CONTENT_ERROR_NONE)
3442 ret = test_request_update_db();
3443 if(ret != MEDIA_CONTENT_ERROR_NONE)
3447 if(ret != MEDIA_CONTENT_ERROR_NONE)
3450 ret = test_batch_operations();
3451 if(ret != MEDIA_CONTENT_ERROR_NONE)
3452 return MEDIA_CONTENT_ERROR_NONE;
3454 ret = test_insert_burst_shot_to_db();
3455 if(ret != MEDIA_CONTENT_ERROR_NONE)
3456 return MEDIA_CONTENT_ERROR_NONE;
3458 ret = test_scan_file();
3459 if(ret != MEDIA_CONTENT_ERROR_NONE)
3460 return MEDIA_CONTENT_ERROR_NONE;
3462 ret = test_scan_dir(true);
3463 if(ret != MEDIA_CONTENT_ERROR_NONE)
3464 return MEDIA_CONTENT_ERROR_NONE;
3467 if(ret != MEDIA_CONTENT_ERROR_NONE)
3468 return MEDIA_CONTENT_ERROR_NONE;
3470 ret = test_create_handle();
3471 if(ret != MEDIA_CONTENT_ERROR_NONE)
3472 return MEDIA_CONTENT_ERROR_NONE;
3475 if(ret != MEDIA_CONTENT_ERROR_NONE)
3476 return MEDIA_CONTENT_ERROR_NONE;
3478 ret = test_face_add_del();
3479 if(ret != MEDIA_CONTENT_ERROR_NONE)
3480 return MEDIA_CONTENT_ERROR_NONE;
3483 ret = test_disconnect_database();
3484 if(ret != MEDIA_CONTENT_ERROR_NONE)
3487 media_content_debug("--- content manager test end ---\n");