]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Update multiplex quality index
authorAndreas Öman <andreas@lonelycoder.com>
Fri, 29 Aug 2008 16:26:18 +0000 (16:26 +0000)
committerAndreas Öman <andreas@lonelycoder.com>
Fri, 29 Aug 2008 16:26:18 +0000 (16:26 +0000)
dvb/dvb_fe.c

index bd2badc9945545040beff30f76a1ce88e4313b10..cf8043d4290216abbfea228456e1a807c5eac820 100644 (file)
@@ -207,7 +207,6 @@ dvb_fe_start(th_dvb_adapter_t *tda)
 /**
  *
  */
-#if 0
 static void
 dvb_notify_mux_quality(th_dvb_mux_instance_t *tdmi)
 {
@@ -217,7 +216,6 @@ dvb_notify_mux_quality(th_dvb_mux_instance_t *tdmi)
   htsmsg_add_u32(m, "quality", tdmi->tdmi_quality);
   notify_by_msg("dvbmux", m);
 }
-#endif
 
 
 /**
@@ -243,7 +241,7 @@ dvb_fe_monitor(void *aux)
 {
   th_dvb_adapter_t *tda = aux;
   fe_status_t fe_status;
-  int status, v, savemux = 0, vv, i, fec;
+  int status, v, savemux = 0, vv, i, fec, q;
   th_dvb_mux_instance_t *tdmi = tda->tda_mux_current;
   char buf[50];
 
@@ -316,6 +314,16 @@ dvb_fe_monitor(void *aux)
     savemux = 1;
   }
 
+  if(status != TDMI_FE_UNKNOWN) {
+    q = tdmi->tdmi_quality + (status - TDMI_FE_OK + 1);
+    q = MAX(MIN(q, 100), 0);
+    if(q != tdmi->tdmi_quality) {
+      tdmi->tdmi_quality = q;
+      dvb_notify_mux_quality(tdmi);
+      savemux = 1;
+    }
+  }
+
   if(savemux)
     dvb_mux_save(tdmi);
 }