+
+#ifdef _USE_TVPD_MODE
+int _media_db_get_pvr_group_item(const char *group_name, filter_h filter, media_group_e group, media_pvr_cb callback, void *user_data)
+{
+ int ret = MEDIA_CONTENT_ERROR_NONE;
+ char select_query[DEFAULT_QUERY_SIZE] = {0, };
+ char *condition_query = NULL;
+ char *option_query = NULL;
+ sqlite3_stmt *stmt = NULL;
+ filter_s *_filter = (filter_s *)filter;
+
+ memset(select_query, 0x00, sizeof(select_query));
+
+ if (group_name != NULL) {
+ if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+ sqlite3_snprintf(sizeof(select_query), select_query, SELECT_PVR_FROM_GROUP_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group), group_name);
+ else
+ sqlite3_snprintf(sizeof(select_query), select_query, SELECT_PVR_FROM_GROUP, __media_db_get_group_name(group), group_name);
+ } else {
+ if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+ snprintf(select_query, sizeof(select_query), SELECT_PVR_FROM_GROUP_NULL_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group));
+ else
+ snprintf(select_query, sizeof(select_query), SELECT_PVR_FROM_GROUP_NULL, __media_db_get_group_name(group));
+ }
+
+ ret = __media_db_make_query(filter, &condition_query, &option_query);
+ content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+ ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
+ SAFE_FREE(condition_query);
+ SAFE_FREE(option_query);
+ content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ media_pvr_s *item = (media_pvr_s*)calloc(1, sizeof(media_pvr_s));
+ if (item == NULL) {
+ content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
+ SQLITE3_FINALIZE(stmt);
+ return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
+ }
+
+ _media_pvr_item_get_detail(stmt, (media_pvr_h)item);
+
+ if (callback((media_pvr_h)item, user_data) == false) {
+ media_info_destroy((media_pvr_h)item);
+ break;
+ }
+
+ media_pvr_destroy((media_pvr_h)item);
+ }
+
+ SQLITE3_FINALIZE(stmt);
+
+ return ret;
+}
+
+typedef enum {
+ MEDIA_PVR_MEDIA_ID = 0,
+ MEDIA_PVR_STORAGE_ID,
+ MEDIA_PVR_PATH,
+ MEDIA_PVR_SIZE,
+ MEDIA_PVR_DURATION,
+ MEDIA_PVR_TIME_ZONE,
+ MEDIA_PVR_PTC,
+ MEDIA_PVR_MAJOR,
+ MEDIA_PVR_MINOR,
+ MEDIA_PVR_CHANNEL_TYPE,
+ MEDIA_PVR_CHANNEL_NAME,
+ MEDIA_PVR_CHANNEL_NUM,
+ MEDIA_PVR_SERVICE_PROFILE,
+ MEDIA_PVR_PROGRAM_TITLE,
+ MEDIA_PVR_PROGRAM_NUM,
+ MEDIA_PVR_PROGRAM_CRID,
+ MEDIA_PVR_GUIDANCE,
+ MEDIA_PVR_SYNOPSIS,
+ MEDIA_PVR_GENRE,
+ MEDIA_PVR_LANGUAGE,
+ MEDIA_PVR_EMBARGO_TIME,
+ MEDIA_PVR_EXPIRY_TIME,
+ MEDIA_PVR_START_TIME,
+ MEDIA_PVR_PROGRAM_START_TIME,
+ MEDIA_PVR_PROGRAM_END_TIME,
+ MEDIA_PVR_PROGRAM_DATE,
+ MEDIA_PVR_PARENTAL_RATING,
+ MEDIA_PVR_TIMER_RECORD,
+ MEDIA_PVR_SERIES_RECORD,
+ MEDIA_PVR_HD,
+ MEDIA_PVR_SUBTITLE,
+ MEDIA_PVR_TTX,
+ MEDIA_PVR_AD,
+ MEDIA_PVR_HARDOF_HEARINGRADIO,
+ MEDIA_PVR_DATA_SERVICE,
+ MEDIA_PVR_CONTENT_LOCK,
+ MEDIA_PVR_CONTENT_WATCH,
+ MEDIA_PVR_HAS_AUDIO_ONLY,
+ MEDIA_PVR_IS_LOCAL_RECORDED,
+ MEDIA_PVR_RESOLUTION,
+ MEDIA_PVR_ASPECTRATIO,
+ MEDIA_PVR_MODIFIED_MONTH,
+ MEDIA_PVR_SPORTS_TYPE,
+ MEDIA_PVR_GUIDANCE_LENGTH,
+ MEDIA_PVR_TVMODE,
+ MEDIA_PVR_PLAY_COUNT,
+ MEDIA_PVR_PRIVATE_DATA,
+ MEDIA_PVR_HIGHLIGHT,
+} media_pvr_field_e;
+
+void _media_pvr_item_get_detail(sqlite3_stmt* stmt, media_pvr_h pvr)
+{
+ media_pvr_s *_pvr = (media_pvr_s*)pvr;
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MEDIA_ID)))
+ _pvr->media_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MEDIA_ID));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_STORAGE_ID)))
+ _pvr->storage_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_STORAGE_ID));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PATH)))
+ _pvr->path = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PATH));
+
+ _pvr->size = (unsigned long long)sqlite3_column_int64(stmt, MEDIA_PVR_SIZE);
+
+ _pvr->duration = sqlite3_column_int(stmt, MEDIA_PVR_DURATION);
+
+ _pvr->timezone = sqlite3_column_int(stmt, MEDIA_PVR_TIME_ZONE);
+
+ _pvr->ptc = sqlite3_column_int(stmt, MEDIA_PVR_PTC);
+
+ _pvr->major = sqlite3_column_int(stmt, MEDIA_PVR_MAJOR);
+
+ _pvr->minor = sqlite3_column_int(stmt, MEDIA_PVR_MINOR);
+
+ _pvr->channel_type = sqlite3_column_int(stmt, MEDIA_PVR_CHANNEL_TYPE);
+
+ _pvr->service_profile = (unsigned int)sqlite3_column_int(stmt, MEDIA_PVR_SERVICE_PROFILE);
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NAME)))
+ _pvr->channel_name = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NAME));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NUM)))
+ _pvr->channel_num = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NUM));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_TITLE)))
+ _pvr->program_title = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_TITLE));
+
+ _pvr->program_num = sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_NUM);
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_CRID)))
+ _pvr->program_crid = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_CRID));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GUIDANCE)))
+ _pvr->guidance = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GUIDANCE));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_SYNOPSIS)))
+ _pvr->synopsis = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_SYNOPSIS));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GENRE)))
+ _pvr->genre = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GENRE));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_LANGUAGE)))
+ _pvr->language = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_LANGUAGE));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MODIFIED_MONTH)))
+ _pvr->modified_month = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MODIFIED_MONTH));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PRIVATE_DATA)))
+ _pvr->private_data = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PRIVATE_DATA));
+
+ _pvr->embargo_time = sqlite3_column_int(stmt, MEDIA_PVR_EMBARGO_TIME);
+
+ _pvr->expiry_time = sqlite3_column_int(stmt, MEDIA_PVR_EXPIRY_TIME);
+
+ _pvr->start_time = sqlite3_column_int(stmt, MEDIA_PVR_START_TIME);
+
+ _pvr->program_start_time = sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_START_TIME);
+
+ _pvr->program_end_time = sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_END_TIME);
+
+ _pvr->program_date = sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_DATE);
+
+ _pvr->parental_rating = sqlite3_column_int(stmt, MEDIA_PVR_PARENTAL_RATING);
+
+ _pvr->timer_record = sqlite3_column_int(stmt, MEDIA_PVR_TIMER_RECORD);
+
+ _pvr->series_record = sqlite3_column_int(stmt, MEDIA_PVR_SERIES_RECORD);
+
+ _pvr->hd = sqlite3_column_int(stmt, MEDIA_PVR_HD);
+
+ _pvr->subtitle = sqlite3_column_int(stmt, MEDIA_PVR_SUBTITLE);
+
+ _pvr->ttx = sqlite3_column_int(stmt, MEDIA_PVR_TTX);
+
+ _pvr->ad = sqlite3_column_int(stmt, MEDIA_PVR_AD);
+
+ _pvr->hard_of_hearing_radio = sqlite3_column_int(stmt, MEDIA_PVR_HARDOF_HEARINGRADIO);
+
+ _pvr->data_service = sqlite3_column_int(stmt, MEDIA_PVR_DATA_SERVICE);
+
+ _pvr->content_lock = sqlite3_column_int(stmt, MEDIA_PVR_CONTENT_LOCK);
+
+ _pvr->content_watch = sqlite3_column_int(stmt, MEDIA_PVR_CONTENT_WATCH);
+
+ _pvr->has_audio_only = sqlite3_column_int(stmt, MEDIA_PVR_HAS_AUDIO_ONLY);
+
+ _pvr->is_local_record = sqlite3_column_int(stmt, MEDIA_PVR_IS_LOCAL_RECORDED);
+
+ _pvr->resolution = sqlite3_column_int(stmt, MEDIA_PVR_RESOLUTION);
+
+ _pvr->aspectratio = sqlite3_column_int(stmt, MEDIA_PVR_ASPECTRATIO);
+
+ _pvr->sports_type = sqlite3_column_int(stmt, MEDIA_PVR_SPORTS_TYPE);
+
+ _pvr->guidance_length = sqlite3_column_int(stmt, MEDIA_PVR_GUIDANCE_LENGTH);
+
+ _pvr->tvmode = sqlite3_column_int(stmt, MEDIA_PVR_TVMODE);
+
+ _pvr->play_count = sqlite3_column_int(stmt, MEDIA_PVR_PLAY_COUNT);
+
+ _pvr->highlight = sqlite3_column_int(stmt, MEDIA_PVR_HIGHLIGHT);
+
+ return;
+}
+
+int _media_db_get_pvr(filter_h filter, media_pvr_cb callback, void *user_data)
+{
+ int ret = MEDIA_CONTENT_ERROR_NONE;
+ char select_query[DEFAULT_QUERY_SIZE] = {0, };
+ char *condition_query = NULL;
+ char *option_query = NULL;
+ sqlite3_stmt *stmt = NULL;
+ filter_s *_filter = (filter_s *)filter;
+
+ memset(select_query, 0x00, sizeof(select_query));
+
+ if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+ snprintf(select_query, sizeof(select_query), SELECT_PVR_LIST_BY_STORAGE_ID, _filter->storage_id);
+ else
+ SAFE_STRLCAT(select_query, SELECT_PVR_LIST, sizeof(select_query));
+
+ ret = __media_db_make_query(filter, &condition_query, &option_query);
+ content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+ ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
+ SAFE_FREE(condition_query);
+ SAFE_FREE(option_query);
+ content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ media_pvr_s *_pvr = (media_pvr_s*)calloc(1, sizeof(media_pvr_s));
+
+ if (_pvr == NULL) {
+ content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
+ SQLITE3_FINALIZE(stmt);
+ return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
+ }
+
+ _media_pvr_item_get_detail(stmt, (media_pvr_h)_pvr);
+
+ if (callback((media_pvr_h)_pvr, user_data) == false) {
+ media_pvr_destroy((media_pvr_h) _pvr);
+ break;
+ }
+
+ media_pvr_destroy((media_pvr_h) _pvr);
+ }
+
+ SQLITE3_FINALIZE(stmt);
+
+ return ret;
+}
+
+typedef enum {
+ MEDIA_UHD_MEDIA_ID = 0,
+ MEDIA_UHD_STORAGE_ID,
+ MEDIA_UHD_PATH,
+ MEDIA_UHD_SIZE,
+ MEDIA_UHD_CONTENT_ID,
+ MEDIA_UHD_CONTENT_TITLE,
+ MEDIA_UHD_FILE_NAME,
+ MEDIA_UHD_FOLDER_ID,
+ MEDIA_UHD_RELEASE_DATE,
+ MEDIA_UHD_MODIFIED_TIME,
+ MEDIA_UHD_PLAYED_POSITION,
+ MEDIA_UHD_SUB_TYPE,
+ MEDIA_UHD_PLAYED_COUNT,
+} media_uhd_field_e;
+
+void _media_uhd_item_get_detail(sqlite3_stmt* stmt, media_uhd_h uhd)
+{
+ media_uhd_s *_uhd = (media_uhd_s*)uhd;
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_MEDIA_ID)))
+ _uhd->media_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_MEDIA_ID));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_STORAGE_ID)))
+ _uhd->storage_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_STORAGE_ID));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_PATH)))
+ _uhd->path = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_PATH));
+
+ _uhd->size = (unsigned long long)sqlite3_column_int64(stmt, MEDIA_UHD_SIZE);
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_ID)))
+ _uhd->content_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_ID));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_TITLE)))
+ _uhd->content_title = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_TITLE));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_FILE_NAME)))
+ _uhd->file_name = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_FILE_NAME));
+
+ if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_RELEASE_DATE)))
+ _uhd->release_date = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_RELEASE_DATE));
+
+ _uhd->modified_time = sqlite3_column_int(stmt, MEDIA_UHD_MODIFIED_TIME);
+ _uhd->played_position = sqlite3_column_int(stmt, MEDIA_UHD_PLAYED_POSITION);
+ _uhd->sub_type = sqlite3_column_int(stmt, MEDIA_UHD_SUB_TYPE);
+ _uhd->played_count = sqlite3_column_int(stmt, MEDIA_UHD_PLAYED_COUNT);
+
+ return;
+}
+
+int _media_db_get_uhd(filter_h filter, media_uhd_cb callback, void *user_data)
+{
+ int ret = MEDIA_CONTENT_ERROR_NONE;
+ char select_query[DEFAULT_QUERY_SIZE] = {0, };
+ char *condition_query = NULL;
+ char *option_query = NULL;
+ sqlite3_stmt *stmt = NULL;
+ filter_s *_filter = (filter_s *)filter;
+
+ memset(select_query, 0x00, sizeof(select_query));
+
+ if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+ snprintf(select_query, sizeof(select_query), SELECT_UHD_LIST_BY_STORAGE_ID, _filter->storage_id);
+ else
+ SAFE_STRLCAT(select_query, SELECT_UHD_LIST, sizeof(select_query));
+
+ ret = __media_db_make_query(filter, &condition_query, &option_query);
+ content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+ ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
+ SAFE_FREE(condition_query);
+ SAFE_FREE(option_query);
+ content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+ while (sqlite3_step(stmt) == SQLITE_ROW) {
+ media_uhd_s *_uhd = (media_uhd_s*)calloc(1, sizeof(media_uhd_s));
+
+ if (_uhd == NULL) {
+ content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
+ SQLITE3_FINALIZE(stmt);
+ return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
+ }
+
+ _media_uhd_item_get_detail(stmt, (media_uhd_h)_uhd);
+
+ if (callback((media_uhd_h)_uhd, user_data) == false) {
+ media_uhd_destroy((media_uhd_h) _uhd);
+ break;
+ }
+ media_uhd_destroy((media_uhd_h) _uhd);
+ }
+
+ SQLITE3_FINALIZE(stmt);
+
+ return ret;
+}
+#endif