Add more detailed info about source service when a subscription starts.

Partially addresses ticket #81
This commit is contained in:
Andreas Öman 2009-07-20 10:11:34 +00:00
parent 7161cff0b3
commit 3a6a69b1f5
6 changed files with 48 additions and 56 deletions

View file

@ -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;

View file

@ -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);
}
}
}

View file

@ -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);

View file

@ -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 ?: "<N/A>",
s->ths_transport->tht_sourcename(s->ths_transport),
htsmsg_get_str(m, "adapter") ?: "<N/A>",
htsmsg_get_str(m, "network") ?: "<N/A>",
htsmsg_get_str(m, "mux") ?: "<N/A>",
htsmsg_get_str(m, "provider") ?: "<N/A>",
htsmsg_get_str(m, "service") ?: "<N/A>",
s->ths_transport->tht_quality_index(s->ths_transport));
htsmsg_destroy(m);
}
return s;
}

View file

@ -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;
}

View file

@ -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);