]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
dvb: create mux - rearrange parameters for SAT>IP server
authorJaroslav Kysela <perex@perex.cz>
Mon, 23 Feb 2015 14:33:12 +0000 (15:33 +0100)
committerJaroslav Kysela <perex@perex.cz>
Wed, 11 Mar 2015 20:41:12 +0000 (21:41 +0100)
src/input/mpegts.h
src/input/mpegts/dvb_psi.c
src/input/mpegts/mpegts_network.c
src/input/mpegts/mpegts_network_dvb.c

index 7e2559a6681de6dced9acb2ceea320379a3ee835..bf402e555979c27755a03419dd87c8bd767fceb3 100644 (file)
@@ -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;
index e8dabf7d754f25815b06fd7e798cfc542ba54484..f58a670a36ef7170742f66dc00e7e960a1ae271d 100644 (file)
@@ -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 */
index 32c1aad5cdbefc76b4b51b1de470b8a4607d03bc..0268409c334917b82ca9f4ccebbd4ffd99184fec 100644 (file)
@@ -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;
 }
index 9a1da901c8e7b5ce2aee3b346b57690694e50c7d..d7d4154234d256e610ec3673ba047a8cc8fc9140 100644 (file)
@@ -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 *