diff --git a/src/dvb/dvb_transport.c b/src/dvb/dvb_transport.c index 96b34679..d2ace30b 100644 --- a/src/dvb/dvb_transport.c +++ b/src/dvb/dvb_transport.c @@ -289,33 +289,35 @@ dvb_transport_quality(th_transport_t *t) /** * Generate a descriptive name for the source */ -static const char * -dvb_transport_sourcename(th_transport_t *t) +static htsmsg_t * +dvb_transport_sourceinfo(th_transport_t *t) { + htsmsg_t *m = htsmsg_create_map(); th_dvb_mux_instance_t *tdmi = t->tht_dvb_mux_instance; + char buf[100]; lock_assert(&global_lock); - return tdmi->tdmi_adapter->tda_displayname; + htsmsg_add_str(m, "device", tdmi->tdmi_adapter->tda_rootpath); + + htsmsg_add_str(m, "adapter", tdmi->tdmi_adapter->tda_displayname); + + if(tdmi->tdmi_network != NULL) + htsmsg_add_str(m, "network", tdmi->tdmi_network); + + dvb_mux_nicename(buf, sizeof(buf), tdmi); + htsmsg_add_str(m, "mux", buf); + + if(t->tht_provider != NULL) + htsmsg_add_str(m, "provider", t->tht_provider); + + if(t->tht_svcname != NULL) + htsmsg_add_str(m, "service", t->tht_svcname); + + return m; } -/** - * Generate a descriptive name for the source - */ -static const char * -dvb_transport_networkname(th_transport_t *t) -{ - th_dvb_mux_instance_t *tdmi = t->tht_dvb_mux_instance; - - lock_assert(&global_lock); - - return tdmi->tdmi_network; -} - - - - /** * Find a transport based on 'serviceid' on the given mux * @@ -357,8 +359,7 @@ dvb_transport_find(th_dvb_mux_instance_t *tdmi, uint16_t sid, int pmt_pid, t->tht_refresh_feed = dvb_transport_refresh; t->tht_stop_feed = dvb_transport_stop; t->tht_config_change = dvb_transport_save; - t->tht_sourcename = dvb_transport_sourcename; - t->tht_networkname = dvb_transport_networkname; + t->tht_sourceinfo = dvb_transport_sourceinfo; t->tht_dvb_mux_instance = tdmi; t->tht_quality_index = dvb_transport_quality; diff --git a/src/dvr/dvr_rec.c b/src/dvr/dvr_rec.c index e5fbff3f..726b2e26 100644 --- a/src/dvr/dvr_rec.c +++ b/src/dvr/dvr_rec.c @@ -256,7 +256,7 @@ dvr_rec_start(dvr_entry_t *de, htsmsg_t *m) char urlname[512]; int err, r; htsmsg_field_t *f; - htsmsg_t *sub, *streams; + htsmsg_t *sub, *streams, *srcinfo; const char *type, *lang; uint32_t idx; @@ -378,11 +378,13 @@ dvr_rec_start(dvr_entry_t *de, htsmsg_t *m) de->de_fctx = fctx; de->de_ts_offset = AV_NOPTS_VALUE; - tvhlog(LOG_INFO, "dvr", - "%s - Recording from %s (%s)", - de->de_ititle, - htsmsg_get_str(m, "source"), htsmsg_get_str(m, "network")); - + if((srcinfo = htsmsg_get_map(m, "sourceinfo")) != NULL) { + HTSMSG_FOREACH(f, srcinfo) { + if(f->hmf_type == HMF_STR) + tvhlog(LOG_INFO, "dvr", "%s - Source %s: %s", + de->de_ititle, f->hmf_name, f->hmf_str); + } + } } diff --git a/src/rawtsinput.c b/src/rawtsinput.c index 7caaa139..4b2fbb00 100644 --- a/src/rawtsinput.c +++ b/src/rawtsinput.c @@ -84,20 +84,10 @@ rawts_transport_quality(th_transport_t *t) /** * Generate a descriptive name for the source */ -static const char * -rawts_transport_sourcename(th_transport_t *t) +static htsmsg_t * +rawts_transport_sourceinfo(th_transport_t *t) { - return "rawts"; -} - - -/** - * Generate a descriptive name for the source - */ -static const char * -rawts_transport_networkname(th_transport_t *t) -{ - return "rawts"; + return htsmsg_create_map(); } @@ -129,8 +119,7 @@ rawts_transport_add(rawts_t *rt, uint16_t sid, int pmt_pid) t->tht_start_feed = rawts_transport_start; t->tht_stop_feed = rawts_transport_stop; t->tht_config_change = rawts_transport_save; - t->tht_sourcename = rawts_transport_sourcename; - t->tht_networkname = rawts_transport_networkname; + t->tht_sourceinfo = rawts_transport_sourceinfo; t->tht_quality_index = rawts_transport_quality; t->tht_svcname = strdup(tmp); diff --git a/src/subscriptions.c b/src/subscriptions.c index 635c6ec0..24473018 100644 --- a/src/subscriptions.c +++ b/src/subscriptions.c @@ -226,15 +226,21 @@ subscription_create_from_channel(channel_t *ch, unsigned int weight, "to channel \"%s\"", s->ths_title, ch->ch_name); } else { - const char *n; - n = s->ths_transport->tht_networkname(s->ths_transport); + htsmsg_t *m = s->ths_transport->tht_sourceinfo(s->ths_transport); + tvhlog(LOG_INFO, "subscription", - "\"%s\" subscribing on \"%s\", weight: %d, network: \"%s\", " - "source: \"%s\", quality: %d", + "\"%s\" subscribing on \"%s\", weight: %d, adapter: \"%s\", " + "network: \"%s\", mux: \"%s\", provider: \"%s\", " + "service: \"%s\", quality: %d", s->ths_title, ch->ch_name, weight, - n ?: "", - s->ths_transport->tht_sourcename(s->ths_transport), + htsmsg_get_str(m, "adapter") ?: "", + htsmsg_get_str(m, "network") ?: "", + htsmsg_get_str(m, "mux") ?: "", + htsmsg_get_str(m, "provider") ?: "", + htsmsg_get_str(m, "service") ?: "", s->ths_transport->tht_quality_index(s->ths_transport)); + + htsmsg_destroy(m); } return s; } diff --git a/src/transports.c b/src/transports.c index cee5b375..0f518953 100644 --- a/src/transports.c +++ b/src/transports.c @@ -702,7 +702,6 @@ transport_build_stream_start_msg(th_transport_t *t) { htsmsg_t *m, *streams, *c; th_stream_t *st; - const char *n; lock_assert(&t->tht_stream_mutex); @@ -721,10 +720,7 @@ transport_build_stream_start_msg(th_transport_t *t) } htsmsg_add_msg(m, "streams", streams); - if((n = t->tht_networkname(t)) != NULL) - htsmsg_add_str(m, "network", n); - - htsmsg_add_str(m, "source", t->tht_sourcename(t)); + htsmsg_add_msg(m, "sourceinfo", t->tht_sourceinfo(t)); return m; } diff --git a/src/tvhead.h b/src/tvhead.h index 61bf28cd..13bef2f6 100644 --- a/src/tvhead.h +++ b/src/tvhead.h @@ -450,9 +450,7 @@ typedef struct th_transport { void (*tht_config_change)(struct th_transport *t); - const char *(*tht_networkname)(struct th_transport *t); - - const char *(*tht_sourcename)(struct th_transport *t); + struct htsmsg *(*tht_sourceinfo)(struct th_transport *t); int (*tht_quality_index)(struct th_transport *t);