]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Tweak to the full mux configuration, all USB is now filtered mode by default.
authorAdam Sutton <dev@adamsutton.me.uk>
Wed, 7 Nov 2012 23:02:10 +0000 (23:02 +0000)
committerAdam Sutton <dev@adamsutton.me.uk>
Wed, 7 Nov 2012 23:02:10 +0000 (23:02 +0000)
src/dvb/dvb.h
src/dvb/dvb_adapter.c
src/webui/extjs_dvb.c
src/webui/static/app/dvb.js

index 847074a98a3f6d72ce7dd0d31466700d8b5b3dda..6b42de906a59e819fb733b407811efbaad530cdf 100644 (file)
@@ -212,7 +212,7 @@ typedef struct th_dvb_adapter {
   uint32_t tda_diseqc_version;
   uint32_t tda_diseqc_repeats;
   uint32_t tda_disable_pmt_monitor;
-  uint32_t tda_disable_full_mux_rx;
+  int32_t  tda_full_mux_rx;
   char *tda_displayname;
 
   char *tda_fe_path;
@@ -364,7 +364,7 @@ void dvb_adapter_set_diseqc_repeats(th_dvb_adapter_t *tda,
 
 void dvb_adapter_set_disable_pmt_monitor(th_dvb_adapter_t *tda, int on);
 
-void dvb_adapter_set_disable_full_mux_rx(th_dvb_adapter_t *tda, int on);
+void dvb_adapter_set_full_mux_rx(th_dvb_adapter_t *tda, int r);
 
 void dvb_adapter_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src);
 
index 3776dcc64649aeafe2671ae3e86127f143b15f5d..3a971d02625a4752572f85bbebba7954e5843245 100644 (file)
@@ -94,7 +94,7 @@ tda_save(th_dvb_adapter_t *tda)
   htsmsg_add_u32(m, "extrapriority", tda->tda_extrapriority);
   htsmsg_add_u32(m, "skip_initialscan", tda->tda_skip_initialscan);
   htsmsg_add_u32(m, "disable_pmt_monitor", tda->tda_disable_pmt_monitor);
-  htsmsg_add_u32(m, "disable_full_mux_rx", tda->tda_disable_full_mux_rx);
+  htsmsg_add_s32(m, "full_mux_rx", tda->tda_full_mux_rx);
   hts_settings_save(m, "dvbadapters/%s", tda->tda_identifier);
   htsmsg_destroy(m);
 }
@@ -369,17 +369,23 @@ dvb_adapter_set_disable_pmt_monitor(th_dvb_adapter_t *tda, int on)
  *
  */
 void
-dvb_adapter_set_disable_full_mux_rx(th_dvb_adapter_t *tda, int on)
+dvb_adapter_set_full_mux_rx(th_dvb_adapter_t *tda, int on)
 {
-  if(tda->tda_disable_full_mux_rx == on)
+  const char* label[] = { "Auto", "Off", "On" };
+  
+  if (on < -1) on = -1;
+  if (on >  1) on = 1;
+
+  if(tda->tda_full_mux_rx == on)
     return;
 
   lock_assert(&global_lock);
 
-  tvhlog(LOG_NOTICE, "dvb", "Adapter \"%s\" disabled full MUX receive set to: %s",
-        tda->tda_displayname, on ? "On" : "Off");
+  tvhlog(LOG_NOTICE, "dvb",
+         "Adapter \"%s\" disabled full MUX receive set to: %s",
+        tda->tda_displayname, label[on+1]);
 
-  tda->tda_disable_full_mux_rx = on;
+  tda->tda_full_mux_rx = on;
   tda_save(tda);
 }
 
@@ -408,12 +414,15 @@ check_full_stream(th_dvb_adapter_t *tda)
   struct dmx_pes_filter_params dmx_param;
   int r;
 
-  if(tda->tda_disable_full_mux_rx)
-    return 0;
+  if(tda->tda_full_mux_rx != -1)
+    return tda->tda_full_mux_rx;
 
   if(tda->tda_hostconnection == HOSTCONNECTION_USB12)
     return 0; // Don't even bother, device <-> host interface is too slow
 
+  if(tda->tda_hostconnection == HOSTCONNECTION_USB480)
+    return 0; // USB in general appears to have CPU loading issues?
+
   int fd = tvh_open(tda->tda_demux_path, O_RDWR, 0);
   if(fd == -1)
     return 0;
@@ -462,6 +471,7 @@ tda_add(int adapter_num)
   tda->tda_fe_path = strdup(fname);
   tda->tda_fe_fd       = -1;
   tda->tda_dvr_pipe[0] = -1;
+  tda->tda_full_mux_rx = -1;
 
   tda->tda_fe_info = malloc(sizeof(struct dvb_frontend_info));
 
