2 * Copyright (c) 2011 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <media_content.h>
19 #include <media_info_private.h>
20 #include <media_util_private.h>
22 static char * __media_db_get_group_name(media_group_e group);
23 static int __media_db_make_query(filter_h filter, attribute_h attr, char *select_query, int select_query_size, char **condition_query, char **option_query);
25 static char * __media_db_get_group_name(media_group_e group)
28 case MEDIA_CONTENT_GROUP_DISPLAY_NAME:
29 return (char *)DB_FIELD_MEDIA_DISPLAY_NAME;
30 case MEDIA_CONTENT_GROUP_TYPE:
31 return (char *)DB_FIELD_MEDIA_TYPE;
32 case MEDIA_CONTENT_GROUP_MIME_TYPE:
33 return (char *) DB_FIELD_MEDIA_MIME_TYPE;
34 case MEDIA_CONTENT_GROUP_SIZE:
35 return (char *) DB_FIELD_MEDIA_SIZE;
36 case MEDIA_CONTENT_GROUP_ADDED_TIME:
37 return (char *) DB_FIELD_MEDIA_ADDED_TIME;
38 case MEDIA_CONTENT_GROUP_MODIFIED_TIME:
39 return (char *) DB_FIELD_MEDIA_MODIFIED_TIME;
40 case MEDIA_CONTENT_GROUP_TITLE:
41 return (char *) DB_FIELD_MEDIA_TITLE;
42 case MEDIA_CONTENT_GROUP_ARTIST:
43 return (char *) DB_FIELD_MEDIA_ARTIST;
44 case MEDIA_CONTENT_GROUP_ALBUM_ARTIST:
45 return (char *) DB_FIELD_MEDIA_ALBUM_ARTIST;
46 case MEDIA_CONTENT_GROUP_GENRE:
47 return (char *) DB_FIELD_MEDIA_GENRE;
48 case MEDIA_CONTENT_GROUP_COMPOSER:
49 return (char *) DB_FIELD_MEDIA_COMPOSER;
50 case MEDIA_CONTENT_GROUP_YEAR:
51 return (char *) DB_FIELD_MEDIA_YEAR;
52 case MEDIA_CONTENT_GROUP_RECORDED_DATE:
53 return (char *) DB_FIELD_MEDIA_RECORDED_DATE;
54 case MEDIA_CONTENT_GROUP_COPYRIGHT:
55 return (char *) DB_FIELD_MEDIA_COPYRIGHT;
56 case MEDIA_CONTENT_GROUP_TRACK_NUM:
57 return (char *) DB_FIELD_MEDIA_TRACK_NUM;
58 case MEDIA_CONTENT_GROUP_DESCRIPTION:
59 return (char *) DB_FIELD_MEDIA_DESCRIPTION;
60 case MEDIA_CONTENT_GROUP_LONGITUDE:
61 return (char *) DB_FIELD_MEDIA_LONGITUDE;
62 case MEDIA_CONTENT_GROUP_LATITUDE:
63 return (char *) DB_FIELD_MEDIA_LATITUDE;
64 case MEDIA_CONTENT_GROUP_ALTITUDE:
65 return (char *) DB_FIELD_MEDIA_ALTITUDE;
66 case MEDIA_CONTENT_GROUP_BURST_IMAGE:
67 return (char *) DB_FIELD_MEDIA_BURST_ID;
68 case MEDIA_CONTENT_GROUP_RATING:
69 return (char *) DB_FIELD_MEDIA_RATING;
70 case MEDIA_CONTENT_GROUP_AUTHOR:
71 return (char *) DB_FIELD_MEDIA_AUTHOR;
72 case MEDIA_CONTENT_GROUP_PROVIDER:
73 return (char *) DB_FIELD_MEDIA_PROVIDER;
74 case MEDIA_CONTENT_GROUP_CONTENT_NAME:
75 return (char *) DB_FIELD_MEDIA_CONTENT_NAME;
76 case MEDIA_CONTENT_GROUP_CATEGORY:
77 return (char *) DB_FIELD_MEDIA_CATEGORY;
78 case MEDIA_CONTENT_GROUP_LOCATION_TAG:
79 return (char *) DB_FIELD_MEDIA_LOCATION_TAG;
80 case MEDIA_CONTENT_GROUP_AGE_RATING:
81 return (char *) DB_FIELD_MEDIA_AGE_RATING;
82 case MEDIA_CONTENT_GROUP_KEYWORD:
83 return (char *) DB_FIELD_MEDIA_KEYWORD;
84 case MEDIA_CONTENT_GROUP_WEATHER:
85 return (char *) DB_FIELD_MEDIA_WEATHER;
86 #ifdef _USE_TV_PROFILE
87 case MEDIA_CONTENT_GROUP_MODIFIED_MONTH:
88 return (char *) DB_FIELD_MEDIA_MODIFIED_DATE;
89 case MEDIA_CONTENT_GROUP_MODIFIED_DATE:
90 return (char *) DB_FIELD_MEDIA_MODIFIED_DATE;
92 #ifdef _USE_SENIOR_MODE
93 case MEDIA_CONTENT_GROUP_CONTACT:
94 return (char *) DB_FIELD_MEDIA_CONTACT;
96 #ifdef _USE_TV_PROFILE
97 case MEDIA_CONTENT_GROUP_ALBUM:
98 return (char *) DB_FIELD_MEDIA_ALBUM;
99 case MEDIA_PVR_GROUP_DURATION:
100 return (char *) DB_FIELD_PVR_DURATION;
101 case MEDIA_PVR_GROUP_TIME_ZONE:
102 return (char *) DB_FIELD_PVR_TIME_ZONE;
103 case MEDIA_PVR_GROUP_PTC:
104 return (char *) DB_FIELD_PVR_PTC;
105 case MEDIA_PVR_GROUP_MAJOR:
106 return (char *) DB_FIELD_PVR_MAJOR;
107 case MEDIA_PVR_GROUP_MINOR:
108 return (char *) DB_FIELD_PVR_MINOR;
109 case MEDIA_PVR_GROUP_CHANNEL_TYPE:
110 return (char *) DB_FIELD_PVR_CHANNEL_TYPE;
111 case MEDIA_PVR_GROUP_CHANNEL_NAME:
112 return (char *) DB_FIELD_PVR_CHANNEL_NAME;
113 case MEDIA_PVR_GROUP_CHANNEL_NUM:
114 return (char *) DB_FIELD_PVR_CHANNEL_NUM;
115 case MEDIA_PVR_GROUP_PROGRAM_TITLE:
116 return (char *) DB_FIELD_PVR_PROGRAM_TITLE;
117 case MEDIA_PVR_GROUP_PROGRAM_NUM:
118 return (char *) DB_FIELD_PVR_PROGRAM_NUM;
119 case MEDIA_PVR_GROUP_PROGRAM_CRID:
120 return (char *) DB_FIELD_PVR_PROGRAM_CRID;
121 case MEDIA_PVR_GROUP_GUIDANCE:
122 return (char *) DB_FIELD_PVR_GUIDANCE;
123 case MEDIA_PVR_GROUP_SYNOPSIS:
124 return (char *) DB_FIELD_PVR_SYNOPSIS;
125 case MEDIA_PVR_GROUP_GENRE:
126 return (char *) DB_FIELD_PVR_GENRE;
127 case MEDIA_PVR_GROUP_LANGUAGE:
128 return (char *) DB_FIELD_PVR_LANGUAGE;
129 case MEDIA_PVR_GROUP_EMBARGO_TIME:
130 return (char *) DB_FIELD_PVR_EMBARGO_TIME;
131 case MEDIA_PVR_GROUP_EXPIRY_TIME:
132 return (char *) DB_FIELD_PVR_EXPIRY_TIME;
133 case MEDIA_PVR_GROUP_START_TIME:
134 return (char *) DB_FIELD_PVR_START_TIME;
135 case MEDIA_PVR_GROUP_PROGRAM_START_TIME:
136 return (char *) DB_FIELD_PVR_PROGRAM_START_TIME;
137 case MEDIA_PVR_GROUP_PROGRAM_END_TIME:
138 return (char *) DB_FIELD_PVR_PROGRAM_END_TIME;
139 case MEDIA_PVR_GROUP_PROGRAM_DATE:
140 return (char *) DB_FIELD_PVR_PROGRAM_DATE;
141 case MEDIA_PVR_GROUP_PARENTAL_RATING:
142 return (char *) DB_FIELD_PVR_PARENTAL_RATING;
143 case MEDIA_PVR_GROUP_TIMER_RECORD:
144 return (char *) DB_FIELD_PVR_TIMER_RECORD;
145 case MEDIA_PVR_GROUP_SERIES_RECORD:
146 return (char *) DB_FIELD_PVR_SERIES_RECORD;
147 case MEDIA_PVR_GROUP_HD:
148 return (char *) DB_FIELD_PVR_HD;
149 case MEDIA_PVR_GROUP_SUBTITLE:
150 return (char *) DB_FIELD_PVR_SUBTITLE;
151 case MEDIA_PVR_GROUP_TTX:
152 return (char *) DB_FIELD_PVR_TTX;
153 case MEDIA_PVR_GROUP_AD:
154 return (char *) DB_FIELD_PVR_AD;
155 case MEDIA_PVR_GROUP_HARDOF_HEARINGRADIO:
156 return (char *) DB_FIELD_PVR_HARDOF_HEARINGRADIO;
157 case MEDIA_PVR_GROUP_DATA_SERVICE:
158 return (char *) DB_FIELD_PVR_DATA_SERVICE;
159 case MEDIA_PVR_GROUP_CONTENT_LOCK:
160 return (char *) DB_FIELD_PVR_CONTENT_LOCK;
161 case MEDIA_PVR_GROUP_CONTENT_WATCH:
162 return (char *) DB_FIELD_PVR_CONTENT_WATCH;
163 case MEDIA_PVR_GROUP_HAS_AUDIO_ONLY:
164 return (char *) DB_FIELD_PVR_HAS_AUDIO_ONLY;
165 case MEDIA_PVR_GROUP_IS_LOCAL_RECORDED:
166 return (char *) DB_FIELD_PVR_IS_LOCAL_RECORD;
167 case MEDIA_PVR_GROUP_RESOLUTION:
168 return (char *) DB_FIELD_PVR_RESOLUTION;
169 case MEDIA_PVR_GROUP_ASPECTRATIO:
170 return (char *) DB_FIELD_PVR_ASPECTRATIO;
171 case MEDIA_PVR_GROUP_MODIFIED_MONTH:
172 return (char *) DB_FIELD_PVR_MODIFIED_DATE;
173 case MEDIA_PVR_GROUP_MODIFIED_DATE:
174 return (char *) DB_FIELD_PVR_MODIFIED_DATE;
175 case MEDIA_PVR_GROUP_SPORTS_TYPE:
176 return (char *) DB_FIELD_PVR_SPORTS_TYPE;
177 case MEDIA_PVR_GROUP_GUIDANCE_LENGTH:
178 return (char *) DB_FIELD_PVR_GUIDANCE_LENGTH;
179 case MEDIA_PVR_GROUP_TVMODE:
180 return (char *) DB_FIELD_PVR_TVMODE;
181 case MEDIA_PVR_GROUP_PLAY_COUNT:
182 return (char *) DB_FIELD_PVR_PLAY_COUNT;
183 case MEDIA_PVR_GROUP_PRIVATE_DATA:
184 return (char *) DB_FIELD_PVR_PRIVATE_DATA;
185 case MEDIA_UHD_GROUP_CONTENT_TITLE:
186 return (char *) DB_FIELD_UHD_CONTENT_TITLE;
187 case MEDIA_UHD_GROUP_RELEASE_DATE:
188 return (char *) DB_FIELD_UHD_RELEASE_DATE;
189 case MEDIA_UHD_GROUP_SUB_TYPE:
190 return (char *) DB_FIELD_UHD_SUB_TYPE;
191 case MEDIA_UHD_GROUP_FILE_NAME:
192 return (char *) DB_FIELD_UHD_FILE_NAME;
193 case MEDIA_UHD_GROUP_PLAYED_COUNT:
194 return (char *) DB_FIELD_UHD_PLAYED_COUNT;
203 static int __media_db_make_query(filter_h filter, attribute_h attr, char *select_query, int select_query_size, char **condition_query, char **option_query)
205 int ret = MEDIA_CONTENT_ERROR_NONE;
206 filter_s *_filter = NULL;
208 if (filter != NULL) {
209 _filter = (filter_s*)filter;
211 if (STRING_VALID(_filter->condition)) {
212 ret = _media_filter_attribute_generate(attr, filter, condition_query);
213 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
216 if (_filter->is_full_order == false) {
217 /* Process for filter v1 */
218 ret = _media_filter_attribute_option_generate(attr, filter, option_query);
219 if (ret != MEDIA_CONTENT_ERROR_NONE) {
220 SAFE_FREE(*condition_query);
224 /* Process for filter v2 */
225 ret = _media_filter_attribute_option_generate_with_full_query(attr, filter, option_query);
226 if (ret != MEDIA_CONTENT_ERROR_NONE) {
227 SAFE_FREE(*condition_query);
232 if (STRING_VALID(*condition_query)) {
233 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, select_query_size);
234 SAFE_STRLCAT(select_query, QUERY_KEYWORD_AND, select_query_size);
241 int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *group_count)
243 int ret = MEDIA_CONTENT_ERROR_NONE;
244 sqlite3_stmt *stmt = NULL;
245 char select_query[MAX_QUERY_SIZE] = {0, };
246 char *condition_query = NULL;
247 char *option_query = NULL;
248 attribute_h attr = NULL;
249 filter_s *_filter = (filter_s*)filter;
251 attr = _content_get_attirbute_handle();
252 memset(select_query, 0x00, sizeof(select_query));
254 switch (group_type) {
255 case MEDIA_GROUP_NONE:
256 case MEDIA_GROUP_TAG_BY_MEDIA_ID:
257 case MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID:
258 case MEDIA_GROUP_FACE_BY_MEDIA_ID:
260 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
261 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
264 case MEDIA_GROUP_ALBUM:
265 attr = _content_get_alias_attirbute_handle();
267 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
268 snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT, _filter->storage_id);
270 snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT, DB_TABLE_MEDIA_VIEW);
273 case MEDIA_GROUP_FOLDER:
274 attr = _content_get_alias_attirbute_handle();
275 if (!SAFE_STRLCPY(select_query, SELECT_FOLDER_COUNT, sizeof(select_query))) {
276 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
277 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
280 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
281 snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id);
283 snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT, DB_TABLE_MEDIA_VIEW);
286 case MEDIA_GROUP_PLAYLIST:
287 if (!SAFE_STRLCPY(select_query, SELECT_PLAYLIST_COUNT, sizeof(select_query))) {
288 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
289 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
292 case MEDIA_GROUP_TAG:
293 if (!SAFE_STRLCPY(select_query, SELECT_TAG_COUNT, sizeof(select_query))) {
294 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
295 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
298 case MEDIA_GROUP_BOOKMARK:
299 attr = _content_get_alias_attirbute_handle();
301 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
302 snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT, _filter->storage_id);
304 snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT, DB_TABLE_MEDIA_VIEW);
307 case MEDIA_GROUP_STORAGE:
308 if (!SAFE_STRLCPY(select_query, SELECT_STORAGE_COUNT, sizeof(select_query))) {
309 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
310 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
313 case MEDIA_GROUP_FACE:
314 attr = _content_get_alias_attirbute_handle();
316 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
317 snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT, _filter->storage_id);
319 snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT, DB_TABLE_MEDIA_VIEW);
321 #ifdef _USE_TV_PROFILE
322 case MEDIA_GROUP_PVR:
323 case MEDIA_GROUP_UHD:
327 media_content_error("Invalid group type [%d]", group_type);
328 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
333 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
334 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
336 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
337 SAFE_FREE(condition_query);
338 SAFE_FREE(option_query);
339 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
341 while (sqlite3_step(stmt) == SQLITE_ROW)
342 *group_count = (int)sqlite3_column_int(stmt, 0);
344 SQLITE3_FINALIZE(stmt);
349 int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *group_count)
351 int ret = MEDIA_CONTENT_ERROR_NONE;
352 sqlite3_stmt *stmt = NULL;
353 char select_query[MAX_QUERY_SIZE] = {0, };
354 char *condition_query = NULL;
355 char *option_query = NULL;
356 attribute_h attr = NULL;
357 filter_s *_filter = (filter_s*)filter;
359 attr = _content_get_attirbute_handle();
360 memset(select_query, 0x00, sizeof(select_query));
361 #ifdef _USE_TV_PROFILE
362 if (group < MEDIA_PVR_GROUP_DURATION) { /*media content*/
363 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
364 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), _filter->storage_id);
366 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), DB_TABLE_MEDIA_VIEW);
367 } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) { /*pvr content*/
368 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
369 snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_COUNT_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
371 snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_COUNT, __media_db_get_group_name(group));
372 } else { /*uhd content*/
373 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
374 snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_COUNT_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
376 snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_COUNT, __media_db_get_group_name(group));
379 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
380 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), _filter->storage_id);
382 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), DB_TABLE_MEDIA_VIEW);
384 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
385 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
387 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
388 if (STRING_VALID(condition_query))
389 SAFE_STRLCAT(select_query, condition_query, sizeof(select_query));
390 if (STRING_VALID(option_query))
391 SAFE_STRLCAT(select_query, option_query, sizeof(select_query));
392 SAFE_STRLCAT(select_query, QUERY_KEYWORD_BRACKET, sizeof(select_query));
394 SAFE_FREE(condition_query);
395 SAFE_FREE(option_query);
397 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
398 SAFE_FREE(condition_query);
399 SAFE_FREE(option_query);
400 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
402 while (sqlite3_step(stmt) == SQLITE_ROW)
403 *group_count = (int)sqlite3_column_int(stmt, 0);
405 SQLITE3_FINALIZE(stmt);
410 int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_cb callback, void *user_data)
412 int ret = MEDIA_CONTENT_ERROR_NONE;
413 char select_query[MAX_QUERY_SIZE] = {0, };
414 char *condition_query = NULL;
415 char *option_query = NULL;
417 sqlite3_stmt *stmt = NULL;
418 attribute_h attr = NULL;
419 filter_s *_filter = (filter_s*)filter;
421 attr = _content_get_attirbute_handle();
422 memset(select_query, 0x00, sizeof(select_query));
423 #ifdef _USE_TV_PROFILE
424 if (group < MEDIA_PVR_GROUP_DURATION) { /*media content */
425 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
426 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), _filter->storage_id);
428 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), DB_TABLE_MEDIA_VIEW);
429 } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) { /*pvr content */
430 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
431 snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_LIST_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
433 snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_LIST, __media_db_get_group_name(group));
434 } else { /* uhd content */
435 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
436 snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_LIST_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
438 snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_LIST, __media_db_get_group_name(group));
441 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
442 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), _filter->storage_id);
444 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), DB_TABLE_MEDIA_VIEW);
446 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
447 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
449 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
450 SAFE_FREE(condition_query);
451 SAFE_FREE(option_query);
452 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
454 while (sqlite3_step(stmt) == SQLITE_ROW) {
455 name = g_strdup((const char *)sqlite3_column_text(stmt, 0));
457 if (callback(name, user_data) == false) {
465 SQLITE3_FINALIZE(stmt);
469 #ifdef _USE_TV_PROFILE
470 int _media_db_get_media_group_and_count(media_group_e group, filter_h filter, media_group_and_count_cb callback, void *user_data)
472 int ret = MEDIA_CONTENT_ERROR_NONE;
473 char select_query[DEFAULT_QUERY_SIZE] = {0, };
474 char group_query[DEFAULT_QUERY_SIZE] = {0, };
475 char *condition_query = NULL;
476 char *option_query = NULL;
478 sqlite3_stmt *stmt = NULL;
479 attribute_h attr = NULL;
480 filter_s *_filter = (filter_s*)filter;
482 attr = _content_get_attirbute_handle();
483 memset(select_query, 0x00, sizeof(select_query));
484 memset(group_query, 0x00, sizeof(group_query));
486 char* group_name = __media_db_get_group_name(group);
487 if (!STRING_VALID(group_name)) {
488 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
489 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
492 if (group < MEDIA_PVR_GROUP_DURATION) { /*media content*/
493 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
494 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_AND_COUNT, group_name, _filter->storage_id);
496 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_AND_COUNT, group_name, DB_TABLE_MEDIA_VIEW);
497 } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) {/*pvr content*/
498 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
499 snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_AND_COUNT_BY_STORAGE_ID, group_name, _filter->storage_id);
501 snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_AND_COUNT, group_name);
502 } else {/*uhd content*/
503 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
504 snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_AND_COUNT_BY_STORAGE_ID, group_name, _filter->storage_id);
506 snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_AND_COUNT, group_name);
509 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
510 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
512 if (STRING_VALID(option_query))
513 snprintf(group_query, sizeof(group_query), "GROUP BY %s %s", group_name, option_query);
515 snprintf(group_query, sizeof(group_query), "GROUP BY %s", group_name);
517 ret = _content_query_prepare(&stmt, select_query, condition_query, group_query);
518 SAFE_FREE(condition_query);
519 SAFE_FREE(option_query);
520 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
522 while (sqlite3_step(stmt) == SQLITE_ROW) {
523 if (STRING_VALID((const char *)sqlite3_column_text(stmt, 0)))
524 name = strdup((const char *)sqlite3_column_text(stmt, 0));
526 if (callback(name, sqlite3_column_int(stmt, 1), user_data) == false) {
534 SQLITE3_FINALIZE(stmt);
539 int _media_db_get_album(filter_h filter, media_album_cb callback, void *user_data)
541 int ret = MEDIA_CONTENT_ERROR_NONE;
542 char select_query[MAX_QUERY_SIZE] = {0, };
543 char *condition_query = NULL;
544 char *option_query = NULL;
545 sqlite3_stmt *stmt = NULL;
546 attribute_h attr = NULL;
547 filter_s *_filter = (filter_s*)filter;
549 attr = _content_get_alias_attirbute_handle();
550 memset(select_query, 0x00, sizeof(select_query));
552 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
553 snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST, _filter->storage_id);
555 snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST, DB_TABLE_MEDIA_VIEW);
557 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
558 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
560 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
561 SAFE_FREE(condition_query);
562 SAFE_FREE(option_query);
563 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
565 while (sqlite3_step(stmt) == SQLITE_ROW) {
566 media_album_s *album = (media_album_s*)calloc(1, sizeof(media_album_s));
569 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
570 SQLITE3_FINALIZE(stmt);
571 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
574 album->album_id = (int)sqlite3_column_int(stmt, 0);
575 album->name = g_strdup((const char *)sqlite3_column_text(stmt, 1));
576 album->artist = g_strdup((const char *)sqlite3_column_text(stmt, 2));
577 album->album_art_path = g_strdup((const char *)sqlite3_column_text(stmt, 3));
579 if (callback((media_album_h)album, user_data) == false) {
580 media_album_destroy((media_album_h)album);
584 media_album_destroy((media_album_h)album);
587 SQLITE3_FINALIZE(stmt);
592 int _media_db_get_folder(filter_h filter, media_folder_cb callback, void *user_data)
594 int ret = MEDIA_CONTENT_ERROR_NONE;
595 char select_query[MAX_QUERY_SIZE] = {0, };
596 char *condition_query = NULL;
597 char *option_query = NULL;
598 sqlite3_stmt *stmt = NULL;
599 attribute_h attr = NULL;
600 filter_s *_filter = (filter_s*)filter;
601 char *tmp_path = NULL;
602 char repl_path[MAX_PATH_LEN] = {0, };
604 attr = _content_get_alias_attirbute_handle();
605 memset(select_query, 0x00, sizeof(select_query));
607 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
608 snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id);
610 snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST, DB_TABLE_MEDIA_VIEW);
612 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
613 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
615 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
617 SAFE_FREE(condition_query);
618 SAFE_FREE(option_query);
619 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
621 while (sqlite3_step(stmt) == SQLITE_ROW) {
622 media_folder_s *_folder = (media_folder_s*)calloc(1, sizeof(media_folder_s));
624 if (_folder == NULL) {
625 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
626 SQLITE3_FINALIZE(stmt);
627 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
630 _folder->folder_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
632 tmp_path = g_strdup((const char *)sqlite3_column_text(stmt, 1));
633 _media_content_rollback_path(tmp_path, repl_path);
634 _folder->path = g_strdup(repl_path);
637 _folder->name = g_strdup((const char *)sqlite3_column_text(stmt, 2));
638 _folder->storage_type = (int)sqlite3_column_int(stmt, 3);
639 _folder->modified_time = (int)sqlite3_column_int(stmt, 4);
640 _folder->storage_uuid = g_strdup((const char *)sqlite3_column_text(stmt, 5));
641 _folder->folder_order = (int)sqlite3_column_int(stmt, 6);
643 if (callback((media_folder_h)_folder, user_data) == false) {
644 media_folder_destroy((media_folder_h) _folder);
648 media_folder_destroy((media_folder_h) _folder);
651 SQLITE3_FINALIZE(stmt);
656 int _media_db_get_playlist(filter_h filter, media_playlist_cb callback, void *user_data)
658 int ret = MEDIA_CONTENT_ERROR_NONE;
659 char select_query[MAX_QUERY_SIZE] = {0, };
660 char *condition_query = NULL;
661 char *option_query = NULL;
662 sqlite3_stmt *stmt = NULL;
663 attribute_h attr = NULL;
664 char *tmp_path = NULL;
665 char repl_path[MAX_PATH_LEN] = {0, };
667 attr = _content_get_attirbute_handle();
668 memset(select_query, 0x00, sizeof(select_query));
670 if (!SAFE_STRLCPY(select_query, SELECT_PLAYLIST_LIST, sizeof(select_query))) {
671 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
672 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
675 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
676 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
678 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
679 SAFE_FREE(condition_query);
680 SAFE_FREE(option_query);
681 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
683 while (sqlite3_step(stmt) == SQLITE_ROW) {
684 media_playlist_s *_playlist = (media_playlist_s*)calloc(1, sizeof(media_playlist_s));
686 if (_playlist == NULL) {
687 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
688 SQLITE3_FINALIZE(stmt);
689 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
692 _playlist->playlist_id = (int)sqlite3_column_int(stmt, 0);
693 _playlist->name = g_strdup((const char *)sqlite3_column_text(stmt, 1));
695 memset(repl_path, 0x00, sizeof(repl_path));
696 tmp_path = g_strdup((const char *)sqlite3_column_text(stmt, 2));
697 if (STRING_VALID(tmp_path)) {
698 _media_content_rollback_path(tmp_path, repl_path);
699 _playlist->thumbnail_path = g_strdup(repl_path);
701 _playlist->thumbnail_path = NULL;
706 if (callback((media_playlist_h)_playlist, user_data) == false) {
707 media_playlist_destroy((media_playlist_h)_playlist);
710 media_playlist_destroy((media_playlist_h)_playlist);
713 SQLITE3_FINALIZE(stmt);
718 int _media_db_get_playlist_item(int playlist_id, filter_h filter, playlist_member_cb callback, void *user_data)
720 int ret = MEDIA_CONTENT_ERROR_NONE;
721 char select_query[MAX_QUERY_SIZE] = {0, };
722 char *condition_query = NULL;
723 char *option_query = NULL;
724 sqlite3_stmt *stmt = NULL;
725 attribute_h attr = NULL;
727 attr = _content_get_attirbute_handle();
728 memset(select_query, 0x00, sizeof(select_query));
730 /*snprintf(select_query, sizeof(select_query), SELECT_PLAYLIST_ITEM_ID_FROM_PLAYLIST_VIEW, playlist_id);*/
731 snprintf(select_query, sizeof(select_query), SELECT_PLAYLIST_ITEM_ALL_FROM_PLAYLIST_VIEW, playlist_id);
733 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
734 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
736 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
737 SAFE_FREE(condition_query);
738 SAFE_FREE(option_query);
739 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
741 while (sqlite3_step(stmt) == SQLITE_ROW) {
742 int playlist_member_id = 0;
743 playlist_member_id = (int)sqlite3_column_int(stmt, MEDIA_INFO_ITEM_MAX); /*MEDIA_INFO_ITEM_MAX is pm_id*/
745 media_info_s *_media = (media_info_s*)calloc(1, sizeof(media_info_s));
747 if (_media == NULL) {
748 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
749 SQLITE3_FINALIZE(stmt);
750 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
753 _media_info_item_get_detail(stmt, (media_info_h)_media);
755 if (callback(playlist_member_id, (media_info_h)_media, user_data) == false) {
756 media_info_destroy((media_info_h)_media);
759 media_info_destroy((media_info_h)_media);
763 SQLITE3_FINALIZE(stmt);
768 int _media_db_get_tag(const char *media_id, filter_h filter, media_tag_cb callback, void *user_data)
770 int ret = MEDIA_CONTENT_ERROR_NONE;
771 char select_query[MAX_QUERY_SIZE] = {0, };
772 char *condition_query = NULL;
773 char *option_query = NULL;
774 sqlite3_stmt *stmt = NULL;
775 attribute_h attr = NULL;
777 attr = _content_get_attirbute_handle();
778 memset(select_query, 0x00, sizeof(select_query));
780 if (!STRING_VALID(media_id)) {
781 if (!SAFE_STRLCPY(select_query, SELECT_TAG_LIST, sizeof(select_query))) {
782 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
783 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
786 snprintf(select_query, sizeof(select_query), SELECT_TAG_LIST_BY_MEDIA_ID, media_id);
788 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
789 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
791 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
793 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
794 SAFE_FREE(condition_query);
795 SAFE_FREE(option_query);
796 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
798 while (sqlite3_step(stmt) == SQLITE_ROW) {
799 media_tag_s *_tag = (media_tag_s*)calloc(1, sizeof(media_tag_s));
802 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
803 SQLITE3_FINALIZE(stmt);
804 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
807 _tag->tag_id = (int)sqlite3_column_int(stmt, 0);
808 _tag->name = g_strdup((const char *)sqlite3_column_text(stmt, 1));
810 if (callback((media_tag_h)_tag, user_data) == false) {
811 media_tag_destroy((media_tag_h)_tag);
814 media_tag_destroy((media_tag_h)_tag);
817 SQLITE3_FINALIZE(stmt);
822 int _media_db_get_bookmark(const char *media_id, filter_h filter, media_bookmark_cb callback, void *user_data)
824 int ret = MEDIA_CONTENT_ERROR_NONE;
825 char select_query[MAX_QUERY_SIZE] = {0, };
826 char *condition_query = NULL;
827 char *option_query = NULL;
828 sqlite3_stmt *stmt = NULL;
829 attribute_h attr = NULL;
830 filter_s *_filter = (filter_s*)filter;
832 attr = _content_get_alias_attirbute_handle();
834 memset(select_query, 0x00, sizeof(select_query));
836 if (STRING_VALID(media_id)) { //get bookmark by media_id
837 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
838 snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, _filter->storage_id, media_id);
840 snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, DB_TABLE_MEDIA_VIEW, media_id);
842 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
843 snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST, _filter->storage_id);
845 snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST, DB_TABLE_MEDIA_VIEW);
848 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
849 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
851 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
852 SAFE_FREE(condition_query);
853 SAFE_FREE(option_query);
854 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
856 while (sqlite3_step(stmt) == SQLITE_ROW) {
857 media_bookmark_s *bookmark = (media_bookmark_s*)calloc(1, sizeof(media_bookmark_s));
859 if (bookmark == NULL) {
860 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
861 SQLITE3_FINALIZE(stmt);
862 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
865 bookmark->bookmark_id = (int)sqlite3_column_int(stmt, 0);
866 bookmark->media_id = g_strdup((const char *)sqlite3_column_text(stmt, 1));
867 bookmark->marked_time = (int)sqlite3_column_int(stmt, 2);
868 bookmark->thumbnail_path = g_strdup((const char *)sqlite3_column_text(stmt, 3));
869 bookmark->name = g_strdup((const char *)sqlite3_column_text(stmt, 4));
871 if (callback((media_bookmark_h)bookmark, user_data) == false) {
872 media_bookmark_destroy((media_bookmark_h)bookmark);
876 media_bookmark_destroy((media_bookmark_h)bookmark);
879 SQLITE3_FINALIZE(stmt);
885 int _media_db_get_face(const char *media_id, filter_h filter, media_face_cb callback, void *user_data)
887 int ret = MEDIA_CONTENT_ERROR_NONE;
888 char select_query[MAX_QUERY_SIZE] = {0, };
889 char *condition_query = NULL;
890 char *option_query = NULL;
891 sqlite3_stmt *stmt = NULL;
892 attribute_h attr = NULL;
893 filter_s *_filter = (filter_s*)filter;
895 attr = _content_get_alias_attirbute_handle();
897 memset(select_query, 0x00, sizeof(select_query));
899 if (STRING_VALID(media_id)) { //get face by media_id
900 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
901 snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, _filter->storage_id, media_id);
903 snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, DB_TABLE_MEDIA_VIEW, media_id);
905 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
906 snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST, _filter->storage_id);
908 snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST, DB_TABLE_MEDIA_VIEW);
911 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
912 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
914 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
915 SAFE_FREE(condition_query);
916 SAFE_FREE(option_query);
917 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
919 while (sqlite3_step(stmt) == SQLITE_ROW) {
920 media_face_s *face = (media_face_s*)calloc(1, sizeof(media_face_s));
923 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
924 SQLITE3_FINALIZE(stmt);
925 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
928 face->face_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
929 face->media_id = g_strdup((const char *)sqlite3_column_text(stmt, 1));
930 face->face_rect_x = (int)sqlite3_column_int(stmt, 2);
931 face->face_rect_y = (int)sqlite3_column_int(stmt, 3);
932 face->face_rect_w = (int)sqlite3_column_int(stmt, 4);
933 face->face_rect_h = (int)sqlite3_column_int(stmt, 5);
934 face->orientation = (int)sqlite3_column_int(stmt, 6);
935 face->face_tag = g_strdup((const char *)sqlite3_column_text(stmt, 7));
937 if (callback((media_face_h)face, user_data) == false) {
938 media_face_destroy((media_face_h)face);
942 media_face_destroy((media_face_h)face);
945 SQLITE3_FINALIZE(stmt);
951 int _media_db_get_group_item_count_by_id(int group_id, filter_h filter, group_list_e group_type, int *item_count)
953 int ret = MEDIA_CONTENT_ERROR_NONE;
954 sqlite3_stmt *stmt = NULL;
955 char select_query[MAX_QUERY_SIZE] = {0, };
956 char *condition_query = NULL;
957 char *option_query = NULL;
958 attribute_h attr = NULL;
959 filter_s *_filter = (filter_s*)filter;
961 attr = _content_get_attirbute_handle();
962 memset(select_query, 0x00, sizeof(select_query));
964 if (group_type == MEDIA_GROUP_ALBUM) {
965 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
966 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, _filter->storage_id, group_id);
968 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, DB_TABLE_MEDIA_VIEW, group_id);
969 } else if (group_type == MEDIA_GROUP_PLAYLIST) {
970 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_PLAYLIST, group_id);
971 } else if (group_type == MEDIA_GROUP_TAG) {
972 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_TAG, group_id);
974 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
975 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
978 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
979 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
981 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
982 SAFE_FREE(condition_query);
983 SAFE_FREE(option_query);
984 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
986 while (sqlite3_step(stmt) == SQLITE_ROW)
987 *item_count = (int)sqlite3_column_int(stmt, 0);
989 SQLITE3_FINALIZE(stmt);
994 int _media_db_get_group_item_count(const char *group_name, filter_h filter, group_list_e group_type, int *item_count)
996 int ret = MEDIA_CONTENT_ERROR_NONE;
997 sqlite3_stmt *stmt = NULL;
998 char select_query[MAX_QUERY_SIZE] = {0, };
999 char *tmp_query = NULL;
1000 char *condition_query = NULL;
1001 char *option_query = NULL;
1002 bool is_simple = FALSE;
1003 attribute_h attr = NULL;
1004 filter_s *_filter = (filter_s*)filter;
1006 attr = _content_get_attirbute_handle();
1007 memset(select_query, 0x00, sizeof(select_query));
1009 if (group_type == MEDIA_GROUP_NONE) {
1010 /* There are 2 ways to get count for media table for performance
1011 If user wants to set offset and count, use SQL SELECT_MEDIA_COUNT_FROM_MEDIA.
1012 If user wants to get count without setting count, SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE */
1013 if (_filter && ((_filter->offset < 0) && (_filter->count < 0))) {
1014 if (STRING_VALID(_filter->storage_id))
1015 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, _filter->storage_id);
1017 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, DB_TABLE_MEDIA_VIEW);
1020 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA, DB_TABLE_MEDIA_VIEW);
1022 } else if (group_type == MEDIA_GROUP_FOLDER) {
1023 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1024 tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_FOLDER, _filter->storage_id, group_name);
1026 tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_FOLDER, DB_TABLE_MEDIA_VIEW, group_name);
1028 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1029 } else if (group_type == MEDIA_GROUP_TAG_BY_MEDIA_ID) {
1030 snprintf(select_query, sizeof(select_query), SELECT_TAG_COUNT_BY_MEDIA_ID, group_name);
1031 } else if (group_type == MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID) {
1032 attr = _content_get_alias_attirbute_handle();
1034 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1035 tmp_query = sqlite3_mprintf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, _filter->storage_id, group_name);
1037 tmp_query = sqlite3_mprintf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, DB_TABLE_MEDIA_VIEW, group_name);
1039 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1040 } else if (group_type == MEDIA_GROUP_STORAGE) {
1041 tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_STORAGE, group_name, group_name);
1043 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1044 } else if (group_type == MEDIA_GROUP_FACE_BY_MEDIA_ID) {
1045 attr = _content_get_alias_attirbute_handle();
1047 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1048 tmp_query = sqlite3_mprintf(SELECT_FACE_COUNT_BY_MEDIA_ID, _filter->storage_id, group_name);
1050 tmp_query = sqlite3_mprintf(SELECT_FACE_COUNT_BY_MEDIA_ID, DB_TABLE_MEDIA_VIEW, group_name);
1052 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1053 #ifdef _USE_TV_PROFILE
1054 } else if (group_type == MEDIA_GROUP_PVR) {
1055 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1056 snprintf(select_query, sizeof(select_query), SELECT_PVR_COUNT_BY_STORAGE_ID, _filter->storage_id);
1058 SAFE_STRLCAT(select_query, SELECT_PVR_COUNT, sizeof(select_query));
1059 } else if (group_type == MEDIA_GROUP_UHD) {
1060 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1061 snprintf(select_query, sizeof(select_query), SELECT_UHD_COUNT_BY_STORAGE_ID, _filter->storage_id);
1063 SAFE_STRLCAT(select_query, SELECT_UHD_COUNT, sizeof(select_query));
1066 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
1067 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
1070 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
1071 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1072 if (tmp_query != NULL)
1073 SQLITE3_SAFE_FREE(tmp_query);
1077 if (group_type == MEDIA_GROUP_NONE) {
1078 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
1079 if (STRING_VALID(condition_query))
1080 SAFE_STRLCAT(select_query, condition_query, sizeof(select_query));
1081 if (STRING_VALID(option_query))
1082 SAFE_STRLCAT(select_query, option_query, sizeof(select_query));
1085 SAFE_STRLCAT(select_query, QUERY_KEYWORD_BRACKET, sizeof(select_query));
1087 SAFE_FREE(condition_query);
1088 SAFE_FREE(option_query);
1091 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1092 if (tmp_query != NULL)
1093 SQLITE3_SAFE_FREE(tmp_query);
1094 SAFE_FREE(condition_query);
1095 SAFE_FREE(option_query);
1096 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1098 while (sqlite3_step(stmt) == SQLITE_ROW)
1099 *item_count = (int)sqlite3_column_int(stmt, 0);
1101 SQLITE3_FINALIZE(stmt);
1106 int _media_db_get_group_item_by_id(int group_id, filter_h filter, media_info_cb callback, void *user_data, group_list_e group_type)
1108 int ret = MEDIA_CONTENT_ERROR_NONE;
1109 char select_query[MAX_QUERY_SIZE] = {0, };
1110 char *condition_query = NULL;
1111 char *option_query = NULL;
1112 sqlite3_stmt *stmt = NULL;
1113 attribute_h attr = NULL;
1114 filter_s *_filter = (filter_s*)filter;
1116 attr = _content_get_attirbute_handle();
1117 memset(select_query, 0x00, sizeof(select_query));
1119 if (group_type == MEDIA_GROUP_ALBUM) {
1120 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1121 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, _filter->storage_id, group_id);
1123 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, DB_TABLE_MEDIA_VIEW, group_id);
1124 } else if (group_type == MEDIA_GROUP_PLAYLIST) {
1125 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1126 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, _filter->storage_id, group_id);
1128 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, DB_TABLE_MEDIA_VIEW, group_id);
1129 } else if (group_type == MEDIA_GROUP_TAG) {
1130 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1131 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, _filter->storage_id, group_id);
1133 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, DB_TABLE_MEDIA_VIEW, group_id);
1135 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
1136 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
1139 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
1140 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1142 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1143 SAFE_FREE(condition_query);
1144 SAFE_FREE(option_query);
1145 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1147 while (sqlite3_step(stmt) == SQLITE_ROW) {
1148 media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
1150 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1151 SQLITE3_FINALIZE(stmt);
1152 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1155 _media_info_item_get_detail(stmt, (media_info_h)item);
1157 if (callback((media_info_h)item, user_data) == false) {
1158 media_info_destroy((media_info_h)item);
1162 media_info_destroy((media_info_h)item);
1165 SQLITE3_FINALIZE(stmt);
1170 int _media_db_get_group_item(const char *group_name, filter_h filter, media_info_cb callback, void *user_data, group_list_e group_type)
1172 int ret = MEDIA_CONTENT_ERROR_NONE;
1173 char select_query[MAX_QUERY_SIZE] = {0, };
1174 char *condition_query = NULL;
1175 char *option_query = NULL;
1176 sqlite3_stmt *stmt = NULL;
1177 attribute_h attr = NULL;
1178 filter_s *_filter = (filter_s*)filter;
1180 attr = _content_get_attirbute_handle();
1181 memset(select_query, 0x00, sizeof(select_query));
1183 if (group_type == MEDIA_GROUP_NONE) {
1184 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1185 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM, _filter->storage_id);
1187 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM, DB_TABLE_MEDIA_VIEW);
1188 } else if (group_type == MEDIA_GROUP_FOLDER) {
1189 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1190 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_FOLDER, _filter->storage_id, group_name);
1192 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_FOLDER, DB_TABLE_MEDIA_VIEW, group_name);
1193 } else if (group_type == MEDIA_GROUP_STORAGE) {
1194 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_STORAGE, group_name, group_name);
1196 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
1197 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
1200 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
1201 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1203 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1204 SAFE_FREE(condition_query);
1205 SAFE_FREE(option_query);
1206 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1208 while (sqlite3_step(stmt) == SQLITE_ROW) {
1209 media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
1211 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1212 SQLITE3_FINALIZE(stmt);
1213 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1216 _media_info_item_get_detail(stmt, (media_info_h)item);
1218 if (callback((media_info_h)item, user_data) == false) {
1219 media_info_destroy((media_info_h)item);
1223 media_info_destroy((media_info_h)item);
1226 SQLITE3_FINALIZE(stmt);
1231 #ifdef _USE_SENIOR_MODE
1232 int _media_db_get_group_item_by_union_select(const char *group_name, filter_h filter1, filter_h filter2, media_info_cb callback, void *user_data)
1234 int ret = MEDIA_CONTENT_ERROR_NONE;
1235 char select_query1[MAX_QUERY_SIZE] = {0, };
1236 char *condition_query1 = NULL;
1237 char *option_query1 = NULL;
1238 char select_query2[MAX_QUERY_SIZE] = {0, };
1239 char *condition_query2 = NULL;
1240 char *option_query2 = NULL;
1241 sqlite3_stmt *stmt = NULL;
1242 attribute_h attr = NULL;
1243 filter_s *_filter1 = (filter_s*)filter1;
1244 filter_s *_filter2 = (filter_s*)filter2;
1246 attr = _content_get_attirbute_handle();
1248 memset(select_query1, 0x00, sizeof(select_query1));
1250 if ((_filter1 != NULL) && STRING_VALID(_filter1->storage_id))
1251 snprintf(select_query1, sizeof(select_query1), SELECT_MEDIA_FROM_FOLDER, _filter1->storage_id, group_name);
1253 snprintf(select_query1, sizeof(select_query1), SELECT_MEDIA_FROM_FOLDER, DB_TABLE_MEDIA_VIEW, group_name);
1255 ret = __media_db_make_query(filter1, attr, select_query1, sizeof(select_query1), &condition_query1, &option_query1);
1256 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1257 SAFE_FREE(condition_query1);
1258 SAFE_FREE(option_query1);
1259 media_content_error("create select_query1 failed");
1263 memset(select_query2, 0x00, sizeof(select_query2));
1265 if ((_filter2 != NULL) && STRING_VALID(_filter2->storage_id))
1266 snprintf(select_query2, sizeof(select_query2), SELECT_MEDIA_FROM_FOLDER, _filter2->storage_id, group_name);
1268 snprintf(select_query2, sizeof(select_query2), SELECT_MEDIA_FROM_FOLDER, DB_TABLE_MEDIA_VIEW, group_name);
1270 ret = __media_db_make_query(filter2, attr, select_query2, sizeof(select_query2), &condition_query2, &option_query2);
1271 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1272 SAFE_FREE(condition_query1);
1273 SAFE_FREE(option_query1);
1274 SAFE_FREE(condition_query2);
1275 SAFE_FREE(option_query2);
1276 media_content_error("create select_query2 failed");
1280 ret = _content_query_prepare_by_union_select(&stmt, select_query1, condition_query1, option_query1, select_query2, condition_query2, option_query2);
1281 SAFE_FREE(condition_query1);
1282 SAFE_FREE(option_query1);
1283 SAFE_FREE(condition_query2);
1284 SAFE_FREE(option_query2);
1285 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1287 while (sqlite3_step(stmt) == SQLITE_ROW) {
1288 media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
1290 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1291 SQLITE3_FINALIZE(stmt);
1292 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1295 _media_info_item_get_detail(stmt, (media_info_h)item);
1297 if (callback((media_info_h)item, user_data) == false) {
1298 media_info_destroy((media_info_h)item);
1302 media_info_destroy((media_info_h)item);
1305 SQLITE3_FINALIZE(stmt);
1311 int _media_db_get_media_group_item_count(const char *group_name, filter_h filter, media_group_e group, int *item_count)
1313 int ret = MEDIA_CONTENT_ERROR_NONE;
1314 sqlite3_stmt *stmt = NULL;
1315 char select_query[MAX_QUERY_SIZE] = {0, };
1316 char *tmp_query = NULL;
1317 char *condition_query = NULL;
1318 char *option_query = NULL;
1319 attribute_h attr = NULL;
1320 filter_s *_filter = (filter_s*)filter;
1322 attr = _content_get_attirbute_handle();
1323 memset(select_query, 0x00, sizeof(select_query));
1324 #ifdef _USE_TV_PROFILE
1325 if (group < MEDIA_PVR_GROUP_DURATION) { /*media content */
1326 if (group_name != NULL) {
1327 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1328 tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, _filter->storage_id, __media_db_get_group_name(group), group_name);
1330 tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group), group_name);
1332 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1334 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1335 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, _filter->storage_id, __media_db_get_group_name(group));
1337 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group));
1339 } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) {/*pvr content*/
1340 if (group_name != NULL) {
1341 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1342 tmp_query = sqlite3_mprintf(SELECT_PVR_COUNT_FROM_GROUP_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group), group_name);
1344 tmp_query = sqlite3_mprintf(SELECT_PVR_COUNT_FROM_GROUP, __media_db_get_group_name(group), group_name);
1346 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1348 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1349 snprintf(select_query, sizeof(select_query), SELECT_PVR_COUNT_FROM_GROUP_NULL_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group));
1351 snprintf(select_query, sizeof(select_query), SELECT_PVR_COUNT_FROM_GROUP_NULL, __media_db_get_group_name(group));
1353 } else {/*uhd content*/
1354 if (group_name != NULL) {
1355 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1356 tmp_query = sqlite3_mprintf(SELECT_UHD_COUNT_FROM_GROUP_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group), group_name);
1358 tmp_query = sqlite3_mprintf(SELECT_UHD_COUNT_FROM_GROUP, __media_db_get_group_name(group), group_name);
1360 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1362 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1363 snprintf(select_query, sizeof(select_query), SELECT_UHD_COUNT_FROM_GROUP_NULL_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group));
1365 snprintf(select_query, sizeof(select_query), SELECT_UHD_COUNT_FROM_GROUP_NULL, __media_db_get_group_name(group));
1369 if (group_name != NULL) {
1370 if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) {
1371 tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, _filter->storage_id, __media_db_get_group_name(group), group_name);
1372 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1374 tmp_query = sqlite3_mprintf(SELECT_MEDIA_COUNT_FROM_GROUP, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group), group_name);
1375 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1378 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1379 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, _filter->storage_id, __media_db_get_group_name(group));
1381 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group));
1384 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
1385 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1386 if (tmp_query != NULL)
1387 SQLITE3_SAFE_FREE(tmp_query);
1391 SAFE_STRLCAT(select_query, QUERY_KEYWORD_SPACE, sizeof(select_query));
1392 if (STRING_VALID(condition_query))
1393 SAFE_STRLCAT(select_query, condition_query, sizeof(select_query));
1394 if (STRING_VALID(option_query))
1395 SAFE_STRLCAT(select_query, option_query, sizeof(select_query));
1396 SAFE_STRLCAT(select_query, QUERY_KEYWORD_BRACKET, sizeof(select_query));
1398 SAFE_FREE(condition_query);
1399 SAFE_FREE(option_query);
1401 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1402 if (tmp_query != NULL)
1403 SQLITE3_SAFE_FREE(tmp_query);
1404 SAFE_FREE(condition_query);
1405 SAFE_FREE(option_query);
1406 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1408 while (sqlite3_step(stmt) == SQLITE_ROW)
1409 *item_count = (int)sqlite3_column_int(stmt, 0);
1411 SQLITE3_FINALIZE(stmt);
1416 int _media_db_get_media_group_item(const char *group_name, filter_h filter, media_group_e group, media_info_cb callback, void *user_data)
1418 int ret = MEDIA_CONTENT_ERROR_NONE;
1419 char select_query[MAX_QUERY_SIZE] = {0, };
1420 char *tmp_query = NULL;
1421 char *condition_query = NULL;
1422 char *option_query = NULL;
1423 sqlite3_stmt *stmt = NULL;
1424 attribute_h attr = NULL;
1425 filter_s *_filter = (filter_s*)filter;
1427 attr = _content_get_attirbute_handle();
1428 memset(select_query, 0x00, sizeof(select_query));
1430 if (group_name != NULL) {
1431 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1432 tmp_query = sqlite3_mprintf(SELECT_MEDIA_FROM_GROUP, _filter->storage_id, __media_db_get_group_name(group), group_name);
1434 tmp_query = sqlite3_mprintf(SELECT_MEDIA_FROM_GROUP, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group), group_name);
1436 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1438 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1439 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL, _filter->storage_id, __media_db_get_group_name(group));
1441 snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL, DB_TABLE_MEDIA_VIEW, __media_db_get_group_name(group));
1444 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
1445 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1446 if (tmp_query != NULL)
1447 SQLITE3_SAFE_FREE(tmp_query);
1451 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1452 if (tmp_query != NULL)
1453 SQLITE3_SAFE_FREE(tmp_query);
1454 SAFE_FREE(condition_query);
1455 SAFE_FREE(option_query);
1456 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1458 while (sqlite3_step(stmt) == SQLITE_ROW) {
1459 media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
1461 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1462 SQLITE3_FINALIZE(stmt);
1463 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1466 _media_info_item_get_detail(stmt, (media_info_h)item);
1468 if (callback((media_info_h)item, user_data) == false) {
1469 media_info_destroy((media_info_h)item);
1473 media_info_destroy((media_info_h)item);
1476 SQLITE3_FINALIZE(stmt);
1481 int _media_db_get_storage(filter_h filter, media_storage_cb callback, void *user_data)
1483 int ret = MEDIA_CONTENT_ERROR_NONE;
1484 char select_query[DEFAULT_QUERY_SIZE] = {0, };
1485 char *condition_query = NULL;
1486 char *option_query = NULL;
1487 sqlite3_stmt *stmt = NULL;
1488 attribute_h attr = NULL;
1490 attr = _content_get_attirbute_handle();
1491 memset(select_query, 0x00, sizeof(select_query));
1493 if (!SAFE_STRLCPY(select_query, SELECT_STORAGE_LIST, sizeof(select_query))) {
1494 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
1495 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
1498 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
1499 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1501 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1502 SAFE_FREE(condition_query);
1503 SAFE_FREE(option_query);
1504 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1506 while (sqlite3_step(stmt) == SQLITE_ROW) {
1507 media_storage_s *_storage = (media_storage_s*)calloc(1, sizeof(media_storage_s));
1509 if (_storage == NULL) {
1510 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1511 SQLITE3_FINALIZE(stmt);
1512 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1515 _storage->storage_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
1516 _storage->storage_path = g_strdup((const char *)sqlite3_column_text(stmt, 1));
1517 _storage->storage_type = (int)sqlite3_column_int(stmt, 2);
1519 if (callback((media_storage_h)_storage, user_data) == false) {
1520 media_storage_destroy((media_storage_h) _storage);
1524 media_storage_destroy((media_storage_h) _storage);
1527 SQLITE3_FINALIZE(stmt);
1531 #ifdef _USE_TV_PROFILE
1532 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)
1534 int ret = MEDIA_CONTENT_ERROR_NONE;
1535 char select_query[DEFAULT_QUERY_SIZE] = {0, };
1536 char *tmp_query = NULL;
1537 char *condition_query = NULL;
1538 char *option_query = NULL;
1539 sqlite3_stmt *stmt = NULL;
1540 attribute_h attr = NULL;
1541 filter_s *_filter = (filter_s*)filter;
1543 attr = _content_get_attirbute_handle();
1544 memset(select_query, 0x00, sizeof(select_query));
1546 if (group_name != NULL) {
1547 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1548 tmp_query = sqlite3_mprintf(SELECT_PVR_FROM_GROUP_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group), group_name);
1550 tmp_query = sqlite3_mprintf(SELECT_PVR_FROM_GROUP, __media_db_get_group_name(group), group_name);
1552 SAFE_STRLCAT(select_query, tmp_query, sizeof(select_query));
1554 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1555 snprintf(select_query, sizeof(select_query), SELECT_PVR_FROM_GROUP_NULL_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group));
1557 snprintf(select_query, sizeof(select_query), SELECT_PVR_FROM_GROUP_NULL, __media_db_get_group_name(group));
1560 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
1561 if (ret != MEDIA_CONTENT_ERROR_NONE) {
1562 if (tmp_query != NULL)
1563 sqlite3_free(tmp_query);
1567 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1568 if (tmp_query != NULL)
1569 sqlite3_free(tmp_query);
1570 SAFE_FREE(condition_query);
1571 SAFE_FREE(option_query);
1572 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1574 while (sqlite3_step(stmt) == SQLITE_ROW) {
1575 media_pvr_s *item = (media_pvr_s*)calloc(1, sizeof(media_pvr_s));
1577 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1578 SQLITE3_FINALIZE(stmt);
1579 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1582 _media_pvr_item_get_detail(stmt, (media_pvr_h)item);
1584 if (callback((media_pvr_h)item, user_data) == false) {
1585 media_info_destroy((media_pvr_h)item);
1589 media_pvr_destroy((media_pvr_h)item);
1592 SQLITE3_FINALIZE(stmt);
1598 MEDIA_PVR_MEDIA_ID = 0,
1599 MEDIA_PVR_STORAGE_ID,
1603 MEDIA_PVR_TIME_ZONE,
1607 MEDIA_PVR_CHANNEL_TYPE,
1608 MEDIA_PVR_CHANNEL_NAME,
1609 MEDIA_PVR_CHANNEL_NUM,
1610 MEDIA_PVR_PROGRAM_TITLE,
1611 MEDIA_PVR_PROGRAM_NUM,
1612 MEDIA_PVR_PROGRAM_CRID,
1617 MEDIA_PVR_EMBARGO_TIME,
1618 MEDIA_PVR_EXPIRY_TIME,
1619 MEDIA_PVR_START_TIME,
1620 MEDIA_PVR_PROGRAM_START_TIME,
1621 MEDIA_PVR_PROGRAM_END_TIME,
1622 MEDIA_PVR_PROGRAM_DATE,
1623 MEDIA_PVR_PARENTAL_RATING,
1624 MEDIA_PVR_TIMER_RECORD,
1625 MEDIA_PVR_SERIES_RECORD,
1630 MEDIA_PVR_HARDOF_HEARINGRADIO,
1631 MEDIA_PVR_DATA_SERVICE,
1632 MEDIA_PVR_CONTENT_LOCK,
1633 MEDIA_PVR_CONTENT_WATCH,
1634 MEDIA_PVR_HAS_AUDIO_ONLY,
1635 MEDIA_PVR_IS_LOCAL_RECORDED,
1636 MEDIA_PVR_RESOLUTION,
1637 MEDIA_PVR_ASPECTRATIO,
1638 MEDIA_PVR_MODIFIED_MONTH,
1639 MEDIA_PVR_SPORTS_TYPE,
1640 MEDIA_PVR_GUIDANCE_LENGTH,
1642 MEDIA_PVR_PLAY_COUNT,
1643 MEDIA_PVR_PRIVATE_DATA,
1644 MEDIA_PVR_HIGHLIGHT,
1645 } media_pvr_field_e;
1647 void _media_pvr_item_get_detail(sqlite3_stmt* stmt, media_pvr_h pvr)
1649 media_pvr_s *_pvr = (media_pvr_s*)pvr;
1651 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MEDIA_ID)))
1652 _pvr->media_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MEDIA_ID));
1654 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_STORAGE_ID)))
1655 _pvr->storage_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_STORAGE_ID));
1657 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PATH)))
1658 _pvr->path = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PATH));
1660 _pvr->size = (unsigned long long)sqlite3_column_int64(stmt, MEDIA_PVR_SIZE);
1662 _pvr->duration = (int)sqlite3_column_int(stmt, MEDIA_PVR_DURATION);
1664 _pvr->timezone = (int)sqlite3_column_int(stmt, MEDIA_PVR_TIME_ZONE);
1666 _pvr->ptc = (int)sqlite3_column_int(stmt, MEDIA_PVR_PTC);
1668 _pvr->major = (int)sqlite3_column_int(stmt, MEDIA_PVR_MAJOR);
1670 _pvr->minor = (int)sqlite3_column_int(stmt, MEDIA_PVR_MINOR);
1672 _pvr->channel_type = (int)sqlite3_column_int(stmt, MEDIA_PVR_CHANNEL_TYPE);
1674 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NAME)))
1675 _pvr->channel_name = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NAME));
1677 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NUM)))
1678 _pvr->channel_num = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NUM));
1680 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_TITLE)))
1681 _pvr->program_title = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_TITLE));
1683 _pvr->program_num = (int)sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_NUM);
1685 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_CRID)))
1686 _pvr->program_crid = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_CRID));
1688 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GUIDANCE)))
1689 _pvr->guidance = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GUIDANCE));
1691 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_SYNOPSIS)))
1692 _pvr->synopsis = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_SYNOPSIS));
1694 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GENRE)))
1695 _pvr->genre = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GENRE));
1697 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_LANGUAGE)))
1698 _pvr->language = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_LANGUAGE));
1700 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MODIFIED_MONTH)))
1701 _pvr->modified_month = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MODIFIED_MONTH));
1703 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PRIVATE_DATA)))
1704 _pvr->private_data = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PRIVATE_DATA));
1706 _pvr->embargo_time = (int)sqlite3_column_int(stmt, MEDIA_PVR_EMBARGO_TIME);
1708 _pvr->expiry_time = (int)sqlite3_column_int(stmt, MEDIA_PVR_EXPIRY_TIME);
1710 _pvr->start_time = (int)sqlite3_column_int(stmt, MEDIA_PVR_START_TIME);
1712 _pvr->program_start_time = (int)sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_START_TIME);
1714 _pvr->program_end_time = (int)sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_END_TIME);
1716 _pvr->program_date = (int)sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_DATE);
1718 _pvr->parental_rating = (int)sqlite3_column_int(stmt, MEDIA_PVR_PARENTAL_RATING);
1720 _pvr->timer_record = (int)sqlite3_column_int(stmt, MEDIA_PVR_TIMER_RECORD);
1722 _pvr->series_record = (int)sqlite3_column_int(stmt, MEDIA_PVR_SERIES_RECORD);
1724 _pvr->hd = (int)sqlite3_column_int(stmt, MEDIA_PVR_HD);
1726 _pvr->subtitle = (int)sqlite3_column_int(stmt, MEDIA_PVR_SUBTITLE);
1728 _pvr->ttx = (int)sqlite3_column_int(stmt, MEDIA_PVR_TTX);
1730 _pvr->ad = (int)sqlite3_column_int(stmt, MEDIA_PVR_AD);
1732 _pvr->hard_of_hearing_radio = (int)sqlite3_column_int(stmt, MEDIA_PVR_HARDOF_HEARINGRADIO);
1734 _pvr->data_service = (int)sqlite3_column_int(stmt, MEDIA_PVR_DATA_SERVICE);
1736 _pvr->content_lock = (int)sqlite3_column_int(stmt, MEDIA_PVR_CONTENT_LOCK);
1738 _pvr->content_watch = (int)sqlite3_column_int(stmt, MEDIA_PVR_CONTENT_WATCH);
1740 _pvr->has_audio_only = (int)sqlite3_column_int(stmt, MEDIA_PVR_HAS_AUDIO_ONLY);
1742 _pvr->is_local_record = (int)sqlite3_column_int(stmt, MEDIA_PVR_IS_LOCAL_RECORDED);
1744 _pvr->resolution = (int)sqlite3_column_int(stmt, MEDIA_PVR_RESOLUTION);
1746 _pvr->aspectratio = (int)sqlite3_column_int(stmt, MEDIA_PVR_ASPECTRATIO);
1748 _pvr->sports_type = (int)sqlite3_column_int(stmt, MEDIA_PVR_SPORTS_TYPE);
1750 _pvr->guidance_length = (int)sqlite3_column_int(stmt, MEDIA_PVR_GUIDANCE_LENGTH);
1752 _pvr->tvmode = (int)sqlite3_column_int(stmt, MEDIA_PVR_TVMODE);
1754 _pvr->play_count = (int)sqlite3_column_int(stmt, MEDIA_PVR_PLAY_COUNT);
1756 _pvr->highlight = (int)sqlite3_column_int(stmt, MEDIA_PVR_HIGHLIGHT);
1761 int _media_db_get_pvr(filter_h filter, media_pvr_cb callback, void *user_data)
1763 int ret = MEDIA_CONTENT_ERROR_NONE;
1764 char select_query[DEFAULT_QUERY_SIZE] = {0, };
1765 char *condition_query = NULL;
1766 char *option_query = NULL;
1767 sqlite3_stmt *stmt = NULL;
1768 attribute_h attr = NULL;
1769 filter_s *_filter = (filter_s*)filter;
1771 attr = _content_get_attirbute_handle();
1772 memset(select_query, 0x00, sizeof(select_query));
1774 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1775 snprintf(select_query, sizeof(select_query), SELECT_PVR_LIST_BY_STORAGE_ID, _filter->storage_id);
1777 SAFE_STRLCAT(select_query, SELECT_PVR_LIST, sizeof(select_query));
1779 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
1780 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1782 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1783 SAFE_FREE(condition_query);
1784 SAFE_FREE(option_query);
1785 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1787 while (sqlite3_step(stmt) == SQLITE_ROW) {
1788 media_pvr_s *_pvr = (media_pvr_s*)calloc(1, sizeof(media_pvr_s));
1791 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1792 SQLITE3_FINALIZE(stmt);
1793 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1796 _media_pvr_item_get_detail(stmt, (media_pvr_h)_pvr);
1798 if (callback((media_pvr_h)_pvr, user_data) == false) {
1799 media_pvr_destroy((media_pvr_h) _pvr);
1803 media_pvr_destroy((media_pvr_h) _pvr);
1806 SQLITE3_FINALIZE(stmt);
1812 int _media_db_get_storage_id_by_media_id(const char *media_id, char *storage_id)
1814 int ret = MEDIA_CONTENT_ERROR_NONE;
1815 sqlite3_stmt *stmt = NULL;
1816 char *select_query = NULL;
1818 select_query = sqlite3_mprintf(SELECT_MEDIA_STORAGE_ID_BY_ID, media_id);
1820 ret = _content_query_prepare(&stmt, select_query, NULL, NULL);
1821 SQLITE3_SAFE_FREE(select_query);
1822 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1824 if (sqlite3_step(stmt) == SQLITE_ROW) {
1825 if (STRING_VALID((const char *)sqlite3_column_text(stmt, 0))) {
1826 if (!SAFE_STRLCPY(storage_id, (const char *)sqlite3_column_text(stmt, 0), MEDIA_CONTENT_UUID_SIZE+1)) {
1827 media_content_error("Storage id copy fail");
1828 ret = MEDIA_CONTENT_ERROR_INVALID_OPERATION;
1832 media_content_error("There's no media!!");
1833 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
1836 SQLITE3_FINALIZE(stmt);
1841 #ifdef _USE_TV_PROFILE
1843 MEDIA_UHD_MEDIA_ID = 0,
1844 MEDIA_UHD_STORAGE_ID,
1847 MEDIA_UHD_CONTENT_ID,
1848 MEDIA_UHD_CONTENT_TITLE,
1849 MEDIA_UHD_FILE_NAME,
1850 MEDIA_UHD_FOLDER_ID,
1851 MEDIA_UHD_RELEASE_DATE,
1852 MEDIA_UHD_MODIFIED_TIME,
1853 MEDIA_UHD_PLAYED_POSITION,
1855 MEDIA_UHD_PLAYED_COUNT,
1856 } media_uhd_field_e;
1858 void _media_uhd_item_get_detail(sqlite3_stmt* stmt, media_uhd_h uhd)
1860 media_uhd_s *_uhd = (media_uhd_s*)uhd;
1862 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_MEDIA_ID)))
1863 _uhd->media_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_MEDIA_ID));
1865 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_STORAGE_ID)))
1866 _uhd->storage_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_STORAGE_ID));
1868 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_PATH)))
1869 _uhd->path = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_PATH));
1871 _uhd->size = (unsigned long long)sqlite3_column_int64(stmt, MEDIA_UHD_SIZE);
1873 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_ID)))
1874 _uhd->content_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_ID));
1876 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_TITLE)))
1877 _uhd->content_title = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_TITLE));
1879 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_FILE_NAME)))
1880 _uhd->file_name = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_FILE_NAME));
1882 if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_RELEASE_DATE)))
1883 _uhd->release_date = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_RELEASE_DATE));
1885 _uhd->modified_time = (int)sqlite3_column_int(stmt, MEDIA_UHD_MODIFIED_TIME);
1886 _uhd->played_position = (int)sqlite3_column_int(stmt, MEDIA_UHD_PLAYED_POSITION);
1887 _uhd->sub_type = (int)sqlite3_column_int(stmt, MEDIA_UHD_SUB_TYPE);
1888 _uhd->played_count = (int)sqlite3_column_int(stmt, MEDIA_UHD_PLAYED_COUNT);
1893 int _media_db_get_uhd(filter_h filter, media_uhd_cb callback, void *user_data)
1895 int ret = MEDIA_CONTENT_ERROR_NONE;
1896 char select_query[DEFAULT_QUERY_SIZE] = {0, };
1897 char *condition_query = NULL;
1898 char *option_query = NULL;
1899 sqlite3_stmt *stmt = NULL;
1900 attribute_h attr = NULL;
1901 filter_s *_filter = (filter_s*)filter;
1903 attr = _content_get_attirbute_handle();
1904 memset(select_query, 0x00, sizeof(select_query));
1906 if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
1907 snprintf(select_query, sizeof(select_query), SELECT_UHD_LIST_BY_STORAGE_ID, _filter->storage_id);
1909 SAFE_STRLCAT(select_query, SELECT_UHD_LIST, sizeof(select_query));
1911 ret = __media_db_make_query(filter, attr, select_query, sizeof(select_query), &condition_query, &option_query);
1912 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1914 ret = _content_query_prepare(&stmt, select_query, condition_query, option_query);
1915 SAFE_FREE(condition_query);
1916 SAFE_FREE(option_query);
1917 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
1919 while (sqlite3_step(stmt) == SQLITE_ROW) {
1920 media_uhd_s *_uhd = (media_uhd_s*)calloc(1, sizeof(media_uhd_s));
1923 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
1924 SQLITE3_FINALIZE(stmt);
1925 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
1928 _media_uhd_item_get_detail(stmt, (media_uhd_h)_uhd);
1930 if (callback((media_uhd_h)_uhd, user_data) == false) {
1931 media_uhd_destroy((media_uhd_h) _uhd);
1934 media_uhd_destroy((media_uhd_h) _uhd);
1937 SQLITE3_FINALIZE(stmt);