bouquet: prepare storage for tags
This commit is contained in:
parent
f2f3c9d5cf
commit
abef913871
4 changed files with 32 additions and 13 deletions
|
@ -5,7 +5,7 @@ The bouquets are obtained automatically from the DVB source during
|
|||
the mux scan period. Note that bouquets may use more muxes and only
|
||||
services from scanned muxes are added. The mux with bouquets might
|
||||
require another scan when all muxes are discovered (manually using
|
||||
a stream for the mux or reset the mux scan state to pending).
|
||||
the rescan checkbox).
|
||||
</p>
|
||||
|
||||
<p>
|
||||
|
|
|
@ -247,7 +247,7 @@ bouquet_map_channel(bouquet_t *bq, service_t *t)
|
|||
*
|
||||
*/
|
||||
void
|
||||
bouquet_add_service(bouquet_t *bq, service_t *s, uint64_t lcn)
|
||||
bouquet_add_service(bouquet_t *bq, service_t *s, uint64_t lcn, uint32_t tag)
|
||||
{
|
||||
service_lcn_t *tl;
|
||||
channel_service_mapping_t *csm;
|
||||
|
@ -465,6 +465,15 @@ bouquet_get_channel_number(bouquet_t *bq, service_t *t)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
static uint32_t
|
||||
bouquet_get_tag_number(bouquet_t *bq, service_t *t)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
@ -692,16 +701,22 @@ bouquet_class_chtag_ref_set ( void *obj, const void *p )
|
|||
static const void *
|
||||
bouquet_class_services_get ( void *obj )
|
||||
{
|
||||
htsmsg_t *m = htsmsg_create_map();
|
||||
htsmsg_t *m = htsmsg_create_map(), *e;
|
||||
bouquet_t *bq = obj;
|
||||
service_t *t;
|
||||
int64_t lcn;
|
||||
uint32_t tag;
|
||||
size_t z;
|
||||
|
||||
/* Add all */
|
||||
for (z = 0; z < bq->bq_services->is_count; z++) {
|
||||
t = (service_t *)bq->bq_services->is_array[z];
|
||||
htsmsg_add_s64(m, idnode_uuid_as_str(&t->s_id),
|
||||
bouquet_get_channel_number0(bq, t));
|
||||
e = htsmsg_create_map();
|
||||
if ((lcn = bouquet_get_channel_number0(bq, t)) != 0)
|
||||
htsmsg_add_s64(e, "lcn", lcn);
|
||||
if ((tag = bouquet_get_tag_number(bq, t)) != 0)
|
||||
htsmsg_add_s64(e, "tag", lcn);
|
||||
htsmsg_add_msg(m, idnode_uuid_as_str(&t->s_id), e);
|
||||
}
|
||||
|
||||
return m;
|
||||
|
@ -888,9 +903,11 @@ void
|
|||
bouquet_service_resolve(void)
|
||||
{
|
||||
bouquet_t *bq;
|
||||
htsmsg_t *e;
|
||||
htsmsg_field_t *f;
|
||||
service_t *s;
|
||||
uint32_t lcn;
|
||||
int64_t lcn;
|
||||
uint32_t tag;
|
||||
int saveflag;
|
||||
|
||||
lock_assert(&global_lock);
|
||||
|
@ -901,10 +918,12 @@ bouquet_service_resolve(void)
|
|||
saveflag = bq->bq_saveflag;
|
||||
if (bq->bq_enabled) {
|
||||
HTSMSG_FOREACH(f, bq->bq_services_waiting) {
|
||||
if (htsmsg_field_get_u32(f, &lcn)) continue;
|
||||
if ((e = htsmsg_field_get_map(f)) == NULL) continue;
|
||||
lcn = htsmsg_get_s64_or_default(e, "lcn", 0);
|
||||
tag = htsmsg_get_u32_or_default(e, "tag", 0);
|
||||
s = service_find_by_identifier(f->hmf_name);
|
||||
if (s)
|
||||
bouquet_add_service(bq, s, lcn);
|
||||
bouquet_add_service(bq, s, lcn, tag);
|
||||
}
|
||||
}
|
||||
htsmsg_destroy(bq->bq_services_waiting);
|
||||
|
|
|
@ -82,7 +82,7 @@ bouquet_t * bouquet_find_by_source(const char *name, const char *src, int create
|
|||
|
||||
void bouquet_map_to_channels(bouquet_t *bq);
|
||||
void bouquet_notify_channels(bouquet_t *bq);
|
||||
void bouquet_add_service(bouquet_t *bq, service_t *s, uint64_t lcn);
|
||||
void bouquet_add_service(bouquet_t *bq, service_t *s, uint64_t lcn, uint32_t tag);
|
||||
void bouquet_completed(bouquet_t *bq, uint32_t seen);
|
||||
|
||||
uint64_t bouquet_get_channel_number(bouquet_t *bq, service_t *t);
|
||||
|
|
|
@ -399,7 +399,7 @@ dvb_desc_service_list
|
|||
bs->svc = s;
|
||||
TAILQ_INSERT_TAIL(&bi->services, bs, link);
|
||||
} else if (bq) {
|
||||
bouquet_add_service(bq, (service_t *)s, 0);
|
||||
bouquet_add_service(bq, (service_t *)s, 0, 0);
|
||||
}
|
||||
if (save)
|
||||
s->s_config_save((service_t*)s);
|
||||
|
@ -527,7 +527,7 @@ dvb_freesat_add_service
|
|||
snprintf(name, sizeof(name), "%s: %s", bi->name, fr->name);
|
||||
fr->bouquet = bouquet_find_by_source(name, src, 1);
|
||||
}
|
||||
bouquet_add_service(fr->bouquet, (service_t *)s, (int64_t)lcn * CHANNEL_SPLIT);
|
||||
bouquet_add_service(fr->bouquet, (service_t *)s, (int64_t)lcn * CHANNEL_SPLIT, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -1178,7 +1178,7 @@ dvb_bat_completed
|
|||
dvb_bouquet_comment(bq, bi->mm);
|
||||
|
||||
TAILQ_FOREACH(bs, &bi->services, link)
|
||||
bouquet_add_service(bq, (service_t *)bs->svc, 0);
|
||||
bouquet_add_service(bq, (service_t *)bs->svc, 0, 0);
|
||||
|
||||
bouquet_completed(bq, bi->services_count);
|
||||
|
||||
|
@ -1747,7 +1747,7 @@ dvb_fs_sdt_callback
|
|||
s = mpegts_service_find(mux, service_id, 0, 1, &save);
|
||||
charset = dvb_charset_find(mn, mux, s);
|
||||
if (bq && s) {
|
||||
bouquet_add_service(bq, (service_t *)s, 0);
|
||||
bouquet_add_service(bq, (service_t *)s, 0, 0);
|
||||
} else {
|
||||
tvhtrace(mt->mt_name, " service not found (bq %p, svc %p)", bq, s);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue