Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
mpegts dvb service: add CA PID filter (lock) mode 2 to force CA PID
- works for both cwc and capmt
  • Loading branch information
perexg committed Jul 30, 2014
1 parent 07e2ad2 commit b611d69
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/descrambler/capmt.c
Expand Up @@ -1530,6 +1530,9 @@ capmt_caid_change(th_descrambler_t *td)
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)
Expand Down Expand Up @@ -1809,6 +1812,9 @@ capmt_service_start(service_t *s)
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;
Expand Down
3 changes: 3 additions & 0 deletions src/descrambler/cwc.c
Expand Up @@ -1992,6 +1992,9 @@ cwc_service_start(service_t *t)
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;
Expand Down
14 changes: 13 additions & 1 deletion src/input/mpegts/mpegts_service.c
Expand Up @@ -55,6 +55,17 @@ mpegts_service_class_get_network ( void *ptr )
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,
Expand Down Expand Up @@ -134,11 +145,12 @@ const idclass_t mpegts_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,
},
{},
}
Expand Down

0 comments on commit b611d69

Please sign in to comment.