@@ -542,6 +552,8 @@ tda_add_from_file(const char *filename)
   tda->tda_idlescan = 0;
 
   tda->tda_sat = 0;
+  tda->tda_full_mux_rx = 1;
 
   /* Come up with an initial displayname, user can change it and it will
      be overridden by any stored settings later on */
@@ -632,6 +644,7 @@ dvb_adapter_init(uint32_t adapter_mask, const char *rawfile)
   htsmsg_field_t *f;
   const char *name, *s;
   int i, type;
+  uint32_t u32;
   th_dvb_adapter_t *tda;
 
   TAILQ_INIT(&dvb_adapters);
@@ -685,7 +698,9 @@ dvb_adapter_init(uint32_t adapter_mask, const char *rawfile)
       htsmsg_get_u32(c, "extrapriority", &tda->tda_extrapriority);
       htsmsg_get_u32(c, "skip_initialscan", &tda->tda_skip_initialscan);
       htsmsg_get_u32(c, "disable_pmt_monitor", &tda->tda_disable_pmt_monitor);
-      htsmsg_get_u32(c, "disable_full_mux_rx", &tda->tda_disable_full_mux_rx);
+      if (htsmsg_get_s32(c, "full_mux_rx", &tda->tda_full_mux_rx))
+        if (!htsmsg_get_u32(c, "disable_full_mux_rx", &u32) && u32)
+          tda->tda_full_mux_rx = 0;
     }
     htsmsg_destroy(l);
   }
index 525ed10e19bd1cef134e2bbaaa45d7dd46539b31..d1ce5b152b694ccc67e1d4e9e4262e41fff8b615 100644 (file)
@@ -157,7 +157,7 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque)
     htsmsg_add_u32(r, "sidtochan", tda->tda_sidtochan);
     htsmsg_add_u32(r, "nitoid", tda->tda_nitoid);
     htsmsg_add_u32(r, "disable_pmt_monitor", tda->tda_disable_pmt_monitor);
-    htsmsg_add_u32(r, "disable_full_mux_rx", tda->tda_disable_full_mux_rx);
+    htsmsg_add_u32(r, "full_mux_rx", tda->tda_full_mux_rx+1);
     htsmsg_add_str(r, "diseqcversion", 
                   ((const char *[]){"DiSEqC 1.0 / 2.0",
                                       "DiSEqC 1.1 / 2.1"})
@@ -200,8 +200,8 @@ extjs_dvbadapter(http_connection_t *hc, const char *remain, void *opaque)
     s = http_arg_get(&hc->hc_req_args, "disable_pmt_monitor");
     dvb_adapter_set_disable_pmt_monitor(tda, !!s);
 
-    s = http_arg_get(&hc->hc_req_args, "disable_full_mux_rx");
-    dvb_adapter_set_disable_full_mux_rx(tda, !!s);
+    s = http_arg_get(&hc->hc_req_args, "full_mux_rx");
+    dvb_adapter_set_full_mux_rx(tda, atoi(s)-1);
 
     if((s = http_arg_get(&hc->hc_req_args, "nitoid")) != NULL)
       dvb_adapter_set_nitoid(tda, atoi(s));
index 18a823bab32c50ccc8d63aff7d4eea981764d797..dcda443a7baa7600b02ab09c1338278fae986d77 100644 (file)
@@ -1089,7 +1089,7 @@ tvheadend.dvb_adapter_general = function(adapterData, satConfStore) {
        }, [ 'name', 'automux', 'skip_initialscan', 'idlescan', 'diseqcversion',
                'diseqcrepeats', 'qmon', 'skip_checksubscr', 
                'poweroff', 'sidtochan', 'nitoid', 'extrapriority',
-               ,'disable_pmt_monitor', 'disable_full_mux_rx', 'idleclose' ]);
+               ,'disable_pmt_monitor', 'full_mux_rx', 'idleclose' ]);
 
        function saveConfForm() {
                confform.getForm().submit({
@@ -1135,9 +1135,18 @@ tvheadend.dvb_adapter_general = function(adapterData, satConfStore) {
                        fieldLabel : 'Monitor signal quality',
                        name : 'qmon'
                }),
-               new Ext.form.Checkbox({
-                       fieldLabel : 'Disable full MUX reception',
-                       name : 'disable_full_mux_rx'
+               new Ext.form.ComboBox({
+                       fieldLabel : 'Full mux reception',
+                       name : 'full_mux_rx',
+                        hiddenName: 'full_mux_rx',
+                        displayField: 'num',
+                        valueField: 'str',
+                        editable : false,
+                        allowBlank : false,
+                        mode : 'remote',
+                        triggerAction : 'all',
+                        fields: [ 'num', 'str' ],
+                        store : [ [0, 'Auto'], [1, 'Off'], [2, 'On'] ]
                }),
                new Ext.form.Checkbox({
                        fieldLabel : 'Disable PMT monitoring',