int mpegts_mux_instance_weight ( mpegts_mux_instance_t *mmi );
-int mpegts_mux_set_tsid ( mpegts_mux_t *mm, uint16_t tsid );
+int mpegts_mux_set_tsid ( mpegts_mux_t *mm, uint16_t tsid, int force );
int mpegts_mux_set_onid ( mpegts_mux_t *mm, uint16_t onid );
int mpegts_mux_set_crid_authority ( mpegts_mux_t *mm, const char *defauth );
/* Multiplex */
tvhdebug("pat", "tsid %04X (%d)", tsid, tsid);
- mpegts_mux_set_tsid(mm, tsid);
+ mpegts_mux_set_tsid(mm, tsid, 1);
/* Process each programme */
ptr += 5;
mux = dvb_desc_terr_del(mm, onid, tsid, dptr, dlen);
if (mux) {
mpegts_mux_set_onid(mux, onid);
- mpegts_mux_set_tsid(mux, tsid);
+ mpegts_mux_set_tsid(mux, tsid, 0);
}
break;
/* Find Transport Stream */
if (tableid == 0x42) {
mpegts_mux_set_onid(mm, onid);
- mpegts_mux_set_tsid(mm, tsid);
+ mpegts_mux_set_tsid(mm, tsid, 1);
} else {
LIST_FOREACH(mm, &mn->mn_muxes, mm_network_link)
if (mm->mm_onid == onid && mm->mm_tsid == tsid)
}
int
-mpegts_mux_set_tsid ( mpegts_mux_t *mm, uint16_t tsid )
+mpegts_mux_set_tsid ( mpegts_mux_t *mm, uint16_t tsid, int force )
{
char buf[256];
if (tsid == mm->mm_tsid)
return 0;
+ if (!force && mm->mm_tsid)
+ return 0;
mm->mm_tsid = tsid;
mm->mm_display_name(mm, buf, sizeof(buf));
mm->mm_config_save(mm);