-static int __media_content_create_attribute_handles(void);
-static int __media_content_destroy_attribute_handle(void);
-
-typedef struct {
- char *user_attr;
- char *platform_attr;
- char *platform_alias_attr;
-} media_content_attribute_info_s;
-
-static media_content_attribute_info_s g_content_attrs_info[] = {
- /* Media Info */
- {MEDIA_ID, DB_FIELD_MEDIA_ID, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ID},
- {MEDIA_PATH, DB_FIELD_MEDIA_PATH, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_PATH},
- {MEDIA_DISPLAY_NAME, DB_FIELD_MEDIA_DISPLAY_NAME, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_DISPLAY_NAME},
- {MEDIA_TYPE, DB_FIELD_MEDIA_TYPE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_TYPE},
- {MEDIA_MIME_TYPE, DB_FIELD_MEDIA_MIME_TYPE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_MIME_TYPE},
- {MEDIA_SIZE, DB_FIELD_MEDIA_SIZE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_SIZE},
- {MEDIA_ADDED_TIME, DB_FIELD_MEDIA_ADDED_TIME, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ADDED_TIME},
- {MEDIA_MODIFIED_TIME, DB_FIELD_MEDIA_MODIFIED_TIME, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_MODIFIED_TIME},
- {MEDIA_TIMELINE, DB_FIELD_MEDIA_TIMELINE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_TIMELINE},
- {MEDIA_THUMBNAIL_PATH, DB_FIELD_MEDIA_THUMBNAIL_PATH, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_THUMBNAIL_PATH},
- {MEDIA_TITLE, DB_FIELD_MEDIA_TITLE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_TITLE},
- {MEDIA_ALBUM, DB_FIELD_MEDIA_ALBUM, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ALBUM},
- {MEDIA_ARTIST, DB_FIELD_MEDIA_ARTIST, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ARTIST},
- {MEDIA_ALBUM_ARTIST, DB_FIELD_MEDIA_ALBUM_ARTIST, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ALBUM_ARTIST},
- {MEDIA_GENRE, DB_FIELD_MEDIA_GENRE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_GENRE},
- {MEDIA_COMPOSER, DB_FIELD_MEDIA_COMPOSER, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_COMPOSER},
- {MEDIA_YEAR, DB_FIELD_MEDIA_YEAR, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_YEAR},
- {MEDIA_RECORDED_DATE, DB_FIELD_MEDIA_RECORDED_DATE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_RECORDED_DATE},
- {MEDIA_COPYRIGHT, DB_FIELD_MEDIA_COPYRIGHT, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_COPYRIGHT},
- {MEDIA_TRACK_NUM, DB_FIELD_MEDIA_TRACK_NUM, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_TRACK_NUM},
- {MEDIA_DESCRIPTION, DB_FIELD_MEDIA_DESCRIPTION, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_DESCRIPTION},
- {MEDIA_BITRATE, DB_FIELD_MEDIA_BITRATE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_BITRATE},
- {MEDIA_BITPERSAMPLE, DB_FIELD_MEDIA_BITPERSAMPLE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_BITPERSAMPLE},
- {MEDIA_SAMPLERATE, DB_FIELD_MEDIA_SAMPLERATE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_SAMPLERATE},
- {MEDIA_CHANNEL, DB_FIELD_MEDIA_CHANNEL, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_CHANNEL},
- {MEDIA_DURATION, DB_FIELD_MEDIA_DURATION, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_DURATION},
- {MEDIA_LONGITUDE, DB_FIELD_MEDIA_LONGITUDE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_LONGITUDE},
- {MEDIA_LATITUDE, DB_FIELD_MEDIA_LATITUDE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_LATITUDE},
- {MEDIA_ALTITUDE, DB_FIELD_MEDIA_ALTITUDE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ALTITUDE},
- {MEDIA_WIDTH, DB_FIELD_MEDIA_WIDTH, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_WIDTH},
- {MEDIA_HEIGHT, DB_FIELD_MEDIA_HEIGHT, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_HEIGHT},
- {MEDIA_DATETAKEN, DB_FIELD_MEDIA_DATETAKEN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_DATETAKEN},
- {MEDIA_ORIENTATION, DB_FIELD_MEDIA_ORIENTATION, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ORIENTATION},
- {MEDIA_RATING, DB_FIELD_MEDIA_RATING, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_RATING},
- {MEDIA_FAVOURITE, DB_FIELD_MEDIA_FAVOURITE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_FAVOURITE},
- {MEDIA_IS_DRM, DB_FIELD_MEDIA_IS_DRM, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_IS_DRM},
- {MEDIA_STORAGE_TYPE, DB_FIELD_MEDIA_STORAGE_TYPE, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_STORAGE_TYPE},
- {MEDIA_360, DB_FIELD_MEDIA_360, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_360},
-
- /* Pinyin */
- {MEDIA_FILE_NAME_PINYIN, DB_FIELD_MEDIA_FILE_NAME_PINYIN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_FILE_NAME_PINYIN},
- {MEDIA_TITLE_PINYIN, DB_FIELD_MEDIA_TITLE_PINYIN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_TITLE_PINYIN},
- {MEDIA_ALBUM_PINYIN, DB_FIELD_MEDIA_ALBUM_PINYIN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ALBUM_PINYIN},
- {MEDIA_ARTIST_PINYIN, DB_FIELD_MEDIA_ARTIST_PINYIN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ARTIST_PINYIN},
- {MEDIA_ALBUM_ARTIST_PINYIN, DB_FIELD_MEDIA_ALBUM_ARTIST_PINYIN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_ALBUM_ARTIST_PINYIN},
- {MEDIA_GENRE_PINYIN, DB_FIELD_MEDIA_GENRE_PINYIN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_GENRE_PINYIN},
- {MEDIA_COMPOSER_PINYIN, DB_FIELD_MEDIA_COMPOSER_PINYIN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_COMPOSER_PINYIN},
- {MEDIA_COPYRIGHT_PINYIN, DB_FIELD_MEDIA_COPYRIGHT_PINYIN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_COPYRIGHT_PINYIN},
- {MEDIA_DESCRIPTION_PINYIN, DB_FIELD_MEDIA_DESCRIPTION_PINYIN, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_DESCRIPTION_PINYIN},
-
- /* Folder */
- {FOLDER_ID, NULL, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_ID},
- {FOLDER_PATH, NULL, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_PATH},
- {FOLDER_NAME, NULL, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_NAME},
- {FOLDER_STORAGE_TYPE, NULL, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_STORAGE_TYPE},
- {FOLDER_NAME_PINYIN, NULL, DB_TABLE_ALIAS_FOLDER"."DB_FIELD_FOLDER_NAME_PINYIN},
-
- /* Playlist */
- {MEDIA_PLAYLIST_ID, DB_FIELD_PLAYLIST_ID, NULL},
- {PLAYLIST_NAME, DB_FIELD_PLAYLIST_NAME, NULL},
- {PLAYLIST_MEMBER_ORDER, DB_FIELD_PLAYLIST_MEMBER_ORDER, NULL},
-
- /* Playlist View */
- {PLAYLIST_MEDIA_COUNT, DB_FIELD_PLAYLIST_MEDIA_COUNT, NULL},
-
- /* Tag */
- {MEDIA_TAG_ID, DB_FIELD_TAG_ID, NULL},
- {TAG_NAME, DB_FIELD_TAG_NAME, NULL},
-
- /* Tag View */
- {TAG_MEDIA_COUNT, DB_FIELD_TAG_MEDIA_COUNT, NULL},
-
- /* Bookmark */
- {MEDIA_BOOKMARK_ID, DB_FIELD_BOOKMARK_ID, NULL},
- {BOOKMARK_MARKED_TIME, DB_FIELD_BOOKMARK_MARKED_TIME, NULL},
- {BOOKMARK_NAME, DB_FIELD_BOOKMARK_NAME, NULL},
-
- /* Storage */
- {MEDIA_STORAGE_ID, DB_FIELD_STORAGE_ID, NULL},
- {MEDIA_STORAGE_PATH, DB_FIELD_STORAGE_PATH, NULL},
-
-#ifdef _USE_SENIOR_MODE
- {MEDIA_CONTACT, DB_FIELD_MEDIA_CONTACT, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_CONTACT},
- {MEDIA_APP_DATA, DB_FIELD_MEDIA_APP_DATA, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_APP_DATA},
-#endif
-#ifdef _USE_TVPD_MODE
- {MEDIA_PLAYED_COUNT, DB_FIELD_MEDIA_PLAYED_COUNT, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_PLAYED_COUNT},
- {MEDIA_LAST_PLAYED_TIME, DB_FIELD_MEDIA_LAST_PLAYED_TIME, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_LAST_PLAYED_TIME},
- {MEDIA_LAST_PLAYED_POSITION, DB_FIELD_MEDIA_LAST_PLAYED_POSITION, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_LAST_PLAYED_POSITION},
- {MEDIA_FOLDER_ID, DB_FIELD_MEDIA_FOLDER_ID, DB_TABLE_ALIAS_MEDIA"."DB_FIELD_MEDIA_FOLDER_ID},
- {MEDIA_STITCHED_INFO, DB_FIELD_MEDIA_STITCHED_INFO, NULL},
- {MEDIA_MODIFIED_MONTH, DB_FIELD_MEDIA_MODIFIED_MONTH, NULL},
- {MEDIA_MODIFIED_DATE, DB_FIELD_MEDIA_MODIFIED_DATE, NULL},
-
- /* PVR */
- {PVR_DURATION, DB_FIELD_PVR_DURATION, NULL},
- {PVR_TIME_ZONE, DB_FIELD_PVR_TIME_ZONE, NULL},
- {PVR_PTC, DB_FIELD_PVR_PTC, NULL},
- {PVR_MAJOR, DB_FIELD_PVR_MAJOR, NULL},
- {PVR_MINOR, DB_FIELD_PVR_MINOR, NULL},
- {PVR_CHANNEL_TYPE, DB_FIELD_PVR_CHANNEL_TYPE, NULL},
- {PVR_CHANNEL_NAME, DB_FIELD_PVR_CHANNEL_NAME, NULL},
- {PVR_CHANNEL_NUM, DB_FIELD_PVR_CHANNEL_NUM, NULL},
- {PVR_PROGRAM_TITLE, DB_FIELD_PVR_PROGRAM_TITLE, NULL},
- {PVR_PROGRAM_NUM, DB_FIELD_PVR_PROGRAM_NUM, NULL},
- {PVR_PROGRAM_CRID, DB_FIELD_PVR_PROGRAM_CRID, NULL},
- {PVR_GUIDANCE, DB_FIELD_PVR_GUIDANCE, NULL},
- {PVR_SYNOPSIS, DB_FIELD_PVR_SYNOPSIS, NULL},
- {PVR_GENRE, DB_FIELD_PVR_GENRE, NULL},
- {PVR_LANGUAGE, DB_FIELD_PVR_LANGUAGE, NULL},
- {PVR_EMBARGO_TIME, DB_FIELD_PVR_EMBARGO_TIME, NULL},
- {PVR_EXPIRY_TIME, DB_FIELD_PVR_EXPIRY_TIME, NULL},
- {PVR_START_TIME, DB_FIELD_PVR_START_TIME, NULL},
- {PVR_PROGRAM_START_TIME, DB_FIELD_PVR_PROGRAM_START_TIME, NULL},
- {PVR_PROGRAM_END_TIME, DB_FIELD_PVR_PROGRAM_END_TIME, NULL},
- {PVR_PROGRAM_DATE, DB_FIELD_PVR_PROGRAM_DATE, NULL},
- {PVR_PARENTAL_RATING, DB_FIELD_PVR_PARENTAL_RATING, NULL},
- {PVR_TIMER_RECORD, DB_FIELD_PVR_TIMER_RECORD, NULL},
- {PVR_SERIES_RECORD, DB_FIELD_PVR_SERIES_RECORD, NULL},
- {PVR_HD, DB_FIELD_PVR_HD, NULL},
- {PVR_SUBTITLE, DB_FIELD_PVR_SUBTITLE, NULL},
- {PVR_TTX, DB_FIELD_PVR_TTX, NULL},
- {PVR_AD, DB_FIELD_PVR_AD, NULL},
- {PVR_TTX, DB_FIELD_PVR_TTX, NULL},
- {PVR_DATA_SERVICE, DB_FIELD_PVR_DATA_SERVICE, NULL},
- {PVR_CONTENT_LOCK, DB_FIELD_PVR_CONTENT_LOCK, NULL},
- {PVR_CONTENT_WATCH, DB_FIELD_PVR_CONTENT_WATCH, NULL},
- {PVR_CONTENT_HAS_AUDIO_ONLY, DB_FIELD_PVR_HAS_AUDIO_ONLY, NULL},
- {PVR_CONTENT_IS_LOCAL_RECORD, DB_FIELD_PVR_IS_LOCAL_RECORD, NULL},
- {PVR_CONTENT_RESOLUTION, DB_FIELD_PVR_RESOLUTION, NULL},
- {PVR_CONTENT_ASPECTRATIO, DB_FIELD_PVR_ASPECTRATIO, NULL},
- {PVR_MODIFIED_MONTH, DB_FIELD_PVR_MODIFIED_DATE, NULL},
- {PVR_MODIFIED_DATE, DB_FIELD_PVR_MODIFIED_DATE, NULL},
- {PVR_SPORTS_TYPE, DB_FIELD_PVR_SPORTS_TYPE, NULL},
- {PVR_GUIDANCE_LENGTH, DB_FIELD_PVR_GUIDANCE_LENGTH, NULL},
- {PVR_TVMODE, DB_FIELD_PVR_TVMODE, NULL},
- {PVR_PLAY_COUNT, DB_FIELD_PVR_PLAY_COUNT, NULL},
- {PVR_PRIVATE_DATA, DB_FIELD_PVR_PRIVATE_DATA, NULL},
-
- /* UHD */
- {UHD_CONTENT_TITLE, DB_FIELD_UHD_CONTENT_TITLE, NULL},
- {UHD_RELEASE_DATE, DB_FIELD_UHD_RELEASE_DATE, NULL},
- {UHD_SUB_TYPE, DB_FIELD_UHD_SUB_TYPE, NULL},
- {UHD_FILE_NAME, DB_FIELD_UHD_FILE_NAME, NULL},
- {UHD_FOLDER_ID, DB_FIELD_FOLDER_ID, NULL},
- {UHD_PLAYED_COUNT, DB_FIELD_UHD_PLAYED_COUNT, NULL},
-#endif
-};
-
-static int __media_content_create_attribute_handles(void)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
- int idx = 0;
- int count = 0;
- char *_attr_user = NULL;
- char *_attr_platform = NULL;
- char *_alias_attr_user = NULL;
- char *_alias_attr_platform = NULL;
- attribute_s *_attr = NULL;
- attribute_s *_alias_attr = NULL;
-
- ret = _media_filter_attribute_create(&g_attr_handle);
- media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-
- ret = _media_filter_attribute_create(&g_alias_attr_handle);
- if (ret != MEDIA_CONTENT_ERROR_NONE)
- goto ERROR;
-
- _attr = (attribute_s*)g_attr_handle;
- _alias_attr = (attribute_s*)g_alias_attr_handle;
-
- count = sizeof(g_content_attrs_info) / sizeof((g_content_attrs_info)[0]);
-
- for (idx = 0; idx < count; idx++) {
- _attr_user = NULL;
- _attr_platform = NULL;
- _alias_attr_user = NULL;
- _alias_attr_platform = NULL;
-
- if (STRING_VALID(g_content_attrs_info[idx].user_attr)) {
- /*attribute*/
- if (STRING_VALID(g_content_attrs_info[idx].platform_attr)) {
- _attr_user = g_strdup(g_content_attrs_info[idx].user_attr);
- _attr_platform = g_strdup(g_content_attrs_info[idx].platform_attr);
-
- if (_attr_user == NULL || _attr_platform == NULL) {
- SAFE_G_FREE(_attr_user);
- SAFE_G_FREE(_attr_platform);
- media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
- ret = MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
- goto ERROR;
- }
-
- g_hash_table_insert(_attr->attr_map, _attr_user, _attr_platform);
-
- }
-
- /*alias attribute*/
- if (STRING_VALID(g_content_attrs_info[idx].platform_alias_attr)) {
- _alias_attr_user = g_strdup(g_content_attrs_info[idx].user_attr);
- _alias_attr_platform = g_strdup(g_content_attrs_info[idx].platform_alias_attr);
-
- if (_alias_attr_user == NULL || _alias_attr_platform == NULL) {
- SAFE_G_FREE(_alias_attr_user);
- SAFE_G_FREE(_alias_attr_platform);
- media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
- ret = MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
- goto ERROR;
- }
-
- g_hash_table_insert(_alias_attr->attr_map, _alias_attr_user, _alias_attr_platform);
- }
- } else {
- media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
- ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
- goto ERROR;
- }
- }
-
- return ret;
-
-ERROR:
- media_content_error("Fail media_content_create_attribute_handles");
- __media_content_destroy_attribute_handle();
-
- return ret;
-}
-
-static int __media_content_destroy_attribute_handle(void)
-{
- int ret = MEDIA_CONTENT_ERROR_NONE;
-
- ret = _media_filter_attribute_destory(g_attr_handle);
- ret = _media_filter_attribute_destory(g_alias_attr_handle);
-
- g_attr_handle = NULL;
- g_alias_attr_handle = NULL;
-
- return ret;
-}
-
-attribute_h _content_get_attirbute_handle(void)
-{
- return g_attr_handle;
-}
-
-attribute_h _content_get_alias_attirbute_handle(void)
-{
- /* This API use only folder query */
- return g_alias_attr_handle;
-}
-