char *mm_charset;
int mm_pmt_ac3;
int mm_eit_tsid_nocheck;
+ int mm_sid_filter;
/*
* TSDEBUG
/* Start */
sid = ptr[0] << 8 | ptr[1];
+ if (mm->mm_sid_filter > 0 && sid != mm->mm_sid_filter)
+ goto end;
r = dvb_table_begin((mpegts_psi_table_t *)mt, ptr, len,
tableid, sid, 9, &st, §, &last, &ver);
if (r != 1) return r;
#endif
/* Finish */
+end:
return dvb_table_end((mpegts_psi_table_t *)mt, st, sect);
}
http_arg_t *ra1, *ra2, *ra2_next;
htsbuf_queue_t q;
size_t l;
- int64_t chnum2;
+ int64_t chnum2, vlcprog;
const char *url, *name, *logo, *epgid, *tags;
char url2[512], custom[512], name2[128], buf[32], *n;
htsmsg_add_s32(conf, "epg", epgcfg);
if (in->in_tsid_accept_zero_value)
htsmsg_add_s32(conf, "tsid_zero", 1);
+ if (!htsmsg_get_s64(item, "vlc-program", &vlcprog) &&
+ vlcprog > 1 && vlcprog < 8191)
+ htsmsg_add_s32(conf, "sid_filter", vlcprog);
+
im = iptv_mux_create0(in, NULL, conf);
htsmsg_destroy(conf);
.off = offsetof(mpegts_mux_t, mm_eit_tsid_nocheck),
.opts = PO_HIDDEN | PO_EXPERT
},
+ {
+ .type = PT_BOOL,
+ .id = "sid_filter",
+ .name = N_("Service ID"),
+ .desc = N_("Use only this service ID, filter out others."),
+ .off = offsetof(mpegts_mux_t, mm_sid_filter),
+ .opts = PO_HIDDEN | PO_EXPERT
+ },
{}
}
};
/* Validate */
lock_assert(&global_lock);
+ if (mm->mm_sid_filter > 0 && sid != mm->mm_sid_filter)
+ return NULL;
+
/* Find existing service */
LIST_FOREACH(s, &mm->mm_services, s_dvb_mux_link) {
if (s->s_dvb_service_id == sid) {
free(y);
}
continue;
- } else if (strncmp(data, "#EXT-X-VERSION", 14) == 0) {
- htsmsg_add_s64(m, "version", strtoll(data + 14, NULL, 10));
- data = until_eol(data + 14);
+ } else if (strncmp(data, "#EXT-X-VERSION:", 15) == 0) {
+ htsmsg_add_s64(m, "version", strtoll(data + 15, NULL, 10));
+ data = until_eol(data + 15);
continue;
} else if (strncmp(data, "#EXT-X-MEDIA-SEQUENCE:", 22) == 0) {
htsmsg_add_s64(m, "media-sequence", strtoll(data + 22, NULL, 10));
htsmsg_add_bool(m, "x-endlist", 1);
data = until_eol(data + 14);
continue;
+ } else if (strncmp(data, "#EXTVLCOPT:program=", 19) == 0) {
+ htsmsg_add_s64(m, "vlc-program", strtoll(data + 19, NULL, 10));
+ data = until_eol(data + 19);
} else if (strncmp(data, "#EXT", 4) == 0) {
data = until_eol(data + 4);
continue;