From 399aa99e8917784a96d012545bd8a9f547b2fd09 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 4 Feb 2015 17:41:35 +0100 Subject: [PATCH] dvb: add dvb_mux_conf_init() helper to move mux_conf initialization to one place --- src/input/mpegts/dvb.h | 2 ++ src/input/mpegts/dvb_psi.c | 20 ++++++-------------- src/input/mpegts/dvb_support.c | 11 +++++++++++ src/input/mpegts/mpegts_mux_dvb.c | 4 +--- src/input/mpegts/scanfile.c | 30 ++++++++++-------------------- 5 files changed, 30 insertions(+), 37 deletions(-) diff --git a/src/input/mpegts/dvb.h b/src/input/mpegts/dvb.h index 555c3130..f1eb9dd1 100644 --- a/src/input/mpegts/dvb.h +++ b/src/input/mpegts/dvb.h @@ -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 ); diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c index 787a46a3..1960eba5 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -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]; diff --git a/src/input/mpegts/dvb_support.c b/src/input/mpegts/dvb_support.c index 912a9025..7e88b437 100644 --- a/src/input/mpegts/dvb_support.c +++ b/src/input/mpegts/dvb_support.c @@ -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 ) diff --git a/src/input/mpegts/mpegts_mux_dvb.c b/src/input/mpegts/mpegts_mux_dvb.c index a5eb09e1..d7e66319 100644 --- a/src/input/mpegts/mpegts_mux_dvb.c +++ b/src/input/mpegts/mpegts_mux_dvb.c @@ -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, diff --git a/src/input/mpegts/scanfile.c b/src/input/mpegts/scanfile.c index f285d6ae..2ac82842 100644 --- a/src/input/mpegts/scanfile.c +++ b/src/input/mpegts/scanfile.c @@ -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)