From: Sven Wegener Date: Mon, 9 Nov 2015 19:45:04 +0000 (+0100) Subject: mpegts: consolidate dvb network class lookup X-Git-Tag: v4.2.1~1616 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0e8a9335c391d08a7b2be9b1575f158c33c4345a;p=thirdparty%2Ftvheadend.git mpegts: consolidate dvb network class lookup Signed-off-by: Sven Wegener --- diff --git a/src/input/mpegts/mpegts_dvb.h b/src/input/mpegts/mpegts_dvb.h index 3362fe9b2..dfb4ac6ef 100644 --- a/src/input/mpegts/mpegts_dvb.h +++ b/src/input/mpegts/mpegts_dvb.h @@ -56,6 +56,9 @@ void dvb_network_done ( void ); static inline dvb_network_t *dvb_network_find_by_uuid(const char *uuid) { return idnode_find(uuid, &dvb_network_class, NULL); } +const idclass_t *dvb_network_class_by_fe_type(dvb_fe_type_t type); +dvb_fe_type_t dvb_fe_type_by_network_class(const idclass_t *idc); + dvb_network_t *dvb_network_create0 ( const char *uuid, const idclass_t *idc, htsmsg_t *conf ); diff --git a/src/input/mpegts/mpegts_network_dvb.c b/src/input/mpegts/mpegts_network_dvb.c index 0902c9c4c..2dc86863a 100644 --- a/src/input/mpegts/mpegts_network_dvb.c +++ b/src/input/mpegts/mpegts_network_dvb.c @@ -604,14 +604,7 @@ dvb_network_create0 const char *s; ln = calloc(1, sizeof(dvb_network_t)); - if (idc == &dvb_network_dvbt_class) - ln->ln_type = DVB_TYPE_T; - else if (idc == &dvb_network_dvbc_class) - ln->ln_type = DVB_TYPE_C; - else if (idc == &dvb_network_dvbs_class) - ln->ln_type = DVB_TYPE_S; - else - ln->ln_type = DVB_TYPE_ATSC; + ln->ln_type = dvb_fe_type_by_network_class(idc); /* Create */ if (!(ln = (dvb_network_t*)mpegts_network_create0((void*)ln, @@ -717,6 +710,34 @@ void dvb_network_done ( void ) * Search * ***************************************************************************/ +const idclass_t *dvb_network_class_by_fe_type(dvb_fe_type_t type) +{ + if (type == DVB_TYPE_T) + return &dvb_network_dvbt_class; + else if (type == DVB_TYPE_C) + return &dvb_network_dvbc_class; + else if (type == DVB_TYPE_S) + return &dvb_network_dvbs_class; + else if (type == DVB_TYPE_ATSC) + return &dvb_network_atsc_class; + + return NULL; +} + +dvb_fe_type_t dvb_fe_type_by_network_class(const idclass_t *idc) +{ + if (idc == &dvb_network_dvbt_class) + return DVB_TYPE_T; + else if (idc == &dvb_network_dvbc_class) + return DVB_TYPE_C; + else if (idc == &dvb_network_dvbs_class) + return DVB_TYPE_S; + else if (idc == &dvb_network_atsc_class) + return DVB_TYPE_ATSC; + + return DVB_TYPE_NONE; +} + int dvb_network_get_orbital_pos(mpegts_network_t *mn) { dvb_network_t *ln = (dvb_network_t *)mn; diff --git a/src/input/mpegts/satip/satip_frontend.c b/src/input/mpegts/satip/satip_frontend.c index a7454606c..d3166c403 100644 --- a/src/input/mpegts/satip/satip_frontend.c +++ b/src/input/mpegts/satip/satip_frontend.c @@ -1717,13 +1717,7 @@ satip_frontend_create if (type == DVB_TYPE_S) idc = master ? &satip_frontend_dvbs_slave_class : &satip_frontend_dvbs_class; - else if (type == DVB_TYPE_T) - idc = &satip_frontend_dvbt_class; - else if (type == DVB_TYPE_C) - idc = &satip_frontend_dvbc_class; - else if (type == DVB_TYPE_ATSC) - idc = &satip_frontend_atsc_class; - else { + else if (!(idc = dvb_network_class_by_fe_type(type))) { tvherror("satip", "unknown FE type %d", type); return NULL; } diff --git a/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c b/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c index 6ebab7efb..b32ab8030 100644 --- a/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c +++ b/src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c @@ -632,13 +632,7 @@ tvhdhomerun_frontend_create(tvhdhomerun_device_t *hd, struct hdhomerun_discover_ uuid = htsmsg_get_str(conf, "uuid"); /* Class */ - if (type == DVB_TYPE_T) - idc = &tvhdhomerun_frontend_dvbt_class; - else if (type == DVB_TYPE_C) - idc = &tvhdhomerun_frontend_dvbc_class; - else if (type == DVB_TYPE_ATSC) { - idc = &tvhdhomerun_frontend_atsc_class; - } else { + if (!(idc = dvb_network_class_by_fe_type(type))) { tvherror("stvhdhomerun", "unknown FE type %d", type); return NULL; }