mpegts_mux_t *mm = mt->mt_mux;
mpegts_psi_table_state_t *st = NULL;
mpegts_service_t *s;
+ char buf[256];
/* Begin */
if (tableid != 0) return -1;
r = dvb_table_begin((mpegts_psi_table_t *)mt, ptr, len,
tableid, tsid, 5, &st, §, &last, &ver);
if (r != 1) return r;
- if (tsid == 0) goto end;
+ if (tsid == 0 && !mm->mm_tsid_accept_zero_value) {
+ if (tvhlog_limit(&mm->mm_tsid_loglimit, 2)) {
+ mpegts_mux_nice_name(mm, buf, sizeof(buf));
+ tvhwarn("pat", "%s: TSID zero value detected, ignoring", buf);
+ }
+ goto end;
+ }
/* Multiplex */
tvhdebug("pat", "%p: tsid %04X (%d)", mm, tsid, tsid);
if (mm->mm_tsid != MPEGTS_TSID_NONE) {
if (mm->mm_tsid && mm->mm_tsid != tsid) {
- char buf[256];
if (++mm->mm_tsid_checks > 12) {
mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvhwarn("pat", "%s: TSID change detected - old %04x (%d), new %04x (%d)",
.off = offsetof(iptv_network_t, in_ssl_peer_verify),
.opts = PO_EXPERT
},
+ {
+ .type = PT_BOOL,
+ .id = "tsid_zero",
+ .name = N_("Accept zero value for TSID"),
+ .off = offsetof(iptv_network_t, in_tsid_accept_zero_value),
+ },
{
.type = PT_STR,
.id = "remove_args",
htsmsg_add_str(conf, "iptv_hdr", custom);
if (epgcfg >= 0)
htsmsg_add_s32(conf, "epg", epgcfg);
+ if (in->in_tsid_accept_zero_value)
+ htsmsg_add_s32(conf, "tsid_zero", 1);
im = iptv_mux_create0(in, NULL, conf);
htsmsg_destroy(conf);
.opts = PO_RDONLY | PO_NOSAVE,
.get = mpegts_mux_class_get_num_chn,
},
+ {
+ .type = PT_BOOL,
+ .id = "tsid_zero",
+ .name = N_("Accept zero value for TSID"),
+ .off = offsetof(mpegts_mux_t, mm_tsid_accept_zero_value),
+ .opts = PO_ADVANCED
+ },
{
.type = PT_INT,
.id = "pmt_06_ac3",
/* Create logical instance */
mm = tsfile_mux_create(uuid, tsfile_network);
+ mm->mm_tsid_accept_zero_value = 1;
/* Create physical instance (for each tuner) */
LIST_FOREACH(mi, &tsfile_inputs, tsi_link)