]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts scan: sort DVB-S muxes (for slave tuners)
authorJaroslav Kysela <perex@perex.cz>
Fri, 18 Mar 2016 10:21:51 +0000 (11:21 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 18 Mar 2016 10:21:51 +0000 (11:21 +0100)
src/input/mpegts/mpegts_network_scan.c

index 445e54b4e4853b036f4ced7eae834536240710b7..1bc1f9beab5a3a7d1055d53698f63b9a3a489bdb 100644 (file)
@@ -34,7 +34,21 @@ mpegts_network_scan_notify ( mpegts_mux_t *mm )
 static int
 mm_cmp ( mpegts_mux_t *a, mpegts_mux_t *b )
 {
-  return b->mm_scan_weight - a->mm_scan_weight;
+  int r = b->mm_scan_weight - a->mm_scan_weight;
+  if (r == 0) {
+    if (idnode_is_instance(&a->mm_id, &dvb_mux_dvbs_class) &&
+        idnode_is_instance(&b->mm_id, &dvb_mux_dvbs_class)) {
+      dvb_mux_conf_t *mc1 = &((dvb_mux_t *)a)->lm_tuning;
+      dvb_mux_conf_t *mc2 = &((dvb_mux_t *)b)->lm_tuning;
+      assert(mc1->dmc_fe_type == DVB_TYPE_S);
+      assert(mc2->dmc_fe_type == DVB_TYPE_S);
+      r = (int)mc1->u.dmc_fe_qpsk.polarisation -
+          (int)mc2->u.dmc_fe_qpsk.polarisation;
+      if (r == 0)
+        r = mc1->dmc_fe_freq - mc2->dmc_fe_freq;
+    }
+  }
+  return r;
 }
 
 void