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_info_private.h>
19 #include <media_util_private.h>
20 #include <media_pvr.h>
23 int media_pvr_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_PVR, media_count);
30 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
31 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
37 int media_pvr_foreach_media_from_db(filter_h filter, media_pvr_cb callback, void *user_data)
39 int ret = MEDIA_CONTENT_ERROR_NONE;
41 if (callback != NULL) {
42 ret = _media_db_get_pvr(filter, callback, user_data);
44 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
45 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
51 int media_pvr_destroy(media_pvr_h pvr)
53 int ret = MEDIA_CONTENT_ERROR_NONE;
54 media_pvr_s *_pvr = (media_pvr_s*)pvr;
56 g_free(_pvr->media_id);
57 g_free(_pvr->storage_id);
58 g_free(_pvr->channel_name);
59 g_free(_pvr->channel_num);
60 g_free(_pvr->program_title);
61 g_free(_pvr->program_crid);
62 g_free(_pvr->guidance);
63 g_free(_pvr->synopsis);
65 g_free(_pvr->language);
67 g_free(_pvr->modified_month);
68 g_free(_pvr->private_data);
71 ret = MEDIA_CONTENT_ERROR_NONE;
73 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
74 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
80 int media_pvr_clone(media_pvr_h *dst, media_pvr_h src)
82 media_pvr_s *_src = (media_pvr_s*)src;
84 content_retip_if_fail(dst);
85 content_retip_if_fail(src);
87 media_pvr_s *_dst = g_new0(media_pvr_s, 1);
89 _dst->media_id = g_strdup(_src->media_id);
90 _dst->channel_name = g_strdup(_src->channel_name);
91 _dst->channel_num = g_strdup(_src->channel_num);
92 _dst->program_title = g_strdup(_src->program_title);
93 _dst->program_crid = g_strdup(_src->program_crid);
94 _dst->guidance = g_strdup(_src->guidance);
95 _dst->synopsis = g_strdup(_src->synopsis);
96 _dst->genre = g_strdup(_src->genre);
97 _dst->language = g_strdup(_src->language);
98 _dst->path = g_strdup(_src->path);
99 _dst->storage_id = g_strdup(_src->storage_id);
100 _dst->modified_month = g_strdup(_src->modified_month);
101 _dst->private_data = g_strdup(_src->private_data);
102 _dst->duration = _src->duration;
103 _dst->timezone = _src->timezone;
104 _dst->ptc = _src->ptc;
105 _dst->major = _src->major;
106 _dst->minor = _src->minor;
107 _dst->channel_type = _src->channel_type;
108 _dst->program_num = _src->program_num;
109 _dst->service_profile = _src->service_profile;
110 _dst->timer_record = _src->timer_record;
111 _dst->series_record = _src->series_record;
113 _dst->subtitle = _src->subtitle;
114 _dst->ttx = _src->ttx;
116 _dst->hard_of_hearing_radio = _src->hard_of_hearing_radio;
117 _dst->data_service = _src->data_service;
118 _dst->content_lock = _src->content_lock;
119 _dst->embargo_time = _src->embargo_time;
120 _dst->expiry_time = _src->expiry_time;
121 _dst->size = _src->size;
122 _dst->parental_rating = _src->parental_rating;
123 _dst->start_time = _src->start_time;
124 _dst->program_start_time = _src->program_start_time;
125 _dst->program_end_time = _src->program_end_time;
126 _dst->program_date = _src->program_date;
127 _dst->content_watch = _src->content_watch;
128 _dst->has_audio_only = _src->has_audio_only;
129 _dst->is_local_record = _src->is_local_record;
130 _dst->resolution = _src->resolution;
131 _dst->aspectratio = _src->aspectratio;
132 _dst->sports_type = _src->sports_type;
133 _dst->guidance_length = _src->guidance_length;
134 _dst->tvmode = _src->tvmode;
135 _dst->play_count = _src->play_count;
137 *dst = (media_pvr_h)_dst;
139 return MEDIA_CONTENT_ERROR_NONE;
142 int media_pvr_get_pvr_from_db(const char *media_id, media_pvr_h *pvr)
144 int ret = MEDIA_CONTENT_ERROR_NONE;
145 char *select_query = NULL;
146 sqlite3_stmt *stmt = NULL;
148 if (!STRING_VALID(media_id) || (pvr == NULL)) {
149 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
150 return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
153 select_query = sqlite3_mprintf(SELECT_PVR_FROM_PVR, media_id);
155 ret = _content_get_result(select_query, &stmt);
156 sqlite3_free(select_query);
157 content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
159 media_pvr_s *_pvr = NULL;
161 if (sqlite3_step(stmt) == SQLITE_ROW) {
162 _pvr = g_new0(media_pvr_s, 1);
164 _media_pvr_item_get_detail(stmt, (media_pvr_h)_pvr);
166 *pvr = (media_info_h)_pvr;
168 content_error("Nonexistent media_id[%s]", media_id);
169 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
172 SQLITE3_FINALIZE(stmt);
177 int media_pvr_get_media_id(media_pvr_h pvr, char **media_id)
179 media_pvr_s *_pvr = (media_pvr_s*)pvr;
181 content_retip_if_fail(pvr);
182 content_retip_if_fail(media_id);
184 *media_id = g_strdup(_pvr->media_id);
186 return MEDIA_CONTENT_ERROR_NONE;
189 int media_pvr_get_channel_name(media_pvr_h pvr, char **channel_name)
191 media_pvr_s *_pvr = (media_pvr_s*)pvr;
193 content_retip_if_fail(pvr);
194 content_retip_if_fail(channel_name);
196 *channel_name = g_strdup(_pvr->channel_name);
198 return MEDIA_CONTENT_ERROR_NONE;
201 int media_pvr_get_channel_num(media_pvr_h pvr, char **channel_num)
203 media_pvr_s *_pvr = (media_pvr_s*)pvr;
205 content_retip_if_fail(pvr);
206 content_retip_if_fail(channel_num);
208 *channel_num = g_strdup(_pvr->channel_num);
210 return MEDIA_CONTENT_ERROR_NONE;
213 int media_pvr_get_program_title(media_pvr_h pvr, char **program_title)
215 media_pvr_s *_pvr = (media_pvr_s*)pvr;
217 content_retip_if_fail(pvr);
218 content_retip_if_fail(program_title);
220 *program_title = g_strdup(_pvr->program_title);
222 return MEDIA_CONTENT_ERROR_NONE;
225 int media_pvr_get_program_crid(media_pvr_h pvr, char **program_crid)
227 media_pvr_s *_pvr = (media_pvr_s*)pvr;
229 content_retip_if_fail(pvr);
230 content_retip_if_fail(program_crid);
232 *program_crid = g_strdup(_pvr->program_crid);
234 return MEDIA_CONTENT_ERROR_NONE;
237 int media_pvr_get_guidance(media_pvr_h pvr, char **guidance)
239 media_pvr_s *_pvr = (media_pvr_s*)pvr;
241 content_retip_if_fail(pvr);
242 content_retip_if_fail(guidance);
244 *guidance = g_strdup(_pvr->guidance);
246 return MEDIA_CONTENT_ERROR_NONE;
249 int media_pvr_get_synopsis(media_pvr_h pvr, char **synopsis)
251 media_pvr_s *_pvr = (media_pvr_s*)pvr;
253 content_retip_if_fail(pvr);
254 content_retip_if_fail(synopsis);
256 *synopsis = g_strdup(_pvr->synopsis);
258 return MEDIA_CONTENT_ERROR_NONE;
261 int media_pvr_get_genre(media_pvr_h pvr, char **genre)
263 media_pvr_s *_pvr = (media_pvr_s*)pvr;
265 content_retip_if_fail(pvr);
266 content_retip_if_fail(genre);
268 *genre = g_strdup(_pvr->genre);
270 return MEDIA_CONTENT_ERROR_NONE;
273 int media_pvr_get_language(media_pvr_h pvr, char **language)
275 media_pvr_s *_pvr = (media_pvr_s*)pvr;
277 content_retip_if_fail(pvr);
278 content_retip_if_fail(language);
280 *language = g_strdup(_pvr->language);
282 return MEDIA_CONTENT_ERROR_NONE;
285 int media_pvr_get_path(media_pvr_h pvr, char **path)
287 media_pvr_s *_pvr = (media_pvr_s*)pvr;
289 content_retip_if_fail(pvr);
290 content_retip_if_fail(path);
292 *path = g_strdup(_pvr->path);
294 return MEDIA_CONTENT_ERROR_NONE;
297 int media_pvr_get_storage_id(media_pvr_h pvr, char **storage_id)
299 media_pvr_s *_pvr = (media_pvr_s*)pvr;
301 content_retip_if_fail(pvr);
302 content_retip_if_fail(storage_id);
304 *storage_id = g_strdup(_pvr->storage_id);
306 return MEDIA_CONTENT_ERROR_NONE;
309 int media_pvr_get_size(media_pvr_h pvr, unsigned long long *size)
311 int ret = MEDIA_CONTENT_ERROR_NONE;
312 media_pvr_s *_pvr = (media_pvr_s*)pvr;
316 ret = MEDIA_CONTENT_ERROR_NONE;
318 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
319 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
325 int media_pvr_get_timezone(media_pvr_h pvr, int *timezone)
327 int ret = MEDIA_CONTENT_ERROR_NONE;
328 media_pvr_s *_pvr = (media_pvr_s*)pvr;
330 if (_pvr && timezone) {
331 *timezone = _pvr->timezone;
332 ret = MEDIA_CONTENT_ERROR_NONE;
334 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
335 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
341 int media_pvr_get_ptc(media_pvr_h pvr, int *ptc)
343 int ret = MEDIA_CONTENT_ERROR_NONE;
344 media_pvr_s *_pvr = (media_pvr_s*)pvr;
348 ret = MEDIA_CONTENT_ERROR_NONE;
350 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
351 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
357 int media_pvr_get_major(media_pvr_h pvr, int *major)
359 int ret = MEDIA_CONTENT_ERROR_NONE;
360 media_pvr_s *_pvr = (media_pvr_s*)pvr;
363 *major = _pvr->major;
364 ret = MEDIA_CONTENT_ERROR_NONE;
366 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
367 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
373 int media_pvr_get_minor(media_pvr_h pvr, int *minor)
375 int ret = MEDIA_CONTENT_ERROR_NONE;
376 media_pvr_s *_pvr = (media_pvr_s*)pvr;
379 *minor = _pvr->minor;
380 ret = MEDIA_CONTENT_ERROR_NONE;
382 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
383 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
389 int media_pvr_get_channel_type(media_pvr_h pvr, int *channel_type)
391 int ret = MEDIA_CONTENT_ERROR_NONE;
392 media_pvr_s *_pvr = (media_pvr_s*)pvr;
394 if (_pvr && channel_type) {
395 *channel_type = _pvr->channel_type;
396 ret = MEDIA_CONTENT_ERROR_NONE;
398 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
399 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
405 int media_pvr_get_program_num(media_pvr_h pvr, int *program_num)
407 int ret = MEDIA_CONTENT_ERROR_NONE;
408 media_pvr_s *_pvr = (media_pvr_s*)pvr;
410 if (_pvr && program_num) {
411 *program_num = _pvr->program_num;
412 ret = MEDIA_CONTENT_ERROR_NONE;
414 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
415 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
421 int media_pvr_get_service_profile(media_pvr_h pvr, unsigned int *service_profile)
423 int ret = MEDIA_CONTENT_ERROR_NONE;
424 media_pvr_s *_pvr = (media_pvr_s*)pvr;
426 if (_pvr && service_profile) {
427 *service_profile = _pvr->service_profile;
428 ret = MEDIA_CONTENT_ERROR_NONE;
430 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
431 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
437 int media_pvr_get_duration(media_pvr_h pvr, int *duration)
439 int ret = MEDIA_CONTENT_ERROR_NONE;
440 media_pvr_s *_pvr = (media_pvr_s*)pvr;
442 if (_pvr && duration) {
443 *duration = _pvr->duration;
444 ret = MEDIA_CONTENT_ERROR_NONE;
446 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
447 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
453 int media_pvr_get_embargo_time(media_pvr_h pvr, int *embargo_time)
455 int ret = MEDIA_CONTENT_ERROR_NONE;
456 media_pvr_s *_pvr = (media_pvr_s*)pvr;
458 if (_pvr && embargo_time) {
459 *embargo_time = _pvr->embargo_time;
460 ret = MEDIA_CONTENT_ERROR_NONE;
462 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
463 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
469 int media_pvr_get_expiry_time(media_pvr_h pvr, int *expiry_time)
471 int ret = MEDIA_CONTENT_ERROR_NONE;
472 media_pvr_s *_pvr = (media_pvr_s*)pvr;
474 if (_pvr && expiry_time) {
475 *expiry_time = _pvr->expiry_time;
476 ret = MEDIA_CONTENT_ERROR_NONE;
478 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
479 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
485 int media_pvr_get_parental_rating(media_pvr_h pvr, int *parental_rating)
487 int ret = MEDIA_CONTENT_ERROR_NONE;
488 media_pvr_s *_pvr = (media_pvr_s*)pvr;
490 if (_pvr && parental_rating) {
491 *parental_rating = _pvr->parental_rating;
492 ret = MEDIA_CONTENT_ERROR_NONE;
494 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
495 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
501 int media_pvr_get_start_time(media_pvr_h pvr, int *start_time)
503 int ret = MEDIA_CONTENT_ERROR_NONE;
504 media_pvr_s *_pvr = (media_pvr_s*)pvr;
506 if (_pvr && start_time) {
507 *start_time = _pvr->start_time;
508 ret = MEDIA_CONTENT_ERROR_NONE;
510 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
511 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
517 int media_pvr_get_program_start_time(media_pvr_h pvr, int *program_start_time)
519 int ret = MEDIA_CONTENT_ERROR_NONE;
520 media_pvr_s *_pvr = (media_pvr_s*)pvr;
522 if (_pvr && program_start_time) {
523 *program_start_time = _pvr->program_start_time;
524 ret = MEDIA_CONTENT_ERROR_NONE;
526 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
527 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
533 int media_pvr_get_program_end_time(media_pvr_h pvr, int *end_time)
535 int ret = MEDIA_CONTENT_ERROR_NONE;
536 media_pvr_s *_pvr = (media_pvr_s*)pvr;
538 if (_pvr && end_time) {
539 *end_time = _pvr->program_end_time;
540 ret = MEDIA_CONTENT_ERROR_NONE;
542 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
543 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
549 int media_pvr_get_program_date(media_pvr_h pvr, int *program_date)
551 int ret = MEDIA_CONTENT_ERROR_NONE;
552 media_pvr_s *_pvr = (media_pvr_s*)pvr;
554 if (_pvr && program_date) {
555 *program_date = _pvr->program_date;
556 ret = MEDIA_CONTENT_ERROR_NONE;
558 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
559 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
565 int media_pvr_get_timer_record(media_pvr_h pvr, bool* timer_record)
567 int ret = MEDIA_CONTENT_ERROR_NONE;
568 media_pvr_s *_pvr = (media_pvr_s*)pvr;
570 if (_pvr && timer_record) {
571 *timer_record = _pvr->timer_record;
572 ret = MEDIA_CONTENT_ERROR_NONE;
574 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
575 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
581 int media_pvr_get_series_record(media_pvr_h pvr, bool* series_record)
583 int ret = MEDIA_CONTENT_ERROR_NONE;
584 media_pvr_s *_pvr = (media_pvr_s*)pvr;
586 if (_pvr && series_record) {
587 *series_record = _pvr->series_record;
588 ret = MEDIA_CONTENT_ERROR_NONE;
590 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
591 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
597 int media_pvr_get_hd(media_pvr_h pvr, int* hd)
599 int ret = MEDIA_CONTENT_ERROR_NONE;
600 media_pvr_s *_pvr = (media_pvr_s*)pvr;
604 ret = MEDIA_CONTENT_ERROR_NONE;
606 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
607 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
613 int media_pvr_get_subtitle(media_pvr_h pvr, bool* subtitle)
615 int ret = MEDIA_CONTENT_ERROR_NONE;
616 media_pvr_s *_pvr = (media_pvr_s*)pvr;
618 if (_pvr && subtitle) {
619 *subtitle = _pvr->subtitle;
620 ret = MEDIA_CONTENT_ERROR_NONE;
622 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
623 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
629 int media_pvr_get_ttx(media_pvr_h pvr, bool* ttx)
631 int ret = MEDIA_CONTENT_ERROR_NONE;
632 media_pvr_s *_pvr = (media_pvr_s*)pvr;
636 ret = MEDIA_CONTENT_ERROR_NONE;
638 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
639 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
645 int media_pvr_get_ad(media_pvr_h pvr, bool* ad)
647 int ret = MEDIA_CONTENT_ERROR_NONE;
648 media_pvr_s *_pvr = (media_pvr_s*)pvr;
652 ret = MEDIA_CONTENT_ERROR_NONE;
654 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
655 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
661 int media_pvr_get_hard_of_hearing_radio(media_pvr_h pvr, bool* hard_of_hearing_radio)
663 int ret = MEDIA_CONTENT_ERROR_NONE;
664 media_pvr_s *_pvr = (media_pvr_s*)pvr;
666 if (_pvr && hard_of_hearing_radio) {
667 *hard_of_hearing_radio = _pvr->hard_of_hearing_radio;
668 ret = MEDIA_CONTENT_ERROR_NONE;
670 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
671 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
677 int media_pvr_get_data_service(media_pvr_h pvr, bool* data_service)
679 int ret = MEDIA_CONTENT_ERROR_NONE;
680 media_pvr_s *_pvr = (media_pvr_s*)pvr;
682 if (_pvr && data_service) {
683 *data_service = _pvr->data_service;
684 ret = MEDIA_CONTENT_ERROR_NONE;
686 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
687 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
693 int media_pvr_get_content_lock(media_pvr_h pvr, bool* content_lock)
695 int ret = MEDIA_CONTENT_ERROR_NONE;
696 media_pvr_s *_pvr = (media_pvr_s*)pvr;
698 if (_pvr && content_lock) {
699 *content_lock = _pvr->content_lock;
700 ret = MEDIA_CONTENT_ERROR_NONE;
702 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
703 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
709 int media_pvr_get_content_watch(media_pvr_h pvr, bool* content_watch)
711 int ret = MEDIA_CONTENT_ERROR_NONE;
712 media_pvr_s *_pvr = (media_pvr_s*)pvr;
714 if (_pvr && content_watch) {
715 *content_watch = _pvr->content_watch;
716 ret = MEDIA_CONTENT_ERROR_NONE;
718 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
719 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
725 int media_pvr_get_has_audio_only(media_pvr_h pvr, bool* has_audio_only)
727 int ret = MEDIA_CONTENT_ERROR_NONE;
728 media_pvr_s *_pvr = (media_pvr_s*)pvr;
730 if (_pvr && has_audio_only) {
731 *has_audio_only = _pvr->has_audio_only;
732 ret = MEDIA_CONTENT_ERROR_NONE;
734 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
735 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
741 int media_pvr_get_is_local_record(media_pvr_h pvr, bool* is_local_record)
743 int ret = MEDIA_CONTENT_ERROR_NONE;
744 media_pvr_s *_pvr = (media_pvr_s*)pvr;
746 if (_pvr && is_local_record) {
747 *is_local_record = _pvr->is_local_record;
748 ret = MEDIA_CONTENT_ERROR_NONE;
750 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
751 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
757 int media_pvr_get_resolution(media_pvr_h pvr, media_pvr_resolution_e* resolution)
759 int ret = MEDIA_CONTENT_ERROR_NONE;
760 media_pvr_s *_pvr = (media_pvr_s*)pvr;
762 if (_pvr && resolution) {
763 *resolution = _pvr->resolution;
764 ret = MEDIA_CONTENT_ERROR_NONE;
766 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
767 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
773 int media_pvr_get_aspectratio(media_pvr_h pvr, media_pvr_aspectratio_e* aspectratio)
775 int ret = MEDIA_CONTENT_ERROR_NONE;
776 media_pvr_s *_pvr = (media_pvr_s*)pvr;
778 if (_pvr && aspectratio) {
779 *aspectratio = _pvr->aspectratio;
780 ret = MEDIA_CONTENT_ERROR_NONE;
782 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
783 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
789 int media_pvr_get_modified_month(media_pvr_h pvr, char **modified_month)
791 media_pvr_s *_pvr = (media_pvr_s*)pvr;
793 content_retip_if_fail(pvr);
794 content_retip_if_fail(modified_month);
796 *modified_month = g_strdup(_pvr->modified_month);
798 return MEDIA_CONTENT_ERROR_NONE;
801 int media_pvr_get_sports_type(media_pvr_h pvr, int* sports_type)
803 int ret = MEDIA_CONTENT_ERROR_NONE;
804 media_pvr_s *_pvr = (media_pvr_s*)pvr;
806 if (_pvr && sports_type) {
807 *sports_type = _pvr->sports_type;
808 ret = MEDIA_CONTENT_ERROR_NONE;
810 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
811 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
817 int media_pvr_get_guidance_length(media_pvr_h pvr, int* guidance_length)
819 int ret = MEDIA_CONTENT_ERROR_NONE;
820 media_pvr_s *_pvr = (media_pvr_s*)pvr;
822 if (_pvr && guidance_length) {
823 *guidance_length = _pvr->guidance_length;
824 ret = MEDIA_CONTENT_ERROR_NONE;
826 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
827 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
833 int media_pvr_get_tvmode(media_pvr_h pvr, int* tvmode)
835 int ret = MEDIA_CONTENT_ERROR_NONE;
836 media_pvr_s *_pvr = (media_pvr_s*)pvr;
838 if (_pvr && tvmode) {
839 *tvmode = _pvr->tvmode;
840 ret = MEDIA_CONTENT_ERROR_NONE;
842 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
843 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
849 int media_pvr_get_play_count(media_pvr_h pvr, int* play_count)
851 int ret = MEDIA_CONTENT_ERROR_NONE;
852 media_pvr_s *_pvr = (media_pvr_s*)pvr;
854 if (_pvr && play_count) {
855 *play_count = _pvr->play_count;
856 ret = MEDIA_CONTENT_ERROR_NONE;
858 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
859 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
865 int media_pvr_get_private_data(media_pvr_h pvr, char **private_data)
867 int ret = MEDIA_CONTENT_ERROR_NONE;
868 media_pvr_s *_pvr = (media_pvr_s*)pvr;
870 content_retip_if_fail(pvr);
871 content_retip_if_fail(private_data);
873 *private_data = g_strdup(_pvr->private_data);
875 return MEDIA_CONTENT_ERROR_NONE;
878 int media_pvr_get_highlight(media_pvr_h pvr, bool *highlight)
880 int ret = MEDIA_CONTENT_ERROR_NONE;
881 media_pvr_s *_pvr = (media_pvr_s*)pvr;
883 if (_pvr && highlight) {
884 *highlight = _pvr->highlight;
885 ret = MEDIA_CONTENT_ERROR_NONE;
887 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
888 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
894 int media_pvr_set_play_count(media_pvr_h pvr, int play_count)
896 int ret = MEDIA_CONTENT_ERROR_NONE;
897 media_pvr_s *_pvr = (media_pvr_s*)pvr;
900 _pvr->play_count = play_count;
902 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
903 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
909 int media_pvr_set_program_title(media_pvr_h pvr, const char *program_title)
911 media_pvr_s *_pvr = (media_pvr_s*)pvr;
913 content_retip_if_fail(pvr);
914 content_retip_if_fail(STRING_VALID(program_title));
916 g_free(_pvr->program_title);
917 _pvr->program_title = g_strdup(program_title);
919 return MEDIA_CONTENT_ERROR_NONE;
922 int media_pvr_set_content_lock(media_pvr_h pvr, bool content_lock)
924 int ret = MEDIA_CONTENT_ERROR_NONE;
925 media_pvr_s *_pvr = (media_pvr_s*)pvr;
928 _pvr->content_lock = content_lock;
930 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
931 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
937 int media_pvr_set_content_watch(media_pvr_h pvr, bool content_watch)
939 int ret = MEDIA_CONTENT_ERROR_NONE;
940 media_pvr_s *_pvr = (media_pvr_s*)pvr;
943 _pvr->content_watch = content_watch;
945 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
946 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
952 int media_pvr_set_highlight(media_pvr_h pvr, bool highlight)
954 int ret = MEDIA_CONTENT_ERROR_NONE;
955 media_pvr_s *_pvr = (media_pvr_s*)pvr;
958 _pvr->highlight = highlight;
960 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
961 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
967 int media_pvr_update_to_db(media_pvr_h pvr)
969 int ret = MEDIA_CONTENT_ERROR_NONE;
970 media_pvr_s *_pvr = (media_pvr_s*)pvr;
971 char *update_query = NULL;
973 if (_pvr != NULL && STRING_VALID(_pvr->media_id) && STRING_VALID(_pvr->path)) {
974 update_query = sqlite3_mprintf(UPDATE_PVR_META_FROM_PVR, _pvr->program_title, _pvr->content_lock, _pvr->content_watch, _pvr->play_count, _pvr->highlight, _pvr->media_id);
976 ret = _content_query_sql(update_query);
977 sqlite3_free(update_query);
979 if (ret == MEDIA_CONTENT_ERROR_NONE)
980 media_svc_update_pvr_info(_content_get_db_handle(), _pvr->path, _pvr->program_title, _pvr->content_lock);
982 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
983 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
989 int media_pvr_group_foreach_media_from_db(const char *group_name, media_group_e group, filter_h filter, media_pvr_cb callback, void *user_data)
991 int ret = MEDIA_CONTENT_ERROR_NONE;
993 if ((callback == NULL) || (group < MEDIA_PVR_GROUP_DURATION) || (group >= MEDIA_GROUP_MAX)) {
994 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
995 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
997 ret = _media_db_get_pvr_group_item(group_name, filter, group, callback, user_data);
1003 int media_pvr_set_is_local_record(const char *pvr_path, bool is_local_record)
1005 int ret = MEDIA_CONTENT_ERROR_NONE;
1006 char *update_query = NULL;
1007 char storage_id[MEDIA_CONTENT_UUID_SIZE+1] = {0,};
1009 if (pvr_path == NULL) {
1010 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
1011 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
1014 /*get the storage uuid*/
1015 ret = media_svc_get_storage_id(_content_get_db_handle(), pvr_path, storage_id, tzplatform_getuid(TZ_USER_NAME));
1016 if (ret == MS_MEDIA_ERR_NONE) {
1017 content_error("storage uuid [%s]", storage_id);
1018 update_query = sqlite3_mprintf(UPDATE_PVR_LOCAL_RECORD_PVR, is_local_record, pvr_path, storage_id);
1020 ret = _content_query_sql(update_query);
1021 sqlite3_free(update_query);
1023 content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
1024 content_error("pvr path[%s] error[%d]", pvr_path, ret);
1025 ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;