service: add PMT# for noname services and include full service name in service lists
This commit is contained in:
parent
ea7a93b776
commit
43253f88c0
2 changed files with 47 additions and 4 deletions
|
@ -128,7 +128,7 @@ service_class_channel_enum
|
|||
static const char *
|
||||
service_class_get_title ( idnode_t *self )
|
||||
{
|
||||
return service_get_channel_name((service_t*)self);
|
||||
return service_get_full_channel_name((service_t *)self);
|
||||
}
|
||||
|
||||
static const void *
|
||||
|
@ -856,25 +856,39 @@ service_stream_make_nicename(service_t *t, elementary_stream_t *st)
|
|||
void
|
||||
service_make_nicename(service_t *t)
|
||||
{
|
||||
char buf[256];
|
||||
char buf[256], buf2[16];
|
||||
source_info_t si;
|
||||
elementary_stream_t *st;
|
||||
char *service_name;
|
||||
int prefidx;
|
||||
|
||||
lock_assert(&t->s_stream_mutex);
|
||||
|
||||
t->s_setsourceinfo(t, &si);
|
||||
|
||||
service_name = si.si_service;
|
||||
if (service_name == NULL || si.si_service[0] == '0') {
|
||||
snprintf(buf2, sizeof(buf2), "{PMT:%d}", t->s_pmt_pid);
|
||||
service_name = buf2;
|
||||
}
|
||||
|
||||
snprintf(buf, sizeof(buf),
|
||||
"%s%s%s%s%s%s%s",
|
||||
si.si_adapter ?: "", si.si_adapter && si.si_network ? "/" : "",
|
||||
si.si_network ?: "", si.si_network && si.si_mux ? "/" : "",
|
||||
si.si_mux ?: "", si.si_mux && si.si_service ? "/" : "",
|
||||
si.si_service ?: "");
|
||||
si.si_mux ?: "", si.si_mux && service_name ? "/" : "",
|
||||
service_name ?: "");
|
||||
prefidx = (si.si_adapter ? strlen(si.si_adapter) : 0) +
|
||||
(si.si_adapter && si.si_network ? 1 : 0) +
|
||||
(si.si_network ? strlen(si.si_network) : 0) +
|
||||
(si.si_network && si.si_mux ? 1 : 0) +
|
||||
(si.si_mux ? strlen(si.si_mux) : 0);
|
||||
|
||||
service_source_info_free(&si);
|
||||
|
||||
free(t->s_nicename);
|
||||
t->s_nicename = strdup(buf);
|
||||
t->s_nicename_prefidx = prefidx;
|
||||
|
||||
TAILQ_FOREACH(st, &t->s_components, es_link)
|
||||
service_stream_make_nicename(t, st);
|
||||
|
@ -1482,6 +1496,33 @@ service_get_channel_name ( service_t *s )
|
|||
return r;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get full name for channel from service
|
||||
*/
|
||||
const char *
|
||||
service_get_full_channel_name ( service_t *s )
|
||||
{
|
||||
static char __thread buf[256];
|
||||
const char *r = NULL;
|
||||
int len;
|
||||
|
||||
if (s->s_channel_name)
|
||||
r = s->s_channel_name(s);
|
||||
if (r == NULL)
|
||||
return s->s_nicename;
|
||||
|
||||
len = s->s_nicename_prefidx;
|
||||
if (len >= sizeof(buf))
|
||||
len = sizeof(buf) - 1;
|
||||
strncpy(buf, s->s_nicename, len);
|
||||
if (len < sizeof(buf) - 1)
|
||||
buf[len++] = '/';
|
||||
buf[len] = '\0';
|
||||
if (len < sizeof(buf))
|
||||
snprintf(buf + len, sizeof(buf) - len, "%s", r);
|
||||
return buf;
|
||||
}
|
||||
|
||||
/*
|
||||
* Get number for service
|
||||
*/
|
||||
|
|
|
@ -300,6 +300,7 @@ typedef struct service {
|
|||
* Name usable for displaying to user
|
||||
*/
|
||||
char *s_nicename;
|
||||
int s_nicename_prefidx;
|
||||
|
||||
/**
|
||||
* Teletext...
|
||||
|
@ -553,6 +554,7 @@ void service_save ( service_t *s, htsmsg_t *c );
|
|||
void sort_elementary_streams(service_t *t);
|
||||
|
||||
const char *service_get_channel_name (service_t *s);
|
||||
const char *service_get_full_channel_name (service_t *s);
|
||||
int service_get_channel_number (service_t *s);
|
||||
|
||||
#endif // SERVICE_H__
|
||||
|
|
Loading…
Add table
Reference in a new issue