Add support for tuning ATSC adapters
This commit is contained in:
parent
d73ff68fae
commit
08db2b91c4
5 changed files with 1075 additions and 20 deletions
2
debian/changelog
vendored
2
debian/changelog
vendored
|
@ -3,6 +3,8 @@ hts-tvheadend (2.6) hts; urgency=low
|
|||
* Tvheadend's DVB service probe will now let the channel join tags based
|
||||
on the service type and DVB provider name.
|
||||
|
||||
* Add support for tuning on ATSC adapters
|
||||
|
||||
hts-tvheadend (2.5) hts; urgency=low
|
||||
|
||||
* If a previosly detected DVB adapter was not present during startup,
|
||||
|
|
|
@ -500,12 +500,6 @@ dvb_adapter_input_dvr(void *aux)
|
|||
}
|
||||
}
|
||||
|
||||
static struct strtab deliverysystemtab[] = {
|
||||
{"DVB-S", FE_QPSK},
|
||||
{"DVB-T", FE_OFDM},
|
||||
{"DVB-C", FE_QAM},
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
|
@ -548,7 +542,7 @@ dvb_adapter_build_msg(th_dvb_adapter_t *tda)
|
|||
htsmsg_add_str(m, "devicename", tda->tda_fe_info->name);
|
||||
|
||||
htsmsg_add_str(m, "deliverySystem",
|
||||
val2str(tda->tda_type, deliverysystemtab) ?: "");
|
||||
dvb_adaptertype_to_str(tda->tda_type) ?: "");
|
||||
|
||||
htsmsg_add_u32(m, "satConf", tda->tda_sat);
|
||||
|
||||
|
|
|
@ -391,6 +391,10 @@ dvb_mux_save(th_dvb_mux_instance_t *tdmi)
|
|||
break;
|
||||
|
||||
case FE_ATSC:
|
||||
htsmsg_add_u32(m, "symbol_rate", f->u.qam.symbol_rate);
|
||||
|
||||
htsmsg_add_str(m, "constellation",
|
||||
val2str(f->u.vsb.modulation, qamtab));
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -494,6 +498,15 @@ tdmi_create_by_msg(th_dvb_adapter_t *tda, htsmsg_t *m, const char *identifier)
|
|||
break;
|
||||
|
||||
case FE_ATSC:
|
||||
htsmsg_get_u32(m, "symbol_rate", &f.u.qam.symbol_rate);
|
||||
if(f.u.qam.symbol_rate == 0)
|
||||
return "Invalid symbol rate";
|
||||
|
||||
s = htsmsg_get_str(m, "constellation");
|
||||
if(s == NULL || (r = str2val(s, qamtab)) < 0)
|
||||
return "Invalid VSB constellation";
|
||||
f.u.vsb.modulation = r;
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -645,6 +658,10 @@ dvb_mux_modulation(char *buf, size_t size, th_dvb_mux_instance_t *tdmi)
|
|||
val2str(f->u.qam.modulation, qamtab),
|
||||
f->u.qpsk.symbol_rate / 1000);
|
||||
break;
|
||||
|
||||
case FE_ATSC:
|
||||
snprintf(buf, size, "%s", val2str(f->u.vsb.modulation, qamtab));
|
||||
break;
|
||||
default:
|
||||
snprintf(buf, size, "Unknown");
|
||||
break;
|
||||
|
@ -782,6 +799,16 @@ dvb_mux_add_by_params(th_dvb_adapter_t *tda,
|
|||
f.u.qpsk.symbol_rate = symrate;
|
||||
f.u.qpsk.fec_inner = fec;
|
||||
break;
|
||||
|
||||
case FE_ATSC:
|
||||
f.frequency = freq;
|
||||
|
||||
if(!val2str(constellation, qamtab))
|
||||
return "Invalid VSB constellation";
|
||||
|
||||
f.u.vsb.modulation = constellation;
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
if(satconf != NULL) {
|
||||
|
|
|
@ -90,6 +90,10 @@ dvb_mux_preconf_add(th_dvb_adapter_t *tda, const struct mux *m, int num,
|
|||
f.u.qam.modulation = m->constellation;
|
||||
f.u.qam.fec_inner = m->fec;
|
||||
break;
|
||||
|
||||
case FE_ATSC:
|
||||
f.u.vsb.modulation = m->constellation;
|
||||
break;
|
||||
}
|
||||
|
||||
dvb_mux_create(tda, &f, polarisation, sc, 0xffff, NULL, source, 1, NULL);
|
||||
|
@ -125,6 +129,10 @@ dvb_mux_preconf_add_network(th_dvb_adapter_t *tda, const char *id,
|
|||
r = regions_DVBT;
|
||||
nr = sizeof(regions_DVBT) / sizeof(regions_DVBT[0]);
|
||||
break;
|
||||
case FE_ATSC:
|
||||
r = regions_ATSC;
|
||||
nr = sizeof(regions_ATSC) / sizeof(regions_ATSC[0]);
|
||||
break;
|
||||
default:
|
||||
return -1;
|
||||
}
|
||||
|
@ -167,6 +175,10 @@ dvb_mux_preconf_get_node(int fetype, const char *node)
|
|||
r = regions_DVBT;
|
||||
nr = sizeof(regions_DVBT) / sizeof(regions_DVBT[0]);
|
||||
break;
|
||||
case FE_ATSC:
|
||||
r = regions_ATSC;
|
||||
nr = sizeof(regions_ATSC) / sizeof(regions_ATSC[0]);
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
|
|
1046
src/linuxtv_muxes.h
1046
src/linuxtv_muxes.h
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue