diff --git a/src/epggrab/module/opentv.c b/src/epggrab/module/opentv.c index f8ef183c..ddfaea7f 100644 --- a/src/epggrab/module/opentv.c +++ b/src/epggrab/module/opentv.c @@ -400,6 +400,8 @@ opentv_desc_channels /* Find the service */ svc = mpegts_service_find(mm, sid, 0, 0, NULL); tvhtrace(mt->mt_name, " svc %p [%s]", svc, svc ? svc->s_nicename : NULL); + if (svc) + svc->s_dvb_opentv_chnum = cnum; if (svc && LIST_FIRST(&svc->s_channels)) { ec =_opentv_find_epggrab_channel(mod, cid, 1, &save); ecl = LIST_FIRST(&ec->channels); diff --git a/src/input/mpegts.h b/src/input/mpegts.h index 5c942e14..224e1b43 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -435,6 +435,7 @@ struct mpegts_service */ int s_dvb_eit_enable; + uint16_t s_dvb_opentv_chnum; /* * Link to carrying multiplex and active adapter diff --git a/src/input/mpegts/mpegts_service.c b/src/input/mpegts/mpegts_service.c index 49bcdcd8..57c882e9 100644 --- a/src/input/mpegts/mpegts_service.c +++ b/src/input/mpegts/mpegts_service.c @@ -101,6 +101,13 @@ const idclass_t mpegts_service_class = .opts = PO_RDONLY, .off = offsetof(mpegts_service_t, s_dvb_channel_num), }, + { + .type = PT_U16, + .id = "lcn2", + .name = "OpenTV Channel Number", + .opts = PO_RDONLY, + .off = offsetof(mpegts_service_t, s_dvb_opentv_chnum), + }, { .type = PT_STR, .id = "svcname", @@ -360,7 +367,10 @@ mpegts_service_grace_period(service_t *t) static int mpegts_service_channel_number ( service_t *s ) { - return ((mpegts_service_t*)s)->s_dvb_channel_num; + int r = ((mpegts_service_t*)s)->s_dvb_channel_num; + if (r <= 0) + r = ((mpegts_service_t*)s)->s_dvb_opentv_chnum; + return r; } static const char *