From be1cc5c97cc63e29571fc62eaff6a3f009ed65ca Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Mon, 23 Feb 2015 15:33:12 +0100 Subject: [PATCH] dvb: create mux - rearrange parameters for SAT>IP server --- src/input/mpegts.h | 5 +++-- src/input/mpegts/dvb_psi.c | 6 +++--- src/input/mpegts/mpegts_network.c | 3 ++- src/input/mpegts/mpegts_network_dvb.c | 18 +++++++++--------- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/input/mpegts.h b/src/input/mpegts.h index 7e2559a6..bf402e55 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -283,7 +283,8 @@ struct mpegts_network void (*mn_display_name) (mpegts_network_t*, char *buf, size_t len); void (*mn_config_save) (mpegts_network_t*); mpegts_mux_t* (*mn_create_mux) - (mpegts_mux_t*, uint16_t onid, uint16_t tsid, void *conf, int force); + (mpegts_network_t*, void *origin, uint16_t onid, uint16_t tsid, + void *conf, int force); mpegts_service_t* (*mn_create_service) (mpegts_mux_t*, uint16_t sid, uint16_t pmt_pid); const idclass_t* (*mn_mux_class) (mpegts_network_t*); @@ -385,7 +386,7 @@ struct mpegts_mux MM_ORIG_AUTO ///< From NIT } mm_dmc_origin2; #endif - mpegts_mux_t *mm_dmc_origin; + void *mm_dmc_origin; time_t mm_dmc_origin_expire; char *mm_fastscan_muxes; diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c index e8dabf7d..f58a670a 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -273,7 +273,7 @@ dvb_desc_sat_del tvhdebug(mt->mt_name, " %s", buf); /* Create */ - return mm->mm_network->mn_create_mux(mm, onid, tsid, &dmc, force); + return mm->mm_network->mn_create_mux(mm->mm_network, mm, onid, tsid, &dmc, force); } /* @@ -329,7 +329,7 @@ dvb_desc_cable_del tvhdebug(mt->mt_name, " %s", buf); /* Create */ - return mm->mm_network->mn_create_mux(mm, onid, tsid, &dmc, 0); + return mm->mm_network->mn_create_mux(mm->mm_network, mm, onid, tsid, &dmc, 0); } /* @@ -395,7 +395,7 @@ dvb_desc_terr_del tvhdebug(mt->mt_name, " %s", buf); /* Create */ - return mm->mm_network->mn_create_mux(mm, onid, tsid, &dmc, 0); + return mm->mm_network->mn_create_mux(mm->mm_network, mm, onid, tsid, &dmc, 0); } #endif /* ENABLE_MPEGTS_DVB */ diff --git a/src/input/mpegts/mpegts_network.c b/src/input/mpegts/mpegts_network.c index 32c1aad5..0268409c 100644 --- a/src/input/mpegts/mpegts_network.c +++ b/src/input/mpegts/mpegts_network.c @@ -263,7 +263,8 @@ mpegts_network_config_save static mpegts_mux_t * mpegts_network_create_mux - ( mpegts_mux_t *mm, uint16_t sid, uint16_t tsid, void *aux, int force ) + ( mpegts_network_t *mn, void *origin, uint16_t sid, uint16_t tsid, + void *aux, int force ) { return NULL; } diff --git a/src/input/mpegts/mpegts_network_dvb.c b/src/input/mpegts/mpegts_network_dvb.c index 9a1da901..d7d41542 100644 --- a/src/input/mpegts/mpegts_network_dvb.c +++ b/src/input/mpegts/mpegts_network_dvb.c @@ -421,11 +421,11 @@ dvb_network_mux_class static mpegts_mux_t * dvb_network_create_mux - ( mpegts_mux_t *mm, uint16_t onid, uint16_t tsid, void *p, int force ) + ( mpegts_network_t *mn, void *origin, uint16_t onid, uint16_t tsid, + void *p, int force ) { int save = 0, satpos; - mpegts_mux_t *mmo = mm; - mpegts_network_t *mn = mm->mm_network; + dvb_mux_t *mm; dvb_network_t *ln; dvb_mux_conf_t *dmc = p; const idclass_t *cls = dvb_network_mux_class(mn); @@ -447,7 +447,7 @@ dvb_network_create_mux } ln = (dvb_network_t*)mn; - mm = dvb_network_find_mux(ln, dmc, onid, tsid); + mm = (dvb_mux_t *)dvb_network_find_mux(ln, dmc, onid, tsid); if (!mm && (ln->mn_autodiscovery || force)) { cls = dvb_network_mux_class((mpegts_network_t *)ln); save |= cls == &dvb_mux_dvbt_class && dmc->dmc_fe_type == DVB_TYPE_T; @@ -461,7 +461,7 @@ dvb_network_create_mux save = 0; } if (save) { - mm = (mpegts_mux_t*)dvb_mux_create0(ln, onid, tsid, dmc, NULL, NULL); + mm = dvb_mux_create0(ln, onid, tsid, dmc, NULL, NULL); #if ENABLE_TRACE char buf[128]; dvb_mux_conf_str(&((dvb_mux_t *)mm)->lm_tuning, buf, sizeof(buf)); @@ -473,7 +473,7 @@ dvb_network_create_mux dvb_mux_t *lm = (dvb_mux_t*)mm; /* the nit tables may be inconsistent (like rolloff ping-pong) */ /* accept information only from one origin mux */ - if (mm->mm_dmc_origin_expire > dispatch_clock && mm->mm_dmc_origin && mm->mm_dmc_origin != mmo) + if (mm->mm_dmc_origin_expire > dispatch_clock && mm->mm_dmc_origin && mm->mm_dmc_origin != origin) goto noop; #if ENABLE_TRACE #define COMPARE(x) ({ \ @@ -565,12 +565,12 @@ dvb_network_create_mux } save: if (mm && save) { - mm->mm_dmc_origin = mmo; + mm->mm_dmc_origin = origin; mm->mm_dmc_origin_expire = dispatch_clock + 3600 * 24; /* one day */ - mm->mm_config_save(mm); + mm->mm_config_save((mpegts_mux_t *)mm); } noop: - return mm; + return (mpegts_mux_t *)mm; } static mpegts_service_t *