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.
16 #ifdef _USE_TV_PROFILE
17 #include <media_content.h>
18 #include <media_content_internal.h>
19 #include <media_info_private.h>
20 #include <media_util_private.h>
21 #include <media_uhd.h>
23 int media_uhd_get_media_count_from_db(filter_h filter, int *media_count)
25 int ret = MEDIA_CONTENT_ERROR_NONE;
28 ret = _media_db_get_group_item_count(NULL, filter, MEDIA_GROUP_UHD, media_count);
30 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
31 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
37 int media_uhd_foreach_media_from_db(filter_h filter, media_uhd_cb callback, void *user_data)
39 int ret = MEDIA_CONTENT_ERROR_NONE;
41 if (callback != NULL) {
42 ret = _media_db_get_uhd(filter, callback, user_data);
44 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
45 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
51 int media_uhd_destroy(media_uhd_h uhd)
53 int ret = MEDIA_CONTENT_ERROR_NONE;
54 media_uhd_s *_uhd = (media_uhd_s*)uhd;
56 SAFE_FREE(_uhd->media_id);
57 SAFE_FREE(_uhd->storage_id);
58 SAFE_FREE(_uhd->path);
59 SAFE_FREE(_uhd->content_id);
60 SAFE_FREE(_uhd->content_title);
61 SAFE_FREE(_uhd->file_name);
62 SAFE_FREE(_uhd->release_date);
65 ret = MEDIA_CONTENT_ERROR_NONE;
67 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
68 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
74 int media_uhd_clone(media_uhd_h *dst, media_uhd_h src)
76 int ret = MEDIA_CONTENT_ERROR_NONE;
77 media_uhd_s *_src = (media_uhd_s*)src;
80 media_uhd_s *_dst = (media_uhd_s*)calloc(1, sizeof(media_uhd_s));
82 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
83 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
86 if (STRING_VALID(_src->media_id)) {
87 _dst->media_id = strdup(_src->media_id);
88 if (_dst->media_id == NULL) {
89 media_uhd_destroy((media_uhd_h)_dst);
90 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
91 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
95 if (STRING_VALID(_src->storage_id)) {
96 _dst->storage_id = strdup(_src->storage_id);
97 if (_dst->storage_id == NULL) {
98 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
99 media_uhd_destroy((media_uhd_h)_dst);
100 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
104 if (STRING_VALID(_src->path)) {
105 _dst->path = strdup(_src->path);
106 if (_dst->path == NULL) {
107 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
108 media_uhd_destroy((media_uhd_h)_dst);
109 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
113 if (STRING_VALID(_src->content_id)) {
114 _dst->content_id = strdup(_src->content_id);
115 if (_dst->content_id == NULL) {
116 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
117 media_uhd_destroy((media_uhd_h)_dst);
118 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
122 if (STRING_VALID(_src->content_title)) {
123 _dst->content_title = strdup(_src->content_title);
124 if (_dst->content_title == NULL) {
125 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
126 media_uhd_destroy((media_uhd_h)_dst);
127 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
131 if (STRING_VALID(_src->release_date)) {
132 _dst->release_date = strdup(_src->release_date);
133 if (_dst->release_date == NULL) {
134 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
135 media_uhd_destroy((media_uhd_h)_dst);
136 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
140 if (STRING_VALID(_src->file_name)) {
141 _dst->file_name = strdup(_src->file_name);
142 if (_dst->file_name == NULL) {
143 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
144 media_uhd_destroy((media_uhd_h)_dst);
145 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
149 _dst->size = _src->size;
150 _dst->modified_time = _src->modified_time;
151 _dst->played_position = _src->played_position;
152 _dst->sub_type = _src->sub_type;
153 _dst->played_count = _src->played_count;
154 *dst = (media_uhd_h)_dst;
156 ret = MEDIA_CONTENT_ERROR_NONE;
158 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
159 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
165 int media_uhd_get_uhd_from_db(const char *media_id, media_uhd_h *uhd)
167 int ret = MEDIA_CONTENT_ERROR_NONE;
168 char *select_query = NULL;
169 sqlite3_stmt *stmt = NULL;
171 if (!STRING_VALID(media_id) || (uhd == NULL)) {
172 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
173 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
176 select_query = sqlite3_mprintf(SELECT_UHD_FROM_UHD, media_id);
178 ret = _content_query_prepare(&stmt, select_query, NULL, NULL);
179 sqlite3_free(select_query);
180 media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
182 media_uhd_s *_uhd = NULL;
184 while (sqlite3_step(stmt) == SQLITE_ROW) {
186 media_uhd_destroy((media_uhd_h)_uhd);
188 _uhd = (media_uhd_s*)calloc(1, sizeof(media_uhd_s));
191 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
192 SQLITE3_FINALIZE(stmt);
193 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
196 _media_uhd_item_get_detail(stmt, (media_uhd_h)_uhd);
198 *uhd = (media_uhd_h)_uhd;
201 SQLITE3_FINALIZE(stmt);
206 int media_uhd_get_media_id(media_uhd_h uhd, char **media_id)
208 int ret = MEDIA_CONTENT_ERROR_NONE;
209 media_uhd_s *_uhd = (media_uhd_s*)uhd;
211 if (_uhd && media_id) {
212 if (STRING_VALID(_uhd->media_id)) {
213 *media_id = strdup(_uhd->media_id);
214 if (*media_id == NULL) {
215 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
216 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
222 ret = MEDIA_CONTENT_ERROR_NONE;
224 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
225 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
231 int media_uhd_get_storage_id(media_uhd_h uhd, char **storage_id)
233 int ret = MEDIA_CONTENT_ERROR_NONE;
234 media_uhd_s *_uhd = (media_uhd_s*)uhd;
236 if (_uhd && storage_id) {
237 if (STRING_VALID(_uhd->storage_id)) {
238 *storage_id = strdup(_uhd->storage_id);
239 if (*storage_id == NULL) {
240 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
241 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
247 ret = MEDIA_CONTENT_ERROR_NONE;
249 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
250 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
256 int media_uhd_get_path(media_uhd_h uhd, char **path)
258 int ret = MEDIA_CONTENT_ERROR_NONE;
259 media_uhd_s *_uhd = (media_uhd_s*)uhd;
262 if (STRING_VALID(_uhd->path)) {
263 *path = strdup(_uhd->path);
265 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
266 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
272 ret = MEDIA_CONTENT_ERROR_NONE;
274 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
275 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
281 int media_uhd_get_size(media_uhd_h uhd, unsigned long long *size)
283 int ret = MEDIA_CONTENT_ERROR_NONE;
284 media_uhd_s *_uhd = (media_uhd_s*)uhd;
288 ret = MEDIA_CONTENT_ERROR_NONE;
290 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
291 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
297 int media_uhd_get_content_id(media_uhd_h uhd, char **content_id)
299 int ret = MEDIA_CONTENT_ERROR_NONE;
300 media_uhd_s *_uhd = (media_uhd_s*)uhd;
302 if (_uhd && content_id) {
303 if (STRING_VALID(_uhd->content_id)) {
304 *content_id = strdup(_uhd->content_id);
305 if (*content_id == NULL) {
306 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
307 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
313 ret = MEDIA_CONTENT_ERROR_NONE;
315 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
316 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
322 int media_uhd_get_content_title(media_uhd_h uhd, char **content_title)
324 int ret = MEDIA_CONTENT_ERROR_NONE;
325 media_uhd_s *_uhd = (media_uhd_s*)uhd;
327 if (_uhd && content_title) {
328 if (STRING_VALID(_uhd->content_title)) {
329 *content_title = strdup(_uhd->content_title);
330 if (*content_title == NULL) {
331 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
332 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
335 *content_title = NULL;
338 ret = MEDIA_CONTENT_ERROR_NONE;
340 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
341 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
347 int media_uhd_get_file_name(media_uhd_h uhd, char **file_name)
349 int ret = MEDIA_CONTENT_ERROR_NONE;
350 media_uhd_s *_uhd = (media_uhd_s*)uhd;
352 if (_uhd && file_name) {
353 if (STRING_VALID(_uhd->file_name)) {
354 *file_name = strdup(_uhd->file_name);
355 if (*file_name == NULL) {
356 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
357 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
363 ret = MEDIA_CONTENT_ERROR_NONE;
365 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
366 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
372 int media_uhd_get_release_date(media_uhd_h uhd, char **release_date)
374 int ret = MEDIA_CONTENT_ERROR_NONE;
375 media_uhd_s *_uhd = (media_uhd_s*)uhd;
377 if (_uhd && release_date) {
378 if (STRING_VALID(_uhd->release_date)) {
379 *release_date = strdup(_uhd->release_date);
380 if (*release_date == NULL) {
381 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
382 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
385 *release_date = NULL;
388 ret = MEDIA_CONTENT_ERROR_NONE;
390 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
391 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
397 int media_uhd_get_modified_time(media_uhd_h uhd, time_t *modified_time)
399 int ret = MEDIA_CONTENT_ERROR_NONE;
400 media_uhd_s *_uhd = (media_uhd_s*)uhd;
402 if (_uhd && modified_time) {
403 *modified_time = _uhd->modified_time;
404 ret = MEDIA_CONTENT_ERROR_NONE;
406 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
407 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
413 int media_uhd_get_played_position(media_uhd_h uhd, int *played_position)
415 int ret = MEDIA_CONTENT_ERROR_NONE;
416 media_uhd_s *_uhd = (media_uhd_s*)uhd;
419 *played_position = _uhd->played_position;
420 ret = MEDIA_CONTENT_ERROR_NONE;
422 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
423 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
429 int media_uhd_get_sub_type(media_uhd_h uhd, int *sub_type)
431 int ret = MEDIA_CONTENT_ERROR_NONE;
432 media_uhd_s *_uhd = (media_uhd_s*)uhd;
435 *sub_type = _uhd->sub_type;
436 ret = MEDIA_CONTENT_ERROR_NONE;
438 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
439 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
445 int media_uhd_get_played_count(media_uhd_h uhd, int *played_count)
447 int ret = MEDIA_CONTENT_ERROR_NONE;
448 media_uhd_s *_uhd = (media_uhd_s*)uhd;
451 *played_count = _uhd->played_count;
452 ret = MEDIA_CONTENT_ERROR_NONE;
454 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
455 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
461 int media_uhd_set_played_position(media_uhd_h uhd, int played_position)
463 int ret = MEDIA_CONTENT_ERROR_NONE;
464 media_uhd_s *_uhd = (media_uhd_s*)uhd;
466 if ((_uhd != NULL) && (played_position >= 0)) {
467 _uhd->played_position = played_position;
469 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
470 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
476 int media_uhd_set_content_title(media_uhd_h uhd, const char *content_title)
478 int ret = MEDIA_CONTENT_ERROR_NONE;
479 media_uhd_s *_uhd = (media_uhd_s*)uhd;
481 if (_uhd != NULL && STRING_VALID(content_title)) {
482 SAFE_FREE(_uhd->content_title);
483 _uhd->content_title = strdup(content_title);
484 if (_uhd->content_title == NULL) {
485 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
486 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
489 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
490 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
496 int media_uhd_set_release_date(media_uhd_h uhd, const char *release_date)
498 int ret = MEDIA_CONTENT_ERROR_NONE;
499 media_uhd_s *_uhd = (media_uhd_s*)uhd;
501 if (_uhd != NULL && STRING_VALID(release_date)) {
502 SAFE_FREE(_uhd->release_date);
503 _uhd->release_date = strdup(release_date);
504 if (_uhd->release_date == NULL) {
505 media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
506 return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
509 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
510 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
516 int media_uhd_set_sub_type(media_uhd_h uhd, int sub_type)
518 int ret = MEDIA_CONTENT_ERROR_NONE;
519 media_uhd_s *_uhd = (media_uhd_s*)uhd;
521 if ((_uhd != NULL) && (sub_type >= 0)) {
522 _uhd->sub_type = sub_type;
524 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
525 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
531 int media_uhd_set_played_count(media_uhd_h uhd, int played_count)
533 int ret = MEDIA_CONTENT_ERROR_NONE;
534 media_uhd_s *_uhd = (media_uhd_s*)uhd;
537 _uhd->played_count = played_count;
539 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
540 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
546 int media_uhd_update_to_db(media_uhd_h uhd)
548 int ret = MEDIA_CONTENT_ERROR_NONE;
549 media_uhd_s *_uhd = (media_uhd_s*)uhd;
550 char *update_query = NULL;
552 if (_uhd != NULL && STRING_VALID(_uhd->media_id) && STRING_VALID(_uhd->path)) {
553 update_query = sqlite3_mprintf(UPDATE_UHD_META_FROM_UHD, _uhd->content_title, _uhd->release_date, _uhd->played_position, _uhd->sub_type, _uhd->played_count, _uhd->media_id);
555 ret = _content_query_sql(update_query);
556 sqlite3_free(update_query);
558 media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
559 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;