dvb: add dvb_mux_conf_init() helper to move mux_conf initialization to one place

This commit is contained in:
Jaroslav Kysela 2015-02-04 17:41:35 +01:00
parent aac2d0774f
commit 399aa99e89
5 changed files with 30 additions and 37 deletions

View file

@ -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 );

View file

@ -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];

View file

@ -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 )

View file

@ -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,

View file

@ -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)