diff --git a/src/descrambler/cwc.c b/src/descrambler/cwc.c index 72ef301f..2d838f3b 100755 --- a/src/descrambler/cwc.c +++ b/src/descrambler/cwc.c @@ -771,9 +771,9 @@ forbid: ct->cs_channel = es->es_channel; ct->ecm_state = ECM_VALID; - if(t->s_prefcapid == 0 || t->s_prefcapid != ct->cs_channel) { - t->s_prefcapid = ct->cs_channel; - tvhlog(LOG_DEBUG, "cwc", "Saving prefered PID %d", t->s_prefcapid); + if(t->s_dvb_prefcapid == 0 || t->s_dvb_prefcapid != ct->cs_channel) { + t->s_dvb_prefcapid = ct->cs_channel; + tvhlog(LOG_DEBUG, "cwc", "Saving prefered PID %d", t->s_dvb_prefcapid); service_request_save((service_t*)t, 0); } @@ -1638,28 +1638,28 @@ cwc_table_input(struct th_descrambler *td, service_t *s, if (ct->ecm_state == ECM_RESET) { ct->ecm_state = ECM_INIT; ct->cs_channel = -1; - t->s_prefcapid = 0; + t->s_dvb_prefcapid = 0; tvhlog(LOG_DEBUG, "cwc", "Reset after unexpected or no reply for service \"%s\"", t->s_dvb_svcname); } if (ct->ecm_state == ECM_INIT) { // Validate prefered ECM PID - if(t->s_prefcapid != 0) { + if(t->s_dvb_prefcapid != 0) { struct elementary_stream *prefca - = service_stream_find((service_t*)t, t->s_prefcapid); + = service_stream_find((service_t*)t, t->s_dvb_prefcapid); if (!prefca || prefca->es_type != SCT_CA) { - tvhlog(LOG_DEBUG, "cwc", "Invalid prefered ECM (PID %d) found for service \"%s\"", t->s_prefcapid, t->s_dvb_svcname); - t->s_prefcapid = 0; + tvhlog(LOG_DEBUG, "cwc", "Invalid prefered ECM (PID %d) found for service \"%s\"", t->s_dvb_prefcapid, t->s_dvb_svcname); + t->s_dvb_prefcapid = 0; } } - if(t->s_prefcapid == st->es_pid) { + if(t->s_dvb_prefcapid == st->es_pid) { ep = calloc(1, sizeof(ecm_pid_t)); - ep->ep_pid = t->s_prefcapid; + ep->ep_pid = t->s_dvb_prefcapid; LIST_INSERT_HEAD(&ct->cs_pids, ep, ep_link); - tvhlog(LOG_DEBUG, "cwc", "Insert prefered ECM (PID %d) for service \"%s\"", t->s_prefcapid, t->s_dvb_svcname); + tvhlog(LOG_DEBUG, "cwc", "Insert prefered ECM (PID %d) for service \"%s\"", t->s_dvb_prefcapid, t->s_dvb_svcname); } - else if(t->s_prefcapid == 0) { + else if(t->s_dvb_prefcapid == 0) { ep = calloc(1, sizeof(ecm_pid_t)); ep->ep_pid = st->es_pid; LIST_INSERT_HEAD(&ct->cs_pids, ep, ep_link); diff --git a/src/input/mpegts.h b/src/input/mpegts.h index 26d7cecb..3ac69db9 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -360,6 +360,7 @@ struct mpegts_service char *s_dvb_cridauth; uint16_t s_dvb_servicetype; char *s_dvb_charset; + uint16_t s_dvb_prefcapid; /* * EIT/EPG control diff --git a/src/input/mpegts/mpegts_service.c b/src/input/mpegts/mpegts_service.c index da851305..7a7dd880 100644 --- a/src/input/mpegts/mpegts_service.c +++ b/src/input/mpegts/mpegts_service.c @@ -126,6 +126,13 @@ const idclass_t mpegts_service_class = .list = dvb_charset_enum, .opts = PO_ADVANCED, }, + { + .type = PT_U16, + .id = "prefcapid", + .name = "Pref. CA PID", + .off = offsetof(mpegts_service_t, s_dvb_prefcapid), + .opts = PO_ADVANCED, + }, {}, } }; diff --git a/src/service.c b/src/service.c index abbfddb8..fd765e79 100644 --- a/src/service.c +++ b/src/service.c @@ -911,26 +911,6 @@ service_build_stream_start(service_t *t) /** * */ -void -service_set_enable(service_t *t, int enabled) -{ - if(t->s_enabled == enabled) - return; - - t->s_enabled = enabled; - t->s_config_save(t); - subscription_reschedule(); -} - -void -service_set_prefcapid(service_t *t, uint32_t prefcapid) -{ - if(t->s_prefcapid == prefcapid) - return; - - t->s_prefcapid = prefcapid; - t->s_config_save(t); -} static pthread_mutex_t pending_save_mutex; static pthread_cond_t pending_save_cond; diff --git a/src/service.h b/src/service.h index 2caab0a1..ab53082b 100644 --- a/src/service.h +++ b/src/service.h @@ -398,7 +398,6 @@ typedef struct service { struct th_descrambler_list s_descramblers; int s_scrambled_seen; int s_caid; - uint16_t s_prefcapid; /** * List of all components. @@ -462,8 +461,6 @@ service_stream_find(service_t *t, int pid) elementary_stream_t *service_stream_create(service_t *t, int pid, streaming_component_type_t type); -void service_set_priority(service_t *t, int prio); - void service_settings_write(service_t *t); const char *service_servicetype_txt(service_t *t); @@ -493,8 +490,6 @@ service_set_streaming_status_flags(service_t *t, int flag) struct streaming_start; struct streaming_start *service_build_stream_start(service_t *t); -void service_set_enable(service_t *t, int enabled); - void service_restart(service_t *t, int had_components); void service_stream_destroy(service_t *t, elementary_stream_t *st); @@ -526,14 +521,6 @@ int tss2errcode(int tss); uint16_t service_get_encryption(service_t *t); -void service_set_dvb_charset(service_t *t, const char *dvb_charset); - -void service_set_dvb_eit_enable(service_t *t, int dvb_eit_enable); - -void service_set_prefcapid(service_t *t, uint32_t prefcapid); - -int service_is_primary_epg (service_t *t); - htsmsg_t *servicetype_list (void); void service_load ( service_t *s, htsmsg_t *c );