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;
310 media_content_debug("NO Item");
314 ret = media_info_get_media_type(media, &media_type);
315 if (ret != MEDIA_CONTENT_ERROR_NONE)
316 media_content_error("error when get info : [%d]", ret);
317 media_content_debug("media_type : [%d]", media_type);
319 ret = media_info_get_media_id(media, &media_id);
320 if (ret != MEDIA_CONTENT_ERROR_NONE)
321 media_content_error("error when get info : [%d]", ret);
322 media_content_debug("media_id : [%s]", media_id);
324 ret = media_info_get_file_path(media, &c_value);
325 if (ret != MEDIA_CONTENT_ERROR_NONE)
326 media_content_error("error when get info : [%d]", ret);
327 media_content_debug("file_path : [%s]", c_value);
333 bool b_value = false;
334 unsigned long long size = 0;
336 if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
339 if (media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE) {
340 get_audio_meta(audio);
341 ret = audio_meta_destroy(audio);
342 if (ret != MEDIA_CONTENT_ERROR_NONE)
343 media_content_error("error audio_meta_destroy : [%d]", ret);
345 media_content_error("[audio_error]");
347 } else if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
349 media_content_orientation_e orientation = 0;
350 bool is_burst_shot = false;
351 char *burst_id = NULL;
352 char *weather = NULL;
354 if (media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE) {
355 ret = image_meta_get_orientation(image, &orientation);
356 if (ret != MEDIA_CONTENT_ERROR_NONE)
357 media_content_error("error image_meta_get_orientation : [%d]", ret);
359 media_content_debug("[image] orientation : %d", orientation);
361 ret = image_meta_is_burst_shot(image, &is_burst_shot);
362 if (ret != MEDIA_CONTENT_ERROR_NONE)
363 media_content_error("error image_meta_is_burst_shot : [%d]", ret);
365 ret = image_meta_get_burst_id(image, &burst_id);
366 if (ret != MEDIA_CONTENT_ERROR_NONE)
367 media_content_error("error image_meta_get_burst_id : [%d]", ret);
369 media_content_debug("[image] burst_id : [%s]", burst_id);
374 ret = image_meta_destroy(image);
375 if (ret != MEDIA_CONTENT_ERROR_NONE)
376 media_content_error("error image_meta_destroy : [%d]", ret);
378 media_content_error("[image_error]");
380 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
383 if (media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE) {
384 get_video_meta(video);
385 ret = video_meta_destroy(video);
386 if (ret != MEDIA_CONTENT_ERROR_NONE)
387 media_content_error("error video_meta_destroy : [%d]", ret);
389 media_content_error("[video_error]");
392 media_content_debug("Other Content");
395 media_content_debug("=== media_info ===");
396 ret = media_info_get_file_path(media, &c_value);
397 if (ret != MEDIA_CONTENT_ERROR_NONE)
398 media_content_error("error when get info : [%d]", ret);
399 media_content_debug("file_path : [%s]", c_value);
402 ret = media_info_get_display_name(media, &c_value);
403 if (ret != MEDIA_CONTENT_ERROR_NONE)
404 media_content_error("error when get info : [%d]", ret);
405 media_content_debug("display_name : [%s]", c_value);
408 ret = media_info_get_mime_type(media, &c_value);
409 if (ret != MEDIA_CONTENT_ERROR_NONE)
410 media_content_error("error when get info : [%d]", ret);
411 media_content_debug("mime_type : [%s]", c_value);
414 ret = media_info_get_thumbnail_path(media, &c_value);
415 if (ret != MEDIA_CONTENT_ERROR_NONE)
416 media_content_error("error when get info : [%d]", ret);
417 media_content_debug("thumbnail_path : [%s]", c_value);
420 ret = media_info_get_description(media, &c_value);
421 if (ret != MEDIA_CONTENT_ERROR_NONE)
422 media_content_error("error when get info : [%d]", ret);
423 media_content_debug("description : [%s]", c_value);
426 ret = media_info_get_author(media, &c_value);
427 if (ret != MEDIA_CONTENT_ERROR_NONE)
428 media_content_error("error when get info : [%d]", ret);
429 media_content_debug("author : [%s]", c_value);
432 ret = media_info_get_provider(media, &c_value);
433 if (ret != MEDIA_CONTENT_ERROR_NONE)
434 media_content_error("error when get info : [%d]", ret);
435 media_content_debug("provider : [%s]", c_value);
438 ret = media_info_get_content_name(media, &c_value);
439 if (ret != MEDIA_CONTENT_ERROR_NONE)
440 media_content_error("error when get info : [%d]", ret);
441 media_content_debug("content_name : [%s]", c_value);
444 ret = media_info_get_category(media, &c_value);
445 if (ret != MEDIA_CONTENT_ERROR_NONE)
446 media_content_error("error when get info : [%d]", ret);
447 media_content_debug("category : [%s]", c_value);
450 ret = media_info_get_location_tag(media, &c_value);
451 if (ret != MEDIA_CONTENT_ERROR_NONE)
452 media_content_error("error when get info : [%d]", ret);
453 media_content_debug("location_tag : [%s]", c_value);
456 ret = media_info_get_age_rating(media, &c_value);
457 if (ret != MEDIA_CONTENT_ERROR_NONE)
458 media_content_error("error when get info : [%d]", ret);
459 media_content_debug("age_rating : [%s]", c_value);
462 ret = media_info_get_keyword(media, &c_value);
463 if (ret != MEDIA_CONTENT_ERROR_NONE)
464 media_content_error("error when get info : [%d]", ret);
465 media_content_debug("keyword : [%s]", c_value);
468 ret = media_info_get_size(media, &size);
469 if (ret != MEDIA_CONTENT_ERROR_NONE)
470 media_content_error("error when get info : [%d]", ret);
471 media_content_debug("size : [%lld]", size);
473 ret = media_info_get_added_time(media, &t_value);
474 if (ret != MEDIA_CONTENT_ERROR_NONE)
475 media_content_error("error when get info : [%d]", ret);
476 media_content_debug("added_time : [%d]", t_value);
478 ret = media_info_get_modified_time(media, &t_value);
479 if (ret != MEDIA_CONTENT_ERROR_NONE)
480 media_content_error("error when get info : [%d]", ret);
481 media_content_debug("modified_time : [%d]", t_value);
483 ret = media_info_get_timeline(media, &t_value);
484 if (ret != MEDIA_CONTENT_ERROR_NONE)
485 media_content_error("error when get info : [%d]", ret);
486 media_content_debug("timeline : [%d]", t_value);
488 ret = media_info_get_rating(media, &i_value);
489 if (ret != MEDIA_CONTENT_ERROR_NONE)
490 media_content_error("error when get info : [%d]", ret);
491 media_content_debug("rating : [%d]", i_value);
493 ret = media_info_get_favorite(media, &b_value);
494 if (ret != MEDIA_CONTENT_ERROR_NONE)
495 media_content_error("error when get info : [%d]", ret);
496 media_content_debug("favorite : [%d]", b_value);
498 ret = media_info_is_drm(media, &b_value);
499 if (ret != MEDIA_CONTENT_ERROR_NONE)
500 media_content_error("error when get info : [%d]", ret);
501 media_content_debug("is_drm : [%d]", b_value);
503 ret = media_info_set_weather(media, "Sunny");
504 if (ret != MEDIA_CONTENT_ERROR_NONE) {
505 media_content_error("Fail to set weather");
508 ret = media_info_get_weather(media, &c_value);
509 if (ret != MEDIA_CONTENT_ERROR_NONE)
510 media_content_error("error when get info : [%d]", ret);
511 media_content_debug("weather : [%s]", c_value);
514 /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
515 //ret = media_info_set_location_tag(media, "Test location tag");
516 //media_info_update_to_db(media);
523 bool folder_list_cb(media_folder_h folder, void *user_data)
526 char *folder_id = NULL;
527 char *str_val = NULL;
529 media_content_storage_e storage_type;
531 media_folder_h *_folder = (media_folder_h*)user_data;
533 media_content_debug("===========================");
534 if (folder != NULL) {
536 media_folder_clone(_folder, folder);
538 if (media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE) {
539 media_content_error("[ERROR] media_folder_get_folder_id is failed");
542 media_content_debug("folder_id = [%s]", folder_id);
544 if (media_folder_get_parent_folder_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
545 media_content_error("[ERROR] media_folder_get_parent_folder_id is failed");
548 media_content_debug("parent_folder_id = [%s]", str_val);
550 if (media_folder_get_path(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
551 SAFE_FREE(folder_id);
552 media_content_error("[ERROR] media_folder_get_path is failed");
555 media_content_debug("folder_path = [%s]", str_val);
558 if (media_folder_get_name(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
559 SAFE_FREE(folder_id);
560 media_content_error("[ERROR] media_folder_get_name is failed");
563 media_content_debug("folder_name = [%s]", str_val);
566 if (media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE) {
567 SAFE_FREE(folder_id);
568 media_content_error("[ERROR] media_folder_get_storage_type is failed");
571 media_content_debug("storage_type = [%d]", storage_type);
573 if (media_folder_get_storage_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
574 SAFE_FREE(folder_id);
575 media_content_error("[ERROR] media_folder_get_name is failed");
578 media_content_debug("storage_id = [%s]", str_val);
580 if (media_folder_get_order(folder, &int_val) != MEDIA_CONTENT_ERROR_NONE) {
581 media_content_error("[ERROR] media_folder_get_order is failed");
584 media_content_debug("folder_order = [%d]", int_val);
586 if (media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE) {
587 SAFE_FREE(folder_id);
588 media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
592 if (media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
593 SAFE_FREE(folder_id);
594 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
598 SAFE_FREE(folder_id);
607 bool test_album_from_db(int album_id)
609 int ret = MEDIA_CONTENT_ERROR_NONE;
610 media_album_h album_h;
611 int test_album_id = 0;
612 char *album_name = NULL;
615 ret = media_album_get_album_from_db(album_id, &album_h);
616 if (ret != MEDIA_CONTENT_ERROR_NONE) {
617 media_content_error("error when get album");
621 if (media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE) {
622 media_album_destroy(album_h);
626 media_content_debug("test_album_id : [%d]", test_album_id);
628 if (media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
629 media_album_destroy(album_h);
633 media_content_debug("album_name : [%s]", album_name);
635 if (media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE) {
636 media_album_destroy(album_h);
637 /* fix prevent: Resource Leak */
638 SAFE_FREE(album_name);
642 media_content_debug("artist : [%s]", artist);
644 SAFE_FREE(album_name);
647 media_album_destroy(album_h);
652 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
655 char *playlist_name = NULL;
656 media_playlist_h playlist_h;
657 char *playlist_thumbnail_path = NULL;
659 media_content_debug("playlist_list_cb ======");
661 GList **list = (GList**)user_data;
664 if (playlist == NULL) {
665 media_content_debug(" playlist handle is NULL");
669 media_playlist_get_playlist_id(playlist, &playlist_id);
670 media_content_debug("playlist_id : %d", playlist_id);
671 /* 64bit build issue */
673 if (user_data != NULL)
674 *list = g_list_append(*list, (gpointer)playlist_id);
676 media_playlist_get_name(playlist, &playlist_name);
677 media_content_debug("playlist_name : %s", playlist_name);
678 SAFE_FREE(playlist_name);
680 media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
681 media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
682 SAFE_FREE(playlist_thumbnail_path);
684 media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
686 media_playlist_destroy(playlist_h);
691 bool tag_list_cb(media_tag_h tag, void *user_data)
694 char *tag_name = NULL;
695 int ret = MEDIA_CONTENT_ERROR_NONE;
698 media_content_debug(" tag handle is NULL");
702 ret = media_tag_get_tag_id(tag, &tag_id);
703 if (ret != MEDIA_CONTENT_ERROR_NONE)
704 media_content_error("error media_tag_get_tag_id : [%d]", ret);
706 media_content_debug("tag_id : %d", tag_id);
708 ret = media_tag_get_name(tag, &tag_name);
709 if (ret != MEDIA_CONTENT_ERROR_NONE)
710 media_content_error("error media_tag_get_name : [%d]", ret);
712 media_content_debug("tag_name : %s", tag_name);
718 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
720 media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
721 int ret = MEDIA_CONTENT_ERROR_NONE;
723 if (_bookmark != NULL) {
728 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
729 if (ret != MEDIA_CONTENT_ERROR_NONE)
730 media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
732 media_content_debug("bookmark_id : %d", bookmark_id);
734 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
735 if (ret != MEDIA_CONTENT_ERROR_NONE)
736 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
738 media_content_debug("bookmark thumbnail_path : %s", name);
741 ret = media_bookmark_get_marked_time(bookmark, &time);
742 if (ret != MEDIA_CONTENT_ERROR_NONE)
743 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
745 media_content_debug("bookmark marked_time : %d", time);
751 bool album_list_cb(media_album_h album, void *user_data)
754 char *album_name = NULL;
756 char *album_art = NULL;
758 int ret = MEDIA_CONTENT_ERROR_NONE;
759 filter_h filter = NULL;
762 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
764 ret = media_filter_create(&filter);
765 if (ret != MEDIA_CONTENT_ERROR_NONE) {
766 media_content_error("Fail to create filter");
769 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
770 if (ret != MEDIA_CONTENT_ERROR_NONE) {
771 media_filter_destroy(filter);
772 media_content_error("Fail to set condition");
775 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
776 if (ret != MEDIA_CONTENT_ERROR_NONE) {
777 media_filter_destroy(filter);
778 media_content_error("Fail to set order");
783 if (media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE) {
784 media_filter_destroy(filter);
788 media_content_debug("album_id : [%d]", album_id);
790 if (media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
791 media_filter_destroy(filter);
795 media_content_debug("album_name : [%s]", album_name);
796 SAFE_FREE(album_name);
798 if (media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE) {
799 media_filter_destroy(filter);
803 media_content_debug("artist : [%s]", artist);
806 if (media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE) {
807 media_filter_destroy(filter);
811 media_content_debug("album_art : [%s]", album_art);
812 SAFE_FREE(album_art);
814 if (media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE) {
815 media_filter_destroy(filter);
819 media_content_debug("media_count : [%d]", media_count);
821 if (media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
822 media_filter_destroy(filter);
826 test_album_from_db(album_id);
828 media_content_error("album item not Found!!");
831 media_filter_destroy(filter);
836 bool group_list_cb(const char *group_name, void *user_data)
839 int *idx = user_data;
841 media_content_debug("group item : [%s] [%d]", group_name, *idx);
843 if (media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
846 media_content_debug("media_count : [%d]", media_count);
848 if (media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
854 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
856 media_content_debug("playlist_member_id : [%d]", playlist_member_id);
857 /* 64bit build issue */
859 GList **list = (GList**)user_data;
861 *list = g_list_append(*list, (gpointer)playlist_member_id);
863 //media_item_cb(media, user_data);
868 int test_filter_create(void)
870 media_content_debug("\n============Filter Create============\n\n");
872 int ret = MEDIA_CONTENT_ERROR_NONE;
874 /* Filter for media */
875 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
876 //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*/
878 ret = media_filter_create(&g_filter);
880 /* Set condition and collate
881 * Condition string : You can make where statement of sql.
882 * Colation : You can use collation when comparing.
883 * Ex) In case of FILE_NAME='Samsung' as condition string,
884 * if you want to compare with NOCASE collation,
885 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
886 * if you want to compare in case-sensitive,
887 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
889 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
891 /* Collation of ordering
892 * If you want to get list, which is sorted by NOCASE,
893 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
895 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
897 /* Able to set multi column to set order */
898 //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
899 //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
900 //ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
901 //ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
903 /* Filter for group */
904 //const char *g_condition = "TAG_NAME like \"\%my\%\"";
905 //const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
907 ret = media_filter_create(&g_filter_g);
909 //ret = media_filter_set_condition(g_filter_g, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
910 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
915 int test_filter_destroy(void)
917 media_content_debug("\n============Filter Create============\n\n");
919 int ret = MEDIA_CONTENT_ERROR_NONE;
921 ret = media_filter_destroy(g_filter);
926 int test_connect_database(void)
928 int ret = MEDIA_CONTENT_ERROR_NONE;
930 media_content_debug("\n============DB Connection Test============\n\n");
932 ret = media_content_connect();
934 if (ret == MEDIA_CONTENT_ERROR_NONE)
935 media_content_debug("connection is success\n\n");
937 media_content_error("connection is failed\n\n");
942 int test_gallery_scenario(void)
944 int ret = MEDIA_CONTENT_ERROR_NONE;
946 filter_h filter = NULL;
949 GList *folder_list = NULL;
950 media_folder_h folder_handle = NULL;
952 /* First, Get folder list */
953 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
954 if (ret != MEDIA_CONTENT_ERROR_NONE) {
955 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
958 media_content_debug("media_folder_foreach_folder_from_db success!!");
959 char *folder_id = NULL;
960 char *folder_name = NULL;
961 char *folder_path = NULL;
963 for (i = 0; i < g_list_length(folder_list); i++) {
964 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
966 ret = media_folder_get_folder_id(folder_handle, &folder_id);
967 if (ret != MEDIA_CONTENT_ERROR_NONE)
968 media_content_error("media_folder_get_folder_id failed: %d", ret);
969 ret = media_folder_get_name(folder_handle, &folder_name);
970 if (ret != MEDIA_CONTENT_ERROR_NONE)
971 media_content_error("media_folder_get_name failed: %d", ret);
972 ret = media_folder_get_path(folder_handle, &folder_path);
973 if (ret != MEDIA_CONTENT_ERROR_NONE)
974 media_content_error("media_folder_get_path failed: %d", ret);
976 media_content_debug("folder_id [%d] : %s", i, folder_id);
977 media_content_debug("folder_name [%d] : %s", i, folder_name);
978 media_content_debug("folder_path [%d] : %s", i, folder_path);
980 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
981 /* User should free these string */
982 SAFE_FREE(folder_id);
983 SAFE_FREE(folder_name);
984 SAFE_FREE(folder_path);
985 if (ret != MEDIA_CONTENT_ERROR_NONE) {
986 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
989 media_content_debug("media count [%d] : %d", i, count);
994 /* To check performance */
995 struct timeval start, end;
996 gettimeofday(&start, NULL);
998 /* Second, Get all item list */
999 media_info_h media_handle = NULL;
1000 GList *all_item_list = NULL;
1002 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1003 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1004 ret = media_filter_create(&filter);
1005 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1006 media_content_error("Fail to create filter");
1009 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1010 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1011 media_filter_destroy(filter);
1012 media_content_error("Fail to set condition");
1015 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1016 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1017 media_filter_destroy(filter);
1018 media_content_error("Fail to set order");
1022 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1023 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1024 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1025 media_filter_destroy(filter);
1028 media_content_debug("media_info_foreach_media_from_db success");
1029 media_content_type_e media_type;
1030 char *media_id = NULL;
1031 char *media_name = NULL;
1032 char *media_path = NULL;
1034 for (i = 0; i < g_list_length(all_item_list); i++) {
1035 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1037 ret = media_info_get_media_id(media_handle, &media_id);
1038 if (ret != MEDIA_CONTENT_ERROR_NONE)
1039 media_content_error("media_info_get_media_id failed: %d", ret);
1040 ret = media_info_get_media_type(media_handle, &media_type);
1041 if (ret != MEDIA_CONTENT_ERROR_NONE)
1042 media_content_error("media_info_get_media_type failed: %d", ret);
1043 ret = media_info_get_display_name(media_handle, &media_name);
1044 if (ret != MEDIA_CONTENT_ERROR_NONE)
1045 media_content_error("media_info_get_display_name failed: %d", ret);
1046 ret = media_info_get_file_path(media_handle, &media_path);
1047 if (ret != MEDIA_CONTENT_ERROR_NONE)
1048 media_content_error("media_info_get_file_path failed: %d", ret);
1050 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1051 image_meta_h image_handle;
1052 int width = 0, height = 0;
1053 media_content_orientation_e orientation = 0;
1054 char *datetaken = NULL;
1055 char *burst_id = NULL;
1057 ret = media_info_get_image(media_handle, &image_handle);
1058 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1059 media_content_error("media_info_get_image failed: %d", ret);
1061 ret = image_meta_get_width(image_handle, &width);
1062 if (ret != MEDIA_CONTENT_ERROR_NONE)
1063 media_content_error("error image_meta_get_width : [%d]", ret);
1064 ret = image_meta_get_height(image_handle, &height);
1065 if (ret != MEDIA_CONTENT_ERROR_NONE)
1066 media_content_error("error image_meta_get_height : [%d]", ret);
1067 ret = image_meta_get_orientation(image_handle, &orientation);
1068 if (ret != MEDIA_CONTENT_ERROR_NONE)
1069 media_content_error("error image_meta_get_orientation : [%d]", ret);
1070 ret = image_meta_get_date_taken(image_handle, &datetaken);
1071 if (ret != MEDIA_CONTENT_ERROR_NONE)
1072 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1073 ret = image_meta_get_burst_id(image_handle, &burst_id);
1074 if (ret != MEDIA_CONTENT_ERROR_NONE)
1075 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1077 media_content_debug("This is Image");
1078 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1081 SAFE_FREE(datetaken);
1082 SAFE_FREE(burst_id);
1083 ret = image_meta_destroy(image_handle);
1084 if (ret != MEDIA_CONTENT_ERROR_NONE)
1085 media_content_error("error image_meta_destroy : [%d]", ret);
1087 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1088 video_meta_h video_handle;
1089 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1091 time_t time_played = 0;
1093 ret = media_info_get_video(media_handle, &video_handle);
1094 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1095 media_content_error("media_info_get_video failed: %d", ret);
1097 ret = video_meta_get_artist(video_handle, &artist);
1098 if (ret != MEDIA_CONTENT_ERROR_NONE)
1099 media_content_error("error video_meta_get_artist : [%d]", ret);
1100 ret = video_meta_get_album(video_handle, &album);
1101 if (ret != MEDIA_CONTENT_ERROR_NONE)
1102 media_content_error("error video_meta_get_album : [%d]", ret);
1103 ret = video_meta_get_album_artist(video_handle, &album_artist);
1104 if (ret != MEDIA_CONTENT_ERROR_NONE)
1105 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1106 ret = video_meta_get_duration(video_handle, &duration);
1107 if (ret != MEDIA_CONTENT_ERROR_NONE)
1108 media_content_error("error video_meta_get_duration : [%d]", ret);
1109 ret = video_meta_get_played_time(video_handle, &time_played);
1110 if (ret != MEDIA_CONTENT_ERROR_NONE)
1111 media_content_error("error video_meta_get_played_time : [%d]", ret);
1113 media_content_debug("This is Video");
1114 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);
1120 SAFE_FREE(album_artist);
1122 ret = video_meta_destroy(video_handle);
1123 if (ret != MEDIA_CONTENT_ERROR_NONE)
1124 media_content_error("error video_meta_destroy : [%d]", ret);
1126 //media_content_debug("media_id [%d] : %s", i, media_id);
1127 //media_content_debug("media_name [%d] : %s", i, media_name);
1128 //media_content_debug("media_path [%d] : %s", i, media_path);
1130 SAFE_FREE(media_id);
1131 SAFE_FREE(media_name);
1132 SAFE_FREE(media_path);
1136 media_filter_destroy(filter);
1139 /* To check performance */
1140 gettimeofday(&end, NULL);
1141 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1142 media_content_debug("Time : %ld\n", time);
1144 /* Third, Get item list of a folder */
1145 GList *item_list = NULL;
1147 for (i = 0; i < g_list_length(folder_list); i++) {
1149 char *folder_id = NULL;
1150 char *folder_name = NULL;
1151 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1153 media_folder_get_folder_id(folder_handle, &folder_id);
1154 media_folder_get_name(folder_handle, &folder_name);
1156 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1157 SAFE_FREE(folder_id);
1158 SAFE_FREE(folder_name);
1160 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1161 media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1164 media_content_error("media_folder_foreach_media_from_db success!", ret);
1165 char *media_id = NULL;
1166 char *media_name = NULL;
1167 char *media_path = NULL;
1168 media_content_type_e media_type = 0;
1170 for (j = 0; j < g_list_length(item_list); j++) {
1171 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1173 ret = media_info_get_media_id(media_handle, &media_id);
1174 if (ret != MEDIA_CONTENT_ERROR_NONE)
1175 media_content_error("media_info_get_media_id failed: %d", ret);
1176 ret = media_info_get_display_name(media_handle, &media_name);
1177 if (ret != MEDIA_CONTENT_ERROR_NONE)
1178 media_content_error("media_info_get_display_name failed: %d", ret);
1179 ret = media_info_get_file_path(media_handle, &media_path);
1180 if (ret != MEDIA_CONTENT_ERROR_NONE)
1181 media_content_error("media_info_get_file_path failed: %d", ret);
1182 ret = media_info_get_media_type(media_handle, &media_type);
1183 if (ret != MEDIA_CONTENT_ERROR_NONE)
1184 media_content_error("media_info_get_media_type failed: %d", ret);
1186 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1187 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1188 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1189 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1191 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1192 image_meta_h image_handle;
1193 int width = 0, height = 0;
1194 media_content_orientation_e orientation = 0;
1195 char *datetaken = NULL;
1197 ret = media_info_get_image(media_handle, &image_handle);
1198 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1199 media_content_error("media_info_get_image failed: %d", ret);
1201 ret = image_meta_get_width(image_handle, &width);
1202 if (ret != MEDIA_CONTENT_ERROR_NONE)
1203 media_content_error("error image_meta_get_width : [%d]", ret);
1204 ret = image_meta_get_height(image_handle, &height);
1205 if (ret != MEDIA_CONTENT_ERROR_NONE)
1206 media_content_error("error image_meta_get_height : [%d]", ret);
1207 ret = image_meta_get_orientation(image_handle, &orientation);
1208 if (ret != MEDIA_CONTENT_ERROR_NONE)
1209 media_content_error("error image_meta_get_orientation : [%d]", ret);
1210 ret = image_meta_get_date_taken(image_handle, &datetaken);
1211 if (ret != MEDIA_CONTENT_ERROR_NONE)
1212 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1214 media_content_debug("This is Image");
1215 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1218 SAFE_FREE(datetaken);
1219 ret = image_meta_destroy(image_handle);
1220 if (ret != MEDIA_CONTENT_ERROR_NONE)
1221 media_content_error("error image_meta_destroy : [%d]", ret);
1223 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1224 video_meta_h video_handle;
1225 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1229 ret = media_info_get_video(media_handle, &video_handle);
1230 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1231 media_content_error("media_info_get_video failed: %d", ret);
1233 ret = video_meta_get_artist(video_handle, &artist);
1234 if (ret != MEDIA_CONTENT_ERROR_NONE)
1235 media_content_error("error video_meta_get_artist : [%d]", ret);
1236 ret = video_meta_get_album(video_handle, &album);
1237 if (ret != MEDIA_CONTENT_ERROR_NONE)
1238 media_content_error("error video_meta_get_album : [%d]", ret);
1239 ret = video_meta_get_album_artist(video_handle, &album_artist);
1240 if (ret != MEDIA_CONTENT_ERROR_NONE)
1241 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1242 ret = video_meta_get_duration(video_handle, &duration);
1243 if (ret != MEDIA_CONTENT_ERROR_NONE)
1244 media_content_error("error video_meta_get_duration : [%d]", ret);
1245 ret = video_meta_get_played_time(video_handle, &time_played);
1246 if (ret != MEDIA_CONTENT_ERROR_NONE)
1247 media_content_error("error video_meta_get_played_time : [%d]", ret);
1249 media_content_debug("This is Video");
1250 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);
1256 SAFE_FREE(album_artist);
1258 ret = video_meta_destroy(video_handle);
1259 if (ret != MEDIA_CONTENT_ERROR_NONE)
1260 media_content_error("error video_meta_destroy : [%d]", ret);
1262 /* Get bookmar list in case of video */
1263 media_bookmark_h bm_handle;
1264 GList *bm_list = NULL;
1266 ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1267 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1268 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1270 media_content_debug("media_info_foreach_bookmark_from_db success");
1274 for (k = 0; k < g_list_length(bm_list); k++) {
1275 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1277 char *thumb_path = NULL;
1279 ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1280 if (ret != MEDIA_CONTENT_ERROR_NONE)
1281 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1282 ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1283 if (ret != MEDIA_CONTENT_ERROR_NONE)
1284 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1286 media_content_debug("Bookmark time : %d\nBookmar thumb: %s", marked_time, thumb_path);
1287 SAFE_FREE(thumb_path);
1290 /* Remove bookmark list */
1293 for (l = 0; l < g_list_length(bm_list); l++) {
1294 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1295 ret = media_bookmark_destroy(bm_handle);
1296 if (ret != MEDIA_CONTENT_ERROR_NONE)
1297 media_content_error("error media_bookmark_destroy : [%d]", ret);
1300 g_list_free(bm_list);
1306 SAFE_FREE(media_id);
1307 SAFE_FREE(media_name);
1308 SAFE_FREE(media_path);
1314 media_tag_h tag_handle = NULL;
1315 GList *tag_list = NULL;
1316 GList *media_list_in_tag = NULL;
1318 ret = media_tag_foreach_tag_from_db(filter, gallery_tag_item_cb, &tag_list);
1320 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1321 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1324 media_content_error("media_tag_foreach_tag_from_db success");
1325 char *tag_name = NULL;
1328 for (i = 0; i < g_list_length(tag_list); i++) {
1329 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1330 media_tag_get_tag_id(tag_handle, &tag_id);
1331 media_tag_get_name(tag_handle, &tag_name);
1333 media_content_debug("[%d] %s", tag_id, tag_name);
1335 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1336 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1337 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1340 media_content_error("media_tag_foreach_media_from_db success");
1342 media_info_h tag_media_handle;
1343 char *media_id = NULL;
1344 char *media_name = NULL;
1345 char *media_path = NULL;
1346 media_content_type_e media_type = 0;
1348 for (j = 0; j < g_list_length(media_list_in_tag); j++) {
1349 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1350 ret = media_info_get_media_id(tag_media_handle, &media_id);
1351 if (ret != MEDIA_CONTENT_ERROR_NONE)
1352 media_content_error("media_info_get_media_id failed: %d", ret);
1353 ret = media_info_get_display_name(tag_media_handle, &media_name);
1354 if (ret != MEDIA_CONTENT_ERROR_NONE)
1355 media_content_error("media_info_get_display_name failed: %d", ret);
1356 ret = media_info_get_file_path(tag_media_handle, &media_path);
1357 if (ret != MEDIA_CONTENT_ERROR_NONE)
1358 media_content_error("media_info_get_file_path failed: %d", ret);
1359 ret = media_info_get_media_type(tag_media_handle, &media_type);
1360 if (ret != MEDIA_CONTENT_ERROR_NONE)
1361 media_content_error("media_info_get_media_type failed: %d", ret);
1363 media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1364 media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1365 media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1366 media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1368 SAFE_FREE(media_id);
1369 SAFE_FREE(media_name);
1370 SAFE_FREE(media_path);
1372 SAFE_FREE(tag_name);
1376 /* Remove folder list */
1378 for (i = 0; i < g_list_length(folder_list); i++) {
1379 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1380 media_folder_destroy(folder_handle);
1383 g_list_free(folder_list);
1386 /* Remove all items list */
1387 if (all_item_list) {
1388 for (i = 0; i < g_list_length(all_item_list); i++) {
1389 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1390 ret = media_info_destroy(media_handle);
1391 if (ret != MEDIA_CONTENT_ERROR_NONE)
1392 media_content_error("media_info_destroy failed: %d", ret);
1395 g_list_free(all_item_list);
1398 /* Remove items list */
1400 for (i = 0; i < g_list_length(item_list); i++) {
1401 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1402 ret = media_info_destroy(media_handle);
1403 if (ret != MEDIA_CONTENT_ERROR_NONE)
1404 media_content_error("media_info_destroy failed: %d", ret);
1407 g_list_free(item_list);
1410 /* Remove tag list */
1412 for (i = 0; i < g_list_length(tag_list); i++) {
1413 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1414 ret = media_tag_destroy(tag_handle);
1415 if (ret != MEDIA_CONTENT_ERROR_NONE)
1416 media_content_error("error media_tag_destroy : [%d]", ret);
1419 g_list_free(tag_list);
1422 /* Remove media list in a tag */
1423 if (media_list_in_tag) {
1424 for (i = 0; i < g_list_length(media_list_in_tag); i++) {
1425 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1426 ret = media_info_destroy(media_handle);
1427 if (ret != MEDIA_CONTENT_ERROR_NONE)
1428 media_content_error("media_info_destroy failed: %d", ret);
1431 g_list_free(media_list_in_tag);
1434 return MEDIA_CONTENT_ERROR_NONE;
1437 /*Get All Music file. sort by Title and not case sensitive*/
1438 int test_get_all_music_files(void)
1440 int ret = MEDIA_CONTENT_ERROR_NONE;
1441 int media_count = 0;
1445 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1447 ret = media_filter_create(&filter);
1448 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1449 media_content_error("Fail to create filter");
1452 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1453 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1454 media_filter_destroy(filter);
1455 media_content_error("Fail to set condition");
1458 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1459 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1460 media_filter_destroy(filter);
1461 media_content_error("Fail to set order");
1466 ret = media_info_get_media_count_from_db(filter, &media_count);
1467 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1468 media_filter_destroy(filter);
1469 media_content_error("Fail to get media count");
1473 media_content_debug("media_count : [%d]", media_count);
1475 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1476 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1477 media_filter_destroy(filter);
1478 media_content_error("Fail to get media");
1482 ret = media_filter_destroy(filter);
1487 int test_media_info_operation(void)
1489 int ret = MEDIA_CONTENT_ERROR_NONE;
1490 int media_count = 0;
1492 media_content_debug("\n============Media info Test============\n\n");
1494 test_filter_create();
1496 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1497 if (ret != MEDIA_CONTENT_ERROR_NONE)
1498 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1500 media_content_debug("media_count : [%d]", media_count);
1502 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1503 if (ret == MEDIA_CONTENT_ERROR_NONE)
1504 media_content_debug("media_info_foreach_media_from_db is success");
1506 media_content_error("media_info_foreach_media_from_db is failed");
1508 test_filter_destroy();
1513 int test_media_info_operation_2(void)
1515 int ret = MEDIA_CONTENT_ERROR_NONE;
1516 int bookmark_count = 0;
1518 media_content_debug("\n============Media info Test 2============\n\n");
1520 test_filter_create();
1524 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
1525 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1526 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1528 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1530 media_content_debug("bookmark_count : [%d]", bookmark_count);
1532 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1536 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1537 if (ret != MEDIA_CONTENT_ERROR_NONE)
1538 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1540 media_content_debug("tag_count : [%d]", bookmark_count);
1542 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1543 if (ret != MEDIA_CONTENT_ERROR_NONE)
1544 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1546 test_filter_destroy();
1551 int test_folder_operation(void)
1553 int ret = MEDIA_CONTENT_ERROR_NONE;
1554 filter_h filter = NULL;
1555 media_folder_h folder = NULL;
1556 char *folder_id = NULL;
1559 media_content_debug("\n============Folder Test============\n\n");
1561 test_filter_create();
1563 ret = media_filter_create(&filter);
1564 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1565 media_content_error("[ERROR] media_folder_filter_create is failed");
1569 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*/
1570 media_filter_set_offset(filter, 0, 5);
1571 media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1572 media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1574 ret = media_folder_get_folder_count_from_db(filter, &count);
1575 media_content_debug("Folder count : [%d]", count);
1577 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1579 //test.3 get the media list in first folder
1580 filter_h m_filter = NULL;
1582 ret = media_filter_create(&m_filter);
1583 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1584 test_filter_destroy();
1585 media_filter_destroy(filter);
1586 media_content_error("[ERROR] media_info_filter_create is failed");
1590 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*/
1591 media_filter_set_offset(m_filter, 0, 5);
1592 media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1594 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1595 if (ret != MEDIA_CONTENT_ERROR_NONE)
1596 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1598 media_filter_destroy(filter);
1599 media_filter_destroy(m_filter);
1601 test_filter_destroy();
1603 /* fix prevent: Resource Leak */
1604 SAFE_FREE(folder_id);
1609 bool folder_update_cb(media_folder_h folder, void *user_data)
1611 char *folder_id = NULL;
1612 char *folder_path = NULL;
1613 char *folder_name = NULL;
1614 int folder_order = -1;
1617 if (folder != NULL) {
1618 ret = media_folder_get_folder_id(folder, &folder_id);
1619 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1620 media_content_debug("folder_id = [%s]", folder_id);
1621 SAFE_FREE(folder_id);
1623 ret = media_folder_get_path(folder, &folder_path);
1624 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1625 media_content_debug("folder_path = [%s]", folder_path);
1626 SAFE_FREE(folder_path);
1628 ret = media_folder_get_name(folder, &folder_name);
1629 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1630 media_content_debug("folder_name = [%s]", folder_name);
1631 SAFE_FREE(folder_name);
1633 ret = media_folder_get_order(folder, &folder_order);
1634 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1635 media_content_debug("folder_order = [%d]", folder_order);
1637 ret = media_folder_clone(&g_folder, folder);
1638 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1649 int test_folder_update(void)
1651 int ret = MEDIA_CONTENT_ERROR_NONE;
1653 int folder_count = 0;
1655 media_content_debug("\n============Folder Update Test============\n\n");
1657 ret = media_filter_create(&filter);
1658 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1660 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*/
1661 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, FOLDER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
1663 ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1665 media_content_debug("Folder count : %d", folder_count);
1667 ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1669 media_filter_destroy(filter);
1671 ret = media_folder_set_name(g_folder, "test_folder");
1673 ret = media_folder_set_order(g_folder, 200);
1675 ret = media_folder_update_to_db(g_folder);
1677 ret = media_folder_destroy(g_folder);
1682 int test_playlist_operation(void)
1684 int ret = MEDIA_CONTENT_ERROR_NONE;
1685 media_playlist_h playlist_1 = NULL;
1686 media_playlist_h playlist_2 = NULL;
1687 media_playlist_h playlist_3 = NULL;
1688 media_playlist_h playlist_4 = NULL;
1689 int playlist_id_1 = 0;
1690 int playlist_id_2 = 0;
1691 int playlist_id_3 = 0;
1692 const char *playlist_name_1 = "myPlaylist_1";
1693 const char *playlist_name_2 = "myPlaylist_2";
1694 const char *playlist_name_3 = "myPlaylist_3";
1695 int playlist_count = 0;
1696 int media_count = 0;
1702 filter_h filter = NULL;
1703 filter_h m_filter = NULL;
1705 media_content_debug("\n============Playlist Test============\n\n");
1707 /* Filter for playlist */
1709 const char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1711 ret = media_filter_create(&filter);
1712 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1713 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1715 /* Create Playlist */
1716 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1717 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1718 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1720 if (playlist_1 != NULL) {
1721 /* Add media to Playlist */
1722 media_playlist_add_media(playlist_1, test_audio_id);
1723 media_playlist_add_media(playlist_1, test_audio_id);
1724 media_playlist_add_media(playlist_1, test_video_id);
1727 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
1728 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1731 media_playlist_update_to_db(playlist_1);
1734 if (playlist_2 != NULL) {
1735 media_playlist_add_media(playlist_2, test_audio_id);
1736 media_playlist_add_media(playlist_2, test_audio_id);
1737 media_playlist_update_to_db(playlist_2);
1740 /* Get Playlist Count*/
1741 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1743 media_content_debug("playlist_count [%d]", playlist_count);
1746 GList *playlist_id_list = NULL;
1747 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1748 /* 64bit build issue */
1750 /* Get Playlist id*/
1751 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1752 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1753 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1755 media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1756 media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1757 media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1759 /* Export and import playlist */
1760 media_playlist_export_to_file(playlist_3, "/opt/usr/media/Music/playlist.m3u");
1761 media_playlist_import_from_file("/opt/usr/media/Music/playlist.m3u", "playlist_4", &playlist_4);
1763 /* Filter for media*/
1764 ret = media_filter_create(&m_filter);
1766 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1768 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1770 /* Get media count */
1771 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1772 media_content_debug("playlist_1_media_count [%d]", media_count);
1774 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1775 media_content_debug("playlist_2_media_count [%d]", media_count);
1777 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1778 media_content_debug("playlist_3_media_count [%d]", media_count);
1780 /* Get media of playlist */
1781 GList *playlist_member_id_list = NULL;
1782 GList *playlist_member_id_list_1 = NULL;
1784 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1785 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1787 int playlist_member_id_1_1 = 0;
1788 int playlist_member_id_1_2 = 0;
1789 int playlist_member_id_1_3 = 0;
1790 int playlist_member_id_2_1 = 0;
1791 int playlist_member_id_2_2 = 0;
1792 /* 64bit build issue */
1794 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1795 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1796 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1797 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1798 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1800 media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1801 media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1802 media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1803 media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1804 media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1806 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1807 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1808 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1809 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1810 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1811 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);
1813 /* Update Playlist */
1814 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1815 media_playlist_add_media(playlist_2, test_video_id);
1816 media_playlist_set_name(playlist_2, "test_playlist");
1817 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1818 media_playlist_update_to_db(playlist_2);
1820 /* Get Updated Playlist*/
1821 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1823 /* deletes the playlist */
1824 //media_playlist_delete_from_db(playlist_id_1);
1825 //media_playlist_delete_from_db(playlist_id_2);
1827 if (playlist_1 != NULL)
1828 media_playlist_destroy(playlist_1);
1829 if (playlist_2 != NULL)
1830 media_playlist_destroy(playlist_2);
1831 if (playlist_3 != NULL)
1832 media_playlist_destroy(playlist_3);
1833 if (playlist_4 != NULL)
1834 media_playlist_destroy(playlist_4);
1836 g_list_free(playlist_id_list);
1837 g_list_free(playlist_member_id_list);
1838 g_list_free(playlist_member_id_list_1);
1841 ret = media_filter_destroy(filter);
1842 if (m_filter != NULL)
1843 ret = media_filter_destroy(m_filter);
1848 int test_tag_operation(void)
1850 int ret = MEDIA_CONTENT_ERROR_NONE;
1857 const char *tag_name_1 = "myTag_1";
1858 const char *tag_name_2 = "myTag_2";
1859 const char *tag_name_3 = "myTag_3";
1861 int media_count = 0;
1864 media_content_debug("\n============Tag Test============\n\n");
1866 const char *g_condition = "TAG_NAME like \"%%my%%\"";
1868 ret = media_filter_create(&filter);
1870 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1872 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1875 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1876 if (ret != MEDIA_CONTENT_ERROR_NONE)
1877 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1878 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1879 if (ret != MEDIA_CONTENT_ERROR_NONE)
1880 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1881 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1882 if (ret != MEDIA_CONTENT_ERROR_NONE)
1883 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1885 /* Add media to Tag */
1886 ret = media_tag_add_media(tag_1, test_audio_id);
1887 if (ret != MEDIA_CONTENT_ERROR_NONE)
1888 media_content_error("error media_tag_add_media : [%d]", ret);
1889 ret = media_tag_add_media(tag_1, test_video_id);
1890 if (ret != MEDIA_CONTENT_ERROR_NONE)
1891 media_content_error("error media_tag_add_media : [%d]", ret);
1892 ret = media_tag_update_to_db(tag_1);
1893 if (ret != MEDIA_CONTENT_ERROR_NONE)
1894 media_content_error("error media_tag_update_to_db : [%d]", ret);
1896 ret = media_tag_add_media(tag_2, test_audio_id);
1897 if (ret != MEDIA_CONTENT_ERROR_NONE)
1898 media_content_error("error media_tag_add_media : [%d]", ret);
1899 ret = media_tag_update_to_db(tag_2);
1900 if (ret != MEDIA_CONTENT_ERROR_NONE)
1901 media_content_error("error media_tag_update_to_db : [%d]", ret);
1904 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
1905 if (ret != MEDIA_CONTENT_ERROR_NONE)
1906 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
1908 media_content_debug("tag_count [%d]", tag_count);
1911 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1912 if (ret != MEDIA_CONTENT_ERROR_NONE)
1913 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1916 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
1917 if (ret != MEDIA_CONTENT_ERROR_NONE)
1918 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1920 media_content_debug("tag_id_1 [%d]", tag_id_1);
1922 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
1923 if (ret != MEDIA_CONTENT_ERROR_NONE)
1924 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1926 media_content_debug("tag_id_2 [%d]", tag_id_2);
1928 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
1929 if (ret != MEDIA_CONTENT_ERROR_NONE)
1930 media_content_error("error media_tag_get_tag_id : [%d]", ret);
1932 media_content_debug("tag_id_3 [%d]", tag_id_3);
1934 /* Get media count */
1935 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
1936 if (ret != MEDIA_CONTENT_ERROR_NONE)
1937 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1939 media_content_debug("tag_1_media_count [%d]", media_count);
1941 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
1942 if (ret != MEDIA_CONTENT_ERROR_NONE)
1943 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
1945 media_content_debug("tag_2_media_count [%d]", media_count);
1947 /* Get media of Tag */
1948 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
1949 if (ret != MEDIA_CONTENT_ERROR_NONE)
1950 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1952 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
1953 if (ret != MEDIA_CONTENT_ERROR_NONE)
1954 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
1957 ret = media_tag_add_media(tag_2, test_video_id);
1958 if (ret != MEDIA_CONTENT_ERROR_NONE)
1959 media_content_error("error media_tag_add_media : [%d]", ret);
1960 ret = media_tag_set_name(tag_2, (char *)"test_tag");
1961 if (ret != MEDIA_CONTENT_ERROR_NONE)
1962 media_content_error("error media_tag_set_name : [%d]", ret);
1963 ret = media_tag_update_to_db(tag_2);
1964 if (ret != MEDIA_CONTENT_ERROR_NONE)
1965 media_content_error("error media_tag_update_to_db : [%d]", ret);
1967 /* Get Updated Tag*/
1968 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
1969 if (ret != MEDIA_CONTENT_ERROR_NONE)
1970 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
1972 /* deletes the tag */
1973 ret = media_tag_delete_from_db(tag_id_1);
1974 if (ret != MEDIA_CONTENT_ERROR_NONE)
1975 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1976 ret = media_tag_delete_from_db(tag_id_2);
1977 if (ret != MEDIA_CONTENT_ERROR_NONE)
1978 media_content_error("error media_tag_delete_from_db : [%d]", ret);
1980 ret = media_tag_destroy(tag_1);
1981 if (ret != MEDIA_CONTENT_ERROR_NONE)
1982 media_content_error("error media_tag_destroy : [%d]", ret);
1983 ret = media_tag_destroy(tag_2);
1984 if (ret != MEDIA_CONTENT_ERROR_NONE)
1985 media_content_error("error media_tag_destroy : [%d]", ret);
1986 ret = media_filter_destroy(filter);
1987 if (ret != MEDIA_CONTENT_ERROR_NONE)
1988 media_content_error("error media_filter_destroy : [%d]", ret);
1994 int test_bookmark_operation(void)
1996 //bookmark is only supported for video information.
1997 int ret = MEDIA_CONTENT_ERROR_NONE;
1998 int bookmark_count = 0;
2001 media_content_debug("\n============Bookmark Test============\n\n");
2003 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2005 ret = media_filter_create(&filter);
2006 if (ret != MEDIA_CONTENT_ERROR_NONE)
2007 media_content_error("error media_filter_create : [%d]", ret);
2009 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2010 if (ret != MEDIA_CONTENT_ERROR_NONE)
2011 media_content_error("error media_filter_set_condition : [%d]", ret);
2013 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2014 if (ret != MEDIA_CONTENT_ERROR_NONE)
2015 media_content_error("error media_filter_set_order : [%d]", ret);
2017 //insert bookmark to video
2018 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
2019 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2020 if (ret != MEDIA_CONTENT_ERROR_NONE)
2021 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2023 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2024 if (ret != MEDIA_CONTENT_ERROR_NONE)
2025 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2027 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2028 if (ret != MEDIA_CONTENT_ERROR_NONE)
2029 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2031 media_content_debug("bookmark_count = [%d]", bookmark_count);
2033 ret = media_filter_destroy(filter);
2034 if (ret != MEDIA_CONTENT_ERROR_NONE)
2035 media_content_error("error media_filter_destroy : [%d]", ret);
2040 int test_album_list(void)
2042 media_content_debug("\n============Album Test============\n\n");
2044 int ret = MEDIA_CONTENT_ERROR_NONE;
2045 int album_count = 0;
2049 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2051 ret = media_filter_create(&filter);
2052 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2053 media_content_error("Fail to create filter");
2056 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2057 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2058 media_filter_destroy(filter);
2059 media_content_error("Fail to set condition");
2062 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2063 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2064 media_filter_destroy(filter);
2065 media_content_error("Fail to set order");
2069 ret = media_album_get_album_count_from_db(filter, &album_count);
2070 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2071 media_filter_destroy(filter);
2074 media_content_debug("album_count [%d]", album_count);
2077 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2078 if (ret != MEDIA_CONTENT_ERROR_NONE)
2079 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2081 ret = media_filter_destroy(filter);
2082 if (ret != MEDIA_CONTENT_ERROR_NONE)
2083 media_content_error("error media_filter_destroy : [%d]", ret);
2088 int test_group_operation(void)
2090 media_content_debug("\n============Group Test============\n\n");
2092 int ret = MEDIA_CONTENT_ERROR_NONE;
2093 int group_count = 0;
2096 ret = test_filter_create();
2097 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2098 media_content_error("[error(0x%08x)", ret);
2102 for (idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++) {
2103 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2104 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2105 test_filter_destroy();
2106 media_content_error("media_group_get_group_count_from_db fail. idx=[%d]", ret, idx);
2109 media_content_debug("[%2d]group_count [%d]", idx, group_count);
2112 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2114 ret = test_filter_destroy();
2119 int test_update_operation()
2121 int ret = MEDIA_CONTENT_ERROR_NONE;
2123 media_info_h media_handle = NULL;
2124 GList *all_item_list = NULL;
2126 /* Get all item list */
2127 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2128 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2129 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2132 media_content_debug("media_info_foreach_media_from_db success");
2133 char *media_id = NULL;
2134 char *media_path = NULL;
2135 media_content_type_e media_type = 0;
2137 for (i = 0; i < g_list_length(all_item_list); i++) {
2138 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2140 ret = media_info_get_media_id(media_handle, &media_id);
2141 if (ret != MEDIA_CONTENT_ERROR_NONE)
2142 media_content_error("media_info_get_media_id failed: %d", ret);
2143 ret = media_info_get_file_path(media_handle, &media_path);
2144 if (ret != MEDIA_CONTENT_ERROR_NONE)
2145 media_content_error("media_info_get_file_path failed: %d", ret);
2146 ret = media_info_get_media_type(media_handle, &media_type);
2147 if (ret != MEDIA_CONTENT_ERROR_NONE)
2148 media_content_error("media_info_get_media_type failed: %d", ret);
2150 media_content_debug("media_id [%d] : %s", i, media_id);
2151 media_content_debug("media_type [%d] : %d", i, media_type);
2152 media_content_debug("media_path [%d] : %s", i, media_path);
2154 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2155 image_meta_h image_handle;
2156 media_content_orientation_e orientation;
2158 ret = media_info_get_image(media_handle, &image_handle);
2159 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2160 media_content_error("media_info_get_image failed: %d", ret);
2162 media_content_debug("media_info_get_image success");
2165 orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2166 image_meta_set_orientation(image_handle, orientation);
2168 ret = image_meta_update_to_db(image_handle);
2169 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2170 media_content_error("image_meta_update_to_db failed: %d", ret);
2172 media_content_debug("image_meta_update_to_db success");
2176 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2177 video_meta_h video_handle;
2179 ret = media_info_get_video(media_handle, &video_handle);
2180 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2181 media_content_error("media_info_get_video failed: %d", ret);
2183 media_content_debug("media_info_get_video success");
2186 video_meta_set_played_count(video_handle, 5);
2187 video_meta_set_played_time(video_handle, 5);
2188 video_meta_set_played_position(video_handle, 5);
2189 video_meta_update_to_db(video_handle);
2191 ret = video_meta_update_to_db(video_handle);
2192 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2193 media_content_error("video_meta_update_to_db failed: %d", ret);
2195 media_content_debug("video_meta_update_to_db success");
2198 } else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {//update audio meta
2199 audio_meta_h audio_handle = NULL;
2200 ret = media_info_get_audio(media_handle, &audio_handle);
2201 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2202 media_content_error("media_info_get_audio failed: %d", ret);
2204 media_content_debug("media_info_get_audio success");
2206 audio_meta_set_played_count(audio_handle, 5);
2207 audio_meta_set_played_time(audio_handle, 1000);
2208 audio_meta_set_played_position(audio_handle, 180);
2210 ret = audio_meta_update_to_db(audio_handle);
2211 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2212 media_content_error("audio_meta_update_to_db failed: %d", ret);
2214 media_content_debug("audio_meta_update_to_db success");
2222 /* fix prevent: Resource Leak */
2223 SAFE_FREE(media_id);
2224 SAFE_FREE(media_path);
2227 return MEDIA_CONTENT_ERROR_NONE;
2230 int test_insert(void)
2232 int ret = MEDIA_CONTENT_ERROR_NONE;
2233 const char *path = "/opt/usr/media/Images/Default.jpg";
2234 //const char *path = "/opt/usr/media/Others/other.txt";
2235 //char *path = NULL;
2236 media_info_h media_item = NULL;
2237 media_content_debug("\n============DB Insert Test============\n\n");
2239 ret = media_info_insert_to_db(path, &media_item);
2241 if ((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL)) {
2242 media_content_debug("Insertion is success");
2244 media_content_error("Insertion is failed");
2245 ret = media_info_destroy(media_item);
2249 char *media_id = NULL;
2251 ret = media_info_get_media_id(media_item, &media_id);
2252 if (ret != MEDIA_CONTENT_ERROR_NONE)
2253 media_content_error("media_info_get_media_id failed: %d", ret);
2255 media_content_debug("Media ID: %s", media_id);
2257 SAFE_FREE(media_id);
2259 ret = media_info_update_to_db(media_item);
2260 if (ret == MEDIA_CONTENT_ERROR_NONE)
2261 media_content_debug("media_info_update_to_db is success");
2263 media_content_error("media_info_update_to_db is failed");
2265 ret = media_info_destroy(media_item);
2266 if (ret != MEDIA_CONTENT_ERROR_NONE)
2267 media_content_error("media_info_destroy failed: %d", ret);
2274 int ret = MEDIA_CONTENT_ERROR_NONE;
2275 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2276 const char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
2277 media_info_h move_media = NULL;
2279 ret = media_info_get_media_from_db(move_media_id, &move_media);
2280 if (ret == MEDIA_CONTENT_ERROR_NONE)
2281 media_content_debug("media_info_get_media_from_db success");
2283 media_content_error("media_info_get_media_from_db failed: %d", ret);
2285 media_content_debug("\n============DB Move Test============\n\n");
2288 ret = media_info_move_to_db(move_media, dst_path);
2290 if (ret == MEDIA_CONTENT_ERROR_NONE)
2291 media_content_debug("Move is success");
2293 media_content_error("Move is failed");
2295 ret = media_info_destroy(move_media);
2297 media_content_debug("There is no item : %s", move_media_id);
2303 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2305 char *thumbnail_path = NULL;
2306 int ret = MEDIA_CONTENT_ERROR_NONE;
2309 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2310 media_content_debug("error_code [%d]", error);
2311 media_content_debug("thumbnail_path [%s]", path);
2312 if (user_data != NULL) {
2313 media_info_h media = (media_info_h)user_data;
2314 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2315 if (ret != MEDIA_CONTENT_ERROR_NONE)
2316 media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2318 media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2319 SAFE_FREE(thumbnail_path);
2320 ret = media_info_destroy(media);
2321 if (ret != MEDIA_CONTENT_ERROR_NONE)
2322 media_content_error("media_info_destroy failed: %d", ret);
2325 if (g_cnt == g_media_cnt)
2326 g_main_loop_quit(g_loop);
2331 bool thumbnail_create_cb(media_info_h media, void *user_data)
2333 char *media_id = NULL;
2334 media_info_h dst = NULL;
2335 int ret = MEDIA_CONTENT_ERROR_NONE;
2337 if (media == NULL) {
2338 media_content_debug("NO Item");
2342 ret = media_info_get_media_id(media, &media_id);
2343 if (ret != MEDIA_CONTENT_ERROR_NONE)
2344 media_content_error("media_info_get_media_id failed: %d", ret);
2346 media_content_debug("media_id : [%s]", media_id);
2348 ret = media_info_clone(&dst, media);
2349 if (ret != MEDIA_CONTENT_ERROR_NONE)
2350 media_content_error("media_info_clone failed: %d", ret);
2352 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2353 if (ret != MEDIA_CONTENT_ERROR_NONE)
2354 media_content_error("media_info_create_thumbnail failed: %d", ret);
2357 /* fix prevent: Resource leak */
2358 SAFE_FREE(media_id);
2363 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2365 int ret = MEDIA_CONTENT_ERROR_NONE;
2367 char *media_id = NULL;
2368 media_info_h dst = NULL;
2372 if (media == NULL) {
2373 media_content_debug("NO Item");
2377 ret = media_info_get_media_id(media, &media_id);
2378 if (ret != MEDIA_CONTENT_ERROR_NONE)
2379 media_content_error("media_info_get_media_id failed: %d", ret);
2381 media_content_debug("media_id : [%s]", media_id);
2383 ret = media_info_clone(&dst, media);
2384 if (ret != MEDIA_CONTENT_ERROR_NONE)
2385 media_content_error("media_info_clone failed: %d", ret);
2387 ret = media_info_cancel_thumbnail(dst);
2388 if (ret != MEDIA_CONTENT_ERROR_NONE)
2389 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2391 ret = media_info_destroy(dst);
2392 if (ret != MEDIA_CONTENT_ERROR_NONE)
2393 media_content_error("media_info_destroy failed: %d", ret);
2395 if (g_cnt == g_media_cnt)
2396 g_main_loop_quit(g_loop);
2398 /* fix prevent: Resource leak */
2399 SAFE_FREE(media_id);
2404 gboolean create_thumbnail_start(gpointer data)
2406 int ret = MEDIA_CONTENT_ERROR_NONE;
2408 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2410 if (ret == MEDIA_CONTENT_ERROR_NONE)
2411 media_content_debug("media_info_foreach_media_from_db is success");
2413 media_content_error("media_info_foreach_media_from_db is failed");
2418 gboolean cancel_thumbnail_start(gpointer data)
2420 int ret = MEDIA_CONTENT_ERROR_NONE;
2422 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2424 if (ret == MEDIA_CONTENT_ERROR_NONE)
2425 media_content_debug("media_info_foreach_media_from_db is success");
2427 media_content_error("media_info_foreach_media_from_db is failed");
2432 int test_create_thumbnail(int cancel)
2434 int ret = MEDIA_CONTENT_ERROR_NONE;
2435 GSource *source = NULL;
2436 GMainContext *context = NULL;
2438 test_filter_create();
2440 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2441 if (ret != MEDIA_CONTENT_ERROR_NONE)
2442 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2444 media_content_debug("media_count : [%d]", g_media_cnt);
2446 g_loop = g_main_loop_new(NULL, FALSE);
2447 context = g_main_loop_get_context(g_loop);
2448 source = g_idle_source_new();
2449 g_source_set_callback(source, create_thumbnail_start, NULL, NULL);
2450 g_source_attach(source, context);
2452 /* Logic to cancel */
2454 GSource *cancel_src = NULL;
2455 cancel_src = g_idle_source_new();
2456 g_source_set_callback(cancel_src, cancel_thumbnail_start, NULL, NULL);
2457 g_source_attach(cancel_src, context);
2460 g_main_loop_run(g_loop);
2461 g_main_loop_unref(g_loop);
2463 test_filter_destroy();
2468 int test_disconnect_database(void)
2470 int ret = MEDIA_CONTENT_ERROR_NONE;
2471 media_content_debug("\n============DB Disconnection Test============\n\n");
2473 ret = media_content_disconnect();
2475 if (ret == MEDIA_CONTENT_ERROR_NONE)
2476 media_content_debug("disconnection is success");
2478 media_content_error("disconnection is failed");
2483 int test_request_update_db(void)
2485 int ret = MEDIA_CONTENT_ERROR_NONE;
2486 media_info_h media = NULL;
2487 char *content_name = NULL;
2488 bool favorite = FALSE;
2490 //get the content of Over the horizon
2491 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2492 if (ret != MEDIA_CONTENT_ERROR_NONE)
2493 media_content_error("media_info_get_media_from_db failed: %d", ret);
2495 ret = media_info_set_content_name(media, "TEST_content_name");
2496 if (ret != MEDIA_CONTENT_ERROR_NONE)
2497 media_content_error("media_info_set_content_name failed: %d", ret);
2499 ret = media_info_set_favorite(media, TRUE);
2500 if (ret != MEDIA_CONTENT_ERROR_NONE)
2501 media_content_error("media_info_set_favorite failed: %d", ret);
2503 ret = media_info_update_to_db(media);
2504 if (ret == MEDIA_CONTENT_ERROR_NONE)
2505 media_content_debug("media_info_update_to_db is success");
2507 media_content_error("media_info_update_to_db is failed");
2510 media_info_destroy(media);
2512 /*get the updated value*/
2513 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2514 if (ret != MEDIA_CONTENT_ERROR_NONE)
2515 media_content_error("media_info_get_media_from_db failed: %d", ret);
2517 ret = media_info_get_content_name(media, &content_name);
2518 if (ret != MEDIA_CONTENT_ERROR_NONE)
2519 media_content_error("media_info_get_content_name failed: %d", ret);
2521 media_content_debug("content name [%s]", content_name);
2523 SAFE_FREE(content_name);
2525 ret = media_info_get_favorite(media, &favorite);
2526 if (ret != MEDIA_CONTENT_ERROR_NONE)
2527 media_content_error("media_info_get_favorite failed: %d", ret);
2529 media_content_debug("favorite [%d]", favorite);
2531 ret = media_info_destroy(media);
2536 int g_total_photo_size = 0;
2537 int g_total_video_size = 0;
2538 int g_total_mp3_size = 0;
2539 int g_total_voice_memo_size = 0;
2541 bool dft_cb(media_info_h media, void *user_data)
2543 unsigned long long file_size = 0;
2544 media_content_type_e media_type = -1;
2545 char *mime_type = NULL;
2546 int ret = MEDIA_CONTENT_ERROR_NONE;
2551 ret = media_info_get_media_type(media, &media_type);
2552 if (ret != MEDIA_CONTENT_ERROR_NONE)
2553 media_content_error("media_info_get_media_type failed: %d", ret);
2554 ret = media_info_get_size(media, &file_size);
2555 if (ret != MEDIA_CONTENT_ERROR_NONE)
2556 media_content_error("media_info_get_size failed: %d", ret);
2557 ret = media_info_get_mime_type(media, &mime_type);
2558 if (ret != MEDIA_CONTENT_ERROR_NONE)
2559 media_content_error("media_info_get_mime_type failed: %d", ret);
2561 if (media_type == MEDIA_CONTENT_TYPE_IMAGE)
2562 g_total_photo_size += file_size;
2563 else if (media_type == MEDIA_CONTENT_TYPE_VIDEO)
2564 g_total_video_size += file_size;
2565 else if (media_type == MEDIA_CONTENT_TYPE_SOUND)
2566 g_total_voice_memo_size += file_size;
2567 else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2568 if ((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2569 g_total_mp3_size += file_size;
2571 g_total_voice_memo_size += file_size;
2573 media_content_debug("invalid media_type");
2575 if (mime_type != NULL)
2584 int ret = MEDIA_CONTENT_ERROR_NONE;
2585 media_content_debug("\n============DFT_test============\n\n");
2587 filter_h filter = NULL;
2590 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
2592 ret = media_filter_create(&filter);
2595 media_content_debug("[Internal Memory]\n");
2596 /*1. Photo ============================================================*/
2597 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2600 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2601 media_content_debug("Photo count = [%d]\n", media_cnt);
2604 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2605 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2607 /*2. Video ============================================================*/
2608 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2611 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2612 media_content_debug("Video count = [%d]\n", media_cnt);
2615 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2616 media_content_debug("Video size = [%d]\n", g_total_video_size);
2618 /*3. MP3 ============================================================*/
2619 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2622 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2623 media_content_debug("MP3 count = [%d]\n", media_cnt);
2626 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2627 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2629 /*4. Voice Memo ============================================================*/
2630 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);
2632 /*Get Voice Memo Count*/
2633 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2634 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2636 /*Get Voice Memo Size*/
2637 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2638 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2640 g_total_photo_size = 0;
2641 g_total_video_size = 0;
2642 g_total_mp3_size = 0;
2643 g_total_voice_memo_size = 0;
2646 media_content_debug("\n[External Memory]\n");
2647 /*1. Photo ============================================================*/
2648 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
2651 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2652 media_content_debug("Photo count = [%d]\n", media_cnt);
2655 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2656 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
2658 /*2. Video ============================================================*/
2659 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
2662 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2663 media_content_debug("Video count = [%d]\n", media_cnt);
2666 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2667 media_content_debug("Video size = [%d]\n", g_total_video_size);
2669 /*3. MP3 ============================================================*/
2670 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
2673 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2674 media_content_debug("MP3 count = [%d]\n", media_cnt);
2677 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2678 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
2680 /*4. Voice Memo ============================================================*/
2681 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);
2683 /*Get Voice Memo Count*/
2684 ret = media_info_get_media_count_from_db(filter, &media_cnt);
2685 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
2687 /*Get Voice Memo Size*/
2688 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
2689 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
2690 ret = media_filter_destroy(filter);
2695 void insert_batch_cb(media_content_error_e error, void * user_data)
2697 media_content_debug("media_info_insert_batch_to_db completed!\n");
2700 int test_batch_operations()
2704 char *file_list[10];
2706 for (i = 0; i < 10; i++) {
2707 char filepath[255] = {0,};
2708 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2709 media_content_debug("File : %s\n", filepath);
2710 file_list[i] = strdup(filepath);
2713 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
2714 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2715 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
2719 char *condition = "MEDIA_PATH LIKE \'";
2720 strncat(condition, tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'"), 17);
2721 ret = media_filter_create(&filter);
2722 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2723 media_content_error("Fail to create filter");
2727 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2728 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2729 media_filter_destroy(filter);
2730 media_content_error("Fail to set condition");
2734 ret = media_info_delete_batch_from_db(filter);
2735 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2736 media_filter_destroy(filter);
2737 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
2741 ret = media_filter_destroy(filter);
2746 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
2748 media_content_debug("media_info_insert_burst_shot_to_db completed![%d]\n", error);
2749 g_main_loop_quit(g_loop);
2752 gboolean test_insert_burst_shot_to_db_start(gpointer data)
2754 int ret = MEDIA_CONTENT_ERROR_NONE;
2756 char *file_list[10];
2758 for (i = 0; i < 10; i++) {
2759 char filepath[255] = {0,};
2760 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
2761 media_content_debug("File : %s\n", filepath);
2762 file_list[i] = strdup(filepath);
2765 ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
2766 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2767 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
2773 int test_insert_burst_shot_to_db(void)
2775 GSource *source = NULL;
2776 GMainContext *context = NULL;
2778 g_loop = g_main_loop_new(NULL, FALSE);
2779 context = g_main_loop_get_context(g_loop);
2780 source = g_idle_source_new();
2781 g_source_set_callback(source, test_insert_burst_shot_to_db_start, NULL, NULL);
2782 g_source_attach(source, context);
2784 g_main_loop_run(g_loop);
2785 g_main_loop_unref(g_loop);
2790 void _scan_cb(media_content_error_e err, void *user_data)
2792 media_content_debug("scan callback is called : %d\n", err);
2793 g_main_loop_quit(g_loop);
2798 int test_scan_file()
2802 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2803 ret = media_content_scan_file(file_path);
2804 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2805 media_content_error("Fail to media_content_scan_file : %d", ret);
2812 gboolean test_scan_dir_start(gpointer data)
2816 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
2818 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
2820 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2821 media_content_error("Fail to test_scan_dir_start : %d", ret);
2828 gboolean cancel_scan_dir_start(gpointer data)
2830 int ret = MEDIA_CONTENT_ERROR_NONE;
2832 const char *dir_path = "/opt/usr/media/Images";
2834 ret = media_content_cancel_scan_folder(dir_path);
2836 if (ret == MEDIA_CONTENT_ERROR_NONE)
2837 media_content_debug("media_content_cancel_scan_folder is success");
2839 media_content_error("media_content_cancel_scan_folder is failed");
2844 int test_scan_dir(int cancel)
2846 GSource *source = NULL;
2847 GMainContext *context = NULL;
2849 g_loop = g_main_loop_new(NULL, FALSE);
2850 context = g_main_loop_get_context(g_loop);
2851 source = g_idle_source_new();
2852 g_source_set_callback(source, test_scan_dir_start, NULL, NULL);
2853 g_source_attach(source, context);
2856 GSource *cancel_src = NULL;
2857 cancel_src = g_idle_source_new();
2858 g_source_set_callback(cancel_src, cancel_scan_dir_start, NULL, NULL);
2859 g_source_attach(cancel_src, context);
2862 g_main_loop_run(g_loop);
2863 g_main_loop_unref(g_loop);
2868 void _noti_cb(media_content_error_e error,
2870 media_content_db_update_item_type_e update_item,
2871 media_content_db_update_type_e update_type,
2872 media_content_type_e media_type,
2879 media_content_debug("noti success! : %d\n", error);
2881 media_content_debug("error occured! : %d\n", error);
2884 media_content_debug("Noti from PID(%d)\n", pid);
2886 if (update_item == MEDIA_ITEM_FILE) {
2887 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
2888 } else if (update_item == MEDIA_ITEM_DIRECTORY) {
2889 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
2892 if (update_type == MEDIA_CONTENT_INSERT) {
2893 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
2894 } else if (update_type == MEDIA_CONTENT_DELETE) {
2895 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
2896 } else if (update_type == MEDIA_CONTENT_UPDATE) {
2897 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
2900 media_content_debug("content type : %d\n", media_type);
2903 media_content_debug("path : %s\n", path);
2905 media_content_debug("path not\n");
2908 media_content_debug("uuid : %s\n", uuid);
2910 media_content_debug("uuid not\n");
2913 media_content_debug("mime_type : %s\n", mime_type);
2915 media_content_debug("mime not\n");
2917 if (user_data) media_content_debug("String : %s\n", (char *)user_data);
2919 // g_main_loop_quit(g_loop);
2923 void _noti_cb_2(media_content_error_e error,
2925 media_content_db_update_item_type_e update_item,
2926 media_content_db_update_type_e update_type,
2927 media_content_type_e media_type,
2934 media_content_debug("noti_2 success! : %d\n", error);
2936 media_content_debug("error occured! : %d\n", error);
2939 media_content_debug("Noti_2 from PID(%d)\n", pid);
2941 g_main_loop_quit(g_loop);
2945 static media_content_noti_h noti_h;
2946 static media_content_noti_h noti_h_2;
2948 gboolean _send_noti_operations(gpointer data)
2950 int ret = MEDIA_CONTENT_ERROR_NONE;
2952 /* First of all, noti subscription */
2953 char *user_str = strdup("hi");
2954 media_content_add_db_updated_cb(_noti_cb, (void*)user_str, ¬i_h);
2955 media_content_add_db_updated_cb(_noti_cb_2, (void*)user_str, ¬i_h_2);
2957 /* media_info_insert_to_db */
2958 media_info_h media_item = NULL;
2959 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
2961 ret = media_info_insert_to_db(path, &media_item);
2962 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2963 media_content_error("media_info_insert_to_db failed : %d", ret);
2964 media_info_destroy(media_item);
2968 media_content_debug("media_info_insert_to_db success");
2970 /* media_info_delete_batch_from_db */
2972 char condition[2048] = {0,};
2973 const char *temp= NULL;
2974 temp = tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%\'");
2975 snprintf(condition, sizeof(condition), "MEDIA_PATH LIKE \'%s", temp);
2976 // strncat(condition, temp, strlen(temp));
2978 ret = media_filter_create(&filter);
2979 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2980 media_content_error("Fail to create filter");
2981 media_info_destroy(media_item);
2985 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2986 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2987 media_filter_destroy(filter);
2988 media_info_destroy(media_item);
2989 media_content_error("Fail to set condition");
2992 ret = media_info_delete_batch_from_db(filter);
2993 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2994 media_filter_destroy(filter);
2995 media_info_destroy(media_item);
2996 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3000 media_filter_destroy(filter);
3002 media_content_remove_db_updated_cb(noti_h);
3004 /* media_info_update_to_db */
3005 ret = media_info_update_to_db(media_item);
3006 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3007 media_content_error("media_info_update_to_db failed : %d\n", ret);
3008 media_info_destroy(media_item);
3012 media_info_destroy(media_item);
3019 int ret = MEDIA_CONTENT_ERROR_NONE;
3020 GSource *source = NULL;
3021 GMainContext *context = NULL;
3023 g_loop = g_main_loop_new(NULL, FALSE);
3024 context = g_main_loop_get_context(g_loop);
3025 source = g_idle_source_new();
3026 g_source_set_callback(source, _send_noti_operations, NULL, NULL);
3027 g_source_attach(source, context);
3029 g_main_loop_run(g_loop);
3030 g_main_loop_unref(g_loop);
3032 test_filter_destroy();
3033 media_content_remove_db_updated_cb(noti_h_2);
3038 int test_create_handle(void)
3040 int ret = MEDIA_CONTENT_ERROR_NONE;
3041 media_info_h media = NULL;
3042 const char *path = "/home/owner/content/test/test.txt";
3043 char *str_value = NULL;
3045 bool bool_value = FALSE;
3046 unsigned long long content_size = 0;
3047 time_t modified_time = 0;
3048 double double_value = 0.0;
3050 ret = media_info_create(path, &media);
3052 ret = media_info_set_title(media, "test_title");
3053 ret = media_info_set_album(media, "test_album");
3054 ret = media_info_set_artist(media, "test_artist");
3055 ret = media_info_set_genre(media, "test_genre");
3056 ret = media_info_set_recorded_date(media, "test_recorded_date");
3057 ret = media_info_set_age_rating(media, "test_age_rating");
3058 ret = media_info_set_author(media, "test_author");
3059 ret = media_info_set_category(media, "test_category");
3060 ret = media_info_set_content_name(media, "test_content_name");
3061 ret = media_info_set_description(media, "test_description");
3062 ret = media_info_set_display_name(media, "test_display_name");
3063 ret = media_info_set_keyword(media, "test_keyword");
3064 ret = media_info_set_location_tag(media, "test_location_tag");
3065 ret = media_info_set_weather(media, "test_weather");
3066 ret = media_info_set_provider(media, "test_provider");
3068 ret = media_info_set_altitude(media, 100.10);
3069 ret = media_info_set_latitude(media, 200.20);
3070 ret = media_info_set_longitude(media, 300.30);
3071 ret = media_info_set_rating(media, 10);
3072 ret = media_info_set_played_time(media);
3073 ret = media_info_set_favorite(media, TRUE);
3074 ret = media_info_increase_played_count(media);
3075 ret = media_info_set_added_time(media, 12345);
3077 ret = media_info_insert_to_db_with_data(media);
3078 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3079 media_content_error("media_info_insert_to_db_with_data failed : %d\n", ret);
3080 media_info_destroy(media);
3084 ret = media_info_get_media_id(media, &str_value);
3085 media_content_debug("media_id = [%s]", str_value);
3086 SAFE_FREE(str_value);
3088 ret = media_info_get_file_path(media, &str_value);
3089 media_content_debug("file_path = [%s]", str_value);
3090 SAFE_FREE(str_value);
3092 ret = media_info_get_title(media, &str_value);
3093 media_content_debug("title = [%s]", str_value);
3094 SAFE_FREE(str_value);
3096 ret = media_info_get_age_rating(media, &str_value);
3097 media_content_debug("age_rating = [%s]", str_value);
3098 SAFE_FREE(str_value);
3100 ret = media_info_get_author(media, &str_value);
3101 media_content_debug("author = [%s]", str_value);
3102 SAFE_FREE(str_value);
3104 ret = media_info_get_category(media, &str_value);
3105 media_content_debug("category = [%s]", str_value);
3106 SAFE_FREE(str_value);
3108 ret = media_info_get_content_name(media, &str_value);
3109 media_content_debug("content_name = [%s]", str_value);
3110 SAFE_FREE(str_value);
3112 ret = media_info_get_description(media, &str_value);
3113 media_content_debug("description = [%s]", str_value);
3114 SAFE_FREE(str_value);
3116 ret = media_info_get_display_name(media, &str_value);
3117 media_content_debug("display_name = [%s]", str_value);
3118 SAFE_FREE(str_value);
3120 ret = media_info_get_keyword(media, &str_value);
3121 media_content_debug("keyword = [%s]", str_value);
3122 SAFE_FREE(str_value);
3124 ret = media_info_get_location_tag(media, &str_value);
3125 media_content_debug("location_tag = [%s]", str_value);
3126 SAFE_FREE(str_value);
3128 ret = media_info_get_weather(media, &str_value);
3129 media_content_debug("weather = [%s]", str_value);
3130 SAFE_FREE(str_value);
3132 ret = media_info_get_provider(media, &str_value);
3133 media_content_debug("provider = [%s]", str_value);
3134 SAFE_FREE(str_value);
3136 ret = media_info_get_longitude(media, &double_value);
3137 media_content_debug("longitude = [%lf]", double_value);
3139 ret = media_info_get_latitude(media, &double_value);
3140 media_content_debug("latitude = [%lf]", double_value);
3142 ret = media_info_get_altitude(media, &double_value);
3143 media_content_debug("altitud = [%lf]", double_value);
3145 ret = media_info_get_rating(media, &int_value);
3146 media_content_debug("rating = [%d]", int_value);
3148 ret = media_info_get_favorite(media, &bool_value);
3149 media_content_debug("favorite = [%d]", bool_value);
3151 ret = media_info_get_played_time(media, &modified_time);
3152 media_content_debug("played_time = [%d]", modified_time);
3154 ret = media_info_get_played_count(media, &int_value);
3155 media_content_debug("played_count = [%d]", int_value);
3157 ret = media_info_get_added_time(media, &modified_time);
3158 media_content_debug("added_time = [%d]", modified_time);
3160 ret = media_info_get_size(media, &content_size);
3161 media_content_debug("size = [%d]", content_size);
3163 ret = media_info_get_modified_time(media, &modified_time);
3164 media_content_debug("modified_time = [%d]", modified_time);
3166 ret = media_info_get_media_type(media, (media_content_type_e *)&int_value);
3167 media_content_debug("media_type = [%d]", int_value);
3169 ret = media_info_get_storage_type(media, (media_content_storage_e *)&int_value);
3170 media_content_debug("storage_type = [%d]", int_value);
3172 media_info_destroy(media);
3178 bool media_face_test_cb(media_face_h face, void *user_data)
3180 char *face_id = NULL;
3181 char *media_id = NULL;
3182 unsigned int rect_x = 0;
3183 unsigned int rect_y = 0;
3184 unsigned int rect_w = 0;
3185 unsigned int rect_h = 0;
3186 media_content_orientation_e orientation = 0;
3187 char *face_tag = NULL;
3189 media_face_get_face_id(face, &face_id);
3190 media_face_get_media_id(face, &media_id);
3191 media_face_get_face_rect(face, &rect_x, &rect_y, &rect_w, &rect_h);
3192 media_face_get_orientation(face, &orientation);
3193 media_face_get_tag(face, &face_tag);
3195 media_content_debug("face_id [%s] media_id [%s]", face_id, media_id);
3196 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);
3197 media_content_debug("tag [%s]", face_tag);
3199 if (user_data != NULL) {
3200 media_face_h new_face = NULL;
3201 media_face_clone(&new_face, face);
3203 GList **list = (GList**)user_data;
3204 *list = g_list_append(*list, new_face);
3208 SAFE_FREE(media_id);
3209 SAFE_FREE(face_tag);
3216 int ret = MEDIA_CONTENT_ERROR_NONE;
3217 filter_h filter = NULL;
3218 GList *all_item_list = NULL;
3221 ret = media_filter_create(&filter);
3222 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3224 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", MEDIA_CONTENT_COLLATE_DEFAULT);
3225 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3226 media_filter_destroy(filter);
3227 media_content_error("Fail to set condition");
3231 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
3232 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3233 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
3234 media_filter_destroy(filter);
3238 for (i = 0; i < g_list_length(all_item_list); i++) {
3239 media_info_h media_handle = NULL;
3240 char *media_id = NULL;
3243 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
3245 ret = media_info_get_media_id(media_handle, &media_id);
3246 if (ret != MEDIA_CONTENT_ERROR_NONE)
3247 media_content_error("media_info_get_media_id failed: %d", ret);
3249 ret = media_info_get_face_count_from_db(media_id, filter, &face_count);
3250 if (ret != MEDIA_CONTENT_ERROR_NONE)
3251 media_content_error("media_info_get_face_count_from_db failed: %d", ret);
3253 media_content_error("media_id [%s] face_count [%d]", media_id, face_count);
3255 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, NULL);
3256 if (ret != MEDIA_CONTENT_ERROR_NONE)
3257 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
3259 media_info_destroy(media_handle);
3262 media_filter_destroy(filter);
3267 int test_face_add_del(void)
3269 int ret = MEDIA_CONTENT_ERROR_NONE;
3270 char *media_id = "ecca7366-e085-41d8-a12b-cbdfc2b9c5fc";
3273 media_face_h face = NULL;
3275 char *face_tag = "test_face_tag";
3277 ret = media_face_create(media_id, &face);
3278 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_face_create");
3280 ret = media_face_set_face_rect(face, 10, 12, 50, 100);
3281 ret = media_face_set_orientation(face, 5);
3282 ret = media_face_set_tag(face, face_tag);
3284 ret = media_face_insert_to_db(face);
3285 ret = media_face_destroy(face);
3288 GList *all_item_list = NULL;
3289 filter_h filter = NULL;
3290 ret = media_filter_create(&filter);
3291 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3293 ret = media_filter_set_condition(filter, "MEDIA_FACE_TAG IS NOT NULL", MEDIA_CONTENT_COLLATE_DEFAULT);
3294 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3295 media_filter_destroy(filter);
3296 media_content_error("Fail to set condition");
3300 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, &all_item_list);
3302 if (g_list_length(all_item_list) > 0) {
3303 media_face_h face_handle = NULL;
3304 face_handle = (media_face_h)g_list_nth_data(all_item_list, 0);
3306 ret = media_face_set_face_rect(face_handle, 20, 22, 70, 70);
3307 ret = media_face_set_orientation(face_handle, 3);
3308 ret = media_face_set_tag(face_handle, NULL);
3309 ret = media_face_update_to_db(face_handle);
3311 media_face_destroy(face_handle);
3314 media_filter_destroy(filter);
3317 char *face_id = "5e58a3a8-f0b2-4c29-b799-b49a70dc2313";
3320 ret = media_face_delete_from_db(face_id);
3325 int main(int argc, char *argv[])
3327 int ret = MEDIA_CONTENT_ERROR_NONE;
3329 media_content_debug("--- content manager test start ---\n\n");
3331 ret = test_connect_database();
3332 if (ret != MEDIA_CONTENT_ERROR_NONE)
3333 return MEDIA_CONTENT_ERROR_NONE;
3337 if (ret != MEDIA_CONTENT_ERROR_NONE)
3340 ret = test_gallery_scenario();
3341 if (ret != MEDIA_CONTENT_ERROR_NONE)
3344 ret = test_get_all_music_files();
3345 if (ret != MEDIA_CONTENT_ERROR_NONE)
3348 ret = test_media_info_operation();
3349 if (ret != MEDIA_CONTENT_ERROR_NONE)
3352 ret = test_folder_operation();
3353 if (ret != MEDIA_CONTENT_ERROR_NONE)
3356 ret = test_folder_update();
3357 if (ret != MEDIA_CONTENT_ERROR_NONE)
3360 ret = test_playlist_operation();
3361 if (ret != MEDIA_CONTENT_ERROR_NONE)
3364 ret = test_tag_operation();
3365 if (ret != MEDIA_CONTENT_ERROR_NONE)
3368 ret = test_bookmark_operation();
3369 if (ret != MEDIA_CONTENT_ERROR_NONE)
3372 ret = test_album_list();
3373 if (ret != MEDIA_CONTENT_ERROR_NONE)
3376 ret = test_group_operation();
3377 if (ret != MEDIA_CONTENT_ERROR_NONE)
3380 ret = test_update_operation();
3381 if (ret != MEDIA_CONTENT_ERROR_NONE)
3384 ret = test_insert();
3385 if (ret != MEDIA_CONTENT_ERROR_NONE)
3389 if (ret != MEDIA_CONTENT_ERROR_NONE)
3392 ret = test_create_thumbnail(TRUE);
3393 if (ret != MEDIA_CONTENT_ERROR_NONE)
3396 ret = test_request_update_db();
3397 if (ret != MEDIA_CONTENT_ERROR_NONE)
3401 if (ret != MEDIA_CONTENT_ERROR_NONE)
3404 ret = test_batch_operations();
3405 if (ret != MEDIA_CONTENT_ERROR_NONE)
3406 return MEDIA_CONTENT_ERROR_NONE;
3408 ret = test_insert_burst_shot_to_db();
3409 if (ret != MEDIA_CONTENT_ERROR_NONE)
3410 return MEDIA_CONTENT_ERROR_NONE;
3412 ret = test_scan_file();
3413 if (ret != MEDIA_CONTENT_ERROR_NONE)
3414 return MEDIA_CONTENT_ERROR_NONE;
3416 ret = test_scan_dir(true);
3417 if (ret != MEDIA_CONTENT_ERROR_NONE)
3418 return MEDIA_CONTENT_ERROR_NONE;
3421 if (ret != MEDIA_CONTENT_ERROR_NONE)
3422 return MEDIA_CONTENT_ERROR_NONE;
3424 ret = test_create_handle();
3425 if (ret != MEDIA_CONTENT_ERROR_NONE)
3426 return MEDIA_CONTENT_ERROR_NONE;
3429 if (ret != MEDIA_CONTENT_ERROR_NONE)
3430 return MEDIA_CONTENT_ERROR_NONE;
3432 ret = test_face_add_del();
3433 if (ret != MEDIA_CONTENT_ERROR_NONE)
3434 return MEDIA_CONTENT_ERROR_NONE;
3437 ret = test_disconnect_database();
3438 if (ret != MEDIA_CONTENT_ERROR_NONE)
3441 media_content_debug("--- content manager test end ---\n");