epggrab_ota_save(om);
mm = mpegts_mux_find0(&om->om_mux_uuid);
- mpegts_mux_nice_name(mm, name, sizeof(name));
- tvhdebug(LS_EPGGRAB, "grab done for %s (%s)", name, reasons[reason]);
+ tvhdebug(LS_EPGGRAB, "grab done for %s (%s)", mm->mm_nicename, reasons[reason]);
mtimer_disarm(&om->om_timer);
mtimer_disarm(&om->om_data_timer);
epggrab_mux_stop ( mpegts_mux_t *mm, void *p, int reason )
{
epggrab_ota_mux_t *ota;
- char name[256];
int done = EPGGRAB_OTA_DONE_STOLEN;
if (reason == SM_CODE_NO_INPUT)
done = EPGGRAB_OTA_DONE_NO_DATA;
- if (tvhtrace_enabled()) {
- mpegts_mux_nice_name(mm, name, sizeof(name));
- tvhtrace(LS_EPGGRAB, "mux %s (%p) stop", name, mm);
- }
+ tvhtrace(LS_EPGGRAB, "mux %s (%p) stop", mm->mm_nicename, mm);
TAILQ_FOREACH(ota, &epggrab_ota_active, om_q_link)
if (!uuid_cmp(&ota->om_mux_uuid, &mm->mm_id.in_uuid)) {
epggrab_ota_done(ota, done);
ota = RB_INSERT_SORTED(&epggrab_ota_all, epggrab_ota_mux_skel, om_global_link, om_id_cmp);
if (!ota) {
- char buf[256];
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhinfo(LS_EPGGRAB, "%s - registering mux for OTA EPG", buf);
+ tvhinfo(LS_EPGGRAB, "%s - registering mux for OTA EPG", mm->mm_nicename);
ota = epggrab_ota_mux_skel;
SKEL_USED(epggrab_ota_mux_skel);
TAILQ_INSERT_SORTED(&epggrab_ota_pending, ota, om_q_link, om_mux_cmp);
}
if (epg_flag < 0 || epg_flag == MM_EPG_DISABLE) {
- if (tvhtrace_enabled()) {
- mpegts_mux_nice_name(mm, name, sizeof(name));
- tvhtrace(LS_EPGGRAB, "epg mux %s is disabled, skipping", name);
- }
+ tvhtrace(LS_EPGGRAB, "epg mux %s is disabled, skipping", mm->mm_nicename);
goto done;
}
}
}
if ((i == 0 || (r == 0 && modname)) && epg_flag != MM_EPG_FORCE) {
- mpegts_mux_nice_name(mm, name, sizeof(name));
- tvhdebug(LS_EPGGRAB, "no OTA modules active for %s, check again next time", name);
+ tvhdebug(LS_EPGGRAB, "no OTA modules active for %s, check again next time", mm->mm_nicename);
goto done;
}
free(om->om_force_modname);
om->om_force_modname = modname ? strdup(modname) : NULL;
- /* Subscribe to the mux */
om->om_requeue = 1;
if ((r = mpegts_mux_subscribe(mm, NULL, "epggrab",
SUBSCRIPTION_PRIO_EPG,
SUBSCRIPTION_ONESHOT |
SUBSCRIPTION_TABLES))) {
if (r != SM_CODE_NO_ADAPTERS) {
- if (tvhtrace_enabled()) {
- mpegts_mux_nice_name(mm, name, sizeof(name));
- tvhtrace(LS_EPGGRAB, "subscription failed for %s (result %d)", name, r);
- }
+ tvhtrace(LS_EPGGRAB, "subscription failed for %s (result %d)", mm->mm_nicename, r);
TAILQ_INSERT_TAIL(&epggrab_ota_pending, om, om_q_link);
om->om_q_type = EPGGRAB_OTA_MUX_PENDING;
om->om_retry_time = mclk() + mono2sec(60);
if (r == SM_CODE_NO_FREE_ADAPTER)
net->failed = 1;
} else {
- if (tvhtrace_enabled()) {
- mpegts_mux_nice_name(mm, name, sizeof(name));
- tvhtrace(LS_EPGGRAB, "no free adapter for %s (subscribe)", name);
- }
+ tvhtrace(LS_EPGGRAB, "no free adapter for %s (subscribe)", mm->mm_nicename);
net->fatal = 1;
}
} else {
- if (tvhtrace_enabled()) {
- mpegts_mux_nice_name(mm, name, sizeof(name));
- tvhtrace(LS_EPGGRAB, "mux %s (%p), started", name, mm);
- }
+ tvhtrace(LS_EPGGRAB, "mux %s (%p), started", name, mm->mm_nicename);
kick = 0;
/* note: it is possible that the mux_start listener is not called */
/* for reshared mux subscriptions, so call it (maybe second time) here.. */
epggrab_ota_svc_link_t *svcl,
const char *op )
{
- char buf[256];
mpegts_mux_t *mm;
mpegts_service_t *svc;
mm = mpegts_mux_find0(&ota->om_mux_uuid);
svc = mpegts_service_find_by_uuid0(&svcl->uuid);
if (mm && svc) {
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhtrace(LS_EPGGRAB, "ota %s %s service %s", buf, op, svc->s_nicename);
+ tvhtrace(LS_EPGGRAB, "ota %s %s service %s", mm->mm_nicename, op, svc->s_nicename);
} else if (tvheadend_is_running())
- tvhtrace(LS_EPGGRAB, "ota %s, problem? (%p %p)", op, mm, svc);
+ tvhtrace(LS_EPGGRAB, "ota %s %s, problem? (%p %p)", mm->mm_nicename, op, mm, svc);
}
void
hts_settings_remove("epggrab/otamux/%s", uuid);
return;
}
- if (tvhtrace_enabled()) {
- char name[256];
- mpegts_mux_nice_name(mm, name, sizeof(name));
- tvhtrace(LS_EPGGRAB, "loading config for %s", name);
- }
+ tvhtrace(LS_EPGGRAB, "loading config for %s", mm->mm_nicename);
ota = calloc(1, sizeof(epggrab_ota_mux_t));
ota->om_mux_uuid = mm->mm_id.in_uuid;
LIST_ENTRY(mpegts_mux) mm_network_link;
mpegts_network_t *mm_network;
+ char *mm_nicename;
char *mm_provider_network_name;
uint16_t mm_onid;
uint16_t mm_tsid;
static void
dvb_bouquet_comment ( bouquet_t *bq, mpegts_mux_t *mm )
{
- char comment[128];
-
if (bq->bq_comment && bq->bq_comment[0])
return;
- mpegts_mux_nice_name(mm, comment, sizeof(comment));
- bouquet_change_comment(bq, comment, 0);
+ bouquet_change_comment(bq, mm->mm_nicename, 0);
}
static void
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;
if (r != 1) return r;
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(mt->mt_subsys, "%s: %s: TSID zero value detected, ignoring", mt->mt_name, buf);
+ tvhwarn(mt->mt_subsys, "%s: %s: TSID zero value detected, ignoring", mt->mt_name, mm->mm_nicename);
}
goto end;
}
if (mm->mm_tsid != MPEGTS_TSID_NONE) {
if (mm->mm_tsid && mm->mm_tsid != tsid) {
if (++mm->mm_tsid_checks > 12) {
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvhwarn(mt->mt_subsys, "%s: %s: TSID change detected - old %04x (%d), new %04x (%d)",
- mt->mt_name, buf, mm->mm_tsid, mm->mm_tsid, tsid, tsid);
+ mt->mt_name, mm->mm_nicename, mm->mm_tsid, mm->mm_tsid, tsid, tsid);
} else {
if (tvhtrace_enabled()) {
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvhtrace(mt->mt_subsys, "%s: %s: ignore TSID - old %04x (%d), new %04x (%d) (checks %d)",
- mt->mt_name, buf, mm->mm_tsid, mm->mm_tsid, tsid, tsid, mm->mm_tsid_checks);
+ mt->mt_name, mm->mm_nicename, mm->mm_tsid, mm->mm_tsid, tsid, tsid, mm->mm_tsid_checks);
}
return 0; /* keep rolling */
}
const uint8_t *dlptr, *dptr, *lptr_orig = lptr;
const char *charset;
mpegts_network_t *mn;
- char buf[128], dauth[256];
+ char dauth[256];
if (mux && mux->mm_enabled != MM_ENABLE)
bi = NULL;
charset = discovery ? NULL : dvb_charset_find(mn, mux, NULL);
if (!discovery || tvhtrace_enabled()) {
- if (mux)
- mpegts_mux_nice_name(mux, buf, sizeof(buf));
- else
- strcpy(buf, "<none>");
tvhlog(discovery ? LOG_TRACE : LOG_DEBUG,
mt->mt_subsys, "%s: onid %04X (%d) tsid %04X (%d) mux %s%s",
- mt->mt_name, onid, onid, tsid, tsid, buf,
+ mt->mt_name, onid, onid, tsid, tsid,
+ mm->mm_nicename ?: "<none>",
discovery ? " (discovery)" : "");
}
const uint8_t *lptr, *dptr;
int llen, dlen;
mpegts_network_t *mn = mm->mm_network;
- char buf[128];
-
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhdebug(mt->mt_subsys, "%s: mux %s", mt->mt_name, buf);
+ tvhdebug(mt->mt_subsys, "%s: mux %s", mt->mt_name, mm->mm_nicename);
/* Service loop */
while(len >= 5) {
}
/* Parse URL */
- mpegts_mux_nice_name((mpegts_mux_t*)im, buf, sizeof(buf));
urlinit(&url);
#if ENABLE_LIBAV
} else {
if (urlparse(raw ?: "", &url)) {
- tvherror(LS_IPTV, "%s - invalid URL [%s]", buf, raw);
+ tvherror(LS_IPTV, "%s - invalid URL [%s]", im->mm_nicename, raw);
return ret;
}
scheme = url.scheme;
/* Find scheme handler */
ih = iptv_handler_find(scheme ?: "");
if (!ih) {
- tvherror(LS_IPTV, "%s - unsupported scheme [%s]", buf, scheme ?: "none");
+ tvherror(LS_IPTV, "%s - unsupported scheme [%s]", im->mm_nicename, scheme ?: "none");
return ret;
}
int
iptv_input_fd_started ( iptv_mux_t *im )
{
- char buf[256];
-
/* Setup poll */
if (im->mm_iptv_fd > 0) {
/* Error? */
if (tvhpoll_add1(iptv_poll, im->mm_iptv_fd, TVHPOLL_IN, im) < 0) {
- mpegts_mux_nice_name((mpegts_mux_t*)im, buf, sizeof(buf));
- tvherror(LS_IPTV, "%s - failed to add to poll q", buf);
+ tvherror(LS_IPTV, "%s - failed to add to poll q", im->mm_nicename);
close(im->mm_iptv_fd);
im->mm_iptv_fd = -1;
return -1;
if (im->mm_iptv_fd2 > 0) {
/* Error? */
if (tvhpoll_add1(iptv_poll, im->mm_iptv_fd2, TVHPOLL_IN, im) < 0) {
- mpegts_mux_nice_name((mpegts_mux_t*)im, buf, sizeof(buf));
- tvherror(LS_IPTV, "%s - failed to add to poll q (2)", buf);
+ tvherror(LS_IPTV, "%s - failed to add to poll q (2)", im->mm_nicename);
close(im->mm_iptv_fd2);
im->mm_iptv_fd2 = -1;
return -1;
static int
iptv_udp_start ( iptv_mux_t *im, const char *raw, const url_t *url )
{
- char name[256];
udp_connection_t *conn;
udp_multirecv_t *um;
- mpegts_mux_nice_name((mpegts_mux_t*)im, name, sizeof(name));
-
/* Note: url->user is used for specifying multicast source address (SSM)
here. The URL format is rtp://<srcaddr>@<grpaddr>:<port> */
- conn = udp_bind(LS_IPTV, name, url->host, url->port, url->user,
+ conn = udp_bind(LS_IPTV, im->mm_nicename, url->host, url->port, url->user,
im->mm_iptv_interface, IPTV_BUF_SIZE, 4*1024);
if (conn == UDP_FATAL_ERROR)
return SM_CODE_TUNING_FAILED;
struct iovec *iovec;
udp_multirecv_t *um = im->im_data;
ssize_t res = 0;
- char name[256];
n = udp_multirecv_read(um, im->mm_iptv_fd, IPTV_PKTS, &iovec);
if (n < 0)
}
if (im->mm_iptv_rtp_seq < 0xffff && im->mm_iptv_rtp_seq > 0x3ff) {
- mpegts_mux_nice_name((mpegts_mux_t*)im, name, sizeof(name));
- tvherror(LS_IPTV, "receving non-raw UDP data for %s!", name);
+ tvherror(LS_IPTV, "receving non-raw UDP data for %s!", im->mm_nicename);
im->mm_iptv_rtp_seq = 0x10000; /* no further logs! */
}
linuxdvb_frontend_stop_mux
( mpegts_input_t *mi, mpegts_mux_instance_t *mmi )
{
- char buf1[256], buf2[256];
+ char buf1[256];
linuxdvb_frontend_t *lfe = (linuxdvb_frontend_t*)mi, *lfe2;
if (lfe->lfe_master)
assert(lfe->lfe_type == DVB_TYPE_S);
mi->mi_display_name(mi, buf1, sizeof(buf1));
- mpegts_mux_nice_name(mmi->mmi_mux, buf2, sizeof(buf2));
- tvhdebug(LS_LINUXDVB, "%s - stopping %s", buf1, buf2);
+ tvhdebug(LS_LINUXDVB, "%s - stopping %s", buf1, mmi->mmi_mux->mm_nicename);
/* Stop thread */
if (lfe->lfe_dvr_pipe.wr > 0) {
( linuxdvb_frontend_t *lfe, mpegts_mux_instance_t *mmi, uint32_t freq )
{
int r = 0, i, rep;
- char buf1[256], buf2[256];
+ char buf1[256];
lfe->mi_display_name((mpegts_input_t*)lfe, buf1, sizeof(buf1));
- mpegts_mux_nice_name(mmi->mmi_mux, buf2, sizeof(buf2));
- tvhdebug(LS_LINUXDVB, "%s - starting %s", buf1, buf2);
+ tvhdebug(LS_LINUXDVB, "%s - starting %s", buf1, mmi->mmi_mux->mm_nicename);
/* Tune */
tvhtrace(LS_LINUXDVB, "%s - tuning", buf1);
( mpegts_input_t *mi, mpegts_mux_t *mm, int pid, int type, int weight,
void *owner, int reopen )
{
- char buf[512];
mpegts_pid_t *mp;
mpegts_pid_sub_t *mps, *mps2;
if (mps2->mps_owner == owner) break;
if (mps2 == NULL) {
LIST_INSERT_HEAD(&mm->mm_all_subs, mps, mps_svcraw_link);
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvhdebug(LS_MPEGTS, "%s - open PID %s subscription [%04x/%p]",
- buf, (type & MPS_TABLES) ? "tables" : "fullmux", type, owner);
+ mm->mm_nicename, (type & MPS_TABLES) ? "tables" : "fullmux", type, owner);
mm->mm_update_pids_flag = 1;
} else {
if (!reopen) {
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvherror(LS_MPEGTS,
"%s - open PID %04x (%d) failed, dupe sub (owner %p)",
- buf, mp->mp_pid, mp->mp_pid, owner);
+ mm->mm_nicename, mp->mp_pid, mp->mp_pid, owner);
}
free(mps);
mp = NULL;
LIST_INSERT_HEAD(&mp->mp_raw_subs, mps, mps_raw_link);
if (type & MPS_SERVICE)
LIST_INSERT_HEAD(&mp->mp_svc_subs, mps, mps_svcraw_link);
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvhdebug(LS_MPEGTS, "%s - open PID %04X (%d) [%d/%p]",
- buf, mp->mp_pid, mp->mp_pid, type, owner);
+ mm->mm_nicename, mp->mp_pid, mp->mp_pid, type, owner);
mm->mm_update_pids_flag = 1;
} else {
if (!reopen) {
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvherror(LS_MPEGTS, "%s - open PID %04x (%d) failed, dupe sub (owner %p)",
- buf, mp->mp_pid, mp->mp_pid, owner);
+ mm->mm_nicename, mp->mp_pid, mp->mp_pid, owner);
}
free(mps);
mp = NULL;
mpegts_input_close_pid
( mpegts_input_t *mi, mpegts_mux_t *mm, int pid, int type, int weight, void *owner )
{
- char buf[512];
mpegts_pid_sub_t *mps, skel;
mpegts_pid_t *mp;
int mask;
if (!(mp = mpegts_mux_find_pid(mm, pid, 0)))
return -1;
if (pid == MPEGTS_FULLMUX_PID || pid == MPEGTS_TABLES_PID) {
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
LIST_FOREACH(mps, &mm->mm_all_subs, mps_svcraw_link)
if (mps->mps_owner == owner) break;
if (mps == NULL) return -1;
tvhdebug(LS_MPEGTS, "%s - close PID %s subscription [%04x/%p]",
- buf, pid == MPEGTS_TABLES_PID ? "tables" : "fullmux",
+ mm->mm_nicename, pid == MPEGTS_TABLES_PID ? "tables" : "fullmux",
type, owner);
if (pid == MPEGTS_FULLMUX_PID)
mpegts_input_close_pids(mi, mm, owner, 0);
mm->mm_last_mp = NULL;
}
if (mps) {
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvhdebug(LS_MPEGTS, "%s - close PID %04X (%d) [%d/%p]",
- buf, mp->mp_pid, mp->mp_pid, type, owner);
+ mm->mm_nicename, mp->mp_pid, mp->mp_pid, type, owner);
if (type & MPS_RAW)
LIST_REMOVE(mps, mps_raw_link);
if (type & MPS_SERVICE)
#if ENABLE_TSDEBUG
off_t tsdebug_pos;
#endif
- char muxname[256];
if (mm == NULL || (mmi = mm->mm_active) == NULL)
return 0;
- mpegts_mux_nice_name(mm, muxname, sizeof(muxname));
-
assert(mm == mmi->mmi_mux);
#if ENABLE_TSDEBUG
tsb2 < tsb2_end; tsb2 += 188) {
cc = tsb2[3] & 0x0f;
if (cc2 != 0xff && cc2 != cc) {
- tvhtrace(LS_MPEGTS, "%s: pid %04X cc err %2d != %2d", muxname, pid, cc, cc2);
+ tvhtrace(LS_MPEGTS, "%s: pid %04X cc err %2d != %2d", mm->mm_nicename, pid, cc, cc2);
atomic_add(&mmi->tii_stats.cc, 1);
}
cc2 = (cc + 1) & 0xF;
if (type & (MPS_TABLE | MPS_FTABLE)) {
if (!(tsb[1] & 0x80)) {
if (type & MPS_FTABLE)
- mpegts_input_table_dispatch(mm, muxname, tsb, llen);
+ mpegts_input_table_dispatch(mm, mm->mm_nicename, tsb, llen);
if (type & MPS_TABLE) {
if (mi->mi_table_queue_size >= 2*1024*1024) {
if (tvhlog_limit(&mi->mi_input_queue_loglimit, 10))
mpegts_table_feed_t *mtf;
mpegts_input_t *mi = aux;
mpegts_mux_t *mm = NULL;
- char muxname[256];
pthread_mutex_lock(&mi->mi_output_lock);
while (atomic_get(&mi->mi_running)) {
/* Process */
pthread_mutex_lock(&global_lock);
if (atomic_get(&mi->mi_running)) {
- if (mm != mtf->mtf_mux) {
- mm = mtf->mtf_mux;
- if (mm)
- mpegts_mux_nice_name(mm, muxname, sizeof(muxname));
- }
+ mm = mtf->mtf_mux;
if (mm && mm->mm_active)
- mpegts_input_table_dispatch(mm, muxname, mtf->mtf_tsb, mtf->mtf_len);
+ mpegts_input_table_dispatch(mm, mm->mm_nicename, mtf->mtf_tsb, mtf->mtf_len);
}
pthread_mutex_unlock(&global_lock);
LIST_INSERT_HEAD(&mm->mm_instances, mmi, mmi_mux_link);
LIST_INSERT_HEAD(&mi->mi_mux_instances, (tvh_input_instance_t *)mmi, tii_input_link);
-
return mmi;
}
( mpegts_mux_instance_t **mmiptr, service_t *t, int weight )
{
int r;
- char buf[256], buf2[256];
+ char buf[256];
mpegts_mux_instance_t *mmi = *mmiptr;
mpegts_mux_t * mm = mmi->mmi_mux;
mpegts_input_t * mi = mmi->mmi_input;
mpegts_service_t * s;
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
/* Already active */
if (mm->mm_active) {
*mmiptr = mm->mm_active;
- tvhdebug(LS_MPEGTS, "%s - already active", buf);
+ tvhdebug(LS_MPEGTS, "%s - already active", mm->mm_nicename);
mpegts_mux_scan_active(mm, buf, (*mmiptr)->mmi_input);
return 0;
}
+ /* Update nicename */
+ mpegts_mux_nice_name(mm, buf, sizeof(buf));
+ free(mm->mm_nicename);
+ mm->mm_nicename = strdup(buf);
+
/* Dead service check */
LIST_FOREACH(s, &mm->mm_services, s_dvb_mux_link)
s->s_dvb_check_seen = s->s_dvb_last_seen;
mm->mm_tsid_checks = 0;
/* Start */
- mi->mi_display_name(mi, buf2, sizeof(buf2));
- tvhinfo(LS_MPEGTS, "%s - tuning on %s", buf, buf2);
+ mi->mi_display_name(mi, buf, sizeof(buf));
+ tvhinfo(LS_MPEGTS, "%s - tuning on %s", mm->mm_nicename, buf);
if (mi->mi_linked)
mpegts_mux_unsubscribe_linked(mi, t);
if (r) return r;
/* Start */
- tvhdebug(LS_MPEGTS, "%s - started", buf);
+ tvhdebug(LS_MPEGTS, "%s - started", mm->mm_nicename);
mm->mm_start_monoclock = mclk();
mi->mi_started_mux(mi, mmi);
free(mm->mm_provider_network_name);
free(mm->mm_crid_authority);
free(mm->mm_charset);
+ free(mm->mm_nicename);
free(mm);
}
void
mpegts_mux_delete ( mpegts_mux_t *mm, int delconf )
{
- char buf[256];
-
idnode_save_check(&mm->mm_id, delconf);
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhinfo(LS_MPEGTS, "%s (%p) - deleting", buf, mm);
+ tvhinfo(LS_MPEGTS, "%s (%p) - deleting", mm->mm_nicename, mm);
/* Stop */
mm->mm_stop(mm, 1, SM_CODE_ABORTED);
static void
mpegts_mux_stop ( mpegts_mux_t *mm, int force, int reason )
{
- char buf[256], buf2[256], *s;
+ char *s;
mpegts_mux_instance_t *mmi = mm->mm_active, *mmi2;
mpegts_input_t *mi = NULL, *mi2;
mpegts_pid_t *mp;
mpegts_pid_sub_t *mps;
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
-
- if (!force && mpegts_mux_has_subscribers(mm, buf))
+ if (!force && mpegts_mux_has_subscribers(mm, mm->mm_nicename))
return;
/* Stop possible recursion */
if (!mmi) return;
- tvhdebug(LS_MPEGTS, "%s - stopping mux%s", buf, force ? " (forced)" : "");
+ tvhdebug(LS_MPEGTS, "%s - stopping mux%s", mm->mm_nicename, force ? " (forced)" : "");
mi = mmi->mmi_input;
assert(mi);
if (mi->mi_linked) {
mi2 = mpegts_input_find(mi->mi_linked);
if (mi2 && (mmi2 = LIST_FIRST(&mi2->mi_mux_active)) != NULL) {
- mpegts_mux_nice_name(mmi2->mmi_mux, buf2, sizeof(buf2));
- if (mmi2 && !mpegts_mux_has_subscribers(mmi2->mmi_mux, buf2)) {
+ if (mmi2 && !mpegts_mux_has_subscribers(mmi2->mmi_mux, mmi2->mmi_mux->mm_nicename)) {
s = mi2->mi_linked;
mi2->mi_linked = NULL;
mpegts_mux_unsubscribe_linked(mi2, NULL);
mi2->mi_linked = s;
} else {
if (!force) {
- tvhtrace(LS_MPEGTS, "%s - keeping subscribed (linked tuner active)", buf);
+ tvhtrace(LS_MPEGTS, "%s - keeping subscribed (linked tuner active)", mm->mm_nicename);
return;
}
}
assert(mm->mm_active == NULL);
/* Flush all tables */
- tvhtrace(LS_MPEGTS, "%s - flush tables", buf);
+ tvhtrace(LS_MPEGTS, "%s - flush tables", mm->mm_nicename);
mpegts_table_flush_all(mm);
- tvhtrace(LS_MPEGTS, "%s - mi=%p", buf, (void *)mi);
+ tvhtrace(LS_MPEGTS, "%s - mi=%p", mm->mm_nicename, (void *)mi);
/* Flush table data queue */
mpegts_input_flush_mux(mi, mm);
mp->mp_pid == MPEGTS_TABLES_PID) {
while ((mps = LIST_FIRST(&mm->mm_all_subs))) {
tvhdebug(LS_MPEGTS, "%s - close PID %s subscription [%d/%p]",
- buf, mp->mp_pid == MPEGTS_TABLES_PID ? "tables" : "fullmux",
+ mm->mm_nicename,
+ mp->mp_pid == MPEGTS_TABLES_PID ? "tables" : "fullmux",
mps->mps_type, mps->mps_owner);
LIST_REMOVE(mps, mps_svcraw_link);
free(mps);
}
} else {
while ((mps = RB_FIRST(&mp->mp_subs))) {
- tvhdebug(LS_MPEGTS, "%s - close PID %04X (%d) [%d/%p]", buf,
+ tvhdebug(LS_MPEGTS, "%s - close PID %04X (%d) [%d/%p]",
+ mm->mm_nicename,
mp->mp_pid, mp->mp_pid, mps->mps_type, mps->mps_owner);
RB_REMOVE(&mp->mp_subs, mps, mps_link);
if (mps->mps_type & (MPS_SERVICE|MPS_ALL))
mpegts_mux_scan_timeout ( void *aux )
{
int c, q, w;
- char buf[256];
mpegts_mux_t *mm = aux;
mpegts_table_t *mt;
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
/* Timeout */
if (mm->mm_scan_init) {
- mpegts_mux_scan_done(mm, buf, -1);
+ mpegts_mux_scan_done(mm, mm->mm_nicename, -1);
return;
}
mm->mm_scan_init = 1;
/* No DATA - give up now */
if (!c) {
- mpegts_mux_scan_done(mm, buf, 0);
+ mpegts_mux_scan_done(mm, mm->mm_nicename, 0);
/* Pending tables (another 20s or 30s - bit arbitrary) */
} else if (q) {
- tvhtrace(LS_MPEGTS, "%s - scan needs more time", buf);
+ tvhtrace(LS_MPEGTS, "%s - scan needs more time", mm->mm_nicename);
mtimer_arm_rel(&mm->mm_scan_timeout, mpegts_mux_scan_timeout, mm, sec2mono(w ? 30 : 20));
return;
/* Complete */
} else {
- mpegts_mux_scan_done(mm, buf, 1);
+ mpegts_mux_scan_done(mm, mm->mm_nicename, 1);
}
}
mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvhtrace(LS_MPEGTS, "%s - created", buf);
+ mm->mm_nicename = strdup(buf);
return mm;
}
if (onid == mm->mm_onid)
return 0;
mm->mm_onid = onid;
- if (tvhtrace_enabled()) {
- char buf[256];
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhtrace(LS_MPEGTS, "%s - set onid %04X (%d)", buf, onid, onid);
- }
+ tvhtrace(LS_MPEGTS, "%s - set onid %04X (%d)", mm->mm_nicename, onid, onid);
idnode_changed(&mm->mm_id);
return 1;
}
if (!force && mm->mm_tsid != MPEGTS_TSID_NONE)
return 0;
mm->mm_tsid = tsid;
- if (tvhtrace_enabled()) {
- char buf[256];
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhtrace(LS_MPEGTS, "%s - set tsid %04X (%d)", buf, tsid, tsid);
- }
+ tvhtrace(LS_MPEGTS, "%s - set tsid %04X (%d)", mm->mm_nicename, tsid, tsid);
idnode_changed(&mm->mm_id);
return 1;
}
if (defauth && !strcmp(defauth, mm->mm_crid_authority ?: ""))
return 0;
tvh_str_update(&mm->mm_crid_authority, defauth);
- if (tvhtrace_enabled()) {
- char buf[256];
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhtrace(LS_MPEGTS, "%s - set crid authority %s", buf, defauth);
- }
+ tvhtrace(LS_MPEGTS, "%s - set crid authority %s", mm->mm_nicename, defauth);
idnode_changed(&mm->mm_id);
return 1;
}
mpegts_mux_remove_subscriber
( mpegts_mux_t *mm, th_subscription_t *s, int reason )
{
- if (tvhtrace_enabled()) {
- char buf[256];
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhtrace(LS_MPEGTS, "%s - remove subscriber (reason %i)", buf, reason);
- }
+ tvhtrace(LS_MPEGTS, "%s - remove subscriber (reason %i)", mm->mm_nicename, reason);
mm->mm_stop(mm, 0, reason);
}
htsmsg_t *c, *c2, *e;
htsmsg_field_t *f;
dvb_fe_delivery_system_t delsys;
+ char buf[512];
char ubuf1[UUID_HEX_SIZE];
char ubuf2[UUID_HEX_SIZE];
lm->mm_config_save = dvb_mux_config_save;
lm->mm_create_instances = dvb_mux_create_instances;
+ mpegts_mux_nice_name(mm, buf, sizeof(buf));
+ free(mm->mm_nicename);
+ mm->mm_nicename = strdup(buf);
+
/* No config */
if (!conf) return lm;
mpegts_network_scan_queue_del ( mpegts_mux_t *mm )
{
mpegts_network_t *mn = mm->mm_network;
- char buf[384];
if (mm->mm_scan_state == MM_SCAN_STATE_ACTIVE) {
TAILQ_REMOVE(&mn->mn_scan_active, mm, mm_scan_link);
} else if (mm->mm_scan_state == MM_SCAN_STATE_PEND) {
TAILQ_REMOVE(&mn->mn_scan_pend, mm, mm_scan_link);
}
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhdebug(LS_MPEGTS, "removing mux %s from scan queue", buf);
+ tvhdebug(LS_MPEGTS, "removing mux %s from scan queue", mm->mm_nicename);
mm->mm_scan_state = MM_SCAN_STATE_IDLE;
mm->mm_scan_weight = 0;
mtimer_disarm(&mm->mm_scan_timeout);
( mpegts_mux_t *mm, int weight, int flags, int delay )
{
int reload = 0;
- char buf[384];
mpegts_network_t *mn = mm->mm_network;
if (!mm->mm_is_enabled(mm)) return;
TAILQ_REMOVE(&mn->mn_scan_pend, mm, mm_scan_link);
}
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
tvhdebug(LS_MPEGTS, "adding mux %s to scan queue weight %d flags %04X",
- buf, weight, flags);
+ mm->mm_nicename, weight, flags);
/* Add new entry */
mm->mm_scan_state = MM_SCAN_STATE_PEND;
((dvb_mux_t *)mm)->lm_tuning.u.dmc_fe_qpsk.polarisation == dvb_str2pol(pol) &&
((dvb_mux_t *)mm)->lm_tuning.u.dmc_fe_qpsk.orbital_pos == satpos)
{
- char buf[256];
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhinfo(LS_MPEGTS, "fastscan mux found '%s', set scan state 'PENDING'", buf);
+ tvhinfo(LS_MPEGTS, "fastscan mux found '%s', set scan state 'PENDING'", mm->mm_nicename);
mpegts_mux_scan_state_set(mm, MM_SCAN_STATE_PEND);
return;
}
mpegts_mux_t *mm, uint16_t sid, uint16_t pmt_pid, htsmsg_t *conf )
{
int r;
- char buf[256];
mpegts_network_t *mn = mm->mm_network;
time_t dispatch_clock = gclk();
service_make_nicename((service_t*)s);
pthread_mutex_unlock(&s->s_stream_mutex);
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- tvhdebug(LS_MPEGTS, "%s - add service %04X %s", buf, s->s_dvb_service_id, s->s_dvb_svcname);
+ tvhdebug(LS_MPEGTS, "%s - add service %04X %s", mm->mm_nicename, s->s_dvb_service_id, s->s_dvb_svcname);
/* Bouquet */
mpegts_network_bouquet_trigger(mn, 1);
mpegts_service_create_raw ( mpegts_mux_t *mm )
{
mpegts_service_t *s = calloc(1, sizeof(*s));
- char buf[256];
-
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
if (service_create0((service_t*)s, STYPE_RAW,
&mpegts_service_raw_class, NULL,
pthread_mutex_lock(&s->s_stream_mutex);
free(s->s_nicename);
- s->s_nicename = strdup(buf);
+ s->s_nicename = strdup(mm->mm_nicename);
pthread_mutex_unlock(&s->s_stream_mutex);
- tvhdebug(LS_MPEGTS, "%s - add raw service", buf);
+ tvhdebug(LS_MPEGTS, "%s - add raw service", mm->mm_nicename);
return s;
}
static void
mpegts_table_fastswitch ( mpegts_mux_t *mm, mpegts_table_t *mtm )
{
- char buf[256];
mpegts_table_t *mt;
assert(mm == mtm->mt_mux);
pthread_mutex_unlock(&mm->mm_tables_lock);
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
- mpegts_mux_scan_done(mm, buf, 1);
+ mpegts_mux_scan_done(mm, mm->mm_nicename, 1);
}
void
{
extern char *tvheadend_tsdebug;
static const char *tmpdir = "/tmp/tvheadend.tsdebug/";
- char buf[128];
char path[PATH_MAX];
struct stat st;
if (!tvheadend_tsdebug && !stat(tmpdir, &st) && (st.st_mode & S_IFDIR) != 0)
if (tvheadend_tsdebug && !strcmp(tvheadend_tsdebug, tmpdir) && stat(tmpdir, &st))
tvheadend_tsdebug = NULL;
if (tvheadend_tsdebug) {
- mpegts_mux_nice_name(mm, buf, sizeof(buf));
snprintf(path, sizeof(path), "%s/%s-%li-%p-mux.ts", tvheadend_tsdebug,
- buf, (long)mono2sec(mclk()), mi);
+ mm->mm_nicename, (long)mono2sec(mclk()), mi);
mm->mm_tsdebug_fd = tvh_open(path, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
if (mm->mm_tsdebug_fd < 0)
tvherror(LS_TSDEBUG, "unable to create file '%s' (%i)", path, errno);
snprintf(path, sizeof(path), "%s/%s-%li-%p-input.ts", tvheadend_tsdebug,
- buf, (long)mono2sec(mclk()), mi);
+ mm->mm_nicename, (long)mono2sec(mclk()), mi);
mm->mm_tsdebug_fd2 = tvh_open(path, O_WRONLY | O_CREAT, S_IRUSR | S_IWUSR);
if (mm->mm_tsdebug_fd2 < 0)
tvherror(LS_TSDEBUG, "unable to create file '%s' (%i)", path, errno);
{
satip_frontend_t *lfe = (satip_frontend_t*)mi;
satip_tune_req_t *tr;
- char buf1[256], buf2[256];
+ char buf1[256];
mi->mi_display_name(mi, buf1, sizeof(buf1));
- mpegts_mux_nice_name(mmi->mmi_mux, buf2, sizeof(buf2));
- tvhdebug(LS_SATIP, "%s - stopping %s", buf1, buf2);
+ tvhdebug(LS_SATIP, "%s - stopping %s", buf1, mmi->mmi_mux->mm_nicename);
mtimer_disarm(&lfe->sf_monitor_timer);
satip_frontend_t *lfe = (satip_frontend_t*)mi;
dvb_mux_t *lm = (dvb_mux_t *)mmi->mmi_mux;
satip_tune_req_t *tr;
- char buf1[256], buf2[256];
+ char buf1[256];
lfe->mi_display_name((mpegts_input_t*)lfe, buf1, sizeof(buf1));
- mpegts_mux_nice_name(mmi->mmi_mux, buf2, sizeof(buf2));
- tvhdebug(LS_SATIP, "%s - starting %s", buf1, buf2);
+ tvhdebug(LS_SATIP, "%s - starting %s", buf1, lm->mm_nicename);
if (!lfe->sf_device->sd_no_univ_lnb &&
(lm->lm_tuning.dmc_fe_delsys == DVB_SYS_DVBS ||
static void
subscription_show_none(th_subscription_t *s)
{
- char buf[256], buf2[128];
+ char buf[256];
size_t l = 0;
tvh_strlcatf(buf, sizeof(buf), l,
#if ENABLE_MPEGTS
else if (s->ths_raw_service) {
mpegts_service_t *ms = (mpegts_service_t *)s->ths_raw_service;
- mpegts_mux_nice_name(ms->s_dvb_mux, buf2, sizeof(buf2));
- tvh_strlcatf(buf, sizeof(buf), l, " to mux \"%s\"", buf2);
+ tvh_strlcatf(buf, sizeof(buf), l, " to mux \"%s\"", ms->s_dvb_mux->mm_nicename);
}
#endif
else {
#if ENABLE_MPEGTS
if (idnode_is_instance(&s->ths_service->s_id, &mpegts_service_class)) {
mpegts_service_t *ms = (mpegts_service_t *)s->ths_service;
- mpegts_mux_nice_name(ms->s_dvb_mux, buf2, sizeof(buf2));
- tvh_strlcatf(buf, sizeof(buf), l, " in mux \"%s\"", buf2);
+ tvh_strlcatf(buf, sizeof(buf), l, " in mux \"%s\"", ms->s_dvb_mux->mm_nicename);
}
#endif
}