2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
21 #include <media_content.h>
22 #include <media_info_private.h>
26 #include <tzplatform_config.h>
27 #include <media_content_internal.h>
30 filter_h g_filter = NULL;
31 filter_h g_filter_g = NULL; /*filter for group like folder, tag, playlist, album, year ... */
33 GMainLoop *g_loop = NULL;
35 static int g_media_cnt = 0;
37 #define test_audio_id "3304285f-1070-41af-8b4e-f0086cc768f3"
38 #define test_video_id "53c43e7e-53d2-4194-80a6-55d5dcde0def"
39 #define test_image_id "db1c184c-6f31-43b4-b924-8c00ac5b6197"
40 media_folder_h g_folder = NULL;
42 bool get_audio_meta(audio_meta_h audio)
47 int ret = MEDIA_CONTENT_ERROR_NONE;
49 media_content_debug("=== audio meta ===");
51 ret = audio_meta_get_media_id(audio, &c_value);
52 if (ret != MEDIA_CONTENT_ERROR_NONE)
53 media_content_error("error when get meta : [%d]", ret);
54 media_content_debug("audio_id : [%s]", c_value);
57 ret = audio_meta_get_album(audio, &c_value);
58 if (ret != MEDIA_CONTENT_ERROR_NONE)
59 media_content_error("error when get meta : [%d]", ret);
60 media_content_debug("album : [%s]", c_value);
63 ret = audio_meta_get_artist(audio, &c_value);
64 if (ret != MEDIA_CONTENT_ERROR_NONE)
65 media_content_error("error when get meta : [%d]", ret);
66 media_content_debug("artist : [%s]", c_value);
69 ret = audio_meta_get_album_artist(audio, &c_value);
70 if (ret != MEDIA_CONTENT_ERROR_NONE)
71 media_content_error("error when get meta : [%d]", ret);
72 media_content_debug("album_artist : [%s]", c_value);
75 ret = audio_meta_get_genre(audio, &c_value);
76 if (ret != MEDIA_CONTENT_ERROR_NONE)
77 media_content_error("error when get meta : [%d]", ret);
78 media_content_debug("genre : [%s]", c_value);
81 ret = audio_meta_get_composer(audio, &c_value);
82 if (ret != MEDIA_CONTENT_ERROR_NONE)
83 media_content_error("error when get meta : [%d]", ret);
84 media_content_debug("composer : [%s]", c_value);
87 ret = audio_meta_get_year(audio, &c_value);
88 if (ret != MEDIA_CONTENT_ERROR_NONE)
89 media_content_error("error when get meta : [%d]", ret);
90 media_content_debug("year : [%s]", c_value);
93 ret = audio_meta_get_recorded_date(audio, &c_value);
94 if (ret != MEDIA_CONTENT_ERROR_NONE)
95 media_content_error("error when get meta : [%d]", ret);
96 media_content_debug("recorded_date : [%s]", c_value);
99 ret = audio_meta_get_copyright(audio, &c_value);
100 if (ret != MEDIA_CONTENT_ERROR_NONE)
101 media_content_error("error when get meta : [%d]", ret);
102 media_content_debug("copyright : [%s]", c_value);
105 ret = audio_meta_get_track_num(audio, &c_value);
106 if (ret != MEDIA_CONTENT_ERROR_NONE)
107 media_content_error("error when get meta : [%d]", ret);
108 media_content_debug("track_num : [%s]", c_value);
111 ret = audio_meta_get_bit_rate(audio, &i_value);
112 if (ret != MEDIA_CONTENT_ERROR_NONE)
113 media_content_error("error when get meta : [%d]", ret);
114 media_content_debug("bitrate : [%d]", i_value);
116 ret = audio_meta_get_sample_rate(audio, &i_value);
117 if (ret != MEDIA_CONTENT_ERROR_NONE)
118 media_content_error("error when get meta : [%d]", ret);
119 media_content_debug("samplerate : [%d]", i_value);
121 ret = audio_meta_get_channel(audio, &i_value);
122 if (ret != MEDIA_CONTENT_ERROR_NONE)
123 media_content_error("error when get meta : [%d]", ret);
124 media_content_debug("channel : [%d]", i_value);
126 ret = audio_meta_get_duration(audio, &i_value);
127 if (ret != MEDIA_CONTENT_ERROR_NONE)
128 media_content_error("error when get meta : [%d]", ret);
129 media_content_debug("duration : [%d]", i_value);
131 ret = audio_meta_get_played_count(audio, &i_value);
132 if (ret != MEDIA_CONTENT_ERROR_NONE)
133 media_content_error("error when get meta : [%d]", ret);
134 media_content_debug("played_count : [%d]", i_value);
136 ret = audio_meta_get_played_time(audio, &t_value);
137 if (ret != MEDIA_CONTENT_ERROR_NONE)
138 media_content_error("error when get meta : [%d]", ret);
139 media_content_debug("played_time : [%ld]", t_value);
141 ret = audio_meta_get_played_position(audio, &i_value);
142 if (ret != MEDIA_CONTENT_ERROR_NONE)
143 media_content_error("error when get meta : [%d]", ret);
144 media_content_debug("played_position : [%d]", i_value);
149 bool get_video_meta(video_meta_h video)
151 char *c_value = NULL;
154 int ret = MEDIA_CONTENT_ERROR_NONE;
156 media_content_debug("=== video meta ===");
158 ret = video_meta_get_media_id(video, &c_value);
159 if (ret != MEDIA_CONTENT_ERROR_NONE)
160 media_content_error("error when get meta : [%d]", ret);
161 media_content_debug("video_id : [%s]", c_value);
164 ret = video_meta_get_album(video, &c_value);
165 if (ret != MEDIA_CONTENT_ERROR_NONE)
166 media_content_error("error when get meta : [%d]", ret);
167 media_content_debug("album : [%s]", c_value);
170 ret = video_meta_get_artist(video, &c_value);
171 if (ret != MEDIA_CONTENT_ERROR_NONE)
172 media_content_error("error when get meta : [%d]", ret);
173 media_content_debug("artist : [%s]", c_value);
176 ret = video_meta_get_album_artist(video, &c_value);
177 if (ret != MEDIA_CONTENT_ERROR_NONE)
178 media_content_error("error when get meta : [%d]", ret);
179 media_content_debug("album_artist : [%s]", c_value);
182 ret = video_meta_get_genre(video, &c_value);
183 if (ret != MEDIA_CONTENT_ERROR_NONE)
184 media_content_error("error when get meta : [%d]", ret);
185 media_content_debug("genre : [%s]", c_value);
188 ret = video_meta_get_composer(video, &c_value);
189 if (ret != MEDIA_CONTENT_ERROR_NONE)
190 media_content_error("error when get meta : [%d]", ret);
191 media_content_debug("omposer : [%s]", c_value);
194 ret = video_meta_get_year(video, &c_value);
195 if (ret != MEDIA_CONTENT_ERROR_NONE)
196 media_content_error("error when get meta : [%d]", ret);
197 media_content_debug("year : [%s]", c_value);
200 ret = video_meta_get_recorded_date(video, &c_value);
201 if (ret != MEDIA_CONTENT_ERROR_NONE)
202 media_content_error("error when get meta : [%d]", ret);
203 media_content_debug("recorded_date : [%s]", c_value);
206 ret = video_meta_get_copyright(video, &c_value);
207 if (ret != MEDIA_CONTENT_ERROR_NONE)
208 media_content_error("error when get meta : [%d]", ret);
209 media_content_debug("copyright : [%s]", c_value);
212 ret = video_meta_get_track_num(video, &c_value);
213 if (ret != MEDIA_CONTENT_ERROR_NONE)
214 media_content_error("error when get meta : [%d]", ret);
215 media_content_debug("track_num : [%s]", c_value);
218 ret = video_meta_get_bit_rate(video, &i_value);
219 if (ret != MEDIA_CONTENT_ERROR_NONE)
220 media_content_error("error when get meta : [%d]", ret);
221 media_content_debug("bitrate : [%d]", i_value);
223 ret = video_meta_get_duration(video, &i_value);
224 if (ret != MEDIA_CONTENT_ERROR_NONE)
225 media_content_error("error when get meta : [%d]", ret);
226 media_content_debug("duration : [%d]", i_value);
228 ret = video_meta_get_width(video, &i_value);
229 if (ret != MEDIA_CONTENT_ERROR_NONE)
230 media_content_error("error when get meta : [%d]", ret);
231 media_content_debug("width : [%d]", i_value);
233 ret = video_meta_get_height(video, &i_value);
234 if (ret != MEDIA_CONTENT_ERROR_NONE)
235 media_content_error("error when get meta : [%d]", ret);
236 media_content_debug("height : [%d]", i_value);
238 ret = video_meta_get_played_count(video, &i_value);
239 if (ret != MEDIA_CONTENT_ERROR_NONE)
240 media_content_error("error when get meta : [%d]", ret);
241 media_content_debug("played_count : [%d]", i_value);
243 ret = video_meta_get_played_time(video, &t_value);
244 if (ret != MEDIA_CONTENT_ERROR_NONE)
245 media_content_error("error when get meta : [%d]", ret);
246 media_content_debug("played_time : [%ld]", t_value);
248 ret = video_meta_get_played_position(video, &i_value);
249 if (ret != MEDIA_CONTENT_ERROR_NONE)
250 media_content_error("error when get meta : [%d]", ret);
251 media_content_debug("played_position : [%d]", i_value);
256 bool gallery_folder_list_cb(media_folder_h folder, void *user_data)
258 media_folder_h new_folder = NULL;
259 media_folder_clone(&new_folder, folder);
261 GList **list = (GList**)user_data;
262 *list = g_list_append(*list, new_folder);
267 bool gallery_media_item_cb(media_info_h media, void *user_data)
269 media_info_h new_media = NULL;
270 int ret = MEDIA_CONTENT_ERROR_NONE;
272 ret = media_info_clone(&new_media, media);
274 if (ret != MEDIA_CONTENT_ERROR_NONE) {
275 GList **list = (GList**)user_data;
276 *list = g_list_append(*list, new_media);
282 bool gallery_tag_item_cb(media_tag_h tag, void *user_data)
284 media_tag_h new_tag = NULL;
285 media_tag_clone(&new_tag, tag);
287 GList **list = (GList**)user_data;
288 *list = g_list_append(*list, new_tag);
293 bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data)
295 media_bookmark_h new_bm = NULL;
296 int ret = MEDIA_CONTENT_ERROR_NONE;
298 ret = media_bookmark_clone(&new_bm, bookmark);
299 if (ret != MEDIA_CONTENT_ERROR_NONE)
300 media_content_error("error media_bookmark_clone : [%d]", ret);
302 GList **list = (GList**)user_data;
303 *list = g_list_append(*list, new_bm);
308 bool media_item_cb(media_info_h media, void *user_data)
310 char *c_value = NULL;
311 char *media_id = NULL;
312 media_content_type_e media_type = 0;
313 int ret = MEDIA_CONTENT_ERROR_NONE;
316 media_content_debug("NO Item");
320 ret = media_info_get_media_type(media, &media_type);
321 if (ret != MEDIA_CONTENT_ERROR_NONE)
322 media_content_error("error when get info : [%d]", ret);
323 media_content_debug("media_type : [%d]", media_type);
325 ret = media_info_get_media_id(media, &media_id);
326 if (ret != MEDIA_CONTENT_ERROR_NONE)
327 media_content_error("error when get info : [%d]", ret);
328 media_content_debug("media_id : [%s]", media_id);
330 ret = media_info_get_file_path(media, &c_value);
331 if (ret != MEDIA_CONTENT_ERROR_NONE)
332 media_content_error("error when get info : [%d]", ret);
333 media_content_debug("file_path : [%s]", c_value);
339 bool b_value = false;
340 unsigned long long size = 0;
342 if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
345 if (media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE) {
346 get_audio_meta(audio);
347 ret = audio_meta_destroy(audio);
348 if (ret != MEDIA_CONTENT_ERROR_NONE)
349 media_content_error("error audio_meta_destroy : [%d]", ret);
351 media_content_error("[audio_error]");
353 } else if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
355 media_content_orientation_e orientation = 0;
356 bool is_burst_shot = false;
357 char *burst_id = NULL;
358 char *weather = NULL;
360 if (media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE) {
361 ret = image_meta_get_orientation(image, &orientation);
362 if (ret != MEDIA_CONTENT_ERROR_NONE)
363 media_content_error("error image_meta_get_orientation : [%d]", ret);
365 media_content_debug("[image] orientation : %d", orientation);
367 ret = image_meta_is_burst_shot(image, &is_burst_shot);
368 if (ret != MEDIA_CONTENT_ERROR_NONE)
369 media_content_error("error image_meta_is_burst_shot : [%d]", ret);
371 ret = image_meta_get_burst_id(image, &burst_id);
372 if (ret != MEDIA_CONTENT_ERROR_NONE)
373 media_content_error("error image_meta_get_burst_id : [%d]", ret);
375 media_content_debug("[image] burst_id : [%s]", burst_id);
380 ret = image_meta_destroy(image);
381 if (ret != MEDIA_CONTENT_ERROR_NONE)
382 media_content_error("error image_meta_destroy : [%d]", ret);
384 media_content_error("[image_error]");
386 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
389 if (media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE) {
390 get_video_meta(video);
391 ret = video_meta_destroy(video);
392 if (ret != MEDIA_CONTENT_ERROR_NONE)
393 media_content_error("error video_meta_destroy : [%d]", ret);
395 media_content_error("[video_error]");
398 media_content_debug("Other Content");
401 media_content_debug("=== media_info ===");
402 ret = media_info_get_file_path(media, &c_value);
403 if (ret != MEDIA_CONTENT_ERROR_NONE)
404 media_content_error("error when get info : [%d]", ret);
405 media_content_debug("file_path : [%s]", c_value);
408 ret = media_info_get_display_name(media, &c_value);
409 if (ret != MEDIA_CONTENT_ERROR_NONE)
410 media_content_error("error when get info : [%d]", ret);
411 media_content_debug("display_name : [%s]", c_value);
414 ret = media_info_get_mime_type(media, &c_value);
415 if (ret != MEDIA_CONTENT_ERROR_NONE)
416 media_content_error("error when get info : [%d]", ret);
417 media_content_debug("mime_type : [%s]", c_value);
420 ret = media_info_get_thumbnail_path(media, &c_value);
421 if (ret != MEDIA_CONTENT_ERROR_NONE)
422 media_content_error("error when get info : [%d]", ret);
423 media_content_debug("thumbnail_path : [%s]", c_value);
426 ret = media_info_get_description(media, &c_value);
427 if (ret != MEDIA_CONTENT_ERROR_NONE)
428 media_content_error("error when get info : [%d]", ret);
429 media_content_debug("description : [%s]", c_value);
432 ret = media_info_get_author(media, &c_value);
433 if (ret != MEDIA_CONTENT_ERROR_NONE)
434 media_content_error("error when get info : [%d]", ret);
435 media_content_debug("author : [%s]", c_value);
438 ret = media_info_get_provider(media, &c_value);
439 if (ret != MEDIA_CONTENT_ERROR_NONE)
440 media_content_error("error when get info : [%d]", ret);
441 media_content_debug("provider : [%s]", c_value);
444 ret = media_info_get_content_name(media, &c_value);
445 if (ret != MEDIA_CONTENT_ERROR_NONE)
446 media_content_error("error when get info : [%d]", ret);
447 media_content_debug("content_name : [%s]", c_value);
450 ret = media_info_get_category(media, &c_value);
451 if (ret != MEDIA_CONTENT_ERROR_NONE)
452 media_content_error("error when get info : [%d]", ret);
453 media_content_debug("category : [%s]", c_value);
456 ret = media_info_get_location_tag(media, &c_value);
457 if (ret != MEDIA_CONTENT_ERROR_NONE)
458 media_content_error("error when get info : [%d]", ret);
459 media_content_debug("location_tag : [%s]", c_value);
462 ret = media_info_get_age_rating(media, &c_value);
463 if (ret != MEDIA_CONTENT_ERROR_NONE)
464 media_content_error("error when get info : [%d]", ret);
465 media_content_debug("age_rating : [%s]", c_value);
468 ret = media_info_get_keyword(media, &c_value);
469 if (ret != MEDIA_CONTENT_ERROR_NONE)
470 media_content_error("error when get info : [%d]", ret);
471 media_content_debug("keyword : [%s]", c_value);
474 ret = media_info_get_size(media, &size);
475 if (ret != MEDIA_CONTENT_ERROR_NONE)
476 media_content_error("error when get info : [%d]", ret);
477 media_content_debug("size : [%lld]", size);
479 ret = media_info_get_added_time(media, &t_value);
480 if (ret != MEDIA_CONTENT_ERROR_NONE)
481 media_content_error("error when get info : [%d]", ret);
482 media_content_debug("added_time : [%ld]", t_value);
484 ret = media_info_get_modified_time(media, &t_value);
485 if (ret != MEDIA_CONTENT_ERROR_NONE)
486 media_content_error("error when get info : [%d]", ret);
487 media_content_debug("modified_time : [%ld]", t_value);
489 ret = media_info_get_timeline(media, &t_value);
490 if (ret != MEDIA_CONTENT_ERROR_NONE)
491 media_content_error("error when get info : [%d]", ret);
492 media_content_debug("timeline : [%ld]", t_value);
494 ret = media_info_get_rating(media, &i_value);
495 if (ret != MEDIA_CONTENT_ERROR_NONE)
496 media_content_error("error when get info : [%d]", ret);
497 media_content_debug("rating : [%d]", i_value);
499 ret = media_info_get_favorite(media, &b_value);
500 if (ret != MEDIA_CONTENT_ERROR_NONE)
501 media_content_error("error when get info : [%d]", ret);
502 media_content_debug("favorite : [%d]", b_value);
504 ret = media_info_is_drm(media, &b_value);
505 if (ret != MEDIA_CONTENT_ERROR_NONE)
506 media_content_error("error when get info : [%d]", ret);
507 media_content_debug("is_drm : [%d]", b_value);
509 ret = media_info_is_360_content(media, &b_value);
510 if (ret != MEDIA_CONTENT_ERROR_NONE)
511 media_content_error("error when get info : [%d]", ret);
512 media_content_debug("is_360 : [%d]", b_value);
514 ret = media_info_get_stitched_state(media, &i_value);
515 if (ret != MEDIA_CONTENT_ERROR_NONE)
516 media_content_error("error when get info : [%d]", ret);
517 media_content_debug("360 stitched : [%d]", i_value);
519 ret = media_info_get_stitched_engine(media, &i_value);
520 if (ret != MEDIA_CONTENT_ERROR_NONE)
521 media_content_error("error when get info : [%d]", ret);
522 media_content_debug("360 engine : [%d]", i_value);
524 ret = media_info_set_weather(media, "Sunny");
525 if (ret != MEDIA_CONTENT_ERROR_NONE) {
526 media_content_error("Fail to set weather");
529 ret = media_info_get_weather(media, &c_value);
530 if (ret != MEDIA_CONTENT_ERROR_NONE)
531 media_content_error("error when get info : [%d]", ret);
532 media_content_debug("weather : [%s]", c_value);
535 /* Media server can't update when another db handle holds DB connection by sqlite3_prepare */
536 /*ret = media_info_set_location_tag(media, "Test location tag");*/
537 /*media_info_update_to_db(media);*/
544 bool folder_list_cb(media_folder_h folder, void *user_data)
547 char *folder_id = NULL;
548 char *str_val = NULL;
550 media_content_storage_e storage_type;
552 media_folder_h *_folder = (media_folder_h*)user_data;
554 media_content_debug("===========================");
555 if (folder != NULL) {
557 media_folder_clone(_folder, folder);
559 if (media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE) {
560 media_content_error("[ERROR] media_folder_get_folder_id is failed");
563 media_content_debug("folder_id = [%s]", folder_id);
565 if (media_folder_get_parent_folder_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
566 SAFE_FREE(folder_id);
567 media_content_error("[ERROR] media_folder_get_parent_folder_id is failed");
570 media_content_debug("parent_folder_id = [%s]", str_val);
572 if (media_folder_get_path(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
573 SAFE_FREE(folder_id);
574 media_content_error("[ERROR] media_folder_get_path is failed");
577 media_content_debug("folder_path = [%s]", str_val);
580 if (media_folder_get_name(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
581 SAFE_FREE(folder_id);
582 media_content_error("[ERROR] media_folder_get_name is failed");
585 media_content_debug("folder_name = [%s]", str_val);
588 if (media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE) {
589 SAFE_FREE(folder_id);
590 media_content_error("[ERROR] media_folder_get_storage_type is failed");
593 media_content_debug("storage_type = [%d]", storage_type);
595 if (media_folder_get_storage_id(folder, &str_val) != MEDIA_CONTENT_ERROR_NONE) {
596 SAFE_FREE(folder_id);
597 media_content_error("[ERROR] media_folder_get_name is failed");
600 media_content_debug("storage_id = [%s]", str_val);
603 if (media_folder_get_order(folder, &int_val) != MEDIA_CONTENT_ERROR_NONE) {
604 media_content_error("[ERROR] media_folder_get_order is failed");
607 media_content_debug("folder_order = [%d]", int_val);
609 if (media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE) {
610 SAFE_FREE(folder_id);
611 media_content_error("[ERROR] media_folder_get_media_count_from_db is failed");
615 if (media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
616 SAFE_FREE(folder_id);
617 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed");
621 SAFE_FREE(folder_id);
630 bool test_album_from_db(int album_id)
632 int ret = MEDIA_CONTENT_ERROR_NONE;
633 media_album_h album_h;
634 int test_album_id = 0;
635 char *album_name = NULL;
638 ret = media_album_get_album_from_db(album_id, &album_h);
639 if (ret != MEDIA_CONTENT_ERROR_NONE) {
640 media_content_error("error when get album");
644 if (media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE) {
645 media_album_destroy(album_h);
649 media_content_debug("test_album_id : [%d]", test_album_id);
651 if (media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
652 media_album_destroy(album_h);
656 media_content_debug("album_name : [%s]", album_name);
658 if (media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE) {
659 media_album_destroy(album_h);
660 /* fix prevent: Resource Leak */
661 SAFE_FREE(album_name);
665 media_content_debug("artist : [%s]", artist);
667 SAFE_FREE(album_name);
670 media_album_destroy(album_h);
675 bool playlist_list_cb(media_playlist_h playlist, void *user_data)
677 int ret = MEDIA_CONTENT_ERROR_NONE;
679 char *playlist_name = NULL;
680 media_playlist_h playlist_h;
681 char *playlist_thumbnail_path = NULL;
683 media_content_debug("playlist_list_cb ======");
685 GList **list = (GList**)user_data;
688 if (playlist == NULL) {
689 media_content_debug(" playlist handle is NULL");
693 ret = media_playlist_get_playlist_id(playlist, &playlist_id);
694 if (ret != MEDIA_CONTENT_ERROR_NONE)
695 media_content_error("error media_playlist_get_playlist_id : [%d]", ret);
697 media_content_debug("playlist_id : %d", playlist_id);
698 /* 64bit build issue */
700 if (user_data != NULL)
701 *list = g_list_append(*list, (gpointer)playlist_id);
703 ret = media_playlist_get_name(playlist, &playlist_name);
704 if (ret != MEDIA_CONTENT_ERROR_NONE)
705 media_content_error("error media_playlist_get_name : [%d]", ret);
707 media_content_debug("playlist_name : %s", playlist_name);
708 SAFE_FREE(playlist_name);
710 ret = media_playlist_get_thumbnail_path(playlist, &playlist_thumbnail_path);
711 if (ret != MEDIA_CONTENT_ERROR_NONE)
712 media_content_error("error media_playlist_get_thumbnail_path : [%d]", ret);
714 media_content_debug("playlist_thumbnail_path : %s", playlist_thumbnail_path);
715 SAFE_FREE(playlist_thumbnail_path);
717 ret = media_playlist_get_playlist_from_db(playlist_id, &playlist_h);
718 if (ret != MEDIA_CONTENT_ERROR_NONE)
719 media_content_error("error media_playlist_get_playlist_from_db : [%d]", ret);
721 ret = media_playlist_destroy(playlist_h);
722 if (ret != MEDIA_CONTENT_ERROR_NONE)
723 media_content_error("error media_playlist_destroy : [%d]", ret);
728 bool tag_list_cb(media_tag_h tag, void *user_data)
731 char *tag_name = NULL;
732 int ret = MEDIA_CONTENT_ERROR_NONE;
735 media_content_debug(" tag handle is NULL");
739 ret = media_tag_get_tag_id(tag, &tag_id);
740 if (ret != MEDIA_CONTENT_ERROR_NONE)
741 media_content_error("error media_tag_get_tag_id : [%d]", ret);
743 media_content_debug("tag_id : %d", tag_id);
745 ret = media_tag_get_name(tag, &tag_name);
746 if (ret != MEDIA_CONTENT_ERROR_NONE)
747 media_content_error("error media_tag_get_name : [%d]", ret);
749 media_content_debug("tag_name : %s", tag_name);
755 bool bookmarks_cb(media_bookmark_h bookmark, void *user_data)
757 media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark;
758 int ret = MEDIA_CONTENT_ERROR_NONE;
760 if (_bookmark != NULL && user_data != NULL) {
761 media_bookmark_h new_bookmark;
763 media_bookmark_clone(&new_bookmark, bookmark);
764 GList **list = (GList**)user_data;
765 *list = g_list_append(*list, new_bookmark);
768 if (_bookmark != NULL) {
773 ret = media_bookmark_get_bookmark_id(bookmark, &bookmark_id);
774 if (ret != MEDIA_CONTENT_ERROR_NONE)
775 media_content_error("error media_bookmark_get_bookmark_id : [%d]", ret);
777 media_content_debug("bookmark_id : %d", bookmark_id);
779 ret = media_bookmark_get_thumbnail_path(bookmark, &name);
780 if (ret != MEDIA_CONTENT_ERROR_NONE)
781 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
783 media_content_debug("bookmark thumbnail_path : %s", name);
786 ret = media_bookmark_get_marked_time(bookmark, &time);
787 if (ret != MEDIA_CONTENT_ERROR_NONE)
788 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
790 media_content_debug("bookmark marked_time : %ld", time);
792 ret = media_bookmark_get_name(bookmark, &name);
793 if (ret != MEDIA_CONTENT_ERROR_NONE)
794 media_content_error("error media_bookmark_get_name : [%d]", ret);
796 media_content_debug("bookmark name : %s", name);
805 bool album_list_cb(media_album_h album, void *user_data)
808 char *album_name = NULL;
810 char *album_art = NULL;
812 int ret = MEDIA_CONTENT_ERROR_NONE;
813 filter_h filter = NULL;
816 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
818 ret = media_filter_create(&filter);
819 if (ret != MEDIA_CONTENT_ERROR_NONE) {
820 media_content_error("Fail to create filter");
823 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
824 if (ret != MEDIA_CONTENT_ERROR_NONE) {
825 media_filter_destroy(filter);
826 media_content_error("Fail to set condition");
829 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE);
830 if (ret != MEDIA_CONTENT_ERROR_NONE) {
831 media_filter_destroy(filter);
832 media_content_error("Fail to set order");
837 if (media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE) {
838 media_filter_destroy(filter);
842 media_content_debug("album_id : [%d]", album_id);
844 if (media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE) {
845 media_filter_destroy(filter);
849 media_content_debug("album_name : [%s]", album_name);
850 SAFE_FREE(album_name);
852 if (media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE) {
853 media_filter_destroy(filter);
857 media_content_debug("artist : [%s]", artist);
860 if (media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE) {
861 media_filter_destroy(filter);
865 media_content_debug("album_art : [%s]", album_art);
866 SAFE_FREE(album_art);
868 if (media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE) {
869 media_filter_destroy(filter);
873 media_content_debug("media_count : [%d]", media_count);
875 if (media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) {
876 media_filter_destroy(filter);
880 test_album_from_db(album_id);
882 media_content_error("album item not Found!!");
885 media_filter_destroy(filter);
890 bool group_list_cb(const char *group_name, void *user_data)
893 int *idx = user_data;
895 media_content_debug("group item : [%s] [%d]", group_name, *idx);
897 if (media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE)
900 media_content_debug("media_count : [%d]", media_count);
902 if (media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE)
908 bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data)
910 media_content_debug("playlist_member_id : [%d]", playlist_member_id);
911 /* 64bit build issue */
913 GList **list = (GList**)user_data;
915 *list = g_list_append(*list, (gpointer)playlist_member_id);
917 /*media_item_cb(media, user_data);*/
922 int test_filter_create(void)
924 media_content_debug("\n============Filter Create============\n\n");
926 int ret = MEDIA_CONTENT_ERROR_NONE;
928 /* Filter for media */
929 const char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
930 /*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*/
932 ret = media_filter_create(&g_filter);
934 /* Set condition and collate
935 * Condition string : You can make where statement of sql.
936 * Colation : You can use collation when comparing.
937 * Ex) In case of FILE_NAME='Samsung' as condition string,
938 * if you want to compare with NOCASE collation,
939 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
940 * if you want to compare in case-sensitive,
941 * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
943 ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
945 /* Collation of ordering
946 * If you want to get list, which is sorted by NOCASE,
947 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE);
949 * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
951 /* Able to set multi column to set order */
953 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, "MEDIA_MODIFIED_TIME, MEDIA_DISPLAY_NAME", MEDIA_CONTENT_COLLATE_DEFAULT);
954 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT);
955 ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TRACK_NUM_INT, MEDIA_CONTENT_COLLATE_DEFAULT);
956 ret = media_filter_set_storage(g_filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
958 /* Filter for group */
959 const char *g_condition = "TAG_NAME like \"\%my\%\"";
960 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
962 ret = media_filter_create(&g_filter_g);
964 ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
969 int test_filter_destroy(void)
971 media_content_debug("\n============Filter Create============\n\n");
973 int ret = MEDIA_CONTENT_ERROR_NONE;
975 ret = media_filter_destroy(g_filter);
980 int test_connect_database(void)
982 int ret = MEDIA_CONTENT_ERROR_NONE;
984 media_content_debug("\n============DB Connection Test============\n\n");
986 ret = media_content_connect();
988 if (ret == MEDIA_CONTENT_ERROR_NONE)
989 media_content_debug("connection is success\n\n");
991 media_content_error("connection is failed\n\n");
996 int test_gallery_scenario(void)
998 int ret = MEDIA_CONTENT_ERROR_NONE;
1000 filter_h filter = NULL;
1003 GList *folder_list = NULL;
1004 media_folder_h folder_handle = NULL;
1006 /* First, Get folder list */
1007 ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list);
1008 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1009 media_content_error("media_folder_foreach_folder_from_db failed: %d", ret);
1012 media_content_debug("media_folder_foreach_folder_from_db success!!");
1013 char *folder_id = NULL;
1014 char *folder_name = NULL;
1015 char *folder_path = NULL;
1017 for (i = 0; i < g_list_length(folder_list); i++) {
1018 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1020 ret = media_folder_get_folder_id(folder_handle, &folder_id);
1021 if (ret != MEDIA_CONTENT_ERROR_NONE)
1022 media_content_error("media_folder_get_folder_id failed: %d", ret);
1023 ret = media_folder_get_name(folder_handle, &folder_name);
1024 if (ret != MEDIA_CONTENT_ERROR_NONE)
1025 media_content_error("media_folder_get_name failed: %d", ret);
1026 ret = media_folder_get_path(folder_handle, &folder_path);
1027 if (ret != MEDIA_CONTENT_ERROR_NONE)
1028 media_content_error("media_folder_get_path failed: %d", ret);
1030 media_content_debug("folder_id [%d] : %s", i, folder_id);
1031 media_content_debug("folder_name [%d] : %s", i, folder_name);
1032 media_content_debug("folder_path [%d] : %s", i, folder_path);
1034 ret = media_folder_get_media_count_from_db(folder_id, filter, &count);
1035 /* User should free these string */
1036 SAFE_FREE(folder_id);
1037 SAFE_FREE(folder_name);
1038 SAFE_FREE(folder_path);
1039 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1040 media_content_error("media_folder_get_media_count_from_db failed: %d", ret);
1043 media_content_debug("media count [%d] : %d", i, count);
1048 /* To check performance */
1049 struct timeval start, end;
1050 gettimeofday(&start, NULL);
1052 /* Second, Get all item list */
1053 media_info_h media_handle = NULL;
1054 GList *all_item_list = NULL;
1056 media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE;
1057 media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC;
1058 ret = media_filter_create(&filter);
1059 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1060 media_content_error("Fail to create filter");
1063 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type);
1064 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1065 media_filter_destroy(filter);
1066 media_content_error("Fail to set condition");
1069 ret = media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type);
1070 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1071 media_filter_destroy(filter);
1072 media_content_error("Fail to set order");
1076 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
1077 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1078 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
1079 media_filter_destroy(filter);
1082 media_content_debug("media_info_foreach_media_from_db success");
1083 media_content_type_e media_type;
1084 char *media_id = NULL;
1085 char *media_name = NULL;
1086 char *media_path = NULL;
1088 for (i = 0; i < g_list_length(all_item_list); i++) {
1089 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1091 ret = media_info_get_media_id(media_handle, &media_id);
1092 if (ret != MEDIA_CONTENT_ERROR_NONE)
1093 media_content_error("media_info_get_media_id failed: %d", ret);
1094 ret = media_info_get_media_type(media_handle, &media_type);
1095 if (ret != MEDIA_CONTENT_ERROR_NONE)
1096 media_content_error("media_info_get_media_type failed: %d", ret);
1097 ret = media_info_get_display_name(media_handle, &media_name);
1098 if (ret != MEDIA_CONTENT_ERROR_NONE)
1099 media_content_error("media_info_get_display_name failed: %d", ret);
1100 ret = media_info_get_file_path(media_handle, &media_path);
1101 if (ret != MEDIA_CONTENT_ERROR_NONE)
1102 media_content_error("media_info_get_file_path failed: %d", ret);
1104 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1105 image_meta_h image_handle;
1106 int width = 0, height = 0;
1107 media_content_orientation_e orientation = 0;
1108 char *datetaken = NULL;
1109 char *burst_id = NULL;
1111 ret = media_info_get_image(media_handle, &image_handle);
1112 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1113 media_content_error("media_info_get_image failed: %d", ret);
1115 ret = image_meta_get_width(image_handle, &width);
1116 if (ret != MEDIA_CONTENT_ERROR_NONE)
1117 media_content_error("error image_meta_get_width : [%d]", ret);
1118 ret = image_meta_get_height(image_handle, &height);
1119 if (ret != MEDIA_CONTENT_ERROR_NONE)
1120 media_content_error("error image_meta_get_height : [%d]", ret);
1121 ret = image_meta_get_orientation(image_handle, &orientation);
1122 if (ret != MEDIA_CONTENT_ERROR_NONE)
1123 media_content_error("error image_meta_get_orientation : [%d]", ret);
1124 ret = image_meta_get_date_taken(image_handle, &datetaken);
1125 if (ret != MEDIA_CONTENT_ERROR_NONE)
1126 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1127 ret = image_meta_get_burst_id(image_handle, &burst_id);
1128 if (ret != MEDIA_CONTENT_ERROR_NONE)
1129 media_content_error("error image_meta_get_burst_id : [%d]", ret);
1131 media_content_debug("This is Image");
1132 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1135 SAFE_FREE(datetaken);
1136 SAFE_FREE(burst_id);
1137 ret = image_meta_destroy(image_handle);
1138 if (ret != MEDIA_CONTENT_ERROR_NONE)
1139 media_content_error("error image_meta_destroy : [%d]", ret);
1141 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1142 video_meta_h video_handle;
1143 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;
1145 time_t time_played = 0;
1147 ret = media_info_get_video(media_handle, &video_handle);
1148 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1149 media_content_error("media_info_get_video failed: %d", ret);
1151 ret = video_meta_get_artist(video_handle, &artist);
1152 if (ret != MEDIA_CONTENT_ERROR_NONE)
1153 media_content_error("error video_meta_get_artist : [%d]", ret);
1154 ret = video_meta_get_album(video_handle, &album);
1155 if (ret != MEDIA_CONTENT_ERROR_NONE)
1156 media_content_error("error video_meta_get_album : [%d]", ret);
1157 ret = video_meta_get_album_artist(video_handle, &album_artist);
1158 if (ret != MEDIA_CONTENT_ERROR_NONE)
1159 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1160 ret = video_meta_get_duration(video_handle, &duration);
1161 if (ret != MEDIA_CONTENT_ERROR_NONE)
1162 media_content_error("error video_meta_get_duration : [%d]", ret);
1163 ret = video_meta_get_played_time(video_handle, &time_played);
1164 if (ret != MEDIA_CONTENT_ERROR_NONE)
1165 media_content_error("error video_meta_get_played_time : [%d]", ret);
1167 media_content_debug("This is Video");
1168 media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d, Played time: %ld", title, album, artist, album_artist, duration, time_played);
1174 SAFE_FREE(album_artist);
1176 ret = video_meta_destroy(video_handle);
1177 if (ret != MEDIA_CONTENT_ERROR_NONE)
1178 media_content_error("error video_meta_destroy : [%d]", ret);
1181 SAFE_FREE(media_id);
1182 SAFE_FREE(media_name);
1183 SAFE_FREE(media_path);
1187 media_filter_destroy(filter);
1190 /* To check performance */
1191 gettimeofday(&end, NULL);
1192 long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec);
1193 media_content_debug("Time : %ld\n", time);
1195 /* Third, Get item list of a folder */
1196 GList *item_list = NULL;
1198 for (i = 0; i < g_list_length(folder_list); i++) {
1200 char *folder_id = NULL;
1201 char *folder_name = NULL;
1202 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1204 media_folder_get_folder_id(folder_handle, &folder_id);
1205 media_folder_get_name(folder_handle, &folder_name);
1207 ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list);
1208 SAFE_FREE(folder_id);
1209 SAFE_FREE(folder_name);
1211 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1212 media_content_error("media_folder_foreach_media_from_db failed: %d", ret);
1215 media_content_error("media_folder_foreach_media_from_db success!");
1216 char *media_id = NULL;
1217 char *media_name = NULL;
1218 char *media_path = NULL;
1219 media_content_type_e media_type = 0;
1221 for (j = 0; j < g_list_length(item_list); j++) {
1222 media_handle = (media_info_h)g_list_nth_data(item_list, j);
1224 ret = media_info_get_media_id(media_handle, &media_id);
1225 if (ret != MEDIA_CONTENT_ERROR_NONE)
1226 media_content_error("media_info_get_media_id failed: %d", ret);
1227 ret = media_info_get_display_name(media_handle, &media_name);
1228 if (ret != MEDIA_CONTENT_ERROR_NONE)
1229 media_content_error("media_info_get_display_name failed: %d", ret);
1230 ret = media_info_get_file_path(media_handle, &media_path);
1231 if (ret != MEDIA_CONTENT_ERROR_NONE)
1232 media_content_error("media_info_get_file_path failed: %d", ret);
1233 ret = media_info_get_media_type(media_handle, &media_type);
1234 if (ret != MEDIA_CONTENT_ERROR_NONE)
1235 media_content_error("media_info_get_media_type failed: %d", ret);
1237 media_content_debug("[%s] media_id [%d] : %s", folder_name, j, media_id);
1238 media_content_debug("[%s] media_type [%d] : %d", folder_name, j, media_type);
1239 media_content_debug("[%s] media_name [%d] : %s", folder_name, j, media_name);
1240 media_content_debug("[%s] media_path [%d] : %s", folder_name, j, media_path);
1242 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
1243 image_meta_h image_handle;
1244 int width = 0, height = 0;
1245 media_content_orientation_e orientation = 0;
1246 char *datetaken = NULL;
1248 ret = media_info_get_image(media_handle, &image_handle);
1249 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1250 media_content_error("media_info_get_image failed: %d", ret);
1252 ret = image_meta_get_width(image_handle, &width);
1253 if (ret != MEDIA_CONTENT_ERROR_NONE)
1254 media_content_error("error image_meta_get_width : [%d]", ret);
1255 ret = image_meta_get_height(image_handle, &height);
1256 if (ret != MEDIA_CONTENT_ERROR_NONE)
1257 media_content_error("error image_meta_get_height : [%d]", ret);
1258 ret = image_meta_get_orientation(image_handle, &orientation);
1259 if (ret != MEDIA_CONTENT_ERROR_NONE)
1260 media_content_error("error image_meta_get_orientation : [%d]", ret);
1261 ret = image_meta_get_date_taken(image_handle, &datetaken);
1262 if (ret != MEDIA_CONTENT_ERROR_NONE)
1263 media_content_error("error image_meta_get_date_taken : [%d]", ret);
1265 media_content_debug("This is Image");
1266 media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s", width, height, orientation, datetaken);
1269 SAFE_FREE(datetaken);
1270 ret = image_meta_destroy(image_handle);
1271 if (ret != MEDIA_CONTENT_ERROR_NONE)
1272 media_content_error("error image_meta_destroy : [%d]", ret);
1274 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
1275 video_meta_h video_handle;
1276 char *title = NULL, *artist = NULL, *album = NULL, *album_artist = NULL;;
1280 ret = media_info_get_video(media_handle, &video_handle);
1281 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1282 media_content_error("media_info_get_video failed: %d", ret);
1284 ret = video_meta_get_artist(video_handle, &artist);
1285 if (ret != MEDIA_CONTENT_ERROR_NONE)
1286 media_content_error("error video_meta_get_artist : [%d]", ret);
1287 ret = video_meta_get_album(video_handle, &album);
1288 if (ret != MEDIA_CONTENT_ERROR_NONE)
1289 media_content_error("error video_meta_get_album : [%d]", ret);
1290 ret = video_meta_get_album_artist(video_handle, &album_artist);
1291 if (ret != MEDIA_CONTENT_ERROR_NONE)
1292 media_content_error("error video_meta_get_album_artist : [%d]", ret);
1293 ret = video_meta_get_duration(video_handle, &duration);
1294 if (ret != MEDIA_CONTENT_ERROR_NONE)
1295 media_content_error("error video_meta_get_duration : [%d]", ret);
1296 ret = video_meta_get_played_time(video_handle, &time_played);
1297 if (ret != MEDIA_CONTENT_ERROR_NONE)
1298 media_content_error("error video_meta_get_played_time : [%d]", ret);
1300 media_content_debug("This is Video");
1301 media_content_debug("Title: %s, Album: %s, Artist: %s, Album_artist: %s \n Duration: %d, Played time: %ld\n", title, album, artist, album_artist, duration, time_played);
1307 SAFE_FREE(album_artist);
1309 ret = video_meta_destroy(video_handle);
1310 if (ret != MEDIA_CONTENT_ERROR_NONE)
1311 media_content_error("error video_meta_destroy : [%d]", ret);
1313 /* Get bookmar list in case of video */
1314 media_bookmark_h bm_handle;
1315 GList *bm_list = NULL;
1317 ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list);
1318 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1319 media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret);
1321 media_content_debug("media_info_foreach_bookmark_from_db success");
1325 for (k = 0; k < g_list_length(bm_list); k++) {
1326 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k);
1328 char *thumb_path = NULL;
1330 ret = media_bookmark_get_marked_time(bm_handle, &marked_time);
1331 if (ret != MEDIA_CONTENT_ERROR_NONE)
1332 media_content_error("error media_bookmark_get_marked_time : [%d]", ret);
1333 ret = media_bookmark_get_thumbnail_path(bm_handle, &thumb_path);
1334 if (ret != MEDIA_CONTENT_ERROR_NONE)
1335 media_content_error("error media_bookmark_get_thumbnail_path : [%d]", ret);
1337 media_content_debug("Bookmark time : %ld\nBookmar thumb: %s", marked_time, thumb_path);
1338 SAFE_FREE(thumb_path);
1341 /* Remove bookmark list */
1344 for (l = 0; l < g_list_length(bm_list); l++) {
1345 bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l);
1346 ret = media_bookmark_destroy(bm_handle);
1347 if (ret != MEDIA_CONTENT_ERROR_NONE)
1348 media_content_error("error media_bookmark_destroy : [%d]", ret);
1351 g_list_free(bm_list);
1357 SAFE_FREE(media_id);
1358 SAFE_FREE(media_name);
1359 SAFE_FREE(media_path);
1365 media_tag_h tag_handle = NULL;
1366 GList *tag_list = NULL;
1367 GList *media_list_in_tag = NULL;
1369 ret = media_tag_foreach_tag_from_db(filter, gallery_tag_item_cb, &tag_list);
1371 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1372 media_content_error("media_tag_foreach_tag_from_db failed: %d", ret);
1375 media_content_error("media_tag_foreach_tag_from_db success");
1376 char *tag_name = NULL;
1379 for (i = 0; i < g_list_length(tag_list); i++) {
1380 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1381 media_tag_get_tag_id(tag_handle, &tag_id);
1382 media_tag_get_name(tag_handle, &tag_name);
1384 media_content_debug("[%d] %s", tag_id, tag_name);
1386 ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag);
1387 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1388 media_content_error("media_tag_foreach_media_from_db failed: %d", ret);
1391 media_content_error("media_tag_foreach_media_from_db success");
1393 media_info_h tag_media_handle;
1394 char *media_id = NULL;
1395 char *media_name = NULL;
1396 char *media_path = NULL;
1397 media_content_type_e media_type = 0;
1399 for (j = 0; j < g_list_length(media_list_in_tag); j++) {
1400 tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j);
1401 ret = media_info_get_media_id(tag_media_handle, &media_id);
1402 if (ret != MEDIA_CONTENT_ERROR_NONE)
1403 media_content_error("media_info_get_media_id failed: %d", ret);
1404 ret = media_info_get_display_name(tag_media_handle, &media_name);
1405 if (ret != MEDIA_CONTENT_ERROR_NONE)
1406 media_content_error("media_info_get_display_name failed: %d", ret);
1407 ret = media_info_get_file_path(tag_media_handle, &media_path);
1408 if (ret != MEDIA_CONTENT_ERROR_NONE)
1409 media_content_error("media_info_get_file_path failed: %d", ret);
1410 ret = media_info_get_media_type(tag_media_handle, &media_type);
1411 if (ret != MEDIA_CONTENT_ERROR_NONE)
1412 media_content_error("media_info_get_media_type failed: %d", ret);
1414 media_content_debug("[%s] media_id [%d] : %s", tag_name, j, media_id);
1415 media_content_debug("[%s] media_type [%d] : %d", tag_name, j, media_type);
1416 media_content_debug("[%s] media_name [%d] : %s", tag_name, j, media_name);
1417 media_content_debug("[%s] media_path [%d] : %s", tag_name, j, media_path);
1419 SAFE_FREE(media_id);
1420 SAFE_FREE(media_name);
1421 SAFE_FREE(media_path);
1423 SAFE_FREE(tag_name);
1427 /* Remove folder list */
1429 for (i = 0; i < g_list_length(folder_list); i++) {
1430 folder_handle = (media_folder_h)g_list_nth_data(folder_list, i);
1431 media_folder_destroy(folder_handle);
1434 g_list_free(folder_list);
1437 /* Remove all items list */
1438 if (all_item_list) {
1439 for (i = 0; i < g_list_length(all_item_list); i++) {
1440 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
1441 ret = media_info_destroy(media_handle);
1442 if (ret != MEDIA_CONTENT_ERROR_NONE)
1443 media_content_error("media_info_destroy failed: %d", ret);
1446 g_list_free(all_item_list);
1449 /* Remove items list */
1451 for (i = 0; i < g_list_length(item_list); i++) {
1452 media_handle = (media_info_h)g_list_nth_data(item_list, i);
1453 ret = media_info_destroy(media_handle);
1454 if (ret != MEDIA_CONTENT_ERROR_NONE)
1455 media_content_error("media_info_destroy failed: %d", ret);
1458 g_list_free(item_list);
1461 /* Remove tag list */
1463 for (i = 0; i < g_list_length(tag_list); i++) {
1464 tag_handle = (media_tag_h)g_list_nth_data(tag_list, i);
1465 ret = media_tag_destroy(tag_handle);
1466 if (ret != MEDIA_CONTENT_ERROR_NONE)
1467 media_content_error("error media_tag_destroy : [%d]", ret);
1470 g_list_free(tag_list);
1473 /* Remove media list in a tag */
1474 if (media_list_in_tag) {
1475 for (i = 0; i < g_list_length(media_list_in_tag); i++) {
1476 media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i);
1477 ret = media_info_destroy(media_handle);
1478 if (ret != MEDIA_CONTENT_ERROR_NONE)
1479 media_content_error("media_info_destroy failed: %d", ret);
1482 g_list_free(media_list_in_tag);
1485 return MEDIA_CONTENT_ERROR_NONE;
1488 /*Get All Music file. sort by Title and not case sensitive*/
1489 int test_get_all_music_files(void)
1491 int ret = MEDIA_CONTENT_ERROR_NONE;
1492 int media_count = 0;
1496 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1498 ret = media_filter_create(&filter);
1499 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1500 media_content_error("Fail to create filter");
1503 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_LOCALIZED);
1504 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1505 media_filter_destroy(filter);
1506 media_content_error("Fail to set condition");
1509 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_LOCALIZED);
1510 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1511 media_filter_destroy(filter);
1512 media_content_error("Fail to set order");
1517 ret = media_info_get_media_count_from_db(filter, &media_count);
1518 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1519 media_filter_destroy(filter);
1520 media_content_error("Fail to get media count");
1524 media_content_debug("media_count : [%d]", media_count);
1526 ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL);
1527 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1528 media_filter_destroy(filter);
1529 media_content_error("Fail to get media");
1533 ret = media_filter_destroy(filter);
1538 int test_media_info_operation(void)
1540 int ret = MEDIA_CONTENT_ERROR_NONE;
1541 int media_count = 0;
1543 media_content_debug("\n============Media info Test============\n\n");
1545 test_filter_create();
1547 ret = media_info_get_media_count_from_db(g_filter, &media_count);
1548 if (ret != MEDIA_CONTENT_ERROR_NONE)
1549 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
1551 media_content_debug("media_count : [%d]", media_count);
1553 ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL);
1554 if (ret == MEDIA_CONTENT_ERROR_NONE)
1555 media_content_debug("media_info_foreach_media_from_db is success");
1557 media_content_error("media_info_foreach_media_from_db is failed");
1559 test_filter_destroy();
1564 int test_media_info_operation_2(void)
1566 int ret = MEDIA_CONTENT_ERROR_NONE;
1567 int bookmark_count = 0;
1569 media_content_debug("\n============Media info Test 2============\n\n");
1571 test_filter_create();
1575 char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg"));
1576 media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1);
1577 media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1);
1579 media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count);
1581 media_content_debug("bookmark_count : [%d]", bookmark_count);
1583 ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL);
1587 ret = media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count);
1588 if (ret != MEDIA_CONTENT_ERROR_NONE)
1589 media_content_error("media_info_get_tag_count_from_db failed: %d", ret);
1591 media_content_debug("tag_count : [%d]", bookmark_count);
1593 ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL);
1594 if (ret != MEDIA_CONTENT_ERROR_NONE)
1595 media_content_error("media_info_foreach_tag_from_db failed: %d", ret);
1597 test_filter_destroy();
1602 int test_folder_operation(void)
1604 int ret = MEDIA_CONTENT_ERROR_NONE;
1605 filter_h filter = NULL;
1606 media_folder_h folder = NULL;
1607 char *folder_id = NULL;
1610 media_content_debug("\n============Folder Test============\n\n");
1612 test_filter_create();
1614 ret = media_filter_create(&filter);
1615 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1616 media_content_error("[ERROR] media_folder_filter_create is failed");
1620 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*/
1621 media_filter_set_offset(filter, 0, 5);
1622 media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1623 media_filter_set_storage(filter, "cfbf3d2c-71c5-4611-bccc-7cbac890146e");
1625 ret = media_folder_get_folder_count_from_db(filter, &count);
1626 media_content_debug("Folder count : [%d]", count);
1628 ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder);
1630 filter_h m_filter = NULL;
1632 ret = media_filter_create(&m_filter);
1633 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1634 test_filter_destroy();
1635 media_filter_destroy(filter);
1636 media_content_error("[ERROR] media_info_filter_create is failed");
1640 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*/
1641 media_filter_set_offset(m_filter, 0, 5);
1642 media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE);
1644 ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL);
1645 if (ret != MEDIA_CONTENT_ERROR_NONE)
1646 media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d", ret);
1648 media_filter_destroy(filter);
1649 media_filter_destroy(m_filter);
1651 test_filter_destroy();
1653 /* fix prevent: Resource Leak */
1654 SAFE_FREE(folder_id);
1659 bool folder_update_cb(media_folder_h folder, void *user_data)
1661 char *folder_id = NULL;
1662 char *folder_path = NULL;
1663 char *folder_name = NULL;
1664 int folder_order = -1;
1667 if (folder != NULL) {
1668 ret = media_folder_get_folder_id(folder, &folder_id);
1669 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1670 media_content_debug("folder_id = [%s]", folder_id);
1671 SAFE_FREE(folder_id);
1673 ret = media_folder_get_path(folder, &folder_path);
1674 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1675 media_content_debug("folder_path = [%s]", folder_path);
1676 SAFE_FREE(folder_path);
1678 ret = media_folder_get_name(folder, &folder_name);
1679 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1680 media_content_debug("folder_name = [%s]", folder_name);
1681 SAFE_FREE(folder_name);
1683 ret = media_folder_get_order(folder, &folder_order);
1684 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1685 media_content_debug("folder_order = [%d]", folder_order);
1687 ret = media_folder_clone(&g_folder, folder);
1688 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1699 int test_folder_update(void)
1701 int ret = MEDIA_CONTENT_ERROR_NONE;
1703 int folder_count = 0;
1705 media_content_debug("\n============Folder Update Test============\n\n");
1707 ret = media_filter_create(&filter);
1708 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1710 ret = media_filter_set_condition(filter, "MEDIA_TYPE=0 and MEDIA_STORAGE_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT); /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
1711 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, FOLDER_ORDER, MEDIA_CONTENT_COLLATE_NOCASE);
1713 ret = media_folder_get_folder_count_from_db(filter, &folder_count);
1715 media_content_debug("Folder count : %d", folder_count);
1717 ret = media_folder_foreach_folder_from_db(filter, folder_update_cb, NULL);
1719 media_filter_destroy(filter);
1721 ret = media_folder_set_name(g_folder, "test_folder");
1723 ret = media_folder_set_order(g_folder, 200);
1725 ret = media_folder_update_to_db(g_folder);
1727 ret = media_folder_destroy(g_folder);
1732 int test_playlist_operation(void)
1734 int ret = MEDIA_CONTENT_ERROR_NONE;
1735 media_playlist_h playlist_1 = NULL;
1736 media_playlist_h playlist_2 = NULL;
1737 media_playlist_h playlist_3 = NULL;
1738 media_playlist_h playlist_4 = NULL;
1739 int playlist_id_1 = 0;
1740 int playlist_id_2 = 0;
1741 int playlist_id_3 = 0;
1742 const char *playlist_name_1 = "myPlaylist_1";
1743 const char *playlist_name_2 = "myPlaylist_2";
1744 const char *playlist_name_3 = "myPlaylist_3";
1745 int playlist_count = 0;
1746 int media_count = 0;
1752 filter_h filter = NULL;
1753 filter_h m_filter = NULL;
1755 media_content_debug("\n============Playlist Test============\n\n");
1757 /* Filter for playlist */
1759 const char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
1761 ret = media_filter_create(&filter);
1762 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE);
1763 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE);
1765 /* Create Playlist */
1766 media_playlist_insert_to_db(playlist_name_1, &playlist_1);
1767 media_playlist_insert_to_db(playlist_name_2, &playlist_2);
1768 media_playlist_insert_to_db(playlist_name_3, &playlist_3);
1770 if (playlist_1 != NULL) {
1771 /* Add media to Playlist */
1772 media_playlist_add_media(playlist_1, test_audio_id);
1773 media_playlist_add_media(playlist_1, test_audio_id);
1774 media_playlist_add_media(playlist_1, test_video_id);
1777 char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg"));
1778 media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1781 media_playlist_update_to_db(playlist_1);
1784 if (playlist_2 != NULL) {
1785 media_playlist_add_media(playlist_2, test_audio_id);
1786 media_playlist_add_media(playlist_2, test_audio_id);
1787 media_playlist_update_to_db(playlist_2);
1790 /* Get Playlist Count*/
1791 ret = media_playlist_get_playlist_count_from_db(filter, &playlist_count);
1793 media_content_debug("playlist_count [%d]", playlist_count);
1796 GList *playlist_id_list = NULL;
1797 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list);
1798 /* 64bit build issue */
1800 /* Get Playlist id*/
1801 playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0);
1802 playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1);
1803 playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2);
1805 media_content_debug("playlist_id_1 [%d]", playlist_id_1);
1806 media_content_debug("playlist_id_2 [%d]", playlist_id_2);
1807 media_content_debug("playlist_id_3 [%d]", playlist_id_3);
1809 /* Export and import playlist */
1810 media_playlist_export_to_file(playlist_3, "/opt/usr/media/Music/playlist.m3u");
1811 media_playlist_import_from_file("/opt/usr/media/Music/playlist.m3u", "playlist_4", &playlist_4);
1813 /* Filter for media*/
1814 ret = media_filter_create(&m_filter);
1816 ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1818 ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT);
1820 /* Get media count */
1821 media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count);
1822 media_content_debug("playlist_1_media_count [%d]", media_count);
1824 media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count);
1825 media_content_debug("playlist_2_media_count [%d]", media_count);
1827 media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count);
1828 media_content_debug("playlist_3_media_count [%d]", media_count);
1830 /* Get media of playlist */
1831 GList *playlist_member_id_list = NULL;
1832 GList *playlist_member_id_list_1 = NULL;
1834 media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list);
1835 media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1);
1837 int playlist_member_id_1_1 = 0;
1838 int playlist_member_id_1_2 = 0;
1839 int playlist_member_id_1_3 = 0;
1840 int playlist_member_id_2_1 = 0;
1841 int playlist_member_id_2_2 = 0;
1842 /* 64bit build issue */
1844 playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0);
1845 playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1);
1846 playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2);
1847 playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0);
1848 playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1);
1850 media_content_debug("playlist_member_id_1_1 [%d]", playlist_member_id_1_1);
1851 media_content_debug("playlist_member_id_1_2 [%d]", playlist_member_id_1_2);
1852 media_content_debug("playlist_member_id_1_3 [%d]", playlist_member_id_1_3);
1853 media_content_debug("playlist_member_id_2_1 [%d]", playlist_member_id_2_1);
1854 media_content_debug("playlist_member_id_2_2 [%d]", playlist_member_id_2_2);
1856 media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1);
1857 media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2);
1858 media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3);
1859 media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4);
1860 media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5);
1861 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);
1863 /* Update Playlist */
1864 media_playlist_remove_media(playlist_2, playlist_member_id_2_1);
1865 media_playlist_add_media(playlist_2, test_video_id);
1866 media_playlist_set_name(playlist_2, "test_playlist");
1867 media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100);
1868 media_playlist_update_to_db(playlist_2);
1870 /* Get Updated Playlist*/
1871 media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL);
1873 /* deletes the playlist */
1875 media_playlist_delete_from_db(playlist_id_1);
1876 media_playlist_delete_from_db(playlist_id_2);
1879 if (playlist_1 != NULL)
1880 media_playlist_destroy(playlist_1);
1881 if (playlist_2 != NULL)
1882 media_playlist_destroy(playlist_2);
1883 if (playlist_3 != NULL)
1884 media_playlist_destroy(playlist_3);
1885 if (playlist_4 != NULL)
1886 media_playlist_destroy(playlist_4);
1888 g_list_free(playlist_id_list);
1889 g_list_free(playlist_member_id_list);
1890 g_list_free(playlist_member_id_list_1);
1893 ret = media_filter_destroy(filter);
1894 if (m_filter != NULL)
1895 ret = media_filter_destroy(m_filter);
1900 int test_playlist_operation_v2(void)
1902 int ret = MEDIA_CONTENT_ERROR_NONE;
1903 media_playlist_h playlist_1 = NULL;
1904 const char *playlist_name_1 = "myPlaylist_1";
1905 const char *playlist_thumb_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/Default.jpg");
1906 int playlist_id = 0;
1908 media_content_debug("\n============Playlist Test V2============\n\n");
1910 ret = media_playlist_create(&playlist_1);
1911 if (ret != MEDIA_CONTENT_ERROR_NONE)
1912 media_content_error("error media_playlist_create : [%d]", ret);
1914 ret = media_playlist_set_name(playlist_1, playlist_name_1);
1915 if (ret != MEDIA_CONTENT_ERROR_NONE)
1916 media_content_error("error media_playlist_set_name : [%d]", ret);
1918 ret = media_playlist_set_thumbnail_path(playlist_1, playlist_thumb_path);
1919 if (ret != MEDIA_CONTENT_ERROR_NONE)
1920 media_content_error("error media_playlist_set_thumbnail_path : [%d]", ret);
1922 ret = media_playlist_insert_to_db_v2(playlist_1);
1923 if (ret != MEDIA_CONTENT_ERROR_NONE)
1924 media_content_error("error media_playlist_insert_to_db_v2 : [%d]", ret);
1926 ret = media_playlist_set_name(playlist_1, "myPlaylist_3");
1927 if (ret != MEDIA_CONTENT_ERROR_NONE)
1928 media_content_error("error media_playlist_set_name : [%d]", ret);
1930 ret = media_playlist_get_playlist_id(playlist_1, &playlist_id);
1931 if (ret != MEDIA_CONTENT_ERROR_NONE)
1932 media_content_error("error media_playlist_get_playlist_id : [%d]", ret);
1934 ret = media_playlist_update_to_db_v2(playlist_id, playlist_1);
1935 if (ret != MEDIA_CONTENT_ERROR_NONE)
1936 media_content_error("error media_playlist_update_to_db_v2 : [%d]", ret);
1938 ret = media_playlist_destroy(playlist_1);
1939 if (ret != MEDIA_CONTENT_ERROR_NONE)
1940 media_content_error("error media_playlist_destroy : [%d]", ret);
1945 int test_tag_operation(void)
1947 int ret = MEDIA_CONTENT_ERROR_NONE;
1954 const char *tag_name_1 = "myTag_1";
1955 const char *tag_name_2 = "myTag_2";
1956 const char *tag_name_3 = "myTag_3";
1958 int media_count = 0;
1961 media_content_debug("\n============Tag Test============\n\n");
1963 const char *g_condition = "TAG_NAME like \"%%my%%\"";
1965 ret = media_filter_create(&filter);
1967 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
1969 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT);
1972 ret = media_tag_insert_to_db(tag_name_1, &tag_1);
1973 if (ret != MEDIA_CONTENT_ERROR_NONE)
1974 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1975 ret = media_tag_insert_to_db(tag_name_2, &tag_2);
1976 if (ret != MEDIA_CONTENT_ERROR_NONE)
1977 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1978 ret = media_tag_insert_to_db(tag_name_3, &tag_3);
1979 if (ret != MEDIA_CONTENT_ERROR_NONE)
1980 media_content_error("error media_tag_insert_to_db : [%d]", ret);
1982 /* Add media to Tag */
1983 ret = media_tag_add_media(tag_1, test_audio_id);
1984 if (ret != MEDIA_CONTENT_ERROR_NONE)
1985 media_content_error("error media_tag_add_media : [%d]", ret);
1986 ret = media_tag_add_media(tag_1, test_video_id);
1987 if (ret != MEDIA_CONTENT_ERROR_NONE)
1988 media_content_error("error media_tag_add_media : [%d]", ret);
1989 ret = media_tag_update_to_db(tag_1);
1990 if (ret != MEDIA_CONTENT_ERROR_NONE)
1991 media_content_error("error media_tag_update_to_db : [%d]", ret);
1993 ret = media_tag_add_media(tag_2, test_audio_id);
1994 if (ret != MEDIA_CONTENT_ERROR_NONE)
1995 media_content_error("error media_tag_add_media : [%d]", ret);
1996 ret = media_tag_update_to_db(tag_2);
1997 if (ret != MEDIA_CONTENT_ERROR_NONE)
1998 media_content_error("error media_tag_update_to_db : [%d]", ret);
2001 ret = media_tag_get_tag_count_from_db(filter, &tag_count);
2002 if (ret != MEDIA_CONTENT_ERROR_NONE)
2003 media_content_error("error media_tag_get_tag_count_from_db : [%d]", ret);
2005 media_content_debug("tag_count [%d]", tag_count);
2008 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
2009 if (ret != MEDIA_CONTENT_ERROR_NONE)
2010 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
2013 ret = media_tag_get_tag_id(tag_1, &tag_id_1);
2014 if (ret != MEDIA_CONTENT_ERROR_NONE)
2015 media_content_error("error media_tag_get_tag_id : [%d]", ret);
2017 media_content_debug("tag_id_1 [%d]", tag_id_1);
2019 ret = media_tag_get_tag_id(tag_2, &tag_id_2);
2020 if (ret != MEDIA_CONTENT_ERROR_NONE)
2021 media_content_error("error media_tag_get_tag_id : [%d]", ret);
2023 media_content_debug("tag_id_2 [%d]", tag_id_2);
2025 ret = media_tag_get_tag_id(tag_3, &tag_id_3);
2026 if (ret != MEDIA_CONTENT_ERROR_NONE)
2027 media_content_error("error media_tag_get_tag_id : [%d]", ret);
2029 media_content_debug("tag_id_3 [%d]", tag_id_3);
2031 /* Get media count */
2032 ret = media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count);
2033 if (ret != MEDIA_CONTENT_ERROR_NONE)
2034 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
2036 media_content_debug("tag_1_media_count [%d]", media_count);
2038 ret = media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count);
2039 if (ret != MEDIA_CONTENT_ERROR_NONE)
2040 media_content_error("error media_tag_get_media_count_from_db : [%d]", ret);
2042 media_content_debug("tag_2_media_count [%d]", media_count);
2044 /* Get media of Tag */
2045 ret = media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL);
2046 if (ret != MEDIA_CONTENT_ERROR_NONE)
2047 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
2049 ret = media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL);
2050 if (ret != MEDIA_CONTENT_ERROR_NONE)
2051 media_content_error("error media_tag_foreach_media_from_db : [%d]", ret);
2054 ret = media_tag_add_media(tag_2, test_video_id);
2055 if (ret != MEDIA_CONTENT_ERROR_NONE)
2056 media_content_error("error media_tag_add_media : [%d]", ret);
2057 ret = media_tag_set_name(tag_2, "test_tag");
2058 if (ret != MEDIA_CONTENT_ERROR_NONE)
2059 media_content_error("error media_tag_set_name : [%d]", ret);
2060 ret = media_tag_update_to_db(tag_2);
2061 if (ret != MEDIA_CONTENT_ERROR_NONE)
2062 media_content_error("error media_tag_update_to_db : [%d]", ret);
2064 /* Get Updated Tag*/
2065 ret = media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL);
2066 if (ret != MEDIA_CONTENT_ERROR_NONE)
2067 media_content_error("error media_tag_foreach_tag_from_db : [%d]", ret);
2069 /* deletes the tag */
2070 ret = media_tag_delete_from_db(tag_id_1);
2071 if (ret != MEDIA_CONTENT_ERROR_NONE)
2072 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2073 ret = media_tag_delete_from_db(tag_id_2);
2074 if (ret != MEDIA_CONTENT_ERROR_NONE)
2075 media_content_error("error media_tag_delete_from_db : [%d]", ret);
2077 ret = media_tag_destroy(tag_1);
2078 if (ret != MEDIA_CONTENT_ERROR_NONE)
2079 media_content_error("error media_tag_destroy : [%d]", ret);
2080 ret = media_tag_destroy(tag_2);
2081 if (ret != MEDIA_CONTENT_ERROR_NONE)
2082 media_content_error("error media_tag_destroy : [%d]", ret);
2083 ret = media_tag_destroy(tag_3);
2084 if (ret != MEDIA_CONTENT_ERROR_NONE)
2085 media_content_error("error media_tag_destroy : [%d]", ret);
2086 ret = media_filter_destroy(filter);
2087 if (ret != MEDIA_CONTENT_ERROR_NONE)
2088 media_content_error("error media_filter_destroy : [%d]", ret);
2093 int test_tag_operation_v2(void)
2095 int ret = MEDIA_CONTENT_ERROR_NONE;
2097 const char *tag_name_1 = "myTag_1";
2100 media_content_debug("\n============Tag Test V2============\n\n");
2103 ret = media_tag_create(&tag_1);
2104 if (ret != MEDIA_CONTENT_ERROR_NONE)
2105 media_content_error("error media_tag_create : [%d]", ret);
2107 ret = media_tag_set_name(tag_1, tag_name_1);
2108 if (ret != MEDIA_CONTENT_ERROR_NONE)
2109 media_content_error("error media_tag_set_name : [%d]", ret);
2111 /* Add media to Tag */
2112 ret = media_tag_add_media(tag_1, test_audio_id);
2113 if (ret != MEDIA_CONTENT_ERROR_NONE)
2114 media_content_error("error media_tag_add_media : [%d]", ret);
2116 ret = media_tag_add_media(tag_1, test_video_id);
2117 if (ret != MEDIA_CONTENT_ERROR_NONE)
2118 media_content_error("error media_tag_add_media : [%d]", ret);
2120 ret = media_tag_insert_to_db_v2(tag_1);
2121 if (ret != MEDIA_CONTENT_ERROR_NONE)
2122 media_content_error("error media_tag_insert_to_db_v2 : [%d]", ret);
2125 ret = media_tag_get_tag_id(tag_1, &tag_id);
2126 if (ret != MEDIA_CONTENT_ERROR_NONE)
2127 media_content_error("error media_tag_get_tag_id : [%d]", ret);
2129 ret = media_tag_remove_media(tag_1, test_video_id);
2130 if (ret != MEDIA_CONTENT_ERROR_NONE)
2131 media_content_error("error media_tag_add_media : [%d]", ret);
2133 ret = media_tag_update_to_db_v2(tag_id, tag_1);
2134 if (ret != MEDIA_CONTENT_ERROR_NONE)
2135 media_content_error("error media_tag_update_to_db_v2 : [%d]", ret);
2138 ret = media_tag_destroy(tag_1);
2139 if (ret != MEDIA_CONTENT_ERROR_NONE)
2140 media_content_error("error media_tag_destroy : [%d]", ret);
2145 int test_bookmark_operation(void)
2147 /* bookmark is only supported for video information. */
2148 int ret = MEDIA_CONTENT_ERROR_NONE;
2149 int bookmark_count = 0;
2151 GList *all_item_list = NULL;
2154 media_content_debug("\n============Bookmark Test============\n\n");
2156 const char *g_condition = "BOOKMARK_MARKED_TIME > 300";
2158 ret = media_filter_create(&filter);
2159 if (ret != MEDIA_CONTENT_ERROR_NONE)
2160 media_content_error("error media_filter_create : [%d]", ret);
2162 ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2163 if (ret != MEDIA_CONTENT_ERROR_NONE)
2164 media_content_error("error media_filter_set_condition : [%d]", ret);
2166 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT);
2167 if (ret != MEDIA_CONTENT_ERROR_NONE)
2168 media_content_error("error media_filter_set_order : [%d]", ret);
2170 /* insert bookmark to video */
2171 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
2172 ret = media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1);
2173 if (ret != MEDIA_CONTENT_ERROR_NONE)
2174 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2176 ret = media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1);
2177 if (ret != MEDIA_CONTENT_ERROR_NONE)
2178 media_content_error("error media_bookmark_insert_to_db : [%d]", ret);
2180 ret = media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count);
2181 if (ret != MEDIA_CONTENT_ERROR_NONE)
2182 media_content_error("error media_bookmark_get_bookmark_count_from_db : [%d]", ret);
2184 media_content_debug("bookmark_count = [%d]", bookmark_count);
2186 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, &all_item_list);
2187 if (ret != MEDIA_CONTENT_ERROR_NONE)
2188 media_content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
2190 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
2191 media_bookmark_h bookmark_handle;
2192 bookmark_handle = (media_bookmark_h)g_list_nth_data(all_item_list, idx);
2194 ret = media_bookmark_set_name(bookmark_handle, "test 1");
2195 if (ret != MEDIA_CONTENT_ERROR_NONE)
2196 media_content_error("error media_bookmark_set_name : [%d]", ret);
2198 ret = media_bookmark_update_to_db(bookmark_handle);
2199 if (ret != MEDIA_CONTENT_ERROR_NONE)
2200 media_content_error("error media_bookmark_update_to_db : [%d]", ret);
2203 ret = media_info_foreach_bookmark_from_db(test_video_id, NULL, bookmarks_cb, NULL);
2204 if (ret != MEDIA_CONTENT_ERROR_NONE)
2205 media_content_error("error media_info_foreach_bookmark_from_db : [%d]", ret);
2207 ret = media_filter_destroy(filter);
2208 if (ret != MEDIA_CONTENT_ERROR_NONE)
2209 media_content_error("error media_filter_destroy : [%d]", ret);
2214 int test_bookmark_operation_v2(void)
2216 media_content_debug("\n============Bookmark Test V2============\n\n");
2218 int ret = MEDIA_CONTENT_ERROR_NONE;
2219 media_bookmark_h bookmark = NULL;
2220 const char *thumbnail_path1 = tzplatform_mkpath(TZ_USER_CONTENT, "Images and videos/My video clips/teat11.jpg");
2222 ret = media_bookmark_create(test_video_id, 400, &bookmark);
2223 if (ret != MEDIA_CONTENT_ERROR_NONE)
2224 media_content_error("error media_bookmark_create : [%d]", ret);
2226 ret = media_bookmark_set_name(bookmark, "test bookmark");
2227 if (ret != MEDIA_CONTENT_ERROR_NONE)
2228 media_content_error("error media_bookmark_set_name : [%d]", ret);
2230 ret = media_bookmark_set_thumbnail_path(bookmark, thumbnail_path1);
2231 if (ret != MEDIA_CONTENT_ERROR_NONE)
2232 media_content_error("error media_bookmark_set_thumbnail_path : [%d]", ret);
2234 ret = media_bookmark_insert_to_db_v2(bookmark);
2235 if (ret != MEDIA_CONTENT_ERROR_NONE)
2236 media_content_error("error media_bookmark_insert_to_db_v2 : [%d]", ret);
2238 ret = media_bookmark_set_name(bookmark, "test bookmark 2");
2239 if (ret != MEDIA_CONTENT_ERROR_NONE)
2240 media_content_error("error media_bookmark_set_name : [%d]", ret);
2242 ret = media_bookmark_update_to_db(bookmark);
2243 if (ret != MEDIA_CONTENT_ERROR_NONE)
2244 media_content_error("error media_bookmark_update_to_db : [%d]", ret);
2246 ret = media_bookmark_destroy(bookmark);
2247 if (ret != MEDIA_CONTENT_ERROR_NONE)
2248 media_content_error("error media_bookmark_destroy : [%d]", ret);
2253 int test_album_list(void)
2255 media_content_debug("\n============Album Test============\n\n");
2257 int ret = MEDIA_CONTENT_ERROR_NONE;
2258 int album_count = 0;
2262 const char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/
2264 ret = media_filter_create(&filter);
2265 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2266 media_content_error("Fail to create filter");
2269 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
2270 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2271 media_filter_destroy(filter);
2272 media_content_error("Fail to set condition");
2275 ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE);
2276 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2277 media_filter_destroy(filter);
2278 media_content_error("Fail to set order");
2282 ret = media_album_get_album_count_from_db(filter, &album_count);
2283 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2284 media_filter_destroy(filter);
2287 media_content_debug("album_count [%d]", album_count);
2290 ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL);
2291 if (ret != MEDIA_CONTENT_ERROR_NONE)
2292 media_content_error("error media_album_foreach_album_from_db : [%d]", ret);
2294 ret = media_filter_destroy(filter);
2295 if (ret != MEDIA_CONTENT_ERROR_NONE)
2296 media_content_error("error media_filter_destroy : [%d]", ret);
2301 int test_group_operation(void)
2303 media_content_debug("\n============Group Test============\n\n");
2305 int ret = MEDIA_CONTENT_ERROR_NONE;
2306 int group_count = 0;
2309 ret = test_filter_create();
2310 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2311 media_content_error("[error(0x%08x)", ret);
2315 for (idx = 0; idx < MEDIA_CONTENT_GROUP_MAX; idx++) {
2316 ret = media_group_get_group_count_from_db(g_filter, idx, &group_count);
2317 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2318 test_filter_destroy();
2319 media_content_error("media_group_get_group_count_from_db fail. ret=[%d] idx=[%d]", ret, idx);
2322 media_content_debug("[%2d]group_count [%d]", idx, group_count);
2325 ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx);
2326 if (ret != MEDIA_CONTENT_ERROR_NONE)
2327 media_content_error("media_group_foreach_group_from_db failed: %d", ret);
2329 ret = test_filter_destroy();
2334 int test_update_operation()
2336 int ret = MEDIA_CONTENT_ERROR_NONE;
2338 media_info_h media_handle = NULL;
2339 GList *all_item_list = NULL;
2341 /* Get all item list */
2342 ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list);
2343 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2344 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
2347 media_content_debug("media_info_foreach_media_from_db success");
2348 char *media_id = NULL;
2349 char *media_path = NULL;
2350 media_content_type_e media_type = 0;
2352 for (i = 0; i < g_list_length(all_item_list); i++) {
2353 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
2355 ret = media_info_get_media_id(media_handle, &media_id);
2356 if (ret != MEDIA_CONTENT_ERROR_NONE)
2357 media_content_error("media_info_get_media_id failed: %d", ret);
2358 ret = media_info_get_file_path(media_handle, &media_path);
2359 if (ret != MEDIA_CONTENT_ERROR_NONE)
2360 media_content_error("media_info_get_file_path failed: %d", ret);
2361 ret = media_info_get_media_type(media_handle, &media_type);
2362 if (ret != MEDIA_CONTENT_ERROR_NONE)
2363 media_content_error("media_info_get_media_type failed: %d", ret);
2365 media_content_debug("media_id [%d] : %s", i, media_id);
2366 media_content_debug("media_type [%d] : %d", i, media_type);
2367 media_content_debug("media_path [%d] : %s", i, media_path);
2369 if (media_type == MEDIA_CONTENT_TYPE_IMAGE) {
2370 image_meta_h image_handle;
2371 media_content_orientation_e orientation;
2373 ret = media_info_get_image(media_handle, &image_handle);
2374 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2375 media_content_error("media_info_get_image failed: %d", ret);
2377 media_content_debug("media_info_get_image success");
2379 /* update image meta */
2380 orientation = MEDIA_CONTENT_ORIENTATION_ROT_180;
2381 image_meta_set_orientation(image_handle, orientation);
2383 ret = image_meta_update_to_db(image_handle);
2384 if (ret != MEDIA_CONTENT_ERROR_NONE)
2385 media_content_error("image_meta_update_to_db failed: %d", ret);
2387 media_content_debug("image_meta_update_to_db success");
2390 } else if (media_type == MEDIA_CONTENT_TYPE_VIDEO) {
2391 video_meta_h video_handle;
2393 ret = media_info_get_video(media_handle, &video_handle);
2394 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2395 media_content_error("media_info_get_video failed: %d", ret);
2397 media_content_debug("media_info_get_video success");
2399 /* update video meta */
2400 video_meta_set_played_count(video_handle, 5);
2401 video_meta_set_played_time(video_handle, 5);
2402 video_meta_set_played_position(video_handle, 5);
2403 video_meta_update_to_db(video_handle);
2405 ret = video_meta_update_to_db(video_handle);
2406 if (ret != MEDIA_CONTENT_ERROR_NONE)
2407 media_content_error("video_meta_update_to_db failed: %d", ret);
2409 media_content_debug("video_meta_update_to_db success");
2411 } else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2412 audio_meta_h audio_handle = NULL;
2413 ret = media_info_get_audio(media_handle, &audio_handle);
2414 if (ret != MEDIA_CONTENT_ERROR_NONE) {
2415 media_content_error("media_info_get_audio failed: %d", ret);
2417 media_content_debug("media_info_get_audio success");
2419 audio_meta_set_played_count(audio_handle, 5);
2420 audio_meta_set_played_time(audio_handle, 1000);
2421 audio_meta_set_played_position(audio_handle, 180);
2423 ret = audio_meta_update_to_db(audio_handle);
2424 if (ret != MEDIA_CONTENT_ERROR_NONE)
2425 media_content_error("audio_meta_update_to_db failed: %d", ret);
2427 media_content_debug("audio_meta_update_to_db success");
2434 /* fix prevent: Resource Leak */
2435 SAFE_FREE(media_id);
2436 SAFE_FREE(media_path);
2439 return MEDIA_CONTENT_ERROR_NONE;
2442 int test_insert(void)
2444 int ret = MEDIA_CONTENT_ERROR_NONE;
2445 const char *path = "/opt/usr/media/Images/Default.jpg";
2447 const char *path = "/opt/usr/media/Others/other.txt";
2450 media_info_h media_item = NULL;
2451 media_content_debug("\n============DB Insert Test============\n\n");
2453 ret = media_info_insert_to_db(path, &media_item);
2455 if ((ret == MEDIA_CONTENT_ERROR_NONE) && (media_item != NULL)) {
2456 media_content_debug("Insertion is success");
2458 media_content_error("Insertion is failed");
2459 ret = media_info_destroy(media_item);
2463 char *media_id = NULL;
2465 ret = media_info_get_media_id(media_item, &media_id);
2466 if (ret != MEDIA_CONTENT_ERROR_NONE)
2467 media_content_error("media_info_get_media_id failed: %d", ret);
2469 media_content_debug("Media ID: %s", media_id);
2471 SAFE_FREE(media_id);
2473 ret = media_info_update_to_db(media_item);
2474 if (ret == MEDIA_CONTENT_ERROR_NONE)
2475 media_content_debug("media_info_update_to_db is success");
2477 media_content_error("media_info_update_to_db is failed");
2479 ret = media_info_destroy(media_item);
2480 if (ret != MEDIA_CONTENT_ERROR_NONE)
2481 media_content_error("media_info_destroy failed: %d", ret);
2488 int ret = MEDIA_CONTENT_ERROR_NONE;
2489 const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d";
2490 const char *dst_path = tzplatform_mkpath(TZ_USER_CONTENT, "Images/XX/Default1.jpg");
2491 media_info_h move_media = NULL;
2493 ret = media_info_get_media_from_db(move_media_id, &move_media);
2494 if (ret == MEDIA_CONTENT_ERROR_NONE)
2495 media_content_debug("media_info_get_media_from_db success");
2497 media_content_error("media_info_get_media_from_db failed: %d", ret);
2499 media_content_debug("\n============DB Move Test============\n\n");
2502 ret = media_info_move_to_db(move_media, dst_path);
2504 if (ret == MEDIA_CONTENT_ERROR_NONE)
2505 media_content_debug("Move is success");
2507 media_content_error("Move is failed");
2509 ret = media_info_destroy(move_media);
2511 media_content_debug("There is no item : %s", move_media_id);
2517 void thumbnail_completed_cb(media_content_error_e error, const char *path, void *user_data)
2519 char *thumbnail_path = NULL;
2520 int ret = MEDIA_CONTENT_ERROR_NONE;
2523 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2524 media_content_debug("error_code [%d]", error);
2525 media_content_debug("thumbnail_path [%s]", path);
2526 if (user_data != NULL) {
2527 media_info_h media = (media_info_h)user_data;
2528 ret = media_info_get_thumbnail_path(media, &thumbnail_path);
2529 if (ret != MEDIA_CONTENT_ERROR_NONE)
2530 media_content_error("media_info_get_thumbnail_path failed: %d", ret);
2532 media_content_debug("thumbnail_path get from media[%s]", thumbnail_path);
2533 SAFE_FREE(thumbnail_path);
2534 ret = media_info_destroy(media);
2535 if (ret != MEDIA_CONTENT_ERROR_NONE)
2536 media_content_error("media_info_destroy failed: %d", ret);
2539 if (g_cnt == g_media_cnt)
2540 g_main_loop_quit(g_loop);
2545 bool thumbnail_create_cb(media_info_h media, void *user_data)
2547 char *media_id = NULL;
2548 media_info_h dst = NULL;
2549 int ret = MEDIA_CONTENT_ERROR_NONE;
2551 if (media == NULL) {
2552 media_content_debug("NO Item");
2556 ret = media_info_get_media_id(media, &media_id);
2557 if (ret != MEDIA_CONTENT_ERROR_NONE)
2558 media_content_error("media_info_get_media_id failed: %d", ret);
2560 media_content_debug("media_id : [%s]", media_id);
2562 ret = media_info_clone(&dst, media);
2563 if (ret != MEDIA_CONTENT_ERROR_NONE)
2564 media_content_error("media_info_clone failed: %d", ret);
2566 ret = media_info_create_thumbnail(dst, thumbnail_completed_cb, dst);
2567 if (ret != MEDIA_CONTENT_ERROR_NONE)
2568 media_content_error("media_info_create_thumbnail failed: %d", ret);
2571 /* fix prevent: Resource leak */
2572 SAFE_FREE(media_id);
2577 bool thumbnail_cancel_cb(media_info_h media, void *user_data)
2579 int ret = MEDIA_CONTENT_ERROR_NONE;
2581 char *media_id = NULL;
2582 media_info_h dst = NULL;
2586 if (media == NULL) {
2587 media_content_debug("NO Item");
2591 ret = media_info_get_media_id(media, &media_id);
2592 if (ret != MEDIA_CONTENT_ERROR_NONE)
2593 media_content_error("media_info_get_media_id failed: %d", ret);
2595 media_content_debug("media_id : [%s]", media_id);
2597 ret = media_info_clone(&dst, media);
2598 if (ret != MEDIA_CONTENT_ERROR_NONE)
2599 media_content_error("media_info_clone failed: %d", ret);
2601 ret = media_info_cancel_thumbnail(dst);
2602 if (ret != MEDIA_CONTENT_ERROR_NONE)
2603 media_content_error("media_info_cancel_thumbnail failed: %d", ret);
2605 ret = media_info_destroy(dst);
2606 if (ret != MEDIA_CONTENT_ERROR_NONE)
2607 media_content_error("media_info_destroy failed: %d", ret);
2609 if (g_cnt == g_media_cnt)
2610 g_main_loop_quit(g_loop);
2612 /* fix prevent: Resource leak */
2613 SAFE_FREE(media_id);
2618 gboolean create_thumbnail_start(gpointer data)
2620 int ret = MEDIA_CONTENT_ERROR_NONE;
2622 ret = media_info_foreach_media_from_db(g_filter, thumbnail_create_cb, NULL);
2624 if (ret == MEDIA_CONTENT_ERROR_NONE)
2625 media_content_debug("media_info_foreach_media_from_db is success");
2627 media_content_error("media_info_foreach_media_from_db is failed");
2632 gboolean cancel_thumbnail_start(gpointer data)
2634 int ret = MEDIA_CONTENT_ERROR_NONE;
2636 ret = media_info_foreach_media_from_db(g_filter, thumbnail_cancel_cb, NULL);
2638 if (ret == MEDIA_CONTENT_ERROR_NONE)
2639 media_content_debug("media_info_foreach_media_from_db is success");
2641 media_content_error("media_info_foreach_media_from_db is failed");
2646 int test_create_thumbnail(int cancel)
2648 int ret = MEDIA_CONTENT_ERROR_NONE;
2649 GSource *source = NULL;
2650 GMainContext *context = NULL;
2652 test_filter_create();
2654 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2655 if (ret != MEDIA_CONTENT_ERROR_NONE)
2656 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2658 media_content_debug("media_count : [%d]", g_media_cnt);
2660 g_loop = g_main_loop_new(NULL, FALSE);
2661 context = g_main_loop_get_context(g_loop);
2662 source = g_idle_source_new();
2663 g_source_set_callback(source, create_thumbnail_start, NULL, NULL);
2664 g_source_attach(source, context);
2666 /* Logic to cancel */
2668 GSource *cancel_src = NULL;
2669 cancel_src = g_idle_source_new();
2670 g_source_set_callback(cancel_src, cancel_thumbnail_start, NULL, NULL);
2671 g_source_attach(cancel_src, context);
2674 g_main_loop_run(g_loop);
2675 g_main_loop_unref(g_loop);
2677 test_filter_destroy();
2682 bool face_cb(media_face_h face, void *user_data)
2684 if (user_data != NULL) {
2685 unsigned x, y, rect_w, rect_h;
2686 media_face_get_face_rect(face, &x, &y, &rect_w, &rect_h);
2687 media_content_debug("face(%p) x = %d, y = %d [%d, %d]", face, x, y, rect_w, rect_h);
2693 void face_detection_complete_cb(media_content_error_e error, int count, void *user_data)
2695 int ret = MEDIA_CONTENT_ERROR_NONE;
2698 media_content_debug("=================[%d][%d]", g_media_cnt, g_cnt);
2699 media_content_debug("error_code [%d]", error);
2700 media_content_debug("face_count [%d]", count);
2702 media_content_debug("No faces are detected!");
2703 } else if (user_data != NULL) {
2704 media_info_h media = (media_info_h)user_data;
2705 char *media_id = NULL;
2706 ret = media_info_get_media_id(media, &media_id);
2707 if (ret != MEDIA_CONTENT_ERROR_NONE)
2708 media_content_error("media_info_get_media_id failed: %d", ret);
2709 if (media_id != NULL) {
2710 ret = media_info_foreach_face_from_db(media_id, NULL, face_cb, NULL);
2711 SAFE_FREE(media_id);
2712 if (ret != MEDIA_CONTENT_ERROR_NONE)
2713 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
2715 ret = media_info_destroy(media);
2716 if (ret != MEDIA_CONTENT_ERROR_NONE)
2717 media_content_error("media_info_destroy failed: %d", ret);
2720 if (g_cnt == g_media_cnt)
2721 g_main_loop_quit(g_loop);
2726 bool start_face_detection_cb(media_info_h media, void *user_data)
2728 char *media_id = NULL;
2729 media_info_h dst = NULL;
2730 int ret = MEDIA_CONTENT_ERROR_NONE;
2732 if (media == NULL) {
2733 media_content_debug("NO Item");
2737 ret = media_info_get_media_id(media, &media_id);
2738 if (ret != MEDIA_CONTENT_ERROR_NONE)
2739 media_content_error("media_info_get_media_id failed: %d", ret);
2741 media_content_debug("media_id : [%s]", media_id);
2743 ret = media_info_clone(&dst, media);
2744 if (ret != MEDIA_CONTENT_ERROR_NONE)
2745 media_content_error("media_info_clone failed: %d", ret);
2747 GList **list = (GList**)user_data;
2748 *list = g_list_append(*list, dst);
2750 /* fix prevent: Resource leak */
2751 SAFE_FREE(media_id);
2756 bool cancel_face_detection_cb(media_info_h media, void *user_data)
2758 int ret = MEDIA_CONTENT_ERROR_NONE;
2760 char *media_id = NULL;
2761 media_info_h dst = NULL;
2765 if (media == NULL) {
2766 media_content_debug("NO Item");
2770 ret = media_info_get_media_id(media, &media_id);
2771 if (ret != MEDIA_CONTENT_ERROR_NONE)
2772 media_content_error("media_info_get_media_id failed: %d", ret);
2774 media_content_debug("media_id : [%s]", media_id);
2776 ret = media_info_clone(&dst, media);
2777 if (ret != MEDIA_CONTENT_ERROR_NONE)
2778 media_content_error("media_info_clone failed: %d", ret);
2780 ret = media_info_cancel_face_detection(dst);
2781 if (ret != MEDIA_CONTENT_ERROR_NONE)
2782 media_content_error("media_info_cancel_face_detection failed: %d", ret);
2784 ret = media_info_destroy(dst);
2785 if (ret != MEDIA_CONTENT_ERROR_NONE)
2786 media_content_error("media_info_destroy failed: %d", ret);
2788 if (g_cnt == g_media_cnt)
2789 g_main_loop_quit(g_loop);
2791 /* fix prevent: Resource leak */
2792 SAFE_FREE(media_id);
2797 gboolean face_detection_start(gpointer data)
2799 int ret = MEDIA_CONTENT_ERROR_NONE;
2800 GList *all_item_list = NULL;
2803 ret = media_info_foreach_media_from_db(g_filter, start_face_detection_cb, &all_item_list);
2805 if (ret == MEDIA_CONTENT_ERROR_NONE)
2806 media_content_debug("media_info_foreach_media_from_db is success");
2808 media_content_error("media_info_foreach_media_from_db is failed");
2810 for (idx = 0; idx < g_list_length(all_item_list); idx++) {
2811 media_info_h media_handle = NULL;
2813 media_handle = (media_info_h)g_list_nth_data(all_item_list, idx);
2815 ret = media_info_start_face_detection(media_handle, face_detection_complete_cb, NULL);
2816 if (ret != MEDIA_CONTENT_ERROR_NONE)
2817 media_content_error("media_info_start_face_detection failed: %d", ret);
2824 gboolean face_detection_cancel(gpointer data)
2826 int ret = MEDIA_CONTENT_ERROR_NONE;
2828 ret = media_info_foreach_media_from_db(g_filter, cancel_face_detection_cb, NULL);
2830 if (ret == MEDIA_CONTENT_ERROR_NONE)
2831 media_content_debug("media_info_foreach_media_from_db is success");
2833 media_content_error("media_info_foreach_media_from_db is failed");
2838 int test_start_face_detection(int cancel)
2840 int ret = MEDIA_CONTENT_ERROR_NONE;
2841 GSource *source = NULL;
2842 GMainContext *context = NULL;
2844 test_filter_create();
2846 ret = media_info_get_media_count_from_db(g_filter, &g_media_cnt);
2847 if (ret != MEDIA_CONTENT_ERROR_NONE)
2848 media_content_error("media_info_get_media_count_from_db failed: %d", ret);
2850 media_content_debug("media_count : [%d]", g_media_cnt);
2852 if (g_media_cnt == 0)
2855 g_loop = g_main_loop_new(NULL, FALSE);
2856 context = g_main_loop_get_context(g_loop);
2857 source = g_idle_source_new();
2858 g_source_set_callback(source, face_detection_start, NULL, NULL);
2859 g_source_attach(source, context);
2861 /* Logic to cancel */
2863 GSource *cancel_src = NULL;
2864 cancel_src = g_idle_source_new();
2865 g_source_set_callback(cancel_src, face_detection_cancel, NULL, NULL);
2866 g_source_attach(cancel_src, context);
2869 g_main_loop_run(g_loop);
2870 g_main_loop_unref(g_loop);
2873 test_filter_destroy();
2878 int test_disconnect_database(void)
2880 int ret = MEDIA_CONTENT_ERROR_NONE;
2881 media_content_debug("\n============DB Disconnection Test============\n\n");
2883 ret = media_content_disconnect();
2885 if (ret == MEDIA_CONTENT_ERROR_NONE)
2886 media_content_debug("disconnection is success");
2888 media_content_error("disconnection is failed");
2893 int test_request_update_db(void)
2895 int ret = MEDIA_CONTENT_ERROR_NONE;
2896 media_info_h media = NULL;
2897 char *content_name = NULL;
2898 bool favorite = FALSE;
2900 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2901 if (ret != MEDIA_CONTENT_ERROR_NONE)
2902 media_content_error("media_info_get_media_from_db failed: %d", ret);
2904 ret = media_info_set_content_name(media, "TEST_content_name");
2905 if (ret != MEDIA_CONTENT_ERROR_NONE)
2906 media_content_error("media_info_set_content_name failed: %d", ret);
2908 ret = media_info_set_favorite(media, TRUE);
2909 if (ret != MEDIA_CONTENT_ERROR_NONE)
2910 media_content_error("media_info_set_favorite failed: %d", ret);
2912 ret = media_info_update_to_db(media);
2913 if (ret == MEDIA_CONTENT_ERROR_NONE)
2914 media_content_debug("media_info_update_to_db is success");
2916 media_content_error("media_info_update_to_db is failed");
2919 media_info_destroy(media);
2921 /*get the updated value*/
2922 ret = media_info_get_media_from_db("71b19196-5b38-4ab1-ab34-bfe05c369614", &media);
2923 if (ret != MEDIA_CONTENT_ERROR_NONE)
2924 media_content_error("media_info_get_media_from_db failed: %d", ret);
2926 ret = media_info_get_content_name(media, &content_name);
2927 if (ret != MEDIA_CONTENT_ERROR_NONE)
2928 media_content_error("media_info_get_content_name failed: %d", ret);
2930 media_content_debug("content name [%s]", content_name);
2932 SAFE_FREE(content_name);
2934 ret = media_info_get_favorite(media, &favorite);
2935 if (ret != MEDIA_CONTENT_ERROR_NONE)
2936 media_content_error("media_info_get_favorite failed: %d", ret);
2938 media_content_debug("favorite [%d]", favorite);
2940 ret = media_info_destroy(media);
2945 int g_total_photo_size = 0;
2946 int g_total_video_size = 0;
2947 int g_total_mp3_size = 0;
2948 int g_total_voice_memo_size = 0;
2950 bool dft_cb(media_info_h media, void *user_data)
2952 unsigned long long file_size = 0;
2953 media_content_type_e media_type = -1;
2954 char *mime_type = NULL;
2955 int ret = MEDIA_CONTENT_ERROR_NONE;
2960 ret = media_info_get_media_type(media, &media_type);
2961 if (ret != MEDIA_CONTENT_ERROR_NONE)
2962 media_content_error("media_info_get_media_type failed: %d", ret);
2963 ret = media_info_get_size(media, &file_size);
2964 if (ret != MEDIA_CONTENT_ERROR_NONE)
2965 media_content_error("media_info_get_size failed: %d", ret);
2966 ret = media_info_get_mime_type(media, &mime_type);
2967 if (ret != MEDIA_CONTENT_ERROR_NONE)
2968 media_content_error("media_info_get_mime_type failed: %d", ret);
2970 if (media_type == MEDIA_CONTENT_TYPE_IMAGE)
2971 g_total_photo_size += file_size;
2972 else if (media_type == MEDIA_CONTENT_TYPE_VIDEO)
2973 g_total_video_size += file_size;
2974 else if (media_type == MEDIA_CONTENT_TYPE_SOUND)
2975 g_total_voice_memo_size += file_size;
2976 else if (media_type == MEDIA_CONTENT_TYPE_MUSIC) {
2977 if ((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type)))
2978 g_total_mp3_size += file_size;
2980 g_total_voice_memo_size += file_size;
2982 media_content_debug("invalid media_type");
2984 SAFE_FREE(mime_type);
2992 int ret = MEDIA_CONTENT_ERROR_NONE;
2993 media_content_debug("\n============DFT_test============\n\n");
2995 filter_h filter = NULL;
2998 /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/
3000 ret = media_filter_create(&filter);
3003 media_content_debug("[Internal Memory]\n");
3004 /*1. Photo ============================================================*/
3005 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
3008 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3009 media_content_debug("Photo count = [%d]\n", media_cnt);
3012 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3013 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
3015 /*2. Video ============================================================*/
3016 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
3019 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3020 media_content_debug("Video count = [%d]\n", media_cnt);
3023 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3024 media_content_debug("Video size = [%d]\n", g_total_video_size);
3026 /*3. MP3 ============================================================*/
3027 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
3030 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3031 media_content_debug("MP3 count = [%d]\n", media_cnt);
3034 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3035 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
3037 /*4. Voice Memo ============================================================*/
3038 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);
3040 /*Get Voice Memo Count*/
3041 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3042 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
3044 /*Get Voice Memo Size*/
3045 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3046 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
3048 g_total_photo_size = 0;
3049 g_total_video_size = 0;
3050 g_total_mp3_size = 0;
3051 g_total_voice_memo_size = 0;
3054 media_content_debug("\n[External Memory]\n");
3055 /*1. Photo ============================================================*/
3056 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT);
3059 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3060 media_content_debug("Photo count = [%d]\n", media_cnt);
3063 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3064 media_content_debug("Photo size = [%d]\n", g_total_photo_size);
3066 /*2. Video ============================================================*/
3067 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT);
3070 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3071 media_content_debug("Video count = [%d]\n", media_cnt);
3074 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3075 media_content_debug("Video size = [%d]\n", g_total_video_size);
3077 /*3. MP3 ============================================================*/
3078 ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT);
3081 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3082 media_content_debug("MP3 count = [%d]\n", media_cnt);
3085 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3086 media_content_debug("MP3 size = [%d]\n", g_total_mp3_size);
3088 /*4. Voice Memo ============================================================*/
3089 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);
3091 /*Get Voice Memo Count*/
3092 ret = media_info_get_media_count_from_db(filter, &media_cnt);
3093 media_content_debug("Voice Memo count = [%d]\n", media_cnt);
3095 /*Get Voice Memo Size*/
3096 ret = media_info_foreach_media_from_db(filter, dft_cb, NULL);
3097 media_content_debug("Voice Memo size = [%d]\n", g_total_voice_memo_size);
3098 ret = media_filter_destroy(filter);
3103 void insert_batch_cb(media_content_error_e error, void * user_data)
3105 media_content_debug("media_info_insert_batch_to_db completed!\n");
3108 int test_batch_operations()
3112 char *file_list[10];
3114 for (i = 0; i < 10; i++) {
3115 char filepath[255] = {0,};
3116 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
3117 media_content_debug("File : %s\n", filepath);
3118 file_list[i] = strdup(filepath);
3121 ret = media_info_insert_batch_to_db((const char **)file_list, 10, insert_batch_cb, NULL);
3122 if (ret != MEDIA_CONTENT_ERROR_NONE)
3123 media_content_error("media_info_insert_batch_to_db failed : %d\n", ret);
3126 char condition[2048] = {0, };
3127 const char *temp = NULL;
3128 memset(condition, 0x00, sizeof(condition));
3130 temp = tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%jpg\'");
3131 snprintf(condition, sizeof(condition), "MEDIA_PATH LIKE \'%s", temp);
3133 ret = media_filter_create(&filter);
3134 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3135 media_content_error("Fail to create filter");
3139 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3140 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3141 media_filter_destroy(filter);
3142 media_content_error("Fail to set condition");
3146 ret = media_info_delete_batch_from_db(filter);
3147 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3148 media_filter_destroy(filter);
3149 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3153 ret = media_filter_destroy(filter);
3158 void insert_burst_shot_cb(media_content_error_e error, void * user_data)
3160 media_content_debug("media_info_insert_burst_shot_to_db completed![%d]\n", error);
3161 g_main_loop_quit(g_loop);
3164 gboolean test_insert_burst_shot_to_db_start(gpointer data)
3166 int ret = MEDIA_CONTENT_ERROR_NONE;
3168 char *file_list[10];
3170 for (i = 0; i < 10; i++) {
3171 char filepath[255] = {0,};
3172 snprintf(filepath, sizeof(filepath), "%s%d.jpg", tzplatform_mkpath(TZ_USER_CONTENT, "test/image"), i+1);
3173 media_content_debug("File : %s\n", filepath);
3174 file_list[i] = strdup(filepath);
3177 ret = media_info_insert_burst_shot_to_db((const char **)file_list, 10, insert_burst_shot_cb, NULL);
3178 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3179 media_content_error("media_info_insert_burst_shot_to_db failed : %d\n", ret);
3180 g_main_loop_quit(g_loop);
3186 int test_insert_burst_shot_to_db(void)
3188 GSource *source = NULL;
3189 GMainContext *context = NULL;
3191 g_loop = g_main_loop_new(NULL, FALSE);
3192 context = g_main_loop_get_context(g_loop);
3193 source = g_idle_source_new();
3194 g_source_set_callback(source, test_insert_burst_shot_to_db_start, NULL, NULL);
3195 g_source_attach(source, context);
3197 g_main_loop_run(g_loop);
3198 g_main_loop_unref(g_loop);
3203 void _scan_cb(media_content_error_e err, void *user_data)
3205 media_content_debug("scan callback is called : %d\n", err);
3206 g_main_loop_quit(g_loop);
3211 int test_scan_file()
3215 const char *file_path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3216 ret = media_content_scan_file(file_path);
3217 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3218 media_content_error("Fail to media_content_scan_file : %d", ret);
3225 gboolean test_scan_dir_start(gpointer data)
3229 const char *dir_path = tzplatform_getenv(TZ_USER_CONTENT);
3231 ret = media_content_scan_folder(dir_path, TRUE, _scan_cb, NULL);
3233 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3234 media_content_error("Fail to test_scan_dir_start : %d", ret);
3241 gboolean cancel_scan_dir_start(gpointer data)
3243 int ret = MEDIA_CONTENT_ERROR_NONE;
3245 const char *dir_path = "/opt/usr/media/Images";
3247 ret = media_content_cancel_scan_folder(dir_path);
3249 if (ret == MEDIA_CONTENT_ERROR_NONE)
3250 media_content_debug("media_content_cancel_scan_folder is success");
3252 media_content_error("media_content_cancel_scan_folder is failed");
3257 int test_scan_dir(int cancel)
3259 GSource *source = NULL;
3260 GMainContext *context = NULL;
3262 g_loop = g_main_loop_new(NULL, FALSE);
3263 context = g_main_loop_get_context(g_loop);
3264 source = g_idle_source_new();
3265 g_source_set_callback(source, test_scan_dir_start, NULL, NULL);
3266 g_source_attach(source, context);
3269 GSource *cancel_src = NULL;
3270 cancel_src = g_idle_source_new();
3271 g_source_set_callback(cancel_src, cancel_scan_dir_start, NULL, NULL);
3272 g_source_attach(cancel_src, context);
3275 g_main_loop_run(g_loop);
3276 g_main_loop_unref(g_loop);
3281 void _noti_cb(media_content_error_e error,
3283 media_content_db_update_item_type_e update_item,
3284 media_content_db_update_type_e update_type,
3285 media_content_type_e media_type,
3292 media_content_debug("noti success! : %d\n", error);
3294 media_content_debug("error occured! : %d\n", error);
3296 media_content_debug("Noti from PID(%d)\n", pid);
3298 if (update_item == MEDIA_ITEM_FILE)
3299 media_content_debug("Noti item : MEDIA_ITEM_FILE\n");
3300 else if (update_item == MEDIA_ITEM_DIRECTORY)
3301 media_content_debug("Noti item : MEDIA_ITEM_DIRECTORY\n");
3303 if (update_type == MEDIA_CONTENT_INSERT)
3304 media_content_debug("Noti type : MEDIA_CONTENT_INSERT\n");
3305 else if (update_type == MEDIA_CONTENT_DELETE)
3306 media_content_debug("Noti type : MEDIA_CONTENT_DELETE\n");
3307 else if (update_type == MEDIA_CONTENT_UPDATE)
3308 media_content_debug("Noti type : MEDIA_CONTENT_UPDATE\n");
3310 media_content_debug("content type : %d\n", media_type);
3313 media_content_debug("path : %s\n", path);
3315 media_content_debug("path not\n");
3318 media_content_debug("uuid : %s\n", uuid);
3320 media_content_debug("uuid not\n");
3323 media_content_debug("mime_type : %s\n", mime_type);
3325 media_content_debug("mime not\n");
3327 if (user_data) media_content_debug("String : %s\n", (char *)user_data);
3332 void _noti_cb_2(media_content_error_e error,
3334 media_content_db_update_item_type_e update_item,
3335 media_content_db_update_type_e update_type,
3336 media_content_type_e media_type,
3343 media_content_debug("noti_2 success! : %d\n", error);
3345 media_content_debug("error occured! : %d\n", error);
3347 media_content_debug("Noti_2 from PID(%d)\n", pid);
3349 g_main_loop_quit(g_loop);
3353 static media_content_noti_h noti_h;
3354 static media_content_noti_h noti_h_2;
3356 gboolean _send_noti_operations(gpointer data)
3358 int ret = MEDIA_CONTENT_ERROR_NONE;
3360 /* First of all, noti subscription */
3361 char *user_str = strdup("hi");
3362 media_content_add_db_updated_cb(_noti_cb, (void*)user_str, ¬i_h);
3363 media_content_add_db_updated_cb(_noti_cb_2, (void*)user_str, ¬i_h_2);
3365 /* media_info_insert_to_db */
3366 media_info_h media_item = NULL;
3367 const char *path = tzplatform_mkpath(TZ_USER_CONTENT, "test/image1.jpg");
3369 ret = media_info_insert_to_db(path, &media_item);
3370 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3371 media_content_error("media_info_insert_to_db failed : %d", ret);
3372 media_info_destroy(media_item);
3376 media_content_debug("media_info_insert_to_db success");
3378 /* media_info_delete_batch_from_db */
3380 char condition[2048] = {0,};
3381 const char *temp = NULL;
3382 memset(condition, 0x00, sizeof(condition));
3384 temp = tzplatform_mkpath(TZ_USER_CONTENT, "test/image%%\'");
3385 snprintf(condition, sizeof(condition), "MEDIA_PATH LIKE \'%s", temp);
3387 ret = media_filter_create(&filter);
3388 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3389 media_content_error("Fail to create filter");
3390 media_info_destroy(media_item);
3394 ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT);
3395 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3396 media_filter_destroy(filter);
3397 media_info_destroy(media_item);
3398 media_content_error("Fail to set condition");
3401 ret = media_info_delete_batch_from_db(filter);
3402 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3403 media_filter_destroy(filter);
3404 media_info_destroy(media_item);
3405 media_content_error("media_info_delete_batch_from_db failed : %d\n", ret);
3409 media_filter_destroy(filter);
3411 media_content_remove_db_updated_cb(noti_h);
3413 /* media_info_update_to_db */
3414 ret = media_info_update_to_db(media_item);
3415 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3416 media_content_error("media_info_update_to_db failed : %d\n", ret);
3417 media_info_destroy(media_item);
3421 media_info_destroy(media_item);
3428 int ret = MEDIA_CONTENT_ERROR_NONE;
3429 GSource *source = NULL;
3430 GMainContext *context = NULL;
3432 g_loop = g_main_loop_new(NULL, FALSE);
3433 context = g_main_loop_get_context(g_loop);
3434 source = g_idle_source_new();
3435 g_source_set_callback(source, _send_noti_operations, NULL, NULL);
3436 g_source_attach(source, context);
3438 g_main_loop_run(g_loop);
3439 g_main_loop_unref(g_loop);
3441 test_filter_destroy();
3442 media_content_remove_db_updated_cb(noti_h_2);
3447 int test_create_handle(void)
3449 int ret = MEDIA_CONTENT_ERROR_NONE;
3450 media_info_h media = NULL;
3451 const char *path = "/home/owner/content/test/test.txt";
3452 char *str_value = NULL;
3454 bool bool_value = FALSE;
3455 unsigned long long content_size = 0;
3456 time_t modified_time = 0;
3457 double double_value = 0.0;
3459 ret = media_info_create(path, &media);
3461 ret = media_info_set_title(media, "test_title");
3462 ret = media_info_set_album(media, "test_album");
3463 ret = media_info_set_artist(media, "test_artist");
3464 ret = media_info_set_genre(media, "test_genre");
3465 ret = media_info_set_recorded_date(media, "test_recorded_date");
3466 ret = media_info_set_age_rating(media, "test_age_rating");
3467 ret = media_info_set_author(media, "test_author");
3468 ret = media_info_set_category(media, "test_category");
3469 ret = media_info_set_content_name(media, "test_content_name");
3470 ret = media_info_set_description(media, "test_description");
3471 ret = media_info_set_display_name(media, "test_display_name");
3472 ret = media_info_set_keyword(media, "test_keyword");
3473 ret = media_info_set_location_tag(media, "test_location_tag");
3474 ret = media_info_set_weather(media, "test_weather");
3475 ret = media_info_set_provider(media, "test_provider");
3477 ret = media_info_set_altitude(media, 100.10);
3478 ret = media_info_set_latitude(media, 200.20);
3479 ret = media_info_set_longitude(media, 300.30);
3480 ret = media_info_set_rating(media, 10);
3481 ret = media_info_set_played_time(media);
3482 ret = media_info_set_favorite(media, TRUE);
3483 ret = media_info_increase_played_count(media);
3484 ret = media_info_set_added_time(media, 12345);
3486 ret = media_info_insert_to_db_with_data(media);
3487 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3488 media_content_error("media_info_insert_to_db_with_data failed : %d\n", ret);
3489 media_info_destroy(media);
3493 ret = media_info_get_media_id(media, &str_value);
3494 media_content_debug("media_id = [%s]", str_value);
3495 SAFE_FREE(str_value);
3497 ret = media_info_get_file_path(media, &str_value);
3498 media_content_debug("file_path = [%s]", str_value);
3499 SAFE_FREE(str_value);
3501 ret = media_info_get_title(media, &str_value);
3502 media_content_debug("title = [%s]", str_value);
3503 SAFE_FREE(str_value);
3505 ret = media_info_get_age_rating(media, &str_value);
3506 media_content_debug("age_rating = [%s]", str_value);
3507 SAFE_FREE(str_value);
3509 ret = media_info_get_author(media, &str_value);
3510 media_content_debug("author = [%s]", str_value);
3511 SAFE_FREE(str_value);
3513 ret = media_info_get_category(media, &str_value);
3514 media_content_debug("category = [%s]", str_value);
3515 SAFE_FREE(str_value);
3517 ret = media_info_get_content_name(media, &str_value);
3518 media_content_debug("content_name = [%s]", str_value);
3519 SAFE_FREE(str_value);
3521 ret = media_info_get_description(media, &str_value);
3522 media_content_debug("description = [%s]", str_value);
3523 SAFE_FREE(str_value);
3525 ret = media_info_get_display_name(media, &str_value);
3526 media_content_debug("display_name = [%s]", str_value);
3527 SAFE_FREE(str_value);
3529 ret = media_info_get_keyword(media, &str_value);
3530 media_content_debug("keyword = [%s]", str_value);
3531 SAFE_FREE(str_value);
3533 ret = media_info_get_location_tag(media, &str_value);
3534 media_content_debug("location_tag = [%s]", str_value);
3535 SAFE_FREE(str_value);
3537 ret = media_info_get_weather(media, &str_value);
3538 media_content_debug("weather = [%s]", str_value);
3539 SAFE_FREE(str_value);
3541 ret = media_info_get_provider(media, &str_value);
3542 media_content_debug("provider = [%s]", str_value);
3543 SAFE_FREE(str_value);
3545 ret = media_info_get_longitude(media, &double_value);
3546 media_content_debug("longitude = [%lf]", double_value);
3548 ret = media_info_get_latitude(media, &double_value);
3549 media_content_debug("latitude = [%lf]", double_value);
3551 ret = media_info_get_altitude(media, &double_value);
3552 media_content_debug("altitud = [%lf]", double_value);
3554 ret = media_info_get_rating(media, &int_value);
3555 media_content_debug("rating = [%d]", int_value);
3557 ret = media_info_get_favorite(media, &bool_value);
3558 media_content_debug("favorite = [%d]", bool_value);
3560 ret = media_info_get_played_time(media, &modified_time);
3561 media_content_debug("played_time = [%ld]", modified_time);
3563 ret = media_info_get_played_count(media, &int_value);
3564 media_content_debug("played_count = [%d]", int_value);
3566 ret = media_info_get_added_time(media, &modified_time);
3567 media_content_debug("added_time = [%ld]", modified_time);
3569 ret = media_info_get_size(media, &content_size);
3570 media_content_debug("size = [%llu]", content_size);
3572 ret = media_info_get_modified_time(media, &modified_time);
3573 media_content_debug("modified_time = [%ld]", modified_time);
3575 ret = media_info_get_media_type(media, (media_content_type_e *)&int_value);
3576 media_content_debug("media_type = [%d]", int_value);
3578 ret = media_info_get_storage_type(media, (media_content_storage_e *)&int_value);
3579 media_content_debug("storage_type = [%d]", int_value);
3581 media_info_destroy(media);
3587 bool media_face_test_cb(media_face_h face, void *user_data)
3589 char *face_id = NULL;
3590 char *media_id = NULL;
3591 unsigned int rect_x = 0;
3592 unsigned int rect_y = 0;
3593 unsigned int rect_w = 0;
3594 unsigned int rect_h = 0;
3595 media_content_orientation_e orientation = 0;
3596 char *face_tag = NULL;
3598 media_face_get_face_id(face, &face_id);
3599 media_face_get_media_id(face, &media_id);
3600 media_face_get_face_rect(face, &rect_x, &rect_y, &rect_w, &rect_h);
3601 media_face_get_orientation(face, &orientation);
3602 media_face_get_tag(face, &face_tag);
3604 media_content_debug("face_id [%s] media_id [%s]", face_id, media_id);
3605 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);
3606 media_content_debug("tag [%s]", face_tag);
3608 if (user_data != NULL) {
3609 media_face_h new_face = NULL;
3610 media_face_clone(&new_face, face);
3612 GList **list = (GList**)user_data;
3613 *list = g_list_append(*list, new_face);
3617 SAFE_FREE(media_id);
3618 SAFE_FREE(face_tag);
3625 int ret = MEDIA_CONTENT_ERROR_NONE;
3626 filter_h filter = NULL;
3627 GList *all_item_list = NULL;
3630 ret = media_filter_create(&filter);
3631 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3633 ret = media_filter_set_condition(filter, "MEDIA_TYPE = 0", MEDIA_CONTENT_COLLATE_DEFAULT);
3634 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3635 media_filter_destroy(filter);
3636 media_content_error("Fail to set condition");
3640 ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list);
3641 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3642 media_content_error("media_info_foreach_media_from_db failed: %d", ret);
3643 media_filter_destroy(filter);
3647 for (i = 0; i < g_list_length(all_item_list); i++) {
3648 media_info_h media_handle = NULL;
3649 char *media_id = NULL;
3652 media_handle = (media_info_h)g_list_nth_data(all_item_list, i);
3654 ret = media_info_get_media_id(media_handle, &media_id);
3655 if (ret != MEDIA_CONTENT_ERROR_NONE)
3656 media_content_error("media_info_get_media_id failed: %d", ret);
3658 ret = media_info_get_face_count_from_db(media_id, filter, &face_count);
3659 if (ret != MEDIA_CONTENT_ERROR_NONE)
3660 media_content_error("media_info_get_face_count_from_db failed: %d", ret);
3662 media_content_error("media_id [%s] face_count [%d]", media_id, face_count);
3664 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, NULL);
3665 if (ret != MEDIA_CONTENT_ERROR_NONE)
3666 media_content_error("media_info_foreach_face_from_db failed: %d", ret);
3668 media_info_destroy(media_handle);
3671 media_filter_destroy(filter);
3676 int test_face_add_del(void)
3678 int ret = MEDIA_CONTENT_ERROR_NONE;
3679 char *media_id = "ecca7366-e085-41d8-a12b-cbdfc2b9c5fc";
3682 media_face_h face = NULL;
3684 char *face_tag = "test_face_tag";
3686 ret = media_face_create(media_id, &face);
3687 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_face_create");
3689 ret = media_face_set_face_rect(face, 10, 12, 50, 100);
3690 if (ret != MEDIA_CONTENT_ERROR_NONE)
3691 media_content_error("media_face_set_face_rect failed: %d", ret);
3693 ret = media_face_set_orientation(face, 5);
3694 if (ret != MEDIA_CONTENT_ERROR_NONE)
3695 media_content_error("media_face_set_orientation failed: %d", ret);
3697 ret = media_face_set_tag(face, face_tag);
3698 if (ret != MEDIA_CONTENT_ERROR_NONE)
3699 media_content_error("media_face_set_tag failed: %d", ret);
3701 ret = media_face_insert_to_db(face);
3702 if (ret != MEDIA_CONTENT_ERROR_NONE)
3703 media_content_error("media_face_insert_to_db failed: %d", ret);
3705 ret = media_face_destroy(face);
3706 if (ret != MEDIA_CONTENT_ERROR_NONE)
3707 media_content_error("media_face_destroy failed: %d", ret);
3710 GList *all_item_list = NULL;
3711 filter_h filter = NULL;
3712 ret = media_filter_create(&filter);
3713 media_content_retvm_if(ret != MEDIA_CONTENT_ERROR_NONE, ret, "fail media_filter_create");
3715 ret = media_filter_set_condition(filter, "MEDIA_FACE_TAG IS NOT NULL", MEDIA_CONTENT_COLLATE_DEFAULT);
3716 if (ret != MEDIA_CONTENT_ERROR_NONE) {
3717 media_filter_destroy(filter);
3718 media_content_error("Fail to set condition");
3722 ret = media_info_foreach_face_from_db(media_id, filter, media_face_test_cb, &all_item_list);
3724 if (g_list_length(all_item_list) > 0) {
3725 media_face_h face_handle = NULL;
3726 face_handle = (media_face_h)g_list_nth_data(all_item_list, 0);
3728 ret = media_face_set_face_rect(face_handle, 20, 22, 70, 70);
3729 if (ret != MEDIA_CONTENT_ERROR_NONE)
3730 media_content_error("media_face_set_face_rect failed: %d", ret);
3731 ret = media_face_set_orientation(face_handle, 3);
3732 if (ret != MEDIA_CONTENT_ERROR_NONE)
3733 media_content_error("media_face_set_orientation failed: %d", ret);
3734 ret = media_face_set_tag(face_handle, NULL);
3735 if (ret != MEDIA_CONTENT_ERROR_NONE)
3736 media_content_error("media_face_set_tag failed: %d", ret);
3737 ret = media_face_update_to_db(face_handle);
3738 if (ret != MEDIA_CONTENT_ERROR_NONE)
3739 media_content_error("media_face_update_to_db failed: %d", ret);
3741 media_face_destroy(face_handle);
3744 media_filter_destroy(filter);
3747 char *face_id = "5e58a3a8-f0b2-4c29-b799-b49a70dc2313";
3750 ret = media_face_delete_from_db(face_id);
3755 #ifdef _USE_TVPD_MODE
3756 filter_h g_tv_filter = NULL;
3758 int test_tv_filter_create(void)
3760 media_content_debug("\n============Filter Create============\n\n");
3762 int ret = MEDIA_CONTENT_ERROR_NONE;
3764 ret = media_filter_create(&g_tv_filter);
3766 ret = media_filter_set_storage(g_tv_filter, "0a22a163-e634-4a2e-ba14-0469a969eea0");
3768 ret = media_filter_set_order(g_tv_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_STORAGE_ID, MEDIA_CONTENT_COLLATE_DEFAULT);
3773 int test_tv_filter_destroy(void)
3775 media_content_debug("\n============Filter Destroy============\n\n");
3777 int ret = MEDIA_CONTENT_ERROR_NONE;
3779 ret = media_filter_destroy(g_tv_filter);
3784 bool pvr_item_cb(media_pvr_h pvr, void *user_data)
3786 int ret = MEDIA_CONTENT_ERROR_NONE;
3787 char *c_value = NULL;
3789 bool b_value = false;
3790 unsigned long long l_value = 0;
3793 media_content_debug("NO Item");
3797 ret = media_pvr_get_media_id(pvr, &c_value);
3798 if (ret != MEDIA_CONTENT_ERROR_NONE)
3799 media_content_error("Fail to media_pvr_get_media_id");
3800 media_content_debug("media_id [%s]", c_value);
3803 ret = media_pvr_get_channel_name(pvr, &c_value);
3804 if (ret != MEDIA_CONTENT_ERROR_NONE)
3805 media_content_error("Fail to media_pvr_get_channel_name");
3806 media_content_debug("channel_name [%s]", c_value);
3809 ret = media_pvr_get_program_title(pvr, &c_value);
3810 if (ret != MEDIA_CONTENT_ERROR_NONE)
3811 media_content_error("Fail to media_pvr_get_program_title");
3812 media_content_debug("program_title [%s]", c_value);
3815 ret = media_pvr_get_program_crid(pvr, &c_value);
3816 if (ret != MEDIA_CONTENT_ERROR_NONE)
3817 media_content_error("Fail to media_pvr_get_program_crid");
3818 media_content_debug("program_crid [%s]", c_value);
3821 ret = media_pvr_get_guidance(pvr, &c_value);
3822 if (ret != MEDIA_CONTENT_ERROR_NONE)
3823 media_content_error("Fail to media_pvr_get_guidance");
3824 media_content_debug("guidance [%s]", c_value);
3827 ret = media_pvr_get_synopsis(pvr, &c_value);
3828 if (ret != MEDIA_CONTENT_ERROR_NONE)
3829 media_content_error("Fail to media_pvr_get_synopsis");
3830 media_content_debug("synopsis [%s]", c_value);
3833 ret = media_pvr_get_genre(pvr, &c_value);
3834 if (ret != MEDIA_CONTENT_ERROR_NONE)
3835 media_content_error("Fail to media_pvr_get_synopsis");
3836 media_content_debug("genre [%s]", c_value);
3839 ret = media_pvr_get_language(pvr, &c_value);
3840 if (ret != MEDIA_CONTENT_ERROR_NONE)
3841 media_content_error("Fail to media_pvr_get_language");
3842 media_content_debug("language [%s]", c_value);
3845 ret = media_pvr_get_path(pvr, &c_value);
3846 if (ret != MEDIA_CONTENT_ERROR_NONE)
3847 media_content_error("Fail to media_pvr_get_path");
3848 media_content_debug("path [%s]", c_value);
3851 ret = media_pvr_get_storage_id(pvr, &c_value);
3852 if (ret != MEDIA_CONTENT_ERROR_NONE)
3853 media_content_error("Fail to media_pvr_get_storage_id");
3854 media_content_debug("storage_id [%s]", c_value);
3857 ret = media_pvr_get_size(pvr, &l_value);
3858 if (ret != MEDIA_CONTENT_ERROR_NONE)
3859 media_content_error("Fail to media_pvr_get_size");
3860 media_content_debug("size [%lld]", l_value);
3862 ret = media_pvr_get_timezone(pvr, &i_value);
3863 if (ret != MEDIA_CONTENT_ERROR_NONE)
3864 media_content_error("Fail to media_pvr_get_timezone");
3865 media_content_debug("timezone [%d]", i_value);
3867 ret = media_pvr_get_ptc(pvr, &i_value);
3868 if (ret != MEDIA_CONTENT_ERROR_NONE)
3869 media_content_error("Fail to media_pvr_get_ptc");
3870 media_content_debug("ptc [%d]", i_value);
3872 ret = media_pvr_get_major(pvr, &i_value);
3873 if (ret != MEDIA_CONTENT_ERROR_NONE)
3874 media_content_error("Fail to media_pvr_get_major");
3875 media_content_debug("[%d]", i_value);
3877 ret = media_pvr_get_minor(pvr, &i_value);
3878 if (ret != MEDIA_CONTENT_ERROR_NONE)
3879 media_content_error("Fail to media_pvr_get_minor");
3880 media_content_debug("minor [%d]", i_value);
3882 ret = media_pvr_get_channel_type(pvr, &i_value);
3883 if (ret != MEDIA_CONTENT_ERROR_NONE)
3884 media_content_error("Fail to media_pvr_get_channel_type");
3885 media_content_debug("channel_type [%d]", i_value);
3887 ret = media_pvr_get_program_num(pvr, &i_value);
3888 if (ret != MEDIA_CONTENT_ERROR_NONE)
3889 media_content_error("Fail to media_pvr_get_program_num");
3890 media_content_debug("program_num [%d]", i_value);
3892 ret = media_pvr_get_duration(pvr, &i_value);
3893 if (ret != MEDIA_CONTENT_ERROR_NONE)
3894 media_content_error("Fail to media_pvr_get_duration");
3895 media_content_debug("duration [%d]", i_value);
3897 ret = media_pvr_get_embargo_time(pvr, &i_value);
3898 if (ret != MEDIA_CONTENT_ERROR_NONE)
3899 media_content_error("Fail to media_pvr_get_embargo_time");
3900 media_content_debug("embargo_time [%d]", i_value);
3902 ret = media_pvr_get_expiry_time(pvr, &i_value);
3903 if (ret != MEDIA_CONTENT_ERROR_NONE)
3904 media_content_error("Fail to media_pvr_get_expiry_time");
3905 media_content_debug("expiry_time [%d]", i_value);
3907 ret = media_pvr_get_parental_rating(pvr, &i_value);
3908 if (ret != MEDIA_CONTENT_ERROR_NONE)
3909 media_content_error("Fail to media_pvr_get_parental_rating");
3910 media_content_debug("parental_rating [%d]", i_value);
3912 ret = media_pvr_get_start_time(pvr, &i_value);
3913 if (ret != MEDIA_CONTENT_ERROR_NONE)
3914 media_content_error("Fail to media_pvr_get_start_time");
3915 media_content_debug("start_time [%d]", i_value);
3917 ret = media_pvr_get_program_start_time(pvr, &i_value);
3918 if (ret != MEDIA_CONTENT_ERROR_NONE)
3919 media_content_error("Fail to media_pvr_get_program_start_time");
3920 media_content_debug("program_start_time [%d]", i_value);
3922 ret = media_pvr_get_program_end_time(pvr, &i_value);
3923 if (ret != MEDIA_CONTENT_ERROR_NONE)
3924 media_content_error("Fail to media_pvr_get_program_end_time");
3925 media_content_debug("program_end_time [%d]", i_value);
3927 ret = media_pvr_get_program_date(pvr, &i_value);
3928 if (ret != MEDIA_CONTENT_ERROR_NONE)
3929 media_content_error("Fail to media_pvr_get_program_date");
3930 media_content_debug("program_date [%d]", i_value);
3932 ret = media_pvr_get_timer_record(pvr, &b_value);
3933 if (ret != MEDIA_CONTENT_ERROR_NONE)
3934 media_content_error("Fail to media_pvr_get_timer_record");
3935 media_content_debug("timer_record [%d]", b_value);
3937 ret = media_pvr_get_series_record(pvr, &b_value);
3938 if (ret != MEDIA_CONTENT_ERROR_NONE)
3939 media_content_error("Fail to media_pvr_get_series_record");
3940 media_content_debug("series_record [%d]", b_value);
3942 ret = media_pvr_get_hd(pvr, &i_value);
3943 if (ret != MEDIA_CONTENT_ERROR_NONE)
3944 media_content_error("Fail to media_pvr_get_hd");
3945 media_content_debug("hd [%d]", i_value);
3947 ret = media_pvr_get_subtitle(pvr, &b_value);
3948 if (ret != MEDIA_CONTENT_ERROR_NONE)
3949 media_content_error("Fail to media_pvr_get_subtitle");
3950 media_content_debug("subtitle [%d]", b_value);
3952 ret = media_pvr_get_ttx(pvr, &b_value);
3953 if (ret != MEDIA_CONTENT_ERROR_NONE)
3954 media_content_error("Fail to media_pvr_get_ttx");
3955 media_content_debug("ttx [%d]", b_value);
3957 ret = media_pvr_get_ad(pvr, &b_value);
3958 if (ret != MEDIA_CONTENT_ERROR_NONE)
3959 media_content_error("Fail to media_pvr_get_ad");
3960 media_content_debug("ad [%d]", b_value);
3962 ret = media_pvr_get_hard_of_hearing_radio(pvr, &b_value);
3963 if (ret != MEDIA_CONTENT_ERROR_NONE)
3964 media_content_error("Fail to media_pvr_get_hard_of_hearing_radio");
3965 media_content_debug("hard_of_hearing_radio [%d]", b_value);
3967 ret = media_pvr_get_data_service(pvr, &b_value);
3968 if (ret != MEDIA_CONTENT_ERROR_NONE)
3969 media_content_error("Fail to media_pvr_get_data_service");
3970 media_content_debug("data_service [%d]", b_value);
3972 ret = media_pvr_get_content_lock(pvr, &b_value);
3973 if (ret != MEDIA_CONTENT_ERROR_NONE)
3974 media_content_error("Fail to media_pvr_get_content_lock");
3975 media_content_debug("content_lock [%d]", b_value);
3977 ret = media_pvr_get_content_watch(pvr, &b_value);
3978 if (ret != MEDIA_CONTENT_ERROR_NONE)
3979 media_content_error("Fail to media_pvr_get_content_watch");
3980 media_content_debug("content_watch [%d]", b_value);
3982 ret = media_pvr_get_has_audio_only(pvr, &b_value);
3983 if (ret != MEDIA_CONTENT_ERROR_NONE)
3984 media_content_error("Fail to media_pvr_get_has_audio_only");
3985 media_content_debug("has_audio_only [%d]", b_value);
3987 ret = media_pvr_get_is_local_record(pvr, &b_value);
3988 if (ret != MEDIA_CONTENT_ERROR_NONE)
3989 media_content_error("Fail to media_pvr_get_is_local_record");
3990 media_content_debug("is_local_record [%d]", b_value);
3992 ret = media_pvr_get_resolution(pvr, (media_pvr_resolution_e*)&i_value);
3993 if (ret != MEDIA_CONTENT_ERROR_NONE)
3994 media_content_error("Fail to media_pvr_get_resolution");
3995 media_content_debug("resolution [%d]", i_value);
3997 ret = media_pvr_get_aspectratio(pvr, (media_pvr_aspectratio_e*)&i_value);
3998 if (ret != MEDIA_CONTENT_ERROR_NONE)
3999 media_content_error("Fail to media_pvr_get_aspectratio");
4000 media_content_debug("aspectratio [%d]", i_value);
4002 ret = media_pvr_get_highlight(pvr, &b_value);
4003 if (ret != MEDIA_CONTENT_ERROR_NONE)
4004 media_content_error("Fail to media_pvr_get_highlight");
4005 media_content_debug("highlight [%d]", b_value);
4013 int ret = MEDIA_CONTENT_ERROR_NONE;
4014 int media_count = 0;
4016 media_content_debug("\n============PVR Test============\n\n");
4018 test_tv_filter_create();
4020 ret = media_pvr_get_media_count_from_db(g_tv_filter, &media_count);
4021 if (ret != MEDIA_CONTENT_ERROR_NONE)
4022 media_content_error("media_pvr_get_media_count_from_db failed: %d", ret);
4024 media_content_debug("media_count : [%d]", media_count);
4026 ret = media_pvr_foreach_media_from_db(g_tv_filter, pvr_item_cb, NULL);
4027 if (ret != MEDIA_CONTENT_ERROR_NONE)
4028 media_content_error("media_pvr_foreach_media_from_db is failed");
4030 test_tv_filter_destroy();
4035 int test_pvr_update_db(void)
4037 int ret = MEDIA_CONTENT_ERROR_NONE;
4038 media_pvr_h pvr = NULL;
4040 ret = media_pvr_get_pvr_from_db("ff9b5a9a-a7b4-47f4-8255-84e007e25f13", &pvr);
4041 if (ret != MEDIA_CONTENT_ERROR_NONE)
4042 media_content_error("media_pvr_get_pvr_from_db failed: %d", ret);
4044 ret = media_pvr_set_content_lock(pvr, TRUE);
4045 if (ret != MEDIA_CONTENT_ERROR_NONE)
4046 media_content_error("Fail to media_pvr_set_content_lock");
4048 ret = media_pvr_set_content_watch(pvr, TRUE);
4049 if (ret != MEDIA_CONTENT_ERROR_NONE)
4050 media_content_error("Fail to media_pvr_set_content_watch");
4052 ret = media_pvr_set_program_title(pvr, "TEST TITLE");
4053 if (ret != MEDIA_CONTENT_ERROR_NONE)
4054 media_content_error("Fail to media_pvr_set_program_title");
4056 ret = media_pvr_set_highlight(pvr, TRUE);
4057 if (ret != MEDIA_CONTENT_ERROR_NONE)
4058 media_content_error("Fail to media_pvr_set_highlight");
4060 ret = media_pvr_update_to_db(pvr);
4061 if (ret != MEDIA_CONTENT_ERROR_NONE)
4062 media_content_error("Fail to media_pvr_update_to_db");
4065 media_pvr_destroy(pvr);
4071 int main(int argc, char *argv[])
4073 int ret = MEDIA_CONTENT_ERROR_NONE;
4075 media_content_debug("--- content manager test start ---\n\n");
4077 ret = test_connect_database();
4078 if (ret != MEDIA_CONTENT_ERROR_NONE)
4079 return MEDIA_CONTENT_ERROR_NONE;
4080 #ifdef _USE_TVPD_MODE
4083 test_pvr_update_db();
4089 ret = test_start_face_detection(FALSE);
4090 if (ret != MEDIA_CONTENT_ERROR_NONE)
4094 if (ret != MEDIA_CONTENT_ERROR_NONE)
4097 ret = test_gallery_scenario();
4098 if (ret != MEDIA_CONTENT_ERROR_NONE)
4101 ret = test_get_all_music_files();
4102 if (ret != MEDIA_CONTENT_ERROR_NONE)
4105 ret = test_media_info_operation();
4106 if (ret != MEDIA_CONTENT_ERROR_NONE)
4109 ret = test_folder_operation();
4110 if (ret != MEDIA_CONTENT_ERROR_NONE)
4113 ret = test_folder_update();
4114 if (ret != MEDIA_CONTENT_ERROR_NONE)
4117 ret = test_playlist_operation();
4118 if (ret != MEDIA_CONTENT_ERROR_NONE)
4121 ret = test_tag_operation();
4122 if (ret != MEDIA_CONTENT_ERROR_NONE)
4125 ret = test_bookmark_operation();
4126 if (ret != MEDIA_CONTENT_ERROR_NONE)
4129 ret = test_album_list();
4130 if (ret != MEDIA_CONTENT_ERROR_NONE)
4133 ret = test_group_operation();
4134 if (ret != MEDIA_CONTENT_ERROR_NONE)
4137 ret = test_update_operation();
4138 if (ret != MEDIA_CONTENT_ERROR_NONE)
4141 ret = test_insert();
4142 if (ret != MEDIA_CONTENT_ERROR_NONE)
4146 if (ret != MEDIA_CONTENT_ERROR_NONE)
4149 ret = test_create_thumbnail(TRUE);
4150 if (ret != MEDIA_CONTENT_ERROR_NONE)
4153 ret = test_extrace_face(TRUE);
4154 if (ret != MEDIA_CONTENT_ERROR_NONE)
4157 ret = test_request_update_db();
4158 if (ret != MEDIA_CONTENT_ERROR_NONE)
4162 if (ret != MEDIA_CONTENT_ERROR_NONE)
4165 ret = test_batch_operations();
4166 if (ret != MEDIA_CONTENT_ERROR_NONE)
4167 return MEDIA_CONTENT_ERROR_NONE;
4169 ret = test_insert_burst_shot_to_db();
4170 if (ret != MEDIA_CONTENT_ERROR_NONE)
4171 return MEDIA_CONTENT_ERROR_NONE;
4173 ret = test_scan_file();
4174 if (ret != MEDIA_CONTENT_ERROR_NONE)
4175 return MEDIA_CONTENT_ERROR_NONE;
4177 ret = test_scan_dir(true);
4178 if (ret != MEDIA_CONTENT_ERROR_NONE)
4179 return MEDIA_CONTENT_ERROR_NONE;
4182 if (ret != MEDIA_CONTENT_ERROR_NONE)
4183 return MEDIA_CONTENT_ERROR_NONE;
4185 ret = test_create_handle();
4186 if (ret != MEDIA_CONTENT_ERROR_NONE)
4187 return MEDIA_CONTENT_ERROR_NONE;
4190 if (ret != MEDIA_CONTENT_ERROR_NONE)
4191 return MEDIA_CONTENT_ERROR_NONE;
4193 ret = test_face_add_del();
4194 if (ret != MEDIA_CONTENT_ERROR_NONE)
4195 return MEDIA_CONTENT_ERROR_NONE;
4197 ret = test_playlist_operation_v2();
4198 if (ret != MEDIA_CONTENT_ERROR_NONE)
4199 return MEDIA_CONTENT_ERROR_NONE;
4201 ret = test_bookmark_operation_v2();
4202 if (ret != MEDIA_CONTENT_ERROR_NONE)
4203 return MEDIA_CONTENT_ERROR_NONE;
4205 ret = test_tag_operation_v2();
4206 if (ret != MEDIA_CONTENT_ERROR_NONE)
4207 return MEDIA_CONTENT_ERROR_NONE;
4210 ret = test_disconnect_database();
4211 if (ret != MEDIA_CONTENT_ERROR_NONE)
4214 media_content_debug("--- content manager test end ---\n");