lock_assert(&t->s_stream_mutex);
TAILQ_FOREACH(st, &t->s_filt_components, es_filt_link) {
+ if (t->s_dvb_prefcapid_lock == 2 &&
+ t->s_dvb_prefcapid != st->es_pid)
+ continue;
LIST_FOREACH(c, &st->es_caids, link) {
/* search ecmpid in list */
LIST_FOREACH(cce, &ct->ct_caid_ecm, cce_link)
pthread_mutex_lock(&t->s_stream_mutex);
TAILQ_FOREACH(st, &t->s_filt_components, es_filt_link) {
caid_t *c;
+ if (t->s_dvb_prefcapid_lock == 2 &&
+ t->s_dvb_prefcapid != st->es_pid)
+ continue;
LIST_FOREACH(c, &st->es_caids, link) {
if(c == NULL || c->use == 0)
continue;
LIST_FOREACH(pcard, &cwc->cwc_cards, cs_card) {
if (pcard->cwc_caid == 0) continue;
TAILQ_FOREACH(st, &t->s_filt_components, es_filt_link) {
+ if (((mpegts_service_t *)t)->s_dvb_prefcapid_lock == 2 &&
+ ((mpegts_service_t *)t)->s_dvb_prefcapid != st->es_pid)
+ continue;
LIST_FOREACH(c, &st->es_caids, link) {
if (c->use && c->caid == pcard->cwc_caid)
break;
return &s;
}
+static htsmsg_t *
+mpegts_service_pref_capid_lock_list ( void *o )
+{
+ static const struct strtab tab[] = {
+ { "Off", 0 },
+ { "On", 1 },
+ { "Only Pref. CA PID", 2 },
+ };
+ return strtab2htsmsg(tab);
+}
+
const idclass_t mpegts_service_class =
{
.ic_super = &service_class,
.opts = PO_ADVANCED,
},
{
- .type = PT_BOOL,
+ .type = PT_INT,
.id = "prefcapid_lock",
.name = "Lock Pref. CA PID",
.off = offsetof(mpegts_service_t, s_dvb_prefcapid_lock),
.opts = PO_ADVANCED,
+ .list = mpegts_service_pref_capid_lock_list,
},
{},
}