2 * Copyright (c) [2012] Samsung Electronics Co., Ltd.
4 * Licensed under the Flora License, Version 1.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://floralicense.org/license/
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.
20 #include <media_content.h>
23 #include "mp-video-log.h"
24 #include "mp-video-value-define.h"
25 #include "mp-video-type-define.h"
26 #include "mp-util-media-service.h"
27 #include "mp-video-string-define.h"
31 static Eina_List *VideoFolderList = NULL;
32 static Eina_List *VideoItemList = NULL;
33 static int nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE;
34 static int nTotalVideoTypeFiles = 0;
35 static int nNumberOfVideoItemByType = 0;
38 bool MpUtilMediaSvcIs3gpFile(char* szFileUri)
43 char* szTmpUriPath = szFileUri;
48 szExt = strrchr(szTmpUriPath, '.');
50 if((szExt != NULL) && ((szExt+1) != NULL))
52 if(!strcmp(szExt+1, "3gp"))
63 VideoLogInfo("No exist extension.");
69 VideoLogInfo("No exist file uri.");
76 static bool MpUtilMediaSvcIterateForGetVideoItemCb(media_info_h pVideoItem, void *pUserData)
80 media_info_h *pAssignFolderItem = (media_info_h*)pUserData;
82 if(pVideoItem != NULL)
84 char *szTmpStr = NULL;
85 media_info_clone(pAssignFolderItem, pVideoItem);
86 media_info_get_display_name(*pAssignFolderItem, &szTmpStr);
87 VideoLogInfo("Display name : %s", szTmpStr);
98 static bool MpUtilMediaSvcIterateForVideoItemListViewCb(media_info_h pMediaItem, void *pUserData)
102 media_info_h pAssignMediaItem = NULL;
103 media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
105 media_info_get_media_type(pMediaItem, &nMediaType);
106 VideoLogInfo("nMediaType : %d", nMediaType);
108 if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO)
110 char *szTmpItemFilePath = NULL;
111 char szItemFilePath[STR_LEN_MAX] = {0};
113 media_info_get_file_path(pMediaItem, &szTmpItemFilePath);
115 if(szTmpItemFilePath == NULL)
117 VideoLogInfo("Fail to get file path of media item.");
120 strncpy(szItemFilePath, szTmpItemFilePath, STR_LEN_MAX - 1);
122 free(szTmpItemFilePath);
123 szTmpItemFilePath = NULL;
125 VideoLogInfo("szItemFilePath : %s", szItemFilePath);
127 nTotalVideoTypeFiles++;
129 switch(nWhatFileType)
131 case MP_MEDIA_VIDEO_FILE_TYPE:
132 if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == TRUE)
138 case MP_MEDIA_CAMERA_FILE_TYPE:
139 if(MpUtilMediaSvcIs3gpFile(szItemFilePath) == FALSE)
145 case MP_MEDIA_ALL_FILE_TYPE:
149 nNumberOfVideoItemByType++;
150 VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
152 media_info_clone(&pAssignMediaItem, pMediaItem);
153 Eina_List **pList = (Eina_List **)pUserData;
154 *pList = eina_list_append(*pList, pAssignMediaItem);
160 static bool MpUtilMediaSvcIterateCb(media_info_h pMediaItem, void *pUserData)
164 media_info_h pAssignMediaItem = NULL;
165 media_content_type_e nMediaType = MEDIA_CONTENT_TYPE_OTHERS;
167 media_info_get_media_type(pMediaItem, &nMediaType);
168 VideoLogInfo("nMediaType : %d", nMediaType);
170 if(nMediaType == MEDIA_CONTENT_TYPE_VIDEO)
172 media_info_clone(&pAssignMediaItem, pMediaItem);
173 Eina_List **pList = (Eina_List **)pUserData;
174 *pList = eina_list_append(*pList, pAssignMediaItem);
176 nTotalVideoTypeFiles++;
177 nNumberOfVideoItemByType++;
178 VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
184 static bool MpUtilMediaSvcIterateForGetFolderCb(media_folder_h pFolderItem, void *pUserData)
188 media_folder_h *pAssignFolderItem = (media_folder_h*)pUserData;
190 if(pFolderItem != NULL)
192 char *szTmpStr = NULL;
193 media_folder_clone(pAssignFolderItem, pFolderItem);
194 media_folder_get_name(*pAssignFolderItem, &szTmpStr);
195 VideoLogInfo("Folder name : %s", szTmpStr);
206 static bool MpUtilMediaSvcIterateForFolderListCb(media_folder_h pFolderItem, void *pUserData)
210 media_folder_h pAssignFolderItem = NULL;
211 media_folder_clone(&pAssignFolderItem, pFolderItem);
212 Eina_List **pList = (Eina_List **)pUserData;
213 *pList = eina_list_append(*pList, pAssignFolderItem);
218 static bool MpUtilMediaSvcIterateGetTagCb(media_tag_h pTagItem, void *pUserData)
222 media_tag_h *pAssignTagItem = (media_tag_h*)pUserData;
226 char *szTmpStr = NULL;
227 media_tag_clone(pAssignTagItem, pTagItem);
228 media_tag_get_name(*pAssignTagItem, &szTmpStr);
229 VideoLogInfo("szTagName : %s", szTmpStr);
240 static bool MpUtilMediaSvcIterateGetVideoItemOfTagCb(media_info_h media, void *pUserData)
250 bool MpUtilMediaSvcGetFileDirectoryName(char *szFilePath, char *szFileName, char *szDirectoryName, char *szDirectoryPath)
256 VideoLogInfo("[ERR]");
263 for(nLoopCount = strlen(szFilePath); nLoopCount >= 0; nLoopCount--)
265 if (szFilePath[nLoopCount] != '\0')
270 if(szFilePath[nLoopCount] == '/')
274 memcpy(szFileName, &szFilePath[nLoopCount + 1], --nCount);
275 *(szFileName + nCount) = '\0';
276 VideoLogInfo("File name = %s\n", szFileName);
281 memcpy(szDirectoryPath, &szFilePath[0], nLoopCount);
282 *(szDirectoryPath + nLoopCount + 1) = '\0';
283 VideoLogInfo("Directory path = %s", szDirectoryPath);
289 for(--nLoopCount; nLoopCount >= 0; nLoopCount--)
292 if(szFilePath[nLoopCount] == '/')
294 memcpy(szDirectoryName, &szFilePath[nLoopCount + 1], --nCount);
295 *(szDirectoryName + nCount) = '\0';
296 VideoLogInfo("Directory Name = %s", szDirectoryName);
314 void MpUtilMediaSvcInitSession(void)
318 if(media_content_connect() != MEDIA_CONTENT_ERROR_NONE)
320 VideoLogInfo("Fail to connect to media content db.");
324 VideoLogInfo("Success to connect to media content db.");
328 void MpUtilMediaSvcFinishSession(void)
332 if(media_content_disconnect() != MEDIA_CONTENT_ERROR_NONE)
334 VideoLogInfo("Fail to disconnect from media content db.");
339 VideoLogInfo("Success to disconnect from media content db.");
343 bool MpUtilMediaSvcDestoryVideoItemList(void)
347 VideoLogInfo("VideoItemList is empty already.");
351 media_info_h pTmpVideoItem = NULL;
352 EINA_LIST_FREE(VideoItemList, pTmpVideoItem)
356 media_info_destroy(pTmpVideoItem);
360 VideoItemList = NULL;
365 bool MpUtilMediaSvcExtractVideoListFromFolder(char *szFolderPath, int nSortType)
369 VideoLogInfo("Already exist video list.");
375 VideoLogInfo("[ERR]");
381 filter_h m_FilterHandle = NULL;
382 media_folder_h m_FolderHandle = NULL;
383 media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
385 char *szFolderID = NULL;
386 char szTmpStr[STR_LEN_MAX] = {0};
387 char szOrderObj[STR_LEN_MAX] = {0};
389 nTotalVideoTypeFiles = 0;
390 nNumberOfVideoItemByType = 0;
394 case MP_MEDIA_SORT_BY_NONE:
395 case MP_MEDIA_SORT_BY_NAME_ASC:
396 nOrderType = MEDIA_CONTENT_ORDER_ASC;
397 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
400 case MP_MEDIA_SORT_BY_NAME_DESC:
401 nOrderType = MEDIA_CONTENT_ORDER_DESC;
402 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
405 case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
406 nOrderType = MEDIA_CONTENT_ORDER_DESC;
407 strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
410 case MP_MEDIA_SORT_BY_OLDEST:
411 nOrderType = MEDIA_CONTENT_ORDER_ASC;
412 strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
416 nOrderType = MEDIA_CONTENT_ORDER_ASC;
417 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
420 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
422 VideoLogInfo("Fail to create media filter handle.");
426 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and FOLDER_PATH = \"%s\"", szFolderPath);
427 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
429 VideoLogInfo("Fail to set filter condition.");
430 media_filter_destroy(m_FilterHandle);
434 if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetFolderCb, &m_FolderHandle) != MEDIA_CONTENT_ERROR_NONE)
436 VideoLogInfo("Fail media_folder_foreach_folder_from_db().");
437 media_filter_destroy(m_FilterHandle);
443 VideoLogInfo("Fail to get folder handle.");
444 media_filter_destroy(m_FilterHandle);
448 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1");
449 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
451 VideoLogInfo("Fail to set filter condition.");
452 media_filter_destroy(m_FilterHandle);
456 if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
458 VideoLogInfo("Fail to set order.");
459 media_filter_destroy(m_FilterHandle);
463 if(media_folder_get_folder_id(m_FolderHandle, &szFolderID) != MEDIA_CONTENT_ERROR_NONE)
465 VideoLogInfo("Fail to get folder id.");
466 media_filter_destroy(m_FilterHandle);
470 if(media_folder_foreach_media_from_db(szFolderID, m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
472 VideoLogInfo("Fail to set order.");
473 media_filter_destroy(m_FilterHandle);
477 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
479 VideoLogInfo("Fail to destroy media filter handle.");
491 bool MpUtilMediaSvcExtractVideoListFromAllFolderOfGallery(int nSortType)
495 VideoLogInfo("Already exist video list.");
501 filter_h m_FilterHandle = NULL;
502 media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
503 char szOrderObj[STR_LEN_MAX] = {0};
505 nTotalVideoTypeFiles = 0;
506 nNumberOfVideoItemByType = 0;
510 case MP_MEDIA_SORT_BY_NONE:
511 case MP_MEDIA_SORT_BY_NAME_ASC:
512 nOrderType = MEDIA_CONTENT_ORDER_ASC;
513 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
516 case MP_MEDIA_SORT_BY_NAME_DESC:
517 nOrderType = MEDIA_CONTENT_ORDER_DESC;
518 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
521 case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
522 nOrderType = MEDIA_CONTENT_ORDER_DESC;
523 strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
526 case MP_MEDIA_SORT_BY_OLDEST:
527 nOrderType = MEDIA_CONTENT_ORDER_ASC;
528 strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
532 nOrderType = MEDIA_CONTENT_ORDER_ASC;
533 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
536 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
538 VideoLogInfo("Fail to create media filter handle.");
542 if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
544 VideoLogInfo("Fail to set filter condition.");
545 media_filter_destroy(m_FilterHandle);
549 if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
551 VideoLogInfo("Fail to set order.");
552 media_filter_destroy(m_FilterHandle);
556 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
558 VideoLogInfo("Fail to get video item list with filter condition.");
559 media_filter_destroy(m_FilterHandle);
563 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
565 VideoLogInfo("Fail to destroy media filter handle.");
572 bool MpUtilMediaSvcExtractVideoListForListView(int nSortType)
576 VideoLogInfo("Already exist video list.");
582 filter_h m_FilterHandle = NULL;
583 media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
584 char szOrderObj[STR_LEN_MAX] = {0};
586 nTotalVideoTypeFiles = 0;
587 nNumberOfVideoItemByType = 0;
591 case MP_MEDIA_SORT_BY_NONE:
592 case MP_MEDIA_SORT_BY_NAME_ASC:
593 nOrderType = MEDIA_CONTENT_ORDER_ASC;
594 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
597 case MP_MEDIA_SORT_BY_NAME_DESC:
598 nOrderType = MEDIA_CONTENT_ORDER_DESC;
599 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
602 case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
603 nOrderType = MEDIA_CONTENT_ORDER_DESC;
604 strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1);
607 case MP_MEDIA_SORT_BY_OLDEST:
608 nOrderType = MEDIA_CONTENT_ORDER_ASC;
609 strncpy(szOrderObj, MEDIA_MODIFIED_TIME, STR_LEN_MAX - 1);
613 nOrderType = MEDIA_CONTENT_ORDER_ASC;
614 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
617 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
619 VideoLogInfo("Fail to create media filter handle.");
623 if(media_filter_set_condition(m_FilterHandle, MEDIA_TYPE" = 1", MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
625 VideoLogInfo("Fail to set filter condition.");
626 media_filter_destroy(m_FilterHandle);
630 if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
632 VideoLogInfo("Fail to set order.");
633 media_filter_destroy(m_FilterHandle);
637 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
639 VideoLogInfo("Fail to get video item list with filter condition.");
640 media_filter_destroy(m_FilterHandle);
644 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
646 VideoLogInfo("Fail to destroy media filter handle.");
653 bool MpUtilMediaSvcExtractVideoListVideoType(int nSortType)
657 nWhatFileType = MP_MEDIA_VIDEO_FILE_TYPE;
659 return MpUtilMediaSvcExtractVideoListForListView(nSortType);
662 bool MpUtilMediaSvcExtractVideoListRecordedType(int nSortType)
666 nWhatFileType = MP_MEDIA_CAMERA_FILE_TYPE;
668 return MpUtilMediaSvcExtractVideoListForListView(nSortType);
671 bool MpUtilMediaSvcExtractVideoListByTagName(char *szTagName)
677 VideoLogInfo("[ERR] No Exist tag name.");
683 VideoLogInfo("Already exist video list.");
687 VideoLogInfo("szTagName : %s", szTagName);
690 char szTmpStr[STR_LEN_MAX] = {0};
692 media_tag_h pTagHandle = NULL;
693 filter_h m_FilterHandle = NULL;
695 nTotalVideoTypeFiles = 0;
696 nNumberOfVideoItemByType = 0;
698 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
700 VideoLogInfo("Fail to create media filter handle.");
704 //snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%s\"", szTagName);//snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"\%%s\%\"", szTagName);
705 snprintf(szTmpStr, STR_LEN_MAX-1, "TAG_NAME like \"%%%s%%\"", szTagName);
706 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
708 VideoLogInfo("Fail to set filter condition.");
711 media_filter_destroy(m_FilterHandle);
712 m_FilterHandle = NULL;
717 if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, TAG_NAME, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
719 VideoLogInfo("Fail to set order.");
722 media_filter_destroy(m_FilterHandle);
723 m_FilterHandle = NULL;
728 if(media_tag_foreach_tag_from_db(m_FilterHandle, MpUtilMediaSvcIterateGetTagCb, &pTagHandle) != MEDIA_CONTENT_ERROR_NONE)
730 VideoLogInfo("Fail media_tag_foreach_tag_from_db().");
733 media_filter_destroy(m_FilterHandle);
734 m_FilterHandle = NULL;
741 VideoLogInfo("Fail to get pTagHandle.");
744 media_filter_destroy(m_FilterHandle);
745 m_FilterHandle = NULL;
750 if(media_tag_get_tag_id(pTagHandle, &nTagID) != MEDIA_CONTENT_ERROR_NONE)
752 VideoLogInfo("Fail to get tag ID.");
755 media_filter_destroy(m_FilterHandle);
756 m_FilterHandle = NULL;
761 VideoLogInfo("nTagID : %d", nTagID);
763 memset(szTmpStr, 0, STR_LEN_MAX);
764 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1");
765 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
767 VideoLogInfo("Fail to set filter condition.");
770 media_filter_destroy(m_FilterHandle);
771 m_FilterHandle = NULL;
776 if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, MEDIA_TITLE, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
778 VideoLogInfo("Fail to set order.");
781 media_filter_destroy(m_FilterHandle);
782 m_FilterHandle = NULL;
787 if(media_tag_foreach_media_from_db(nTagID, m_FilterHandle, MpUtilMediaSvcIterateGetVideoItemOfTagCb, VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
789 VideoLogInfo("Fail media_tag_foreach_media_from_db().");
792 media_filter_destroy(m_FilterHandle);
793 m_FilterHandle = NULL;
799 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
801 VideoLogInfo("Fail to destroy media filter handle.");
804 m_FilterHandle = NULL;
810 bool MpUtilMediaSvcExtractVideoListFromFavorite(int nSortType)
814 VideoLogInfo("Already exist video list.");
820 filter_h m_FilterHandle = NULL;
821 media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
822 char szOrderObj[STR_LEN_MAX] = {0};
823 char szTmpStr[STR_LEN_MAX] = {0};
825 nWhatFileType = MP_MEDIA_ALL_FILE_TYPE;
827 nTotalVideoTypeFiles = 0;
828 nNumberOfVideoItemByType = 0;
832 case MP_MEDIA_SORT_BY_NONE:
833 case MP_MEDIA_SORT_BY_NAME_ASC:
834 nOrderType = MEDIA_CONTENT_ORDER_ASC;
835 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
838 case MP_MEDIA_SORT_BY_NAME_DESC:
839 nOrderType = MEDIA_CONTENT_ORDER_DESC;
840 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
843 case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
844 nOrderType = MEDIA_CONTENT_ORDER_DESC;
845 strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
848 case MP_MEDIA_SORT_BY_OLDEST:
849 nOrderType = MEDIA_CONTENT_ORDER_ASC;
850 strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
854 nOrderType = MEDIA_CONTENT_ORDER_ASC;
855 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
858 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
860 VideoLogInfo("Fail to create media filter handle.");
864 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_FAVOURITE = 1");
865 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
867 VideoLogInfo("Fail to set filter condition.");
868 media_filter_destroy(m_FilterHandle);
872 if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
874 VideoLogInfo("Fail to set order.");
875 media_filter_destroy(m_FilterHandle);
879 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
881 VideoLogInfo("Fail to get video item list with filter condition.");
882 media_filter_destroy(m_FilterHandle);
886 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
888 VideoLogInfo("Fail to destroy media filter handle.");
895 bool MpUtilMediaSvcExtractVideoListForSearchView(const char *keyword)
899 VideoLogInfo("Already exist video list.");
905 filter_h m_FilterHandle = NULL;
906 media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
907 char szOrderObj[STR_LEN_MAX] = {0};
908 char szTmpStr[STR_LEN_MAX] = {0};
910 nWhatFileType = MP_MEDIA_ALL_FILE_TYPE;
912 nTotalVideoTypeFiles = 0;
913 nNumberOfVideoItemByType = 0;
915 nOrderType = MEDIA_CONTENT_ORDER_ASC;
916 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
918 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
920 VideoLogInfo("Fail to create media filter handle.");
924 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1 and MEDIA_TITLE like \"%%%s%%\"", keyword);
925 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
927 VideoLogInfo("Fail to set filter condition.");
928 media_filter_destroy(m_FilterHandle);
932 if(media_filter_set_order(m_FilterHandle, nOrderType, szOrderObj, MEDIA_CONTENT_COLLATE_NOCASE) != MEDIA_CONTENT_ERROR_NONE)
934 VideoLogInfo("Fail to set order.");
935 media_filter_destroy(m_FilterHandle);
939 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForVideoItemListViewCb, &VideoItemList) != MEDIA_CONTENT_ERROR_NONE)
941 VideoLogInfo("Fail to get video item list with filter condition.");
942 media_filter_destroy(m_FilterHandle);
946 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
948 VideoLogInfo("Fail to destroy media filter handle.");
956 void MpUtilMediaSvcDestoryVideoList(void)
962 MpUtilMediaSvcDestoryVideoFolderList();
963 VideoFolderList = NULL;
968 MpUtilMediaSvcDestoryVideoItemList();
969 VideoItemList = NULL;
972 nTotalVideoTypeFiles = 0;
973 nNumberOfVideoItemByType = 0;
976 bool MpUtilMediaSvcRemoveItemByUrlWithList(char *szFilePath)
980 VideoLogInfo("[ERR]");
986 VideoLogInfo("pList is empty already.");
990 VideoLogInfo("szFilePath : %s", szFilePath);
992 char *szGetFilePath = NULL;
993 media_info_h pItem = NULL;
994 Eina_List *pIterateList = NULL;
995 EINA_LIST_FOREACH(VideoItemList, pIterateList, pItem)
999 if(media_info_get_file_path(pItem, &szGetFilePath) == MEDIA_CONTENT_ERROR_NONE)
1003 if(!strcmp(szGetFilePath, szFilePath))
1005 VideoLogInfo("Find %s", szGetFilePath);
1006 char *szMediaID = NULL;
1007 media_info_get_media_id(pItem, &szMediaID);
1008 media_info_delete_from_db(szMediaID);
1009 VideoItemList = eina_list_remove(VideoItemList, pItem);
1010 media_info_destroy(pItem);
1012 nNumberOfVideoItemByType--;
1013 VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
1022 free(szGetFilePath);
1030 VideoLogInfo("No exist %s in media info Database module.", szFilePath);
1039 bool MpUtilMediaSvcRemoveItemByListIndex(int nVideoItemIndex)
1041 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1045 VideoLogInfo("pList is empty already.");
1049 media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex);
1053 char *szMediaID = NULL;
1054 media_info_get_media_id(pItem, &szMediaID);
1057 media_info_delete_from_db(szMediaID);
1058 VideoItemList = eina_list_remove(VideoItemList, pItem);
1060 media_info_destroy(pItem);
1061 nNumberOfVideoItemByType--;
1062 VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
1066 VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex);
1072 VideoLogInfo("Fail to remove item in media svc and list.");
1079 bool MpUtilMediaSvcRemoveItemByListIndexWithoutListItem(int nVideoItemIndex)
1081 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1085 VideoLogInfo("pList is empty already.");
1089 media_info_h pItem = eina_list_nth(VideoItemList, nVideoItemIndex);
1093 char *szMediaID = NULL;
1094 media_info_get_media_id(pItem, &szMediaID);
1097 media_info_delete_from_db(szMediaID);
1099 nNumberOfVideoItemByType--;
1100 VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
1104 VideoLogInfo("No exist media ID in index %d of list.", nVideoItemIndex);
1110 VideoLogInfo("Fail to remove item in media svc and list.");
1118 bool MpUtilMediaSvcGetVideoIDByVideoUri(const char *szPath, char *szVideoID)
1122 media_info_h pVideoItem = NULL;
1123 filter_h m_FilterHandle = NULL;
1124 char szTmpStr[STR_LEN_MAX] = {0};
1127 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1129 VideoLogInfo("Fail to create media filter handle.");
1133 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
1134 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
1136 VideoLogInfo("Fail to set filter condition.");
1137 media_filter_destroy(m_FilterHandle);
1141 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
1143 VideoLogInfo("Fail to get video item list with filter condition.");
1144 media_filter_destroy(m_FilterHandle);
1148 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1150 VideoLogInfo("Fail to destroy media filter handle.");
1156 char *szMediaID = NULL;
1157 media_info_get_media_id(pVideoItem, &szMediaID);
1160 strncpy(szVideoID, szMediaID, STR_LEN_MAX-2);
1163 media_info_destroy(pVideoItem);
1174 unsigned int MpUtilMediaSvcGetVideoLastPlayTimeByVideoUri(const char *szPath)
1178 VideoLogInfo("No exist video path.");
1182 VideoLogInfo("szPath : %s", szPath);
1184 time_t LastPlayedTime = 0;
1185 media_info_h pVideoItem = NULL;
1186 filter_h m_FilterHandle = NULL;
1187 char szTmpStr[STR_LEN_MAX] = {0};
1189 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1191 VideoLogInfo("Fail to create media filter handle.");
1195 //snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
1196 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
1197 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
1199 VideoLogInfo("Fail to set filter condition.");
1200 media_filter_destroy(m_FilterHandle);
1204 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
1206 VideoLogInfo("Fail to get video item list with filter condition.");
1207 media_filter_destroy(m_FilterHandle);
1211 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1213 VideoLogInfo("Fail to destroy media filter handle.");
1219 video_meta_h pVideoMetaHandle = NULL;
1220 if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
1222 char *szTmpStr = NULL;
1223 video_meta_get_title(pVideoMetaHandle, &szTmpStr);
1226 VideoLogInfo("Title : %s", szTmpStr);
1231 VideoLogInfo("No exist title");
1234 video_meta_get_played_time(pVideoMetaHandle, &LastPlayedTime);
1235 VideoLogInfo("Last Played Time : %d", LastPlayedTime);
1236 video_meta_destroy(pVideoMetaHandle);
1238 media_info_destroy(pVideoItem);
1241 return (unsigned int)LastPlayedTime;
1244 unsigned int MpUtilMediaSvcGetVideoDurationByVideoUri(const char *szPath)
1248 VideoLogInfo("No exist video path.");
1252 VideoLogInfo("szPath : %s", szPath);
1254 int nDurationTime = 0;
1255 media_info_h pVideoItem = NULL;
1256 filter_h m_FilterHandle = NULL;
1257 char szTmpStr[STR_LEN_MAX] = {0};
1259 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1261 VideoLogInfo("Fail to create media filter handle.");
1265 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
1266 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
1268 VideoLogInfo("Fail to set filter condition.");
1269 media_filter_destroy(m_FilterHandle);
1273 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
1275 VideoLogInfo("Fail to get video item list with filter condition.");
1276 media_filter_destroy(m_FilterHandle);
1280 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1282 VideoLogInfo("Fail to destroy media filter handle.");
1288 video_meta_h pVideoMetaHandle = NULL;
1289 if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
1291 video_meta_get_duration(pVideoMetaHandle, &nDurationTime);
1292 VideoLogInfo("Duration time : %d", nDurationTime);
1293 video_meta_destroy(pVideoMetaHandle);
1295 media_info_destroy(pVideoItem);
1298 return (unsigned int)nDurationTime;
1301 int MpUtilMediaSvcGetVideoFilesizeByVideoUri(const char *szPath)
1305 VideoLogInfo("No exist video path.");
1309 VideoLogInfo("szPath : %s", szPath);
1311 unsigned long long nSize = 0;
1312 media_info_h pVideoItem = NULL;
1313 filter_h m_FilterHandle = NULL;
1314 char szTmpStr[STR_LEN_MAX] = {0};
1316 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1318 VideoLogInfo("Fail to create media filter handle.");
1322 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szPath);
1323 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
1325 VideoLogInfo("Fail to set filter condition.");
1326 media_filter_destroy(m_FilterHandle);
1330 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
1332 VideoLogInfo("Fail to get video item list with filter condition.");
1333 media_filter_destroy(m_FilterHandle);
1337 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1339 VideoLogInfo("Fail to destroy media filter handle.");
1345 media_info_get_size(pVideoItem, &nSize);
1346 VideoLogInfo("Video file size time : %d", nSize);
1347 media_info_destroy(pVideoItem);
1353 char *MpUtilMediaSvcGetVideoThumbnailByVideoUri(const char *szMediaUri)
1357 VideoLogInfo("No exist video path.");
1361 VideoLogInfo("szPath : %s", szMediaUri);
1363 media_info_h pVideoItem = NULL;
1364 filter_h m_FilterHandle = NULL;
1365 char *szThumbnailPath = NULL;
1366 char szTmpStr[STR_LEN_MAX] = {0};
1368 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1370 VideoLogInfo("Fail to create media filter handle.");
1374 memset(szTmpStr, 0, STR_LEN_MAX);
1375 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri);
1376 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
1378 VideoLogInfo("Fail to set filter condition.");
1379 media_filter_destroy(m_FilterHandle);
1383 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
1385 VideoLogInfo("Fail to get video item list with filter condition.");
1386 media_filter_destroy(m_FilterHandle);
1390 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1392 VideoLogInfo("Fail to destroy media filter handle.");
1398 media_info_get_thumbnail_path(pVideoItem, &szThumbnailPath);
1399 VideoLogInfo("Video thumbnail file path : %s", szThumbnailPath);
1400 media_info_destroy(pVideoItem);
1403 return szThumbnailPath;
1406 void MpUtilMediaSvcSetVideoLastPlayedTimeByUri(char* szMediaUri, unsigned int nLastPlayedTime)
1410 VideoLogInfo("No exist media uri.");
1414 VideoLogInfo("szMediaUri : %s, nLastPlayedTime : %d", szMediaUri, nLastPlayedTime);
1416 time_t LastPlayedTime = (time_t)nLastPlayedTime;
1417 media_info_h pVideoItem = NULL;
1418 filter_h m_FilterHandle = NULL;
1419 char szTmpStr[STR_LEN_MAX] = {0};
1421 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1423 VideoLogInfo("Fail to create media filter handle.");
1427 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_PATH = \"%s\"", szMediaUri);
1428 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
1430 VideoLogInfo("Fail to set filter condition.");
1431 media_filter_destroy(m_FilterHandle);
1435 if(media_info_foreach_media_from_db(m_FilterHandle, MpUtilMediaSvcIterateForGetVideoItemCb, &pVideoItem) != MEDIA_CONTENT_ERROR_NONE)
1437 VideoLogInfo("Fail to get video item list with filter condition.");
1438 media_filter_destroy(m_FilterHandle);
1442 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
1444 VideoLogInfo("Fail to destroy media filter handle.");
1448 video_meta_h pVideoMetaHandle = NULL;
1452 if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE)
1454 VideoLogInfo("Fail to get pVideoMetaHandle.");
1458 if(pVideoMetaHandle)
1460 char *szTmpStr = NULL;
1461 video_meta_get_title(pVideoMetaHandle, &szTmpStr);
1464 VideoLogInfo("Title : %s", szTmpStr);
1469 VideoLogInfo("No exist title");
1472 video_meta_set_played_time(pVideoMetaHandle, LastPlayedTime);
1473 video_meta_update_to_db(pVideoMetaHandle);
1474 video_meta_destroy(pVideoMetaHandle);
1475 VideoLogInfo("Last Played Time : %d", LastPlayedTime);
1479 VideoLogInfo("No exist pVideoMetaHandle");
1482 media_info_destroy(pVideoItem);
1486 bool MpUtilMediaSvcGetVideoCurrentUrlPreNextItem(char *szCurrMediaUri, char *szPreMediaUri, char *szNextMediaUri, bool bLoop)
1492 VideoLogInfo("[ERR] No exist current file path.");
1498 VideoLogInfo("No exist VideoItemList.");
1501 strncpy(szNextMediaUri, szCurrMediaUri, (sizeof(char) * STR_LEN_MAX) - 1);
1508 media_info_h pVideoItem = NULL;
1509 Eina_List *pIterateList = NULL;
1511 memset(szPreMediaUri, 0, sizeof(char) * STR_LEN_MAX);
1512 memset(szNextMediaUri, 0, sizeof(char) * STR_LEN_MAX);
1514 nListSize = eina_list_count(VideoItemList);
1518 VideoLogInfo("Video list size == 1.");
1522 EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem)
1524 if(pVideoItem == NULL)
1529 char *szVideoItemFilePath = NULL;
1530 media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
1531 if(szVideoItemFilePath)
1533 VideoLogInfo("URL of the File item - %s (%d / %d)", szVideoItemFilePath, nCount, nListSize);
1534 if(!strcmp(szVideoItemFilePath, szCurrMediaUri))
1536 free(szVideoItemFilePath);
1537 szVideoItemFilePath = NULL;
1540 pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount - 1);
1543 media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
1544 strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
1546 free(szVideoItemFilePath);
1547 szVideoItemFilePath = NULL;
1551 media_info_h m_LastItem = (media_info_h)eina_list_nth(VideoItemList, nListSize - 1);
1552 VideoLogError("%p", m_LastItem);
1555 media_info_get_file_path(m_LastItem, &szVideoItemFilePath);
1556 strncpy(szPreMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
1558 free(szVideoItemFilePath);
1559 szVideoItemFilePath = NULL;
1565 pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nCount + 1);
1568 media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
1569 strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
1571 free(szVideoItemFilePath);
1572 szVideoItemFilePath = NULL;
1576 media_info_h m_FirstItem = (media_info_h)eina_list_nth(VideoItemList, 0);
1579 media_info_get_file_path(m_FirstItem, &szVideoItemFilePath);
1580 strncpy(szNextMediaUri, szVideoItemFilePath, (sizeof(char) * STR_LEN_MAX) - 1);
1582 free(szVideoItemFilePath);
1583 szVideoItemFilePath = NULL;
1588 VideoLogInfo("PreMediaUri:%s", szPreMediaUri);
1589 VideoLogInfo("NextMediaUri:%s", szNextMediaUri);
1601 char* MpUtilMediaSvcGetVideoUrl(const int nVideoItemIndex)
1605 VideoLogInfo("Not exist video item list handle.");
1609 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1611 if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
1613 VideoLogInfo("Error number of list item.");
1617 char *szVideoItemFilePath = NULL;
1618 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1622 media_info_get_file_path(pVideoItem, &szVideoItemFilePath);
1623 VideoLogInfo("szVideoItemFilePath : %s", szVideoItemFilePath);
1626 return szVideoItemFilePath;
1629 char* MpUtilMediaSvcGetVideoThumbnail(const int nVideoItemIndex)
1633 VideoLogInfo("Not exist video item list handle.");
1637 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1639 if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
1641 VideoLogInfo("Error number of list item.");
1645 char *szVideoItemThumbnailPath = NULL;
1646 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1650 media_info_get_thumbnail_path(pVideoItem, &szVideoItemThumbnailPath);
1651 VideoLogInfo("szVideoItemFilePath : %s", szVideoItemThumbnailPath);
1654 return szVideoItemThumbnailPath;
1657 char* MpUtilMediaSvcGetVideoTitle(const int nVideoItemIndex)
1661 VideoLogInfo("Not exist video item list handle.");
1665 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1667 if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
1669 VideoLogInfo("Error number of list item.");
1673 char *szTitle = NULL;
1674 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1678 media_info_get_display_name(pVideoItem, &szTitle);
1679 VideoLogInfo("szTitle : %s", szTitle);
1685 int MpUtilMediaSvcGetVideoDurationTime(const int nVideoItemIndex)
1689 VideoLogInfo("Not exist video item list handle.");
1693 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1695 if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
1697 VideoLogInfo("Error number of list item.");
1701 int nDurationTime = 0;
1702 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1706 video_meta_h pVideoMetaHandle = NULL;
1707 if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
1709 video_meta_get_duration(pVideoMetaHandle, &nDurationTime);
1710 VideoLogInfo("Duratiob time : %d", nDurationTime);
1711 video_meta_destroy(pVideoMetaHandle);
1715 return nDurationTime;
1718 int MpUtilMediaSvcGetVideoLastPlayedPos(const int nVideoItemIndex)
1722 VideoLogInfo("Not exist video item list handle.");
1726 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1728 time_t nLastPlayedTime = 0;
1729 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1733 video_meta_h pVideoMetaHandle = NULL;
1734 if(media_info_get_video(pVideoItem, &pVideoMetaHandle) == MEDIA_CONTENT_ERROR_NONE)
1736 video_meta_get_played_time(pVideoMetaHandle, &nLastPlayedTime);
1737 VideoLogInfo("Last Play time : %d", nLastPlayedTime);
1738 video_meta_destroy(pVideoMetaHandle);
1742 return (int)nLastPlayedTime;
1745 int MpUtilMediaSvcGetVideoItemSize(const int nVideoItemIndex)
1749 VideoLogInfo("Not exist video item list handle.");
1753 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1755 unsigned long long nSize = 0;
1756 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1759 media_info_get_size(pVideoItem, &nSize);
1760 VideoLogInfo("Video file size time : %d", nSize);
1766 int MpUtilMediaSvcGetVideoItemWidth(const int nVideoItemIndex)
1770 VideoLogInfo("Not exist video item list handle.");
1774 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1777 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1778 video_meta_h pVideoMetaHandle = NULL;
1782 if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE)
1784 VideoLogInfo("Fail to get pVideoMetaHandle.");
1788 if(pVideoMetaHandle)
1790 char *szTmpStr = NULL;
1791 video_meta_get_title(pVideoMetaHandle, &szTmpStr);
1794 VideoLogInfo("Title : %s", szTmpStr);
1799 VideoLogInfo("No exist title");
1802 video_meta_get_width(pVideoMetaHandle, &nWidth);
1803 video_meta_destroy(pVideoMetaHandle);
1804 VideoLogInfo("Video Width : %f", nWidth);
1808 VideoLogInfo("No exist pVideoMetaHandle");
1816 int MpUtilMediaSvcGetVideoItemHeight(const int nVideoItemIndex)
1820 VideoLogInfo("Not exist video item list handle.");
1824 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1827 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1828 video_meta_h pVideoMetaHandle = NULL;
1832 if(media_info_get_video(pVideoItem, &pVideoMetaHandle) != MEDIA_CONTENT_ERROR_NONE)
1834 VideoLogInfo("Fail to get pVideoMetaHandle.");
1838 if(pVideoMetaHandle)
1840 char *szTmpStr = NULL;
1841 video_meta_get_title(pVideoMetaHandle, &szTmpStr);
1844 VideoLogInfo("Title : %s", szTmpStr);
1849 VideoLogInfo("No exist title");
1852 video_meta_get_height(pVideoMetaHandle, &nHeight);
1853 video_meta_destroy(pVideoMetaHandle);
1854 VideoLogInfo("Video Width : %f", nHeight);
1858 VideoLogInfo("No exist pVideoMetaHandle");
1866 time_t MpUtilMediaSvcGetVideoItemDateTime(const int nVideoItemIndex)
1870 VideoLogInfo("Not exist video item list handle.");
1874 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1876 time_t nDateTime = 0;
1877 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1880 media_info_get_modified_time(pVideoItem, &nDateTime);
1881 VideoLogInfo("Video date time : %d", nDateTime);
1887 char *MpUtilMediaSvcGetVideoItemExtension(const int nVideoItemIndex)
1891 VideoLogInfo("Not exist video item list handle.");
1895 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1900 double MpUtilMediaSvcGetVideoItemLongitude(const int nVideoItemIndex)
1904 VideoLogInfo("Not exist video item list handle.");
1908 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1910 double nLongitude = 0;
1911 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1914 media_info_get_longitude(pVideoItem, &nLongitude);
1915 VideoLogInfo("nLongitude : %f", nLongitude);
1921 double MpUtilMediaSvcGetVideoItemLatitude(const int nVideoItemIndex)
1925 VideoLogInfo("Not exist video item list handle.");
1929 VideoLogInfo("nVideoItemIndex : %d", nVideoItemIndex);
1931 double nLatitude = 0;
1932 media_info_h pVideoItem = (media_info_h)eina_list_nth(VideoItemList, nVideoItemIndex);
1935 media_info_get_latitude(pVideoItem, &nLatitude);
1936 VideoLogInfo("nLongitude : %f", nLatitude);
1945 int MpUtilMediaSvcGetVideoListSizeForCheckingIndex(void)
1949 VideoLogInfo("Not exist video item list handle.");
1955 return (int)eina_list_count(VideoItemList);
1958 int MpUtilMediaSvcGetNumberOfVideoItemByType(void)
1960 VideoLogInfo("nNumberOfVideoItemByType : %d", nNumberOfVideoItemByType);
1962 return nNumberOfVideoItemByType;
1965 int MpUtilMediaSvcGetTotalVideoTypeFiles(void)
1967 VideoLogInfo("nTotalVideoTypeFiles : %d", nTotalVideoTypeFiles);
1969 return (int)nTotalVideoTypeFiles;
1972 void* MpUtilMediaSvcGetVideoitem(const int nVideoItemIndex)
1976 VideoLogInfo("Not exist video item list handle.");
1980 if(nVideoItemIndex < 0 || nVideoItemIndex >= MpUtilMediaSvcGetVideoListSizeForCheckingIndex())
1982 VideoLogInfo("Error number of list item.");
1988 return (void*)eina_list_nth(VideoItemList, nVideoItemIndex);
1991 void MpUtilMediaSvcPrintListInfo(void)
1995 VideoLogInfo("Not exist video item list handle.");
1999 VideoLogInfo("List size : %d", MpUtilMediaSvcGetNumberOfVideoItemByType());
2001 media_info_h pVideoItem = NULL;
2002 Eina_List *pIterateList = NULL;
2004 EINA_LIST_FOREACH(VideoItemList, pIterateList, pVideoItem)
2008 char *szTitle = NULL;
2009 media_info_get_display_name(pVideoItem, &szTitle);
2012 VideoLogInfo("%d - Print title of all list items : %s", nCounter, szTitle);
2017 VideoLogInfo("%d - Print title of all list items : NULL.", nCounter);
2024 int MpUtilMediaSvcFindVideoItemIndexByUrl(const char *szPath)
2026 if(!VideoItemList || !szPath)
2028 VideoLogInfo("[ERR] No exist VideoItemList or szPath.");
2034 unsigned int nCounter = 0;
2036 Eina_List *pCurList = NULL;
2037 media_info_h pVideoItem = NULL;
2039 EINA_LIST_FOREACH(VideoItemList, pCurList, pVideoItem)
2043 char *szTitle = NULL;
2044 media_info_get_display_name(pVideoItem, &szTitle);
2045 VideoLogInfo("szTitle : %s", szTitle);
2047 if(!strcmp(szTitle , szPath))
2049 VideoLogInfo("Find same file url. index : %d", nCounter);
2062 bool MpUtilMediaSvcExtractVideoFolderList(int nSortType)
2066 filter_h m_FilterHandle = NULL;
2067 media_content_order_e nOrderType = MEDIA_CONTENT_ORDER_ASC;
2069 char szTmpStr[STR_LEN_MAX] = {0};
2070 char szOrderObj[STR_LEN_MAX] = {0};
2074 case MP_MEDIA_SORT_BY_NONE:
2075 case MP_MEDIA_SORT_BY_NAME_ASC:
2076 nOrderType = MEDIA_CONTENT_ORDER_ASC;
2077 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
2080 case MP_MEDIA_SORT_BY_NAME_DESC:
2081 nOrderType = MEDIA_CONTENT_ORDER_DESC;
2082 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
2085 case MP_MEDIA_SORT_BY_DATE_MOST_RECENT:
2086 nOrderType = MEDIA_CONTENT_ORDER_DESC;
2087 strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
2090 case MP_MEDIA_SORT_BY_OLDEST:
2091 nOrderType = MEDIA_CONTENT_ORDER_ASC;
2092 strncpy(szOrderObj, MEDIA_YEAR, STR_LEN_MAX - 1);
2096 nOrderType = MEDIA_CONTENT_ORDER_ASC;
2097 strncpy(szOrderObj, MEDIA_TITLE, STR_LEN_MAX - 1);
2100 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
2102 VideoLogInfo("Fail to create media filter handle.");
2106 snprintf(szTmpStr, STR_LEN_MAX, "MEDIA_TYPE = 1");
2107 if(media_filter_set_condition(m_FilterHandle, szTmpStr, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
2109 VideoLogInfo("Fail to set filter condition.");
2110 media_filter_destroy(m_FilterHandle);
2114 if(media_folder_foreach_folder_from_db(m_FilterHandle, MpUtilMediaSvcIterateForFolderListCb, &VideoFolderList) != MEDIA_CONTENT_ERROR_NONE)
2116 VideoLogInfo("Fail media_folder_foreach_folder_from_db().");
2117 media_filter_destroy(m_FilterHandle);
2121 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
2123 VideoLogInfo("Fail to destroy media filter handle.");
2129 bool MpUtilMediaSvcDestoryVideoFolderList(void)
2131 if(!VideoFolderList)
2133 VideoLogInfo("VideoFolderList is empty already.");
2137 media_folder_h pTmpFolderItem = NULL;
2138 EINA_LIST_FREE(VideoFolderList, pTmpFolderItem)
2142 media_folder_destroy(pTmpFolderItem);
2146 VideoFolderList = NULL;
2151 int MpUtilMediaSvcGetVideoFolderListSize(void)
2153 if(!VideoFolderList)
2155 VideoLogInfo("Not exist video item list handle.");
2163 return (int)eina_list_count(VideoFolderList);
2169 char* MpUtilMediaSvcGetVideoFolderName(int nVideoFolderIndex)
2171 if(!VideoFolderList)
2173 VideoLogInfo("Not exist video folder list handle.");
2177 VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex);
2179 if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize())
2181 VideoLogInfo("Error number of list item.");
2185 char *szFolderName = NULL;
2186 media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
2189 media_folder_get_name(pFolderItem, &szFolderName);
2193 VideoLogInfo("szFolderName : %s", szFolderName);
2194 return szFolderName;
2201 char* MpUtilMediaSvcGetVideoFolderUrl(int nVideoFolderIndex)
2203 if(!VideoFolderList)
2205 VideoLogInfo("Not exist video item list handle.");
2209 VideoLogInfo("nVideoItemIndex : %d", nVideoFolderIndex);
2211 if(nVideoFolderIndex < 0 || nVideoFolderIndex >= MpUtilMediaSvcGetVideoFolderListSize())
2213 VideoLogInfo("Error number of list item.");
2217 char *szFolderPath = NULL;
2218 media_folder_h pFolderItem = (media_folder_h)eina_list_nth(VideoFolderList, nVideoFolderIndex);
2221 media_folder_get_path(pFolderItem, &szFolderPath);
2225 VideoLogInfo("szFolderPath : %s", szFolderPath);
2226 return szFolderPath;
2233 static bool MpUtilMediaSvcBookmarkItemCb(media_bookmark_h pBookmark, void *pUserData)
2237 media_bookmark_h pAssignBookmark = NULL;
2238 media_bookmark_clone(&pAssignBookmark, pBookmark);
2240 GList **pList = (GList**)pUserData;
2241 *pList = g_list_append(*pList, pAssignBookmark);
2246 bool MpUtilMediaSvcBookmarkListGet(char *vid, GList **list)
2250 VideoLogInfo("No exist vid.");
2256 VideoLogInfo("No exist list.");
2260 VideoLogInfo("vid : %s", vid);
2262 filter_h m_FilterHandle = NULL;
2264 if(media_filter_create(&m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
2266 VideoLogInfo("Fail to create media filter handle.");
2270 if(media_filter_set_order(m_FilterHandle, MEDIA_CONTENT_ORDER_ASC, BOOKMARK_MARKED_TIME, MEDIA_CONTENT_COLLATE_DEFAULT) != MEDIA_CONTENT_ERROR_NONE)
2272 VideoLogInfo("Fail to set order.");
2273 media_filter_destroy(m_FilterHandle);
2277 if(media_info_foreach_bookmark_from_db(vid, m_FilterHandle, MpUtilMediaSvcBookmarkItemCb, list) != MEDIA_CONTENT_ERROR_NONE)
2279 VideoLogInfo("Fail to get bookmark of video item with filter condition.");
2280 media_filter_destroy(m_FilterHandle);
2284 if(media_filter_destroy(m_FilterHandle) != MEDIA_CONTENT_ERROR_NONE)
2286 VideoLogInfo("Fail to destroy media filter handle.");
2293 void MpUtilMediaSvcBookmarkListClear(GList *pList)
2299 VideoLogInfo("list == NULL\n");
2303 media_bookmark_h pBookmarkItem = NULL;
2308 nCount = g_list_length(pList);
2309 for(i = 0; i < nCount; i++)
2311 pBookmarkItem = (void *)g_list_nth_data(pList, i);
2314 media_bookmark_destroy(pBookmarkItem);
2315 pBookmarkItem = NULL;
2322 int MpUtilMediaSvcBookmarkInsert(char *vid, int position, char *path)
2327 if(vid < 0 || path == NULL)
2329 VideoLogInfo("Invalid Parameter : %d, %s", vid, path);
2333 if(media_bookmark_insert_to_db(vid, position, path) != MEDIA_CONTENT_ERROR_NONE)
2335 VideoLogInfo("minfo_add_bookmark ERR : %d", ret);
2342 int MpUtilMediaSvcBookmarkDelete(char *vid, int position)
2351 media_bookmark_h data = NULL;
2352 Eina_List *l = NULL;
2354 ret = MpUtilMediaSvcBookmarkListGet(vid, &list);
2360 EINA_LIST_FOREACH((Eina_List *)list, l, data)
2365 media_bookmark_get_marked_time(data, &nMarkedTime);
2366 if(position == nMarkedTime)
2368 media_bookmark_get_bookmark_id(data, &bookmarkid);
2369 media_bookmark_get_thumbnail_path(data, &path);
2375 MpUtilMediaSvcBookmarkListClear(list);
2377 if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE)
2379 VideoLogInfo("[ERR] media_bookmark_delete_from_db()");
2390 VideoLogError("Thumbnail path is NULL");
2395 if(ecore_file_exists(path))
2397 if(ecore_file_remove(path))
2399 VideoLogInfo("Remove success :%s\n", path);
2403 VideoLogInfo("Remove Failed :%s \n", path);
2408 VideoLogInfo("The file not eixst :%s\n", path);
2411 ecore_file_shutdown();
2422 int MpUtilMediaSvcBookmarkDeleteAll(char *vid)
2430 media_bookmark_h data = NULL;
2431 Eina_List *l = NULL;
2432 char *szThumbnailPath = NULL;
2434 ret = MpUtilMediaSvcBookmarkListGet(vid, &list);
2440 EINA_LIST_FOREACH((Eina_List *)list, l, data)
2444 media_bookmark_get_bookmark_id(data, &bookmarkid);
2445 media_bookmark_get_thumbnail_path(data, &szThumbnailPath);
2450 if(ecore_file_exists(szThumbnailPath))
2452 if(ecore_file_remove(szThumbnailPath))
2454 VideoLogInfo("Remove success : %s", szThumbnailPath);
2458 VideoLogInfo("Remove Failed : %s", szThumbnailPath);
2463 VideoLogInfo("The file not eixst :%s", szThumbnailPath);
2465 ecore_file_shutdown();
2468 if(media_bookmark_delete_from_db(bookmarkid) != MEDIA_CONTENT_ERROR_NONE)
2470 VideoLogInfo("[ERR]minfo_delete_bookmark");
2476 MpUtilMediaSvcBookmarkListClear(list);
2481 char* MpUtilMediaSvcBookmarkGetThumbnail(void* pBookmarkItemHandle)
2483 char *szThumbnailPath = NULL;
2485 media_bookmark_get_thumbnail_path((media_bookmark_h)pBookmarkItemHandle, &szThumbnailPath);
2487 return szThumbnailPath;
2490 int MpUtilMediaSvcBookmarkGetPos(void* pBookmarkItemHandle)
2492 time_t nBookmarkTime;
2494 media_bookmark_get_marked_time((media_bookmark_h)pBookmarkItemHandle, &nBookmarkTime);
2496 return (int)nBookmarkTime;