dvb: add dvb_mux_conf_init() helper to move mux_conf initialization to one place
This commit is contained in:
parent
aac2d0774f
commit
399aa99e89
5 changed files with 30 additions and 37 deletions
|
@ -511,6 +511,8 @@ static inline int dvb_bandwidth( dvb_fe_bandwidth_t bw )
|
|||
|
||||
int dvb_delsys2type ( enum dvb_fe_delivery_system ds );
|
||||
|
||||
void dvb_mux_conf_init ( dvb_mux_conf_t *dmc, dvb_fe_delivery_system_t delsys );
|
||||
|
||||
int dvb_mux_conf_str ( dvb_mux_conf_t *conf, char *buf, size_t bufsize );
|
||||
|
||||
int dvb_sat_position( const dvb_mux_conf_t *mc );
|
||||
|
|
|
@ -177,10 +177,8 @@ dvb_desc_sat_del
|
|||
return NULL;
|
||||
}
|
||||
|
||||
memset(&dmc, 0, sizeof(dmc));
|
||||
dmc.dmc_fe_type = DVB_TYPE_S;
|
||||
dmc.dmc_fe_pilot = DVB_PILOT_AUTO;
|
||||
dmc.dmc_fe_inversion = DVB_INVERSION_AUTO;
|
||||
dvb_mux_conf_init(&dmc, (ptr[6] & 0x4) ? DVB_SYS_DVBS2 : DVB_SYS_DVBS);
|
||||
|
||||
dmc.dmc_fe_freq = frequency;
|
||||
dmc.u.dmc_fe_qpsk.orbital_pos = bcdtoint(ptr[4]) * 100 + bcdtoint(ptr[5]);
|
||||
dmc.u.dmc_fe_qpsk.orbital_dir = (ptr[6] & 0x80) ? 'E' : 'W';
|
||||
|
@ -195,7 +193,6 @@ dvb_desc_sat_del
|
|||
static int rtab[4] = {
|
||||
DVB_ROLLOFF_35, DVB_ROLLOFF_25, DVB_ROLLOFF_20, DVB_ROLLOFF_AUTO
|
||||
};
|
||||
dmc.dmc_fe_delsys = (ptr[6] & 0x4) ? DVB_SYS_DVBS2 : DVB_SYS_DVBS;
|
||||
dmc.dmc_fe_modulation = mtab[ptr[6] & 0x3];
|
||||
if (dmc.dmc_fe_modulation != DVB_MOD_NONE &&
|
||||
dmc.dmc_fe_modulation != DVB_MOD_QPSK)
|
||||
|
@ -253,10 +250,8 @@ dvb_desc_cable_del
|
|||
return NULL;
|
||||
}
|
||||
|
||||
memset(&dmc, 0, sizeof(dmc));
|
||||
dmc.dmc_fe_type = DVB_TYPE_C;
|
||||
dmc.dmc_fe_delsys = DVB_SYS_DVBC_ANNEX_A;
|
||||
dmc.dmc_fe_inversion = DVB_INVERSION_AUTO;
|
||||
dvb_mux_conf_init(&dmc, DVB_SYS_DVBC_ANNEX_A);
|
||||
|
||||
dmc.dmc_fe_freq = frequency * 100;
|
||||
|
||||
dmc.u.dmc_fe_qam.symbol_rate = symrate * 100;
|
||||
|
@ -320,12 +315,9 @@ dvb_desc_terr_del
|
|||
return NULL;
|
||||
}
|
||||
|
||||
memset(&dmc, 0, sizeof(dmc));
|
||||
dmc.dmc_fe_type = DVB_TYPE_T;
|
||||
dmc.dmc_fe_delsys = DVB_SYS_DVBT;
|
||||
dmc.dmc_fe_inversion = DVB_INVERSION_AUTO;
|
||||
dmc.dmc_fe_freq = frequency * 10;
|
||||
dvb_mux_conf_init(&dmc, DVB_SYS_DVBT);
|
||||
|
||||
dmc.dmc_fe_freq = frequency * 10;
|
||||
dmc.u.dmc_fe_ofdm.bandwidth = btab[(ptr[4] >> 5) & 0x7];
|
||||
dmc.dmc_fe_modulation = ctab[(ptr[5] >> 6) & 0x3];
|
||||
dmc.u.dmc_fe_ofdm.hierarchy_information = htab[(ptr[5] >> 3) & 0x3];
|
||||
|
|
|
@ -768,6 +768,17 @@ dvb_str2val(plsmode);
|
|||
#undef dvb_str2val
|
||||
|
||||
|
||||
void
|
||||
dvb_mux_conf_init ( dvb_mux_conf_t *dmc, dvb_fe_delivery_system_t delsys )
|
||||
{
|
||||
memset(dmc, 0, sizeof(*dmc));
|
||||
dmc->dmc_fe_type = dvb_delsys2type(delsys);
|
||||
dmc->dmc_fe_delsys = delsys;
|
||||
dmc->dmc_fe_inversion = DVB_INVERSION_AUTO;
|
||||
dmc->dmc_fe_pilot = DVB_PILOT_AUTO;
|
||||
dmc->dmc_fe_stream_id = DVB_NO_STREAM_ID_FILTER;
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
dvb_mux_conf_str_dvbt ( dvb_mux_conf_t *dmc, char *buf, size_t bufsize )
|
||||
|
|
|
@ -710,9 +710,7 @@ dvb_mux_create0
|
|||
lm = (dvb_mux_t*)mm;
|
||||
|
||||
/* Defaults */
|
||||
lm->lm_tuning.dmc_fe_inversion = DVB_INVERSION_AUTO;
|
||||
lm->lm_tuning.dmc_fe_pilot = DVB_PILOT_AUTO;
|
||||
lm->lm_tuning.dmc_fe_stream_id = DVB_NO_STREAM_ID_FILTER;
|
||||
dvb_mux_conf_init(&lm->lm_tuning, DVB_SYS_NONE);
|
||||
|
||||
/* Parent init and load config */
|
||||
if (!(mm = mpegts_mux_create0(mm, idc, uuid,
|
||||
|
|
|
@ -117,8 +117,7 @@ scanfile_load_atsc ( dvb_mux_conf_t *mux, const char *line )
|
|||
|
||||
r = sscanf(line, "%u %s", &mux->dmc_fe_freq, qam);
|
||||
if (r != 2) return 1;
|
||||
mux->dmc_fe_type = DVB_TYPE_ATSC;
|
||||
mux->dmc_fe_delsys = DVB_SYS_ATSC;
|
||||
dvb_mux_conf_init(mux, DVB_SYS_ATSC);
|
||||
if ((mux->dmc_fe_modulation = dvb_str2qam(qam)) == -1) return 1;
|
||||
|
||||
return 0;
|
||||
|
@ -132,6 +131,7 @@ scanfile_load_dvbt ( dvb_mux_conf_t *mux, const char *line )
|
|||
|
||||
if (*line == '2') {
|
||||
unsigned int system_id;
|
||||
dvb_mux_conf_init(mux, DVB_SYS_DVBT2);
|
||||
r = sscanf(line+1, "%u %s", &mux->dmc_fe_stream_id, bw);
|
||||
if (r == 2 && mux->dmc_fe_stream_id < 1000 && strstr(bw, "MHz") == 0) {
|
||||
r = sscanf(line+1, "%u %u %u %10s %10s %10s %10s %10s %10s %10s",
|
||||
|
@ -145,15 +145,13 @@ scanfile_load_dvbt ( dvb_mux_conf_t *mux, const char *line )
|
|||
if(r == 8) mux->dmc_fe_stream_id = DVB_NO_STREAM_ID_FILTER; else
|
||||
if(r != 9) return 1;
|
||||
}
|
||||
mux->dmc_fe_delsys = DVB_SYS_DVBT2;
|
||||
} else {
|
||||
dvb_mux_conf_init(mux, DVB_SYS_DVBT);
|
||||
r = sscanf(line, "%u %10s %10s %10s %10s %10s %10s %10s",
|
||||
&mux->dmc_fe_freq, bw, fec, fec2, qam, mode, guard, hier);
|
||||
if(r != 8) return 1;
|
||||
mux->dmc_fe_delsys = DVB_SYS_DVBT;
|
||||
}
|
||||
|
||||
mux->dmc_fe_type = DVB_TYPE_T;
|
||||
if ((mux->u.dmc_fe_ofdm.bandwidth = dvb_str2bw(bw)) == -1) return 1;
|
||||
if ((mux->dmc_fe_modulation = dvb_str2qam(qam)) == -1) return 1;
|
||||
if ((mux->u.dmc_fe_ofdm.code_rate_HP = dvb_str2fec(fec)) == -1) return 1;
|
||||
|
@ -176,23 +174,22 @@ scanfile_load_dvbs ( dvb_mux_conf_t *mux, const char *line )
|
|||
line++;
|
||||
}
|
||||
|
||||
dvb_mux_conf_init(mux, v2 ? DVB_SYS_DVBS2 : DVB_SYS_DVBS);
|
||||
|
||||
r = sscanf(line, "%u %s %u %s %s %s %d %d %d",
|
||||
&mux->dmc_fe_freq, pol, &mux->u.dmc_fe_qpsk.symbol_rate,
|
||||
fec, rolloff, qam, &mux->dmc_fe_stream_id, &mux->dmc_fe_pls_code, (int*)&mux->dmc_fe_pls_mode);
|
||||
if (r < (4+v2)) return 1;
|
||||
|
||||
mux->dmc_fe_type = DVB_TYPE_S;
|
||||
if ((mux->u.dmc_fe_qpsk.polarisation = dvb_str2pol(pol)) == -1) return 1;
|
||||
if ((mux->u.dmc_fe_qpsk.fec_inner = dvb_str2fec(fec)) == -1) return 1;
|
||||
if (v2) {
|
||||
mux->dmc_fe_delsys = DVB_SYS_DVBS2;
|
||||
if ((mux->dmc_fe_rolloff = dvb_str2rolloff(rolloff)) == -1) return 1;
|
||||
if ((mux->dmc_fe_modulation = dvb_str2qam(qam)) == -1) return 1;
|
||||
if (r < (4+v2+1)) mux->dmc_fe_stream_id = DVB_NO_STREAM_ID_FILTER;
|
||||
if (r < (4+v2+2)) mux->dmc_fe_pls_code = 1;
|
||||
if (r < (4+v2+3)) mux->dmc_fe_pls_mode = 0;
|
||||
} else {
|
||||
mux->dmc_fe_delsys = DVB_SYS_DVBS;
|
||||
mux->dmc_fe_rolloff = DVB_ROLLOFF_35;
|
||||
mux->dmc_fe_modulation = DVB_MOD_QPSK;
|
||||
}
|
||||
|
@ -210,8 +207,7 @@ scanfile_load_dvbc ( dvb_mux_conf_t *mux, const char *line )
|
|||
&mux->dmc_fe_freq, &mux->u.dmc_fe_qam.symbol_rate, fec, qam);
|
||||
if(r != 4) return 1;
|
||||
|
||||
mux->dmc_fe_type = DVB_TYPE_C;
|
||||
mux->dmc_fe_delsys = DVB_SYS_DVBC_ANNEX_A;
|
||||
dvb_mux_conf_init(mux, DVB_SYS_DVBC_ANNEX_A);
|
||||
if ((mux->u.dmc_fe_qam.fec_inner = dvb_str2fec(fec)) == -1) return 1;
|
||||
if ((mux->dmc_fe_modulation = dvb_str2qam(qam)) == -1) return 1;
|
||||
|
||||
|
@ -309,7 +305,7 @@ static void
|
|||
scanfile_load_one ( scanfile_network_t *net, const char *line )
|
||||
{
|
||||
int r = 1;
|
||||
dvb_mux_conf_t *mux = calloc(1, sizeof(dvb_mux_conf_t));
|
||||
dvb_mux_conf_t *mux = malloc(sizeof(dvb_mux_conf_t));
|
||||
|
||||
switch (line[0]) {
|
||||
case 'A':
|
||||
|
@ -402,7 +398,7 @@ scanfile_load_dvbv5 ( scanfile_network_t *net, char *line, fb_file *fp )
|
|||
htsmsg_add_str(l, s, t);
|
||||
}
|
||||
|
||||
mux = calloc(1, sizeof(dvb_mux_conf_t));
|
||||
mux = malloc(sizeof(dvb_mux_conf_t));
|
||||
|
||||
x = htsmsg_get_str(l, "DELIVERY_SYSTEM");
|
||||
|
||||
|
@ -413,17 +409,17 @@ scanfile_load_dvbv5 ( scanfile_network_t *net, char *line, fb_file *fp )
|
|||
if (!x || (int)mux->dmc_fe_delsys < 0)
|
||||
mux_fail(r, "wrong system '%s'", x);
|
||||
|
||||
dvb_mux_conf_init(mux, mux->dmc_fe_delsys);
|
||||
|
||||
if (mux->dmc_fe_delsys == DVB_SYS_DVBT ||
|
||||
mux->dmc_fe_delsys == DVB_SYS_DVBT2) {
|
||||
|
||||
mux->dmc_fe_type = DVB_TYPE_T;
|
||||
mux->u.dmc_fe_ofdm.bandwidth = DVB_BANDWIDTH_AUTO;
|
||||
mux->u.dmc_fe_ofdm.code_rate_HP = DVB_FEC_AUTO;
|
||||
mux->u.dmc_fe_ofdm.code_rate_LP = DVB_FEC_NONE;
|
||||
mux->dmc_fe_modulation = DVB_MOD_QAM_64;
|
||||
mux->u.dmc_fe_ofdm.transmission_mode = DVB_TRANSMISSION_MODE_8K;
|
||||
mux->u.dmc_fe_ofdm.hierarchy_information = DVB_HIERARCHY_NONE;
|
||||
mux->dmc_fe_inversion = DVB_INVERSION_AUTO;
|
||||
|
||||
if ((x = htsmsg_get_str(l, "BANDWIDTH_HZ"))) {
|
||||
if (isdigit(x[0])) {
|
||||
|
@ -463,13 +459,10 @@ scanfile_load_dvbv5 ( scanfile_network_t *net, char *line, fb_file *fp )
|
|||
} else if (mux->dmc_fe_delsys == DVB_SYS_DVBS ||
|
||||
mux->dmc_fe_delsys == DVB_SYS_DVBS2) {
|
||||
|
||||
mux->dmc_fe_type = DVB_TYPE_S;
|
||||
mux->dmc_fe_modulation =
|
||||
mux->dmc_fe_delsys == DVB_SYS_DVBS2 ? DVB_MOD_PSK_8 : DVB_MOD_QPSK;
|
||||
mux->u.dmc_fe_qpsk.fec_inner = DVB_FEC_AUTO;
|
||||
mux->dmc_fe_inversion = DVB_INVERSION_AUTO;
|
||||
mux->dmc_fe_rolloff = DVB_ROLLOFF_35;
|
||||
mux->dmc_fe_pilot = DVB_PILOT_AUTO;
|
||||
|
||||
if ((x = htsmsg_get_str(l, "MODULATION")))
|
||||
if ((mux->dmc_fe_modulation = dvb_str2qam(x)) == -1)
|
||||
|
@ -512,10 +505,8 @@ scanfile_load_dvbv5 ( scanfile_network_t *net, char *line, fb_file *fp )
|
|||
mux->dmc_fe_delsys == DVB_SYS_DVBC_ANNEX_B ||
|
||||
mux->dmc_fe_delsys == DVB_SYS_DVBC_ANNEX_C) {
|
||||
|
||||
mux->dmc_fe_type = DVB_TYPE_C;
|
||||
mux->dmc_fe_modulation = DVB_MOD_QAM_128;
|
||||
mux->u.dmc_fe_qam.fec_inner = DVB_FEC_NONE;
|
||||
mux->dmc_fe_inversion = DVB_INVERSION_AUTO;
|
||||
|
||||
if ((x = htsmsg_get_str(l, "MODULATION")))
|
||||
if ((mux->dmc_fe_modulation = dvb_str2qam(x)) == -1)
|
||||
|
@ -533,7 +524,6 @@ scanfile_load_dvbv5 ( scanfile_network_t *net, char *line, fb_file *fp )
|
|||
|
||||
mux->dmc_fe_type = DVB_TYPE_ATSC;
|
||||
mux->dmc_fe_modulation = DVB_MOD_VSB_8;
|
||||
mux->dmc_fe_inversion = DVB_INVERSION_AUTO;
|
||||
|
||||
if ((x = htsmsg_get_str(l, "MODULATION")))
|
||||
if ((mux->dmc_fe_modulation = dvb_str2qam(x)) == -1)
|
||||
|
|
Loading…
Add table
Reference in a new issue