Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Issue #1376 - add option to manually disable full mux rx.
It appears this mode can cause problems on some systems, particulary
related to USB tuners. Can cause high CPU load.
  • Loading branch information
adamsutton committed Oct 31, 2012
1 parent 7367f71 commit 3cd6336
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 1 deletion.
3 changes: 3 additions & 0 deletions src/dvb/dvb.h
Expand Up @@ -212,6 +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;
char *tda_displayname;

char *tda_fe_path;
Expand Down Expand Up @@ -363,6 +364,8 @@ 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_clone(th_dvb_adapter_t *dst, th_dvb_adapter_t *src);

void dvb_adapter_clean(th_dvb_adapter_t *tda);
Expand Down
24 changes: 24 additions & 0 deletions src/dvb/dvb_adapter.c
Expand Up @@ -94,6 +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);
hts_settings_save(m, "dvbadapters/%s", tda->tda_identifier);
htsmsg_destroy(m);
}
Expand Down Expand Up @@ -364,6 +365,25 @@ 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)
{
if(tda->tda_disable_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");

tda->tda_disable_full_mux_rx = on;
tda_save(tda);
}


/**
*
*/
Expand All @@ -388,6 +408,9 @@ 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_hostconnection == HOSTCONNECTION_USB12)
return 0; // Don't even bother, device <-> host interface is too slow

Expand Down Expand Up @@ -658,6 +681,7 @@ 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);
}
htsmsg_destroy(l);
}
Expand Down
4 changes: 4 additions & 0 deletions src/webui/extjs_dvb.c
Expand Up @@ -157,6 +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_str(r, "diseqcversion",
((const char *[]){"DiSEqC 1.0 / 2.0",
"DiSEqC 1.1 / 2.1"})
Expand Down Expand Up @@ -199,6 +200,9 @@ 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);

if((s = http_arg_get(&hc->hc_req_args, "nitoid")) != NULL)
dvb_adapter_set_nitoid(tda, atoi(s));

Expand Down
6 changes: 5 additions & 1 deletion src/webui/static/app/dvb.js
Expand Up @@ -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', 'idleclose' ]);
,'disable_pmt_monitor', 'disable_full_mux_rx', 'idleclose' ]);

function saveConfForm() {
confform.getForm().submit({
Expand Down Expand Up @@ -1135,6 +1135,10 @@ 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.Checkbox({
fieldLabel : 'Disable PMT monitoring',
name : 'disable_pmt_monitor'
Expand Down

1 comment on commit 3cd6336

@EricV
Copy link
Contributor

@EricV EricV commented on 3cd6336 Nov 1, 2012

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks adam.

Please sign in to comment.