From ac92591ba1ef913c85e47680f963465270a22c63 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Sun, 18 Jan 2015 20:21:33 +0100 Subject: [PATCH] mpegts service: Add 'Service IDs as Channel Numbers' network option --- src/input/mpegts.h | 1 + src/input/mpegts/mpegts_network.c | 7 +++++++ src/input/mpegts/mpegts_service.c | 15 ++++++++------- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/input/mpegts.h b/src/input/mpegts.h index 20f25bb1..0a26eeec 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -298,6 +298,7 @@ struct mpegts_network char *mn_charset; int mn_idlescan; int mn_ignore_chnum; + int mn_sid_chnum; int mn_localtime; }; diff --git a/src/input/mpegts/mpegts_network.c b/src/input/mpegts/mpegts_network.c index 73ac3463..cb2847e8 100644 --- a/src/input/mpegts/mpegts_network.c +++ b/src/input/mpegts/mpegts_network.c @@ -174,6 +174,13 @@ const idclass_t mpegts_network_class = .notify = mpegts_network_class_idlescan_notify, .opts = PO_ADVANCED | PO_HIDDEN, }, + { + .type = PT_BOOL, + .id = "sid_chnum", + .name = "Service IDs as Channel Numbers", + .off = offsetof(mpegts_network_t, mn_ignore_chnum), + .def.i = 0, + }, { .type = PT_BOOL, .id = "ignore_chnum", diff --git a/src/input/mpegts/mpegts_service.c b/src/input/mpegts/mpegts_service.c index 28ad858c..a9835eec 100644 --- a/src/input/mpegts/mpegts_service.c +++ b/src/input/mpegts/mpegts_service.c @@ -409,14 +409,15 @@ static int64_t mpegts_service_channel_number ( service_t *s ) { mpegts_service_t *ms = (mpegts_service_t*)s; - int r; + int r = 0; - if (ms->s_dvb_mux->mm_network->mn_ignore_chnum) - return 0; - - r = ms->s_dvb_channel_num * CHANNEL_SPLIT + ms->s_dvb_channel_minor; - if (r <= 0) - r = ms->s_dvb_opentv_chnum * CHANNEL_SPLIT; + if (!ms->s_dvb_mux->mm_network->mn_ignore_chnum) { + r = ms->s_dvb_channel_num * CHANNEL_SPLIT + ms->s_dvb_channel_minor; + if (r <= 0) + r = ms->s_dvb_opentv_chnum * CHANNEL_SPLIT; + } + if (r <= 0 || ms->s_dvb_mux->mm_network->mn_sid_chnum) + r = ms->s_dvb_service_id * CHANNEL_SPLIT; return r; }