diff options
author | Hyunjun Ko <zzoon.ko@samsung.com> | 2012-08-21 18:01:56 +0900 |
---|---|---|
committer | Hyunjun Ko <zzoon.ko@samsung.com> | 2012-08-21 18:01:56 +0900 |
commit | 198987b2e1fcc91d4da409017f870801e0d06664 (patch) | |
tree | 744862158b748898c8305fa0ace85c70e8fa93a7 /test | |
parent | aaaa695e5509775ef100360642a02970af7f76a9 (diff) | |
download | media-content-198987b2e1fcc91d4da409017f870801e0d06664.tar.gz media-content-198987b2e1fcc91d4da409017f870801e0d06664.tar.bz2 media-content-198987b2e1fcc91d4da409017f870801e0d06664.zip |
Tizen 2.0 beta
Diffstat (limited to 'test')
-rwxr-xr-x | test/CMakeLists.txt | 2 | ||||
-rwxr-xr-x[-rw-r--r--] | test/media-content_test.c | 2738 |
2 files changed, 2040 insertions, 700 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index fc8f5f6..7097377 100755 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,7 +2,7 @@ SET(fw_name "capi-content-media-content") SET(fw_test "${fw_name}-test") INCLUDE(FindPkgConfig) -pkg_check_modules(${fw_test} REQUIRED glib-2.0 dlog libmedia-service drm-service aul capi-base-common) +pkg_check_modules(${fw_test} REQUIRED glib-2.0 dlog libmedia-service capi-base-common libmedia-utils) FOREACH(flag ${${fw_test}_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) diff --git a/test/media-content_test.c b/test/media-content_test.c index 7fc041c..1da6157 100644..100755 --- a/test/media-content_test.c +++ b/test/media-content_test.c @@ -1,699 +1,2039 @@ -/*
-* Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
-*
-* Licensed under the Apache License, Version 2.0 (the "License");
-* you may not use this file except in compliance with the License.
-* You may obtain a copy of the License at
-*
-* http://www.apache.org/licenses/LICENSE-2.0
-*
-* Unless required by applicable law or agreed to in writing, software
-* distributed under the License is distributed on an "AS IS" BASIS,
-* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-* See the License for the specific language governing permissions and
-* limitations under the License.
-*/
-
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <media_content.h>
-#include <dlog.h>
-#include <pthread.h>
-
-#ifdef LOG_TAG
-#undef LOG_TAG
-#endif
-#define LOG_TAG "TIZEN_N_MEDIACONTENT"
-
-
-int test_content_connect_database()
-{
- int ret;
-
- LOGI("\n============DB Connection Test============\n\n");
-
- ret = media_content_connect();
-
- if(ret == MEDIA_CONTENT_ERROR_NONE)
- {
- LOGI("connection is success\n\n");
- }
- else
- LOGE("connection is failed\n\n");
-
- return ret;
-}
-
-void test_content_disconnect_database()
-{
-
- int ret;
- LOGI("\n============DB Disconnection Test============\n\n");
-
- ret = media_content_disconnect();
-
- if(ret == MEDIA_CONTENT_ERROR_NONE)
- LOGI("disconnection is success\n\n");
- else
- LOGE("disconnection is failed\n\n");
-
-}
-
-bool capi_media_list_cb(media_info_h item, void *user_data)
-{
- int ret = true;
-
- char* file_path = NULL;
-
- char* name = NULL;
- char* thumbnail_path = NULL;
- time_t date_modified;
- int type;
-
- if(item != NULL)
- {
- if(media_info_get_file_path(item,&file_path) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_info_get_file_path is failed\n");
- ret = false;
- }
-
- if(media_info_get_display_name(item,&name) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_info_get_display_name is failed\n");
- ret = false;
- }
- if(media_info_get_thumbnail_path(item,&thumbnail_path) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_info_get_thumbnail_path is failed\n");
- ret = false;
- }
- if(media_info_get_date_modified(item,&date_modified) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_info_get_date_modified is failed\n");
- ret = false;
- }
- if(media_info_get_media_type(item,&type) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_info_get_content_type is failed\n");
- ret = false;
- }
- LOGI("[%d] name : %s , file path : %s , date : %s , thumbnail path : %s \n"
- ,type,name,file_path,ctime(&date_modified),thumbnail_path);
-
-
-
-
- if(type == MEDIA_CONTENT_TYPE_IMAGE)
- {
- image_meta_h image;
-
- double lati;
- double longi;
-
- if(media_info_get_image_from_db(item,&image) == MEDIA_CONTENT_ERROR_NONE)
- {
- image_meta_get_latitude(image,&lati);
- image_meta_get_longitude(image,&longi);
- //printf("[image] latitude : %f , longitude : %f \n",lati, longi);
-
- image_meta_destroy(image);
- }
- else
- LOGE("[image_error] \n");
-
- }
- if(type == MEDIA_CONTENT_TYPE_VIDEO)
- {
- video_meta_h video;
- double lati;
- double longi;
-
- if(media_info_get_video_from_db(item,&video) == MEDIA_CONTENT_ERROR_NONE)
- {
- video_meta_get_latitude(video,&lati);
- video_meta_get_longitude(video,&longi);
- video_meta_destroy(video);
- }
- else
- LOGE("[video_error] \n");
-
- }
- if(type == MEDIA_CONTENT_TYPE_AUDIO)
- {
- audio_meta_h audio;
-
- if(media_info_get_audio_from_db(item,&audio) == MEDIA_CONTENT_ERROR_NONE)
- {
-
- audio_meta_destroy(audio);
- }
- else
- LOGE("[audio_error] \n");
-
- }
-
-
- if(file_path != NULL)
- free(file_path);
- if(name != NULL)
- free(name);
- if(thumbnail_path != NULL)
- free(thumbnail_path);
-
- }
-
- return ret;
-}
-
-bool capi_folder_list_cb(media_folder_h folder, void* user_data)
-{
- int item_count;
- char* folder_path;
- char* folder_name;
- media_content_storage_e storage_type;
- bool ret;
- media_folder_h* _folder = (media_folder_h*)user_data;
-
- if(folder != NULL)
- {
- media_folder_clone(_folder,folder);
-
- if(media_folder_get_path(folder,&folder_path) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_folder_get_path is failed\n");
- ret = false;
- }
- if(media_folder_get_name(folder,&folder_name) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_folder_get_name is failed\n");
- ret = false;
- }
- if(media_folder_get_storage_type(folder,&storage_type) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_folder_get_storage_type is failed\n");
- ret = false;
- }
- if(media_folder_get_media_count_from_db(folder,MEDIA_CONTENT_TYPE_IMAGE|MEDIA_CONTENT_TYPE_VIDEO|MEDIA_CONTENT_TYPE_AUDIO,&item_count) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_folder_get_media_count_from_db is failed\n");
- ret = false;
- }
- LOGI("[name : %s] media count : %d , storage type : %d, path : %s \n",
- folder_name,item_count,storage_type,folder_path);
-
- if(folder_path != NULL)
- {
- free(folder_path);
- }
- if(folder_name != NULL)
- {
- free(folder_name);
- }
-
- //media_folder_destroy(_folder);
- ret = true;
- }
- else
- {
- ret = false;
- }
-
- return ret;
-}
-
-
-bool capi_audio_list_cb(audio_album_h album,void* user_data)
-{
- int ret;
- char* name = NULL;
-
- if(album != NULL)
- {
- if(audio_album_get_name(album,&name) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] audio_album_get_name is failed\n");
- ret = false;
- }
-
- if(name != NULL)
- {
- LOGE("album is found : %s \n",name);
- free(name);
- }
-
-
- }
- else
- ret = false;
-
- return ret;
-}
-
-
-
-void test_folder_foreach_from_db()
-{
- int ret;
- media_folder_h folder;
-
-
- //test.1 set the filter
- media_folder_filter_h filter; // handle of filter
-
- if(media_folder_filter_create(&filter) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_folder_filter_create is failed\n");
- return ;
- }
- //test.2 get the folder
- ret = media_folder_foreach_folder_from_db(filter, capi_folder_list_cb,&folder);
-
- //test.3 get the media list in first folder
- media_info_filter_h m_filter = NULL;
- if(media_info_filter_create(&m_filter) != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_info_filter_create is failed\n");
- return ;
-
- }
- media_info_filter_set_media_type(m_filter,MEDIA_CONTENT_TYPE_IMAGE);
- media_info_filter_set_offset(m_filter,1,5);
- media_info_filter_set_search_keyword(m_filter,MEDIA_INFO_SEARCH_BY_DISPLAY_NAME,"ph");
- media_info_filter_set_order(m_filter,MEDIA_CONTENT_SORT_BY_NAME_DESC);
-
- ret = media_folder_foreach_media_from_db(folder,m_filter, capi_media_list_cb,NULL);
-
- if(ret != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d\n",ret);
- }
-
- media_folder_filter_destroy(filter);
- media_info_filter_destroy(m_filter);
-
-}
-
-
-void test_media_info_foreach_from_db()
-{
- int ret;
- LOGI("\n============Content get Media Test============\n\n");
-
- //test4-1. get all items
- media_info_filter_h filter;
-
-
- media_info_filter_create(&filter);
-
- ret = media_info_foreach_media_from_db(filter, capi_media_list_cb,NULL);
-
- if(ret == MEDIA_CONTENT_ERROR_NONE)
- LOGI("media_info_foreach_media_from_db is success\n\n");
- else
- LOGE("media_info_foreach_media_from_db is failed\n\n");
-
-
- media_info_filter_destroy(filter);
-}
-
-
-void test_audio_album_foreach_from_db()
-{
- int ret;
- media_audio_filter_h filter = NULL;
-
- media_audio_filter_create(&filter);
-
- ret = audio_album_foreach_album_from_db(filter,capi_audio_list_cb,NULL);
-
- if(ret == MEDIA_CONTENT_ERROR_NONE)
- LOGI("audio_album_foreach_album_from_db is success\n\n");
- else
- LOGE("audio_album_foreach_album_from_db is failed\n\n");
-
-
- if(filter != NULL)
- media_audio_filter_destroy(filter);
-
-
-}
-
-
-bool capi_find_media_cb(media_info_h item,void* user_data)
-{
- media_info_h* _item = (media_info_h*)user_data;
- if(item != NULL)
- {
- char* name = NULL;
- media_info_get_display_name(item,&name);
-
- LOGI("[media]display name : %s \n",name);
-
- if(name != NULL)
- free(name);
- media_info_clone(_item,item);
- }
- return false;
-}
-
-bool capi_taginfo_cb(media_tag_h tag, void* user_data)
-{
- char* tag_name;
- media_tag_h* _tag = (media_tag_h*)user_data;
- if(tag != NULL)
- {
- media_tag_get_name(tag,&tag_name);
- LOGI("[tag name] : %s \n",tag_name);
- media_tag_clone(_tag,tag);
-
- if(tag_name != NULL)
- free(tag_name);
- }
- return false;
-}
-
-
-void test_tag_operation()
-{
-
- //test . insert tag information
- //condition : item is needed to insert the tag, tag is not support for audio
- media_tag_h tag = NULL;
- media_info_h item = NULL;
- media_info_filter_h media_filter = NULL;
- media_info_filter_create(&media_filter);
-
- //find the item which display_name is "1_photo.jpg"
- media_info_foreach_media_from_db(media_filter,capi_find_media_cb,(void *)&item);
- if(media_filter != NULL)
- media_info_filter_destroy(media_filter);
-
- if(item != NULL)
- {
- //insert tag
- media_tag_insert_to_db("test_tag",&tag);
-
-
-
- //add the media to tag.
- media_tag_add_media_to_db(tag,item);
-
-
- //delete the tag
- if(tag != NULL)
- {
- media_tag_delete_from_db(tag);
- media_tag_destroy(tag);
-
- }
-
- media_info_destroy(item);
- }
-
-
-}
-
-
-
-bool capi_get_video_cb(media_info_h item, void* user_data)
-{
- video_meta_h* _video = (video_meta_h*)user_data;
- char* name = NULL;
- if(item != NULL)
- {
- media_info_get_display_name(item,&name);
- LOGI(" video name : %s \n" , name);
-
- media_info_get_video_from_db(item,_video);
-
-
- if(name != NULL)
- free(name);
-
- }
- return false;
-}
-
-bool capi_get_bookmarks_cb(video_bookmark_h bookmark,void* user_data)
-{
- //get the first bookmark.
- // it is needed array of bookmark, if user wan to get list of bookmarks.
- video_bookmark_h* _bookmark = (video_bookmark_h*)user_data;
- if(bookmark != NULL)
- {
- char* name = NULL;
- video_bookmark_get_thumbnail_path(bookmark,&name);
-
- video_bookmark_clone(_bookmark,bookmark);
-
- if(name != NULL)
- {
- LOGI("deleted the bookmark path : %s \n",name);
-
- free(name);
- }
- }
- return false;
-}
-
-void test_video_bookmark_operation()
-{
- //bookmark is only supported for video information.
- video_meta_h video = NULL;
- media_info_filter_h media_filter = NULL;
-
-
- media_info_filter_create(&media_filter);
- media_info_filter_set_media_type(media_filter,MEDIA_CONTENT_TYPE_VIDEO);
-
- //get the media_info which is returned first , and get the video's instance from media_info.
- media_info_foreach_media_from_db(media_filter,capi_get_video_cb,(void *)&video);
-
- media_info_filter_destroy(media_filter);
-
-
- if(video != NULL)
- {
-
- video_bookmark_h bookmark = NULL;
-
- //insert bookmark to video
- char* thumbnail_path1 = "/opt/media/Images and videos/My video clips/teat11.jpg";
- video_bookmark_insert_to_db(video, 200,thumbnail_path1);
-
- //get the bookmark
- video_bookmark_filter_h bookmark_filter = NULL;
- video_bookmark_filter_create(&bookmark_filter);
-
- video_bookmark_foreach_bookmark_from_db(video,bookmark_filter,capi_get_bookmarks_cb,(void*)&bookmark);
-
- video_bookmark_filter_destroy(bookmark_filter);
-
- if(bookmark != NULL)
- {
- video_bookmark_delete_from_db(bookmark);
- }
-
- video_bookmark_destroy(bookmark);
-
-
-
- }
-
- video_meta_destroy(video);
-
-}
-
-
-#include <time.h>
-#include <memory.h>
-void test_insert_item(int count)
-{
- int i =0,ret;
- char img_path[1024];
-
- clock_t start, end;
-
- start = clock();
- for(i =0 ; i< count; i++)
- {
- memset(img_path, 0x00, sizeof(img_path));
- snprintf(img_path,sizeof(img_path),"%s%d.jpg","/opt/media/Images and videos/My photo clips/a",i+0);
-
- ret = media_info_insert_to_db(MEDIA_CONTENT_TYPE_IMAGE,img_path);
- if(ret != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE(" image insert error \n");
- }
- }
- end = clock();
- LOGI(" time : %f \n",(double)(end-start)/CLOCKS_PER_SEC);
-
-
-}
-
-void test_filter_operation()
-{
- int ret;
- int media_type;
- int offset;
- int count;
- char *keyword= NULL;
- media_info_search_type_e search_type;
-
-
- media_info_filter_h filter;
- media_info_filter_create(&filter);
-
- media_info_filter_get_offset( filter,&offset,&count);
- media_info_filter_get_media_type( filter, &media_type);
- media_info_filter_get_search_keyword( filter,&search_type,&keyword);
-
- LOGI("1. media : %d , offset : %d / %d , search : %d / %s \n",media_type, offset,count,search_type,keyword);
-
- ret = media_info_filter_set_search_keyword(filter,MEDIA_INFO_SEARCH_BY_DISPLAY_NAME,"test");
- media_info_filter_get_search_keyword( filter,&search_type,&keyword);
- LOGI("2. media : %d , offset : %d / %d , search : %d / %s ret : %d\n",media_type, offset,count,search_type,keyword, ret);
-
- ret = media_info_filter_set_search_keyword(filter,MEDIA_INFO_SEARCH_NONE,NULL);
- media_info_filter_get_search_keyword( filter,&search_type,&keyword);
- LOGI("3. media : %d , offset : %d / %d , search : %d /%s ret : %d\n",media_type, offset,count,search_type,keyword, ret);
-
-}
-
-bool capi_audio_playlist_cb(audio_playlist_h playlist, void *user_data)
-{
- char* playlist_name = NULL;
- if(playlist != NULL)
- {
- audio_playlist_get_name(playlist,&playlist_name);
-
- if(playlist_name != NULL)
- {
- LOGI(" Playlist Name : %s \n", playlist_name);
- free(playlist_name);
- }
-
- }
- return true;
-}
-
-bool capi_audio_info_cb(media_info_h media,void* user_data)
-{
-
- media_info_h* add_media = (media_info_h*)user_data;
- if(media != NULL)
- {
- media_info_clone(add_media,media);
- }
-
- return false;
-}
-
-bool capi_media_info_in_playlist_cb(media_info_h media,void* user_data)
-{
-
- char* media_name = NULL;
-
- if(media != NULL)
- {
- media_info_get_display_name(media,&media_name);
-
- if(media_name != NULL)
- {
- LOGI("[Playlist] Media Name : %s \n",media_name);
- free(media_name);
- }
- }
- return true;
-}
-
-void test_playlist_operation()
-{
- //1. insert the playlist
- audio_playlist_h playlist;
- char *playlist_name = "myPlaylist";
- int ret = audio_playlist_insert_to_db(playlist_name, &playlist);
-
- if(ret != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] Insert operation is failed\n");
- }
-
- //2. get the playlist using foreach function.
- // if filter is NULL, all item will be retrieved.
- audio_playlist_foreach_playlist_from_db(NULL,capi_audio_playlist_cb,NULL);
-
-
- //3. add the audio to playlist
- media_info_h audio_info = NULL;
- media_info_filter_h media_filter;
- media_info_filter_create(&media_filter);
- media_info_filter_set_media_type(media_filter,MEDIA_CONTENT_TYPE_AUDIO);
- media_info_foreach_media_from_db(media_filter,capi_audio_info_cb,&audio_info);
-
- ret = audio_playlist_add_media_to_db(playlist,audio_info);
-
- media_info_destroy(audio_info);
-
- //4. get the media from playlist
- audio_playlist_foreach_media_from_db(playlist,NULL,capi_media_info_in_playlist_cb,NULL);
-
- //5. deletes the playlist
- ret = audio_playlist_delete_from_db(playlist);
-
- if(ret != MEDIA_CONTENT_ERROR_NONE)
- {
- LOGE("[ERROR] Delete operation is failed\n");
- }
-
-}
-
-int main(int argc, char *argv[])
-{
-
- LOGI("--- content manager test start ---\n\n");
-
- //scenario 1. DB connection
- if(test_content_connect_database() != MEDIA_CONTENT_ERROR_NONE)
- return MEDIA_CONTENT_ERROR_NONE;
-
-
- //scenario 2-1 .1 set the filter
- // .2 gets the folders
- test_folder_foreach_from_db();
-
- //test_insert_item(1000);
- //scenario 2-2. gets the media
- test_media_info_foreach_from_db();
-
- //scenario 2-3. searching the data by filter.
- test_audio_album_foreach_from_db();
-
- //scenario 3. operation of tag information
- // 1. insert the tag
- // 2. get the tag list
- // 3. delete the tag
- test_tag_operation();
-
-
- //scenario 4. the operation of bookmark
- // 1. insert the bookmark
- // 2. get the bookmark list
- // 3. delete the bookmark
- test_video_bookmark_operation();
-
- //scenario 5. the operation of playlist
- test_playlist_operation();
-
-
- //scenario 6. DB disconnection
- test_content_disconnect_database();
- return 0;
-
-}
-
-
-
+/* +* Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +*/ + +#include <sys/time.h> +#include <stdio.h> +#include <stdlib.h> +#include <unistd.h> +#include <media_content.h> +#include <media_info_private.h> +#include <dlog.h> +#include <pthread.h> +#include <glib.h> + +#ifdef LOG_TAG +#undef LOG_TAG +#endif +#define LOG_TAG "TIZEN_N_MEDIACONTENT" + +filter_h g_filter = NULL; +filter_h g_filter_g = NULL; //filter for group like folder, tag, playlist, album, year ... + + +#define test_audio_id "0f999626-6218-450c-a4ad-181a3bab6ebf" +#define test_video_id "c1a92494-cc5b-4d74-aa7d-253199234548" +#define test_image_id "db1c184c-6f31-43b4-b924-8c00ac5b6197" + +bool get_audio_meta(audio_meta_h audio) +{ + char *c_value = NULL; + int i_value = 0; + time_t t_value = 0; + + media_content_debug("=== audio meta === \n"); + + audio_meta_get_media_id(audio, &c_value); + media_content_debug("audio_id : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_title(audio, &c_value); + media_content_debug("title : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_album(audio, &c_value); + media_content_debug("album : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_artist(audio, &c_value); + media_content_debug("artist : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_genre(audio, &c_value); + media_content_debug("genre : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_composer(audio, &c_value); + media_content_debug("composer : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_year(audio, &c_value); + media_content_debug("year : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_recorded_date(audio, &c_value); + media_content_debug("recorded_date : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_copyright(audio, &c_value); + media_content_debug("copyright : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_track_num(audio, &c_value); + media_content_debug("track_num : [%s] \n", c_value); + SAFE_FREE(c_value); + + audio_meta_get_bit_rate(audio, &i_value); + media_content_debug("bitrate : [%d] \n", i_value); + + audio_meta_get_sample_rate(audio, &i_value); + media_content_debug("samplerate : [%d] \n", i_value); + + audio_meta_get_channel(audio, &i_value); + media_content_debug("channel : [%d] \n", i_value); + + audio_meta_get_duration(audio, &i_value); + media_content_debug("duration : [%d] \n", i_value); + + audio_meta_get_played_count(audio, &i_value); + media_content_debug("played_count : [%d] \n", i_value); + + audio_meta_get_played_time(audio, &t_value); + media_content_debug("played_time : [%d] \n", t_value); + + audio_meta_get_played_position(audio, &i_value); + media_content_debug("played_position : [%d] \n", i_value); + + return true; +} + +bool get_video_meta(video_meta_h video) +{ + char *c_value = NULL; + int i_value = 0; + time_t t_value = 0; + + media_content_debug("=== video meta === \n"); + + video_meta_get_media_id(video, &c_value); + media_content_debug("video_id : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_title(video, &c_value); + media_content_debug("title : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_album(video, &c_value); + media_content_debug("album : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_artist(video, &c_value); + media_content_debug("artist : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_genre(video, &c_value); + media_content_debug("genre : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_composer(video, &c_value); + media_content_debug("omposer : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_year(video, &c_value); + media_content_debug("year : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_recorded_date(video, &c_value); + media_content_debug("recorded_date : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_copyright(video, &c_value); + media_content_debug("copyright : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_track_num(video, &c_value); + media_content_debug("track_num : [%s] \n", c_value); + SAFE_FREE(c_value); + + video_meta_get_bit_rate(video, &i_value); + media_content_debug("bitrate : [%d] \n", i_value); + + video_meta_get_duration(video, &i_value); + media_content_debug("duration : [%d] \n", i_value); + + video_meta_get_width(video, &i_value); + media_content_debug("width : [%d] \n", i_value); + + video_meta_get_height(video, &i_value); + media_content_debug("height : [%d] \n", i_value); + + video_meta_get_played_count(video, &i_value); + media_content_debug("played_count : [%d] \n", i_value); + + video_meta_get_played_time(video, &t_value); + media_content_debug("played_time : [%d] \n", t_value); + + video_meta_get_played_position(video, &i_value); + media_content_debug("played_position : [%d] \n", i_value); + + return true; +} + +bool gallery_folder_list_cb(media_folder_h folder, void *user_data) +{ + media_folder_h new_folder = NULL; + media_folder_clone(&new_folder, folder); + + GList **list = (GList**)user_data; + *list = g_list_append(*list, new_folder); + + return true; +} + +bool gallery_media_item_cb(media_info_h media, void *user_data) +{ + media_info_h new_media = NULL; + media_info_clone(&new_media, media); + + GList **list = (GList**)user_data; + *list = g_list_append(*list, new_media); + + return true; +} + +bool gallery_tag_item_cb(media_tag_h tag, void *user_data) +{ + media_tag_h new_tag = NULL; + media_tag_clone(&new_tag, tag); + + GList **list = (GList**)user_data; + *list = g_list_append(*list, new_tag); + + return true; +} + +bool gallery_bookmarks_cb(media_bookmark_h bookmark, void *user_data) +{ + media_bookmark_h new_bm = NULL; + media_bookmark_clone(&new_bm, bookmark); + + GList **list = (GList**)user_data; + *list = g_list_append(*list, new_bm); + + return true; +} + +bool media_item_cb(media_info_h media, void *user_data) +{ + char *c_value = NULL; + char *media_id = NULL; + int i_value = 0; + time_t t_value = 0; + bool b_value = false; + media_content_type_e media_type = 0; + unsigned long long size = 0; + + if(media == NULL) + { + media_content_debug("NO Item \n"); + return true; + } + + media_info_get_media_type(media, &media_type); + media_content_debug("media_type : [%d] \n", media_type); + + media_info_get_media_id(media, &media_id); + media_content_debug("media_id : [%s] \n", media_id); + +#if 1 + if(media_type == MEDIA_CONTENT_TYPE_MUSIC) + { + audio_meta_h audio; + + if(media_info_get_audio(media, &audio) == MEDIA_CONTENT_ERROR_NONE) + { + get_audio_meta(audio); + audio_meta_destroy(audio); + } + else + media_content_error("[audio_error] \n"); + + } + else if(media_type == MEDIA_CONTENT_TYPE_IMAGE) + { + image_meta_h image; + media_content_orientation_e orientation = 0; + + if(media_info_get_image(media, &image) == MEDIA_CONTENT_ERROR_NONE) + { + image_meta_get_orientation(image, &orientation); + media_content_debug("[image] orientation : %d\n", orientation); + image_meta_destroy(image); + } + else + media_content_error("[image_error] \n"); + + } + else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) + { + video_meta_h video; + + if(media_info_get_video(media, &video) == MEDIA_CONTENT_ERROR_NONE) + { + get_video_meta(video); + video_meta_destroy(video); + } + else + media_content_error("[video_error] \n"); + + } + else + { + media_content_debug("Other Content"); + } + + media_content_debug("=== media_info === \n"); + media_info_get_file_path(media, &c_value); + media_content_debug("file_path : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_display_name(media, &c_value); + media_content_debug("display_name : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_mime_type(media, &c_value); + media_content_debug("mime_type : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_thumbnail_path(media, &c_value); + media_content_debug("thumbnail_path : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_description(media, &c_value); + media_content_debug("description : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_author(media, &c_value); + media_content_debug("author : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_provider(media, &c_value); + media_content_debug("provider : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_content_name(media, &c_value); + media_content_debug("content_name : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_category(media, &c_value); + media_content_debug("category : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_location_tag(media, &c_value); + media_content_debug("location_tag : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_age_rating(media, &c_value); + media_content_debug("age_rating : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_keyword(media, &c_value); + media_content_debug("keyword : [%s] \n", c_value); + SAFE_FREE(c_value); + + media_info_get_size(media, &size); + media_content_debug("size : [%lld] \n", size); + + media_info_get_added_time(media, &t_value); + media_content_debug("added_time : [%d] \n", t_value); + + media_info_get_modified_time(media, &t_value); + media_content_debug("modified_time : [%d] \n", t_value); + + media_info_get_rating(media, &i_value); + media_content_debug("rating : [%d] \n", i_value); + + media_info_get_favorite(media, &b_value); + media_content_debug("favorite : [%d] \n", b_value); + + media_info_is_drm(media, &b_value); + media_content_debug("is_drm : [%d] \n", b_value); + + media_info_set_location_tag(media, "Test location tag"); + media_info_update_to_db(media); + SAFE_FREE(media_id); +#endif + return true; +} + +bool folder_list_cb(media_folder_h folder, void *user_data) +{ + int item_count; + char *folder_id = NULL; + char *folder_path = NULL; + char *folder_name = NULL; + media_content_storage_e storage_type; + bool ret; + media_folder_h *_folder = (media_folder_h*)user_data; + + if(folder != NULL) + { + media_folder_clone(_folder, folder); + + if(media_folder_get_folder_id(folder, &folder_id) != MEDIA_CONTENT_ERROR_NONE) + { + media_content_error("[ERROR] media_folder_get_folder_id is failed\n"); + return false; + } + media_content_debug("folder_id = [%s] \n", folder_id); + + if(media_folder_get_path(folder, &folder_path) != MEDIA_CONTENT_ERROR_NONE) + { + media_content_error("[ERROR] media_folder_get_path is failed\n"); + return false; + } + media_content_debug("folder_path = [%s] \n", folder_path); + SAFE_FREE(folder_path); + + if(media_folder_get_name(folder, &folder_name) != MEDIA_CONTENT_ERROR_NONE) + { + media_content_error("[ERROR] media_folder_get_name is failed\n"); + return false; + } + media_content_debug("folder_name = [%s] \n", folder_name); + SAFE_FREE(folder_name); + + if(media_folder_get_storage_type(folder, &storage_type) != MEDIA_CONTENT_ERROR_NONE) + { + media_content_error("[ERROR] media_folder_get_storage_type is failed\n"); + return false; + } + media_content_debug("storage_type = [%d] \n", storage_type); + + if(media_folder_get_media_count_from_db(folder_id, g_filter, &item_count) != MEDIA_CONTENT_ERROR_NONE) + { + media_content_error("[ERROR] media_folder_get_media_count_from_db is failed\n"); + return false; + } + + media_folder_foreach_media_from_db(folder_id, g_filter, media_item_cb, NULL); + + SAFE_FREE(folder_id); + ret = true; + } + else + { + ret = false; + } + + return ret; +} + +bool test_album_from_db(int album_id) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + media_album_h album_h; + int test_album_id = 0; + char *album_name = NULL; + char *artist = NULL; + + ret = media_album_get_album_from_db(album_id, &album_h); + if(ret != MEDIA_CONTENT_ERROR_NONE) + { + media_content_error("error when get album \n"); + return false; + } + + if(media_album_get_album_id(album_h, &test_album_id) != MEDIA_CONTENT_ERROR_NONE) + return false; + + media_content_debug("test_album_id : [%d] \n", test_album_id); + + if(media_album_get_name(album_h, &album_name) != MEDIA_CONTENT_ERROR_NONE) + return false; + + media_content_debug("album_name : [%s] \n", album_name); + + if(media_album_get_artist(album_h, &artist) != MEDIA_CONTENT_ERROR_NONE) + return false; + + media_content_debug("artist : [%s] \n", artist); + + SAFE_FREE(album_name); + SAFE_FREE(artist); + + media_album_destroy(album_h); + + return true; +} + +bool playlist_list_cb(media_playlist_h playlist, void *user_data) +{ + int playlist_id = 0; + char *playlist_name = NULL; + media_playlist_h playlist_h; + + media_content_debug("playlist_list_cb ====== \n"); + + GList **list = (GList**)user_data; + + if(playlist == NULL) + { + media_content_debug(" playlist handle is NULL \n"); + return false; + } + + media_playlist_get_playlist_id(playlist, &playlist_id); + media_content_debug("playlist_id : %d \n", playlist_id); + + if(user_data != NULL) + *list = g_list_append(*list, (gpointer)playlist_id); + + media_playlist_get_name(playlist, &playlist_name); + media_content_debug("playlist_name : %s \n", playlist_name); + SAFE_FREE(playlist_name); + + media_playlist_get_playlist_from_db(playlist_id, NULL, &playlist_h); + + media_playlist_destroy(playlist_h); + + return true; +} + +bool tag_list_cb(media_tag_h tag, void *user_data) +{ + int tag_id = 0; + char *tag_name = NULL; + + if(tag == NULL) + { + media_content_debug(" tag handle is NULL \n"); + return false; + } + + media_tag_get_tag_id(tag, &tag_id); + media_content_debug("tag_id : %d \n", tag_id); + + media_tag_get_name(tag, &tag_name); + media_content_debug("tag_name : %s \n", tag_name); + SAFE_FREE(tag_name); + + return true; +} + +bool bookmarks_cb(media_bookmark_h bookmark, void *user_data) +{ + media_bookmark_h *_bookmark = (media_bookmark_h*)bookmark; + + if(_bookmark != NULL) + { + char *name = NULL; + time_t time = 0; + int bookmark_id = 0; + + media_bookmark_get_bookmark_id(bookmark, &bookmark_id); + media_content_debug("bookmark_id : %d \n", bookmark_id); + + media_bookmark_get_thumbnail_path(bookmark, &name); + media_content_debug("bookmark thumbnail_path : %s \n", name); + SAFE_FREE(name); + + media_bookmark_get_marked_time(bookmark, &time); + media_content_debug("bookmark marked_time : %d \n", time); + } + + return true; +} + +bool album_list_cb(media_album_h album, void *user_data) +{ + int album_id = 0; + char *album_name = NULL; + char *artist = NULL; + char *album_art = NULL; + int media_count = 0; + int ret = MEDIA_CONTENT_ERROR_NONE; + filter_h filter; + + /*Set Filter*/ + char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/ + + ret = media_filter_create(&filter); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("Fail to create filter \n"); + return ret; + } + ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("Fail to set condition \n"); + return ret; + } + ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("Fail to set order \n"); + return ret; + } + + if(album != NULL) + { + if(media_album_get_album_id(album, &album_id) != MEDIA_CONTENT_ERROR_NONE) + return false; + + media_content_debug("album_id : [%d] \n", album_id); + + if(media_album_get_name(album, &album_name) != MEDIA_CONTENT_ERROR_NONE) + return false; + + media_content_debug("album_name : [%s] \n", album_name); + + if(media_album_get_artist(album, &artist) != MEDIA_CONTENT_ERROR_NONE) + return false; + + media_content_debug("artist : [%s] \n", artist); + + if(media_album_get_album_art(album, &album_art) != MEDIA_CONTENT_ERROR_NONE) + return false; + + media_content_debug("album_art : [%s] \n", album_art); + + SAFE_FREE(album_name); + SAFE_FREE(artist); + SAFE_FREE(album_art); + + if(media_album_get_media_count_from_db(album_id, filter, &media_count) != MEDIA_CONTENT_ERROR_NONE) + return false; + + media_content_debug("media_count : [%d] \n", media_count); + + if(media_album_foreach_media_from_db(album_id, filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) + return false; + + test_album_from_db(album_id); + } + else + { + media_content_error("album item not Found!!\n"); + return true; + } + + return true; +} + +bool group_list_cb(const char *group_name, void *user_data) +{ + int media_count = 0; + int *idx = user_data; + + media_content_debug("group item : [%s] [%d]\n", group_name, *idx); + + if(media_group_get_media_count_from_db(group_name, *idx, g_filter, &media_count) != MEDIA_CONTENT_ERROR_NONE) + return false; + + media_content_debug("media_count : [%d] \n", media_count); + + if(media_group_foreach_media_from_db(group_name, *idx, g_filter, media_item_cb, NULL) != MEDIA_CONTENT_ERROR_NONE) + return false; + + return true; +} + +bool playlist_item_cb(int playlist_member_id, media_info_h media, void *user_data) +{ + media_content_debug("playlist_member_id : [%d] \n", playlist_member_id); + + GList **list = (GList**)user_data; + *list = g_list_append(*list, (gpointer)playlist_member_id); + + //media_item_cb(media, user_data); + + return true; +} + +int test_filter_create(void) +{ + media_content_debug("\n============Filter Create============\n\n"); + + int ret = MEDIA_CONTENT_ERROR_NONE; + + /* Filter for media */ + char *condition = "MEDIA_TYPE=3"; /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/ + + ret = media_filter_create(&g_filter); + + /* Set condition and collate + * Condition string : You can make where statement of sql. + * Colation : You can use collation when comparing. + * Ex) In case of FILE_NAME='Samsung' as condition string, + * if you want to compare with NOCASE collation, + * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_NOCASE); + * if you want to compare in case-sensitive, + * call media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT); + */ + ret = media_filter_set_condition(g_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT); + + /* Collation of ordering + * If you want to get list, which is sorted by NOCASE, + * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_NOCASE); + * Or, + * call media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT); + */ + ret = media_filter_set_order(g_filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ARTIST, MEDIA_CONTENT_COLLATE_DEFAULT); + + /* Filter for group */ + char *g_condition = "TAG_NAME like \"\%my\%\""; + //char *g_condition = "BOOKMARK_MARKED_TIME > 300"; + + ret = media_filter_create(&g_filter_g); + + ret = media_filter_set_condition(g_filter_g, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT); + ret = media_filter_set_order(g_filter_g, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT); + + return ret; +} + +int test_filter_destroy(void) +{ + media_content_debug("\n============Filter Create============\n\n"); + + int ret = MEDIA_CONTENT_ERROR_NONE; + + ret = media_filter_destroy(g_filter); + + return ret; +} + +int test_connect_database(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + + media_content_debug("\n============DB Connection Test============\n\n"); + + ret = media_content_connect(); + + if(ret == MEDIA_CONTENT_ERROR_NONE) + { + media_content_debug("connection is success\n\n"); + } + else + media_content_error("connection is failed\n\n"); + + return ret; +} + +int test_gallery_scenario(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + int i; + filter_h filter = NULL; + + int count; + GList *folder_list = NULL; + media_folder_h folder_handle = NULL; + + /* First, Get folder list */ + ret = media_folder_foreach_folder_from_db(filter, gallery_folder_list_cb, &folder_list); + if(ret < 0) { + media_content_error("media_folder_foreach_folder_from_db failed: %d", ret); + return -1; + } else { + media_content_debug("media_folder_foreach_folder_from_db success!!"); + char *folder_id; + char *folder_name; + char *folder_path; + + for(i = 0; i < g_list_length(folder_list); i++) { + folder_handle = (media_folder_h)g_list_nth_data(folder_list, i); + + media_folder_get_folder_id(folder_handle, &folder_id); + media_folder_get_name(folder_handle, &folder_name); + media_folder_get_path(folder_handle, &folder_path); + + media_content_debug("folder_id [%d] : %s\n", i, folder_id); + media_content_debug("folder_name [%d] : %s\n", i, folder_name); + media_content_debug("folder_path [%d] : %s\n", i, folder_path); + + + ret = media_folder_get_media_count_from_db(folder_id, filter, &count); + /* User should free these string */ + SAFE_FREE(folder_id); + SAFE_FREE(folder_name); + SAFE_FREE(folder_path); + if(ret < 0) { + media_content_error("media_folder_get_media_count_from_db failed: %d", ret); + return -1; + } else { + media_content_debug("media count [%d] : %d\n", i, count); + } + } + } + + /* To check performance */ + struct timeval start, end; + gettimeofday(&start, NULL); + + /* Second, Get all item list */ + media_info_h media_handle = NULL; + GList *all_item_list = NULL; + + media_content_collation_e collate_type = MEDIA_CONTENT_COLLATE_NOCASE; + media_content_order_e order_type = MEDIA_CONTENT_ORDER_DESC; + media_filter_create(&filter); + //media_filter_set_condition(filter, "MEDIA_TYPE = 0", collate_type); + media_filter_set_order(filter, order_type, MEDIA_DISPLAY_NAME, collate_type); + //media_filter_set_collate(filter, collate_type); + + ret = media_info_foreach_media_from_db(filter, gallery_media_item_cb, &all_item_list); + if(ret < 0) { + media_content_error("media_info_foreach_media_from_db failed: %d", ret); + return -1; + } else { + media_content_debug("media_info_foreach_media_from_db success"); + media_content_type_e media_type; + char *media_id = NULL; + char *media_name = NULL; + char *media_path = NULL; + + for(i = 0; i < g_list_length(all_item_list); i++) { + media_handle = (media_info_h)g_list_nth_data(all_item_list, i); + + media_info_get_media_id(media_handle, &media_id); + media_info_get_media_type(media_handle, &media_type); + media_info_get_display_name(media_handle, &media_name); + media_info_get_file_path(media_handle, &media_path); + + if(media_type == MEDIA_CONTENT_TYPE_IMAGE) { + image_meta_h image_handle; + int width, height; + media_content_orientation_e orientation; + char *datetaken; + + ret = media_info_get_image(media_handle, &image_handle); + if(ret < 0) { + media_content_error("media_info_get_image failed: %d", ret); + } else { + image_meta_get_width(image_handle, &width); + image_meta_get_height(image_handle, &height); + image_meta_get_orientation(image_handle, &orientation); + image_meta_get_date_taken(image_handle, &datetaken); + + media_content_debug("This is Image\n"); + media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s\n", width, height, orientation, datetaken); + } + + SAFE_FREE(datetaken); + image_meta_destroy(image_handle); + + } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) { + video_meta_h video_handle; + char *title, *artist, *album; + int duration; + time_t time_played; + + ret = media_info_get_video(media_handle, &video_handle); + if(ret < 0) { + media_content_error("media_info_get_video failed: %d", ret); + } else { + video_meta_get_title(video_handle, &title); + video_meta_get_artist(video_handle, &artist); + video_meta_get_album(video_handle, &album); + video_meta_get_duration(video_handle, &duration); + video_meta_get_played_time(video_handle, &time_played); + + media_content_debug("This is Video\n"); + media_content_debug("Title: %s, Album: %s, Artist: %s\nDuration: %d, Played time: %d\n", title, artist, album, duration, time_played); + } + + SAFE_FREE(title); + SAFE_FREE(artist); + SAFE_FREE(album); + + video_meta_destroy(video_handle); + } + //media_content_debug("media_id [%d] : %s\n", i, media_id); + //media_content_debug("media_name [%d] : %s\n", i, media_name); + //media_content_debug("media_path [%d] : %s\n", i, media_path); + + SAFE_FREE(media_id); + SAFE_FREE(media_name); + SAFE_FREE(media_path); + } + } + + media_filter_destroy(filter); + filter = NULL; + + /* To check performance */ + gettimeofday(&end, NULL); + long time = (end.tv_sec * 1000000 + end.tv_usec) - (start.tv_sec * 1000000 + start.tv_usec); + printf("Time : %ld\n", time); + + /* Third, Get item list of a folder */ + GList *item_list = NULL; + + for(i = 0; i < g_list_length(folder_list); i++) { + int j; + char *folder_name; + char *folder_id; + folder_handle = (media_folder_h)g_list_nth_data(folder_list, i); + + media_folder_get_folder_id(folder_handle, &folder_id); + media_folder_get_name(folder_handle, &folder_name); + + ret = media_folder_foreach_media_from_db(folder_id, filter, gallery_media_item_cb, &item_list); + SAFE_FREE(folder_id); + SAFE_FREE(folder_name); + + if(ret < 0) { + media_content_error("media_folder_foreach_media_from_db failed: %d", ret); + return -1; + } else { + media_content_error("media_folder_foreach_media_from_db success!", ret); + char *media_id = NULL; + char *media_name = NULL; + char *media_path = NULL; + media_content_type_e media_type = 0; + + for(j = 0; j < g_list_length(item_list); j++) { + media_handle = (media_info_h)g_list_nth_data(item_list, j); + + media_info_get_media_id(media_handle, &media_id); + media_info_get_display_name(media_handle, &media_name); + media_info_get_file_path(media_handle, &media_path); + media_info_get_media_type(media_handle, &media_type); + + media_content_debug("[%s] media_id [%d] : %s\n", folder_name, j, media_id); + media_content_debug("[%s] media_type [%d] : %d\n", folder_name, j, media_type); + media_content_debug("[%s] media_name [%d] : %s\n", folder_name, j, media_name); + media_content_debug("[%s] media_path [%d] : %s\n", folder_name, j, media_path); + + if(media_type == MEDIA_CONTENT_TYPE_IMAGE) { + image_meta_h image_handle; + int width, height; + media_content_orientation_e orientation; + char *datetaken; + + ret = media_info_get_image(media_handle, &image_handle); + if(ret < 0) { + media_content_error("media_info_get_image failed: %d", ret); + } else { + image_meta_get_width(image_handle, &width); + image_meta_get_height(image_handle, &height); + image_meta_get_orientation(image_handle, &orientation); + image_meta_get_date_taken(image_handle, &datetaken); + + media_content_debug("This is Image\n"); + media_content_debug("Width : %d, Height : %d, Orientation : %d, Date taken : %s\n", width, height, orientation, datetaken); + } + + SAFE_FREE(datetaken); + image_meta_destroy(image_handle); + + } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) { + video_meta_h video_handle; + char *title, *artist, *album; + int duration; + time_t time_played; + + ret = media_info_get_video(media_handle, &video_handle); + if(ret < 0) { + media_content_error("media_info_get_video failed: %d", ret); + } else { + video_meta_get_title(video_handle, &title); + video_meta_get_artist(video_handle, &artist); + video_meta_get_album(video_handle, &album); + video_meta_get_duration(video_handle, &duration); + video_meta_get_played_time(video_handle, &time_played); + + media_content_debug("This is Video\n"); + media_content_debug("Title: %s, Album: %s, Artist: %s\nDuration: %d, Played time: %d\n", title, artist, album, duration, time_played); + } + + SAFE_FREE(title); + SAFE_FREE(artist); + SAFE_FREE(album); + + video_meta_destroy(video_handle); + + /* Get bookmar list in case of video */ + media_bookmark_h bm_handle; + GList *bm_list = NULL; + + ret = media_info_foreach_bookmark_from_db(media_id, filter, gallery_bookmarks_cb, &bm_list); + if(ret < 0) { + media_content_error("media_info_foreach_bookmark_from_db failed: %d", ret); + } else { + media_content_error("media_info_foreach_bookmark_from_db success"); + int k; + + for(k = 0; k < g_list_length(bm_list); k++) { + bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, k); + time_t marked_time; + char *thumb_path = NULL; + + media_bookmark_get_marked_time(bm_handle, &marked_time); + media_bookmark_get_thumbnail_path(bm_handle, &thumb_path); + + media_content_error("Bookmark time : %d\nBookmar thumb: %s\n", marked_time, thumb_path); + SAFE_FREE(thumb_path); + } + + /* Remove bookmark list */ + int l = 0; + if(bm_list) { + for(l = 0; l < g_list_length(bm_list); l++) { + bm_handle = (media_bookmark_h)g_list_nth_data(bm_list, l); + media_bookmark_destroy(bm_handle); + } + + g_list_free(bm_list); + } + + } + } + + SAFE_FREE(media_id); + SAFE_FREE(media_name); + SAFE_FREE(media_path); + } + } + } + + /* Get tag list */ + media_tag_h tag_handle = NULL; + GList *tag_list = NULL; + GList *media_list_in_tag = NULL; + + ret = media_tag_foreach_tag_from_db (filter, gallery_tag_item_cb, &tag_list); + + if(ret < 0) { + media_content_error("media_tag_foreach_tag_from_db failed: %d", ret); + return -1; + } else { + media_content_error("media_tag_foreach_tag_from_db success"); + char *tag_name; + int tag_id; + + for(i = 0; i < g_list_length(tag_list); i++) { + tag_handle = (media_tag_h)g_list_nth_data(tag_list, i); + media_tag_get_tag_id(tag_handle, &tag_id); + media_tag_get_name(tag_handle, &tag_name); + + printf("[%d] %s", tag_id, tag_name); + + ret = media_tag_foreach_media_from_db(tag_id, filter, gallery_media_item_cb, &media_list_in_tag); + if(ret < 0) { + media_content_error("media_tag_foreach_media_from_db failed: %d", ret); + return -1; + } else { + media_content_error("media_tag_foreach_media_from_db success"); + int j = 0; + media_info_h tag_media_handle; + char *media_id = NULL; + char *media_name = NULL; + char *media_path = NULL; + media_content_type_e media_type = 0; + + for(j = 0; j < g_list_length(media_list_in_tag); j++) { + tag_media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, j); + media_info_get_media_id(tag_media_handle, &media_id); + media_info_get_display_name(tag_media_handle, &media_name); + media_info_get_file_path(tag_media_handle, &media_path); + media_info_get_media_type(tag_media_handle, &media_type); + + media_content_debug("[%s] media_id [%d] : %s\n", tag_name, j, media_id); + media_content_debug("[%s] media_type [%d] : %d\n", tag_name, j, media_type); + media_content_debug("[%s] media_name [%d] : %s\n", tag_name, j, media_name); + media_content_debug("[%s] media_path [%d] : %s\n", tag_name, j, media_path); + } + SAFE_FREE(media_id); + SAFE_FREE(media_name); + SAFE_FREE(media_path); + } + SAFE_FREE(tag_name); + } + } + + /* Remove folder list */ + if(folder_list) { + for(i = 0; i < g_list_length(folder_list); i++) { + folder_handle = (media_folder_h)g_list_nth_data(folder_list, i); + media_folder_destroy(folder_handle); + } + + g_list_free(folder_list); + } + + /* Remove all items list */ + if(all_item_list) { + for(i = 0; i < g_list_length(all_item_list); i++) { + media_handle = (media_info_h)g_list_nth_data(all_item_list, i); + media_info_destroy(media_handle); + } + + g_list_free(all_item_list); + } + + /* Remove items list */ + if(item_list) { + for(i = 0; i < g_list_length(item_list); i++) { + media_handle = (media_info_h)g_list_nth_data(item_list, i); + media_info_destroy(media_handle); + } + + g_list_free(item_list); + } + + /* Remove tag list */ + if(tag_list) { + for(i = 0; i < g_list_length(tag_list); i++) { + tag_handle = (media_tag_h)g_list_nth_data(tag_list, i); + media_tag_destroy(tag_handle); + } + + g_list_free(tag_list); + } + + /* Remove media list in a tag */ + if(media_list_in_tag) { + for(i = 0; i < g_list_length(media_list_in_tag); i++) { + media_handle = (media_info_h)g_list_nth_data(media_list_in_tag, i); + media_info_destroy(media_handle); + } + + g_list_free(media_list_in_tag); + } + + return MEDIA_CONTENT_ERROR_NONE; +} + +/*Get All Music file. sort by Title and not case sensitive*/ +int test_get_all_music_files(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + int media_count = 0; + filter_h filter; + + /*Set Filter*/ + char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/ + + ret = media_filter_create(&filter); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("Fail to create filter \n"); + return ret; + } + ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("Fail to set condition \n"); + return ret; + } + ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("Fail to set order \n"); + return ret; + } + + /*Get Media Count*/ + ret = media_info_get_media_count_from_db(filter, &media_count); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_filter_destroy(filter); + media_content_error("Fail to get media count \n"); + return ret; + } + + media_content_debug("media_count : [%d],\n", media_count); + + ret = media_info_foreach_media_from_db(filter, media_item_cb, NULL); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_filter_destroy(filter); + media_content_error("Fail to get media \n"); + return ret; + } + + return ret; +} + +int test_media_info_operation(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + int media_count = 0; + + media_content_debug("\n============Media info Test============\n\n"); + + test_filter_create(); + + media_info_get_media_count_from_db(g_filter, &media_count); + media_content_debug("media_count : [%d],\n", media_count); + + ret = media_info_foreach_media_from_db(g_filter, media_item_cb, NULL); + + if(ret == MEDIA_CONTENT_ERROR_NONE) + media_content_debug("media_info_foreach_media_from_db is success\n\n"); + else + media_content_error("media_info_foreach_media_from_db is failed\n\n"); + + test_filter_destroy(); + + return ret; +} + +int test_media_info_operation_2(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + int bookmark_count = 0; + + media_content_debug("\n============Media info Test 2============\n\n"); + + test_filter_create(); + +#if 0 + /* Bookmark */ + char *thumbnail_path1 = "/opt/media/Images and videos/My video clips/teat11.jpg"; + media_bookmark_insert_to_db(test_video_id, 100, thumbnail_path1); + media_bookmark_insert_to_db(test_video_id, 200, thumbnail_path1); + + media_info_get_bookmark_count_from_db(test_video_id, g_filter_g, &bookmark_count); + + media_content_debug("bookmark_count : [%d],\n", bookmark_count); + + ret = media_info_foreach_bookmark_from_db(test_video_id, g_filter_g, bookmarks_cb, NULL); +#endif + + /* Tag */ + media_info_get_tag_count_from_db(test_audio_id, g_filter_g, &bookmark_count); + + media_content_debug("tag_count : [%d],\n", bookmark_count); + + ret = media_info_foreach_tag_from_db(test_audio_id, g_filter_g, tag_list_cb, NULL); + + test_filter_destroy(); + + return ret; +} + +int test_folder_operation(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + filter_h filter; + media_folder_h folder = NULL; + char *folder_id = NULL; + int folder_count = 0; + + media_content_debug("\n============Folder Test============\n\n"); + + test_filter_create(); + + ret = media_filter_create(&filter); + if(ret != MEDIA_CONTENT_ERROR_NONE) + { + media_content_error("[ERROR] media_folder_filter_create is failed\n"); + return ret; + } + + 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*/ + media_filter_set_offset(filter, 0,5); + media_filter_set_order(filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE); + + ret = media_folder_get_folder_count_from_db(filter, &folder_count); + media_content_debug("Folder count : %d", folder_count); + + ret = media_folder_foreach_folder_from_db(filter, folder_list_cb, &folder); + + //test.3 get the media list in first folder + filter_h m_filter = NULL; + ret = media_filter_create(&m_filter); + if(ret != MEDIA_CONTENT_ERROR_NONE) + { + media_content_error("[ERROR] media_info_filter_create is failed\n"); + return ret; + } + + 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*/ + media_filter_set_offset(m_filter, 0,5); + media_filter_set_order(m_filter,MEDIA_CONTENT_ORDER_DESC, MEDIA_PATH, MEDIA_CONTENT_COLLATE_NOCASE); + + media_folder_get_folder_id(folder, &folder_id); + media_content_debug("folder_id : %s", folder_id); + + ret = media_folder_foreach_media_from_db(folder_id, m_filter, media_item_cb, NULL); + + if(ret != MEDIA_CONTENT_ERROR_NONE) + { + media_content_error("[ERROR] media_folder_foreach_media_from_db is failed, error code : %d\n", ret); + } + + media_filter_destroy(filter); + media_filter_destroy(m_filter); + + test_filter_create(); + + return ret; +} + +int test_playlist_operation(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + media_playlist_h playlist_1 = NULL; + media_playlist_h playlist_2 = NULL; + media_playlist_h playlist_3 = NULL; + int playlist_id_1 = 0; + int playlist_id_2 = 0; + int playlist_id_3 = 0; + char *playlist_name_1 = "myPlaylist_1"; + char *playlist_name_2 = "myPlaylist_2"; + char *playlist_name_3 = "myPlaylist_3"; + int playlist_count = 0; + int media_count = 0; + int order_1 = 0; + int order_2 = 0; + int order_3 = 0; + int order_4 = 0; + int order_5 = 0; + filter_h filter = NULL; + filter_h m_filter = NULL; + + media_content_debug("\n============Playlist Test============\n\n"); + + /* Filter for playlist */ + + char *condition = "(MEDIA_TYPE=1 or MEDIA_TYPE=3)"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/ +#if 0 + ret = media_filter_create(&filter); + + ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_NOCASE); + + ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_NAME, MEDIA_CONTENT_COLLATE_NOCASE); +#endif + + /* Create Playlist */ + media_playlist_insert_to_db(playlist_name_1, &playlist_1); + media_playlist_insert_to_db(playlist_name_2, &playlist_2); + media_playlist_insert_to_db(playlist_name_3, &playlist_3); + + if(playlist_1 != NULL) + { + /* Add media to Playlist */ + media_playlist_add_media(playlist_1, test_audio_id); + media_playlist_add_media(playlist_1, test_audio_id); + media_playlist_add_media(playlist_1, test_video_id); + media_playlist_update_to_db(playlist_1); + } + + if(playlist_2 != NULL) + { + media_playlist_add_media(playlist_2, test_audio_id); + media_playlist_add_media(playlist_2, test_audio_id); + media_playlist_update_to_db(playlist_2); + } + + /* Get Playlist Count*/ + media_playlist_get_playlist_count_from_db(filter, &playlist_count); + media_content_debug("playlist_count [%d] \n", playlist_count); + + /* Get Playlist*/ + GList *playlist_id_list = NULL; + media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, &playlist_id_list); + + /* Get Playlist id*/ + playlist_id_1 = (int)g_list_nth_data(playlist_id_list, 0); + playlist_id_2 = (int)g_list_nth_data(playlist_id_list, 1); + playlist_id_3 = (int)g_list_nth_data(playlist_id_list, 2); + media_content_debug("playlist_id_1 [%d] \n", playlist_id_1); + media_content_debug("playlist_id_2 [%d] \n", playlist_id_2); + media_content_debug("playlist_id_3 [%d] \n", playlist_id_3); + + /* Filter for media*/ + ret = media_filter_create(&m_filter); + + ret = media_filter_set_condition(m_filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT); + + ret = media_filter_set_order(m_filter, MEDIA_CONTENT_ORDER_ASC, PLAYLIST_MEMBER_ORDER, MEDIA_CONTENT_COLLATE_DEFAULT); + + /* Get media count */ + media_playlist_get_media_count_from_db(playlist_id_1, m_filter, &media_count); + media_content_debug("playlist_1_media_count [%d] \n", media_count); + + media_playlist_get_media_count_from_db(playlist_id_2, m_filter, &media_count); + media_content_debug("playlist_2_media_count [%d] \n", media_count); + + media_playlist_get_media_count_from_db(playlist_id_3, m_filter, &media_count); + media_content_debug("playlist_3_media_count [%d] \n", media_count); + + /* Get media of playlist */ + GList *playlist_member_id_list = NULL; + GList *playlist_member_id_list_1 = NULL; + + media_playlist_foreach_media_from_db(playlist_id_1, m_filter, playlist_item_cb, &playlist_member_id_list); + media_playlist_foreach_media_from_db(playlist_id_2, m_filter, playlist_item_cb, &playlist_member_id_list_1); + + int playlist_member_id_1_1 =0; + int playlist_member_id_1_2 =0; + int playlist_member_id_1_3 =0; + int playlist_member_id_2_1 =0; + int playlist_member_id_2_2 =0; + + playlist_member_id_1_1 = (int)g_list_nth_data(playlist_member_id_list, 0); + playlist_member_id_1_2 = (int)g_list_nth_data(playlist_member_id_list, 1); + playlist_member_id_1_3 = (int)g_list_nth_data(playlist_member_id_list, 2); + playlist_member_id_2_1 = (int)g_list_nth_data(playlist_member_id_list_1, 0); + playlist_member_id_2_2 = (int)g_list_nth_data(playlist_member_id_list_1, 1); + + media_content_debug("playlist_member_id_1_1 [%d] \n", playlist_member_id_1_1); + media_content_debug("playlist_member_id_1_2 [%d] \n", playlist_member_id_1_2); + media_content_debug("playlist_member_id_1_3 [%d] \n", playlist_member_id_1_3); + media_content_debug("playlist_member_id_2_1 [%d] \n", playlist_member_id_2_1); + media_content_debug("playlist_member_id_2_2 [%d] \n", playlist_member_id_2_2); + + media_playlist_get_play_order(playlist_1, playlist_member_id_1_1, &order_1); + media_playlist_get_play_order(playlist_1, playlist_member_id_1_2, &order_2); + media_playlist_get_play_order(playlist_1, playlist_member_id_1_3, &order_3); + media_playlist_get_play_order(playlist_2, playlist_member_id_2_1, &order_4); + media_playlist_get_play_order(playlist_2, playlist_member_id_2_2, &order_5); + media_content_debug("order_1 [%d] order_2 [%d] order_3 [%d] order_4 [%d] order_5 [%d]\n", order_1, order_2, order_3, order_4, order_5); + + /* Update Playlist */ + media_playlist_remove_media(playlist_2, playlist_member_id_2_1); + media_playlist_add_media(playlist_2, test_video_id); + media_playlist_set_name(playlist_2, "test_playlist"); + media_playlist_set_play_order(playlist_2, playlist_member_id_2_2, order_5+100); + media_playlist_update_to_db(playlist_2); + + /* Get Updated Playlist*/ + media_playlist_foreach_playlist_from_db(filter, playlist_list_cb, NULL); + + /* deletes the playlist */ + //media_playlist_delete_from_db(playlist_id_1); + //media_playlist_delete_from_db(playlist_id_2); + + if(playlist_1 != NULL) + media_playlist_destroy(playlist_1); + if(playlist_2 != NULL) + media_playlist_destroy(playlist_2); + if(playlist_3 != NULL) + media_playlist_destroy(playlist_3); + + g_list_free(playlist_id_list); + g_list_free(playlist_member_id_list); + g_list_free(playlist_member_id_list_1); + + if(filter != NULL) + ret = media_filter_destroy(filter); + if(m_filter != NULL) + ret = media_filter_destroy(m_filter); + + return ret; +} + +int test_tag_operation(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + media_tag_h tag_1; + media_tag_h tag_2; + media_tag_h tag_3; + int tag_id_1 = 0; + int tag_id_2 = 0; + int tag_id_3 = 0; + char *tag_name_1 = "myTag_1"; + char *tag_name_2 = "myTag_2"; + char *tag_name_3 = "myTag_3"; + int tag_count = 0; + int media_count = 0; + filter_h filter; + + media_content_debug("\n============Tag Test============\n\n"); + + char *g_condition = "TAG_NAME like \"%%my%%\""; + + ret = media_filter_create(&filter); + + ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT); + + ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, TAG_NAME, MEDIA_CONTENT_COLLATE_DEFAULT); + + /* Create Tag */ + media_tag_insert_to_db(tag_name_1, &tag_1); + media_tag_insert_to_db(tag_name_2, &tag_2); + media_tag_insert_to_db(tag_name_3, &tag_3); + + /* Add media to Tag */ + media_tag_add_media(tag_1, test_audio_id); + media_tag_add_media(tag_1, test_video_id); + media_tag_update_to_db(tag_1); + + media_tag_add_media(tag_2, test_audio_id); + media_tag_update_to_db(tag_2); + + /* Get Tag Count*/ + media_tag_get_tag_count_from_db(filter, &tag_count); + media_content_debug("tag_count [%d] \n", tag_count); + + /* Get Tag*/ + media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL); + + /* Get Tag id*/ + media_tag_get_tag_id(tag_1, &tag_id_1); + media_content_debug("tag_id_1 [%d] \n", tag_id_1); + + media_tag_get_tag_id(tag_2, &tag_id_2); + media_content_debug("tag_id_2 [%d] \n", tag_id_2); + + media_tag_get_tag_id(tag_3, &tag_id_3); + media_content_debug("tag_id_3 [%d] \n", tag_id_3); + + /* Get media count */ + media_tag_get_media_count_from_db(tag_id_1, NULL, &media_count); + media_content_debug("tag_1_media_count [%d] \n", media_count); + + media_tag_get_media_count_from_db(tag_id_2, NULL, &media_count); + media_content_debug("tag_2_media_count [%d] \n", media_count); + + /* Get media of Tag */ + media_tag_foreach_media_from_db(tag_id_1, NULL, media_item_cb, NULL); + media_tag_foreach_media_from_db(tag_id_2, NULL, media_item_cb, NULL); + + /* Update Tag */ + media_tag_add_media(tag_2, test_video_id); + media_tag_set_name(tag_2, "test_tag"); + media_tag_update_to_db(tag_2); + + /* Get Updated Tag*/ + media_tag_foreach_tag_from_db(filter, tag_list_cb, NULL); + + /* deletes the tag */ + media_tag_delete_from_db(tag_id_1); + media_tag_delete_from_db(tag_id_2); + + media_tag_destroy(tag_1); + media_tag_destroy(tag_2); + + ret = media_filter_destroy(filter); + + return ret; +} + + +int test_bookmark_operation(void) +{ + //bookmark is only supported for video information. + int ret = MEDIA_CONTENT_ERROR_NONE; + int bookmark_count = 0; + filter_h filter; + + media_content_debug("\n============Bookmark Test============\n\n"); + + char *g_condition = "BOOKMARK_MARKED_TIME > 300"; + + ret = media_filter_create(&filter); + + ret = media_filter_set_condition(filter, g_condition, MEDIA_CONTENT_COLLATE_DEFAULT); + + ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_DESC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT); + + //insert bookmark to video + char *thumbnail_path1 = "/opt/media/Images and videos/My video clips/teat11.jpg"; + media_bookmark_insert_to_db(test_video_id, 400, thumbnail_path1); + media_bookmark_insert_to_db(test_video_id, 600, thumbnail_path1); + + media_bookmark_get_bookmark_count_from_db(filter, &bookmark_count); + media_content_debug("bookmark_count = [%d]\n", bookmark_count); + + media_filter_destroy(filter); + + return ret; +} + +int test_album_list(void) +{ + media_content_debug("\n============Album Test============\n\n"); + + int ret = MEDIA_CONTENT_ERROR_NONE; + int album_count = 0; + filter_h filter; + + /*Set Filter*/ + char *condition = "MEDIA_TYPE=3"; /*0-image, 1-video, 2-sound, 3-music, 4-other*/ + + ret = media_filter_create(&filter); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("Fail to create filter \n"); + return ret; + } + ret = media_filter_set_condition(filter, condition, MEDIA_CONTENT_COLLATE_DEFAULT); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("Fail to set condition \n"); + return ret; + } + ret = media_filter_set_order(filter, MEDIA_CONTENT_ORDER_ASC, MEDIA_ALBUM, MEDIA_CONTENT_COLLATE_NOCASE); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("Fail to set order \n"); + return ret; + } + + ret = media_album_get_album_count_from_db(filter, &album_count); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_filter_destroy(filter); + return ret; + } else { + media_content_debug("album_count [%d] \n", album_count); + } + + ret = media_album_foreach_album_from_db(filter, album_list_cb, NULL); + + ret = media_filter_destroy(filter); + + return ret; +} + +int test_group_operation(void) +{ + media_content_debug("\n============Group Test============\n\n"); + + int ret = MEDIA_CONTENT_ERROR_NONE; + int group_count = 0; + int idx = 0; + + ret = test_filter_create(); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + media_content_error("[%d]error(0x%08x)", __LINE__, ret); + return ret; + } + + for(idx = 0; idx <= MEDIA_CONTENT_GROUP_KEYWORD; idx++) + { + ret = media_group_get_group_count_from_db(g_filter, idx, &group_count); + if(ret != MEDIA_CONTENT_ERROR_NONE) { + test_filter_destroy(); + media_content_error("media_group_get_group_count_from_db fail. idx=[%d]", ret, idx); + return ret; + } else { + media_content_debug("[%2d]group_count [%d] \n", idx, group_count); + } + + ret = media_group_foreach_group_from_db(g_filter, idx, group_list_cb, &idx); + } + ret = test_filter_destroy(); + + return ret; +} + +int test_update_operation() +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + int i; + media_info_h media_handle = NULL; + GList *all_item_list = NULL; + + /* Get all item list */ + ret = media_info_foreach_media_from_db(NULL, gallery_media_item_cb, &all_item_list); + if(ret < 0) { + media_content_error("media_info_foreach_media_from_db failed: %d", ret); + return -1; + } else { + media_content_debug("media_info_foreach_media_from_db success"); + char *media_id = NULL; + char *media_path = NULL; + media_content_type_e media_type = 0; + + for(i = 0; i < g_list_length(all_item_list); i++) { + media_handle = (media_info_h)g_list_nth_data(all_item_list, i); + + media_info_get_media_id(media_handle, &media_id); + media_info_get_file_path(media_handle, &media_path); + media_info_get_media_type(media_handle, &media_type); + + media_content_debug("media_id [%d] : %s\n", i, media_id); + media_content_debug("media_type [%d] : %d\n", i, media_type); + media_content_debug("media_path [%d] : %s\n", i, media_path); +#if 0 + if(media_type == MEDIA_CONTENT_TYPE_IMAGE) { + image_meta_h image_handle; + media_content_orientation_e orientation; + + ret = media_info_get_image_from_db(media_id, &image_handle); + if(ret < 0) { + media_content_error("media_info_get_image_from_db failed: %d", ret); + } else { + media_content_debug("media_info_get_image_from_db success"); + + //update image meta + orientation = MEDIA_CONTENT_ORIENTATION_ROT_180; + image_meta_set_orientation(image_handle, orientation); + + ret = image_meta_update_to_db(image_handle); + if(ret < 0) { + media_content_error("image_meta_update_to_db failed: %d", ret); + } else { + media_content_debug("image_meta_update_to_db success"); + } + } + + } else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) { + video_meta_h video_handle; + + ret = media_info_get_video_from_db(media_id, &video_handle); + if(ret < 0) { + media_content_error("media_info_get_video_from_db failed: %d", ret); + } else { + media_content_debug("media_info_get_video_from_db success"); + + //update video meta + video_meta_set_played_count(video_handle,5); + video_meta_set_played_time(video_handle,5); + video_meta_set_played_position(video_handle,5); + video_meta_update_to_db(video_handle); + + ret = video_meta_update_to_db(video_handle); + if(ret < 0) { + media_content_error("video_meta_update_to_db failed: %d", ret); + } else { + media_content_debug("video_meta_update_to_db success"); + } + } + } else if(media_type == MEDIA_CONTENT_TYPE_MUSIC) {//update audio meta + audio_meta_h audio_handle = NULL; + ret = media_info_get_audio_from_db(media_id, &audio_handle); + if(ret < 0) { + media_content_error("media_info_get_audio_from_db failed: %d", ret); + } else { + media_content_debug("media_info_get_audio_from_db success"); + + audio_meta_set_played_count(audio_handle,5); + audio_meta_set_played_time(audio_handle,1000); + audio_meta_set_played_position(audio_handle,180); + + ret = audio_meta_update_to_db(audio_handle); + if(ret < 0) { + media_content_error("audio_meta_update_to_db failed: %d", ret); + } else { + media_content_debug("audio_meta_update_to_db success"); + } + } + + } +#endif + } + } + + return MEDIA_CONTENT_ERROR_NONE; +} + +int test_insert(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + //char *path = "/opt/media/Images/Default.jpg"; + char *path = "/opt/media/Others/other.txt"; + //char *path = NULL; + media_info_h media_item = NULL; + media_content_debug("\n============DB Insert Test============\n\n"); + + ret = media_info_insert_to_db(path, &media_item); + + if(ret == MEDIA_CONTENT_ERROR_NONE) + media_content_debug("Insertion is success\n\n"); + else + media_content_error("Insertion is failed\n\n"); + + char *media_id = NULL; + + media_info_get_media_id(media_item, &media_id); + + printf("Media ID: %s\n", media_id); + + ret = media_info_update_to_db(media_item); + if(ret == MEDIA_CONTENT_ERROR_NONE) + media_content_debug("media_info_update_to_db is success\n"); + else + media_content_error("media_info_update_to_db is failed\n"); + + return ret; +} + +int test_move(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + const char *move_media_id = "60aea677-4742-408e-b5f7-f2628062d06d"; + char *dst_path = "/opt/media/Images/XX/Default1.jpg"; + media_info_h move_media = NULL; + + ret = media_info_get_media_from_db(move_media_id, &move_media); + if(ret == MEDIA_CONTENT_ERROR_NONE) + media_content_debug("media_info_get_media_from_db success\n\n"); + else + media_content_error("media_info_get_media_from_db failed: %d\n\n", ret); + + media_content_debug("\n============DB Move Test============\n\n"); + + if(move_media) { + ret = media_info_move_media_to_db(move_media, dst_path); + + if(ret == MEDIA_CONTENT_ERROR_NONE) + media_content_debug("Move is success\n\n"); + else + media_content_error("Move is failed\n\n"); + } else { + media_content_debug("There is no item : %s\n", move_media_id); + } + + return ret; +} + +int test_disconnect_database(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + media_content_debug("\n============DB Disconnection Test============\n\n"); + + ret = media_content_disconnect(); + + if(ret == MEDIA_CONTENT_ERROR_NONE) + media_content_debug("disconnection is success\n\n"); + else + media_content_error("disconnection is failed\n\n"); + + return ret; +} + +int g_total_photo_size = 0; +int g_total_video_size = 0; +int g_total_mp3_size = 0; +int g_total_voice_memo_size = 0; + +bool dft_cb(media_info_h media, void *user_data) +{ + unsigned long long file_size = 0; + media_content_type_e media_type = -1; + char *mime_type = NULL; + + if(media == NULL) + { + return true; + } + + media_info_get_media_type(media, &media_type); + media_info_get_size(media, &file_size); + media_info_get_mime_type(media, &mime_type); + + if(media_type == MEDIA_CONTENT_TYPE_IMAGE) + { + g_total_photo_size += file_size; + } + else if(media_type == MEDIA_CONTENT_TYPE_VIDEO) + { + g_total_video_size += file_size; + } + else if(media_type == MEDIA_CONTENT_TYPE_SOUND) + { + g_total_voice_memo_size += file_size; + } + else if(media_type == MEDIA_CONTENT_TYPE_MUSIC) + { + if((mime_type != NULL) && (!strcmp("audio/mpeg", mime_type))) + { + g_total_mp3_size += file_size; + } + else + { + g_total_voice_memo_size += file_size; + } + } + else + { + printf("invalid media_type\n"); + } + + if(mime_type != NULL) + free(mime_type); + + return true; + +} + +int DFT_test(void) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + printf("\n============DFT_test============\n\n"); + + filter_h filter = NULL; + int media_cnt = 0; + + /*MEDIA_TYPE 0-image, 1-video, 2-sound, 3-music, 4-other*/ + + ret = media_filter_create(&filter); + +/*Internal Memory*/ + printf("[Internal Memory]\n"); + /*1. Photo ============================================================*/ + ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT); + + /*Get Photo Count*/ + ret = media_info_get_media_count_from_db(filter, &media_cnt); + printf("Photo count = [%d]\n", media_cnt); + + /*Get Photo Size*/ + ret = media_info_foreach_media_from_db(filter, dft_cb, NULL); + printf("Photo size = [%d]\n", g_total_photo_size); + + /*2. Video ============================================================*/ + ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT); + + /*Get Video Count*/ + ret = media_info_get_media_count_from_db(filter, &media_cnt); + printf("Video count = [%d]\n", media_cnt); + + /*Get Video Size*/ + ret = media_info_foreach_media_from_db(filter, dft_cb, NULL); + printf("Video size = [%d]\n", g_total_video_size); + + /*3. MP3 ============================================================*/ + ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=0 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT); + + /*Get MP3 Count*/ + ret = media_info_get_media_count_from_db(filter, &media_cnt); + printf("MP3 count = [%d]\n", media_cnt); + + /*Get MP3 Size*/ + ret = media_info_foreach_media_from_db(filter, dft_cb, NULL); + printf("MP3 size = [%d]\n", g_total_mp3_size); + + /*4. Voice Memo ============================================================*/ + 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); + + /*Get Voice Memo Count*/ + ret = media_info_get_media_count_from_db(filter, &media_cnt); + printf("Voice Memo count = [%d]\n", media_cnt); + + /*Get Voice Memo Size*/ + ret = media_info_foreach_media_from_db(filter, dft_cb, NULL); + printf("Voice Memo size = [%d]\n", g_total_voice_memo_size); + + g_total_photo_size = 0; + g_total_video_size = 0; + g_total_mp3_size = 0; + g_total_voice_memo_size = 0; + +/*External Memory*/ + printf("\n[External Memory]\n"); + /*1. Photo ============================================================*/ + ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=0", MEDIA_CONTENT_COLLATE_DEFAULT); + + /*Get Photo Count*/ + ret = media_info_get_media_count_from_db(filter, &media_cnt); + printf("Photo count = [%d]\n", media_cnt); + + /*Get Photo Size*/ + ret = media_info_foreach_media_from_db(filter, dft_cb, NULL); + printf("Photo size = [%d]\n", g_total_photo_size); + + /*2. Video ============================================================*/ + ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=1", MEDIA_CONTENT_COLLATE_DEFAULT); + + /*Get Video Count*/ + ret = media_info_get_media_count_from_db(filter, &media_cnt); + printf("Video count = [%d]\n", media_cnt); + + /*Get Video Size*/ + ret = media_info_foreach_media_from_db(filter, dft_cb, NULL); + printf("Video size = [%d]\n", g_total_video_size); + + /*3. MP3 ============================================================*/ + ret = media_filter_set_condition(filter, "MEDIA_STORAGE_TYPE=1 AND MEDIA_TYPE=3 AND MEDIA_MIME_TYPE=\"audio/mpeg\"", MEDIA_CONTENT_COLLATE_DEFAULT); + + /*Get MP3 Count*/ + ret = media_info_get_media_count_from_db(filter, &media_cnt); + printf("MP3 count = [%d]\n", media_cnt); + + /*Get MP3 Size*/ + ret = media_info_foreach_media_from_db(filter, dft_cb, NULL); + printf("MP3 size = [%d]\n", g_total_mp3_size); + + /*4. Voice Memo ============================================================*/ + 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); + + /*Get Voice Memo Count*/ + ret = media_info_get_media_count_from_db(filter, &media_cnt); + printf("Voice Memo count = [%d]\n", media_cnt); + + /*Get Voice Memo Size*/ + ret = media_info_foreach_media_from_db(filter, dft_cb, NULL); + printf("Voice Memo size = [%d]\n", g_total_voice_memo_size); + ret = media_filter_destroy(filter); + + return 0; +} + +int main(int argc, char *argv[]) +{ + int ret = MEDIA_CONTENT_ERROR_NONE; + + media_content_debug("--- content manager test start ---\n\n"); + + ret = test_connect_database(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return MEDIA_CONTENT_ERROR_NONE; + +#if 0 + ret = test_move(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_gallery_scenario(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_get_all_music_files(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_media_info_operation(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_folder_operation(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_playlist_operation(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_tag_operation(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_bookmark_operation(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_album_list(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_group_operation(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_update_operation(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_insert(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = test_move(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + ret = DFT_test(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; +#endif + + ret = test_disconnect_database(); + if(ret != MEDIA_CONTENT_ERROR_NONE) + return ret; + + media_content_debug("--- content manager test end ---\n"); + + return ret; +} |