diff --git a/src/input/mpegts/dvb.h b/src/input/mpegts/dvb.h index 6285474a..a5f4a02d 100644 --- a/src/input/mpegts/dvb.h +++ b/src/input/mpegts/dvb.h @@ -448,6 +448,8 @@ static inline int dvb_bandwidth( dvb_fe_bandwidth_t bw ) int dvb_delsys2type ( enum dvb_fe_delivery_system ds ); +int dvb_mux_conf_str ( dvb_mux_conf_t *conf, char *buf, size_t bufsize ); + #endif /* ENABLE_MPEGTS_DVB */ void dvb_done ( void ); diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c index df662c6f..6747548c 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -93,6 +93,7 @@ dvb_desc_sat_del { int frequency, symrate; dvb_mux_conf_t dmc; + char buf[128]; /* Not enough data */ if(len < 11) return NULL; @@ -141,18 +142,8 @@ dvb_desc_sat_del } /* Debug */ - const char *pol = dvb_pol2str(dmc.u.dmc_fe_qpsk.polarisation); - tvhdebug("nit", - " dvb-s%c pos %d%c freq %d %c sym %d fec %s mod %s roff %s", - (ptr[6] & 0x4) ? '2' : ' ', - dmc.u.dmc_fe_qpsk.orbital_pos, dmc.u.dmc_fe_qpsk.orbital_dir, - dmc.dmc_fe_freq, - pol ? pol[0] : 'X', - symrate, - dvb_fec2str(dmc.u.dmc_fe_qpsk.fec_inner), - dvb_qam2str(dmc.dmc_fe_modulation), - dvb_rolloff2str(dmc.dmc_fe_rolloff) - ); + dvb_mux_conf_str(&dmc, buf, sizeof(buf)); + tvhdebug("nit", " %s", buf); /* Create */ return mm->mm_network->mn_create_mux(mm, onid, tsid, &dmc); @@ -168,6 +159,7 @@ dvb_desc_cable_del { int frequency, symrate; dvb_mux_conf_t dmc; + char buf[128]; static const dvb_fe_modulation_t qtab [6] = { DVB_MOD_QAM_AUTO, DVB_MOD_QAM_16, DVB_MOD_QAM_32, DVB_MOD_QAM_64, @@ -207,11 +199,8 @@ dvb_desc_cable_del dmc.u.dmc_fe_qam.fec_inner = fec_tab[ptr[10] & 0x07]; /* Debug */ - tvhdebug("nit", " dvb-c freq %d sym %d mod %s fec %s", - frequency, - symrate, - dvb_qam2str(dmc.dmc_fe_modulation), - dvb_fec2str(dmc.u.dmc_fe_qam.fec_inner)); + dvb_mux_conf_str(&dmc, buf, sizeof(buf)); + tvhdebug("nit", " %s", buf); /* Create */ return mm->mm_network->mn_create_mux(mm, onid, tsid, &dmc); @@ -251,6 +240,7 @@ dvb_desc_terr_del int frequency; dvb_mux_conf_t dmc; + char buf[128]; /* Not enough data */ if (len < 11) return NULL; @@ -277,15 +267,8 @@ dvb_desc_terr_del dmc.u.dmc_fe_ofdm.transmission_mode = ttab[(ptr[6] >> 1) & 0x3]; /* Debug */ - tvhdebug("nit", " dvb-t freq %d bw %s cons %s hier %s code_rate %s:%s guard %s trans %s", - frequency, - dvb_bw2str(dmc.u.dmc_fe_ofdm.bandwidth), - dvb_qam2str(dmc.dmc_fe_modulation), - dvb_hier2str(dmc.u.dmc_fe_ofdm.hierarchy_information), - dvb_fec2str(dmc.u.dmc_fe_ofdm.code_rate_HP), - dvb_fec2str(dmc.u.dmc_fe_ofdm.code_rate_LP), - dvb_guard2str(dmc.u.dmc_fe_ofdm.guard_interval), - dvb_mode2str(dmc.u.dmc_fe_ofdm.transmission_mode)); + dvb_mux_conf_str(&dmc, buf, sizeof(buf)); + tvhdebug("nit", " %s", buf); /* Create */ return mm->mm_network->mn_create_mux(mm, onid, tsid, &dmc); diff --git a/src/input/mpegts/dvb_support.c b/src/input/mpegts/dvb_support.c index fa4c5ba3..eabfae2e 100644 --- a/src/input/mpegts/dvb_support.c +++ b/src/input/mpegts/dvb_support.c @@ -677,6 +677,88 @@ const static struct strtab pilottab[] = { dvb_str2val(pilot); #undef dvb_str2val +static int +dvb_mux_conf_str_dvbt ( dvb_mux_conf_t *dmc, char *buf, size_t bufsize ) +{ + return + snprintf(buf, bufsize, + "%s freq %d bw %s cons %s hier %s code_rate %s:%s guard %s trans %s", + dvb_delsys2str(dmc->dmc_fe_delsys), + dmc->dmc_fe_freq, + dvb_bw2str(dmc->u.dmc_fe_ofdm.bandwidth), + dvb_qam2str(dmc->dmc_fe_modulation), + dvb_hier2str(dmc->u.dmc_fe_ofdm.hierarchy_information), + dvb_fec2str(dmc->u.dmc_fe_ofdm.code_rate_HP), + dvb_fec2str(dmc->u.dmc_fe_ofdm.code_rate_LP), + dvb_guard2str(dmc->u.dmc_fe_ofdm.guard_interval), + dvb_mode2str(dmc->u.dmc_fe_ofdm.transmission_mode)); +} + +static int +dvb_mux_conf_str_dvbc ( dvb_mux_conf_t *dmc, char *buf, size_t bufsize ) +{ + return + snprintf(buf, bufsize, + "%s freq %d sym %d mod %s fec %s", + dvb_delsys2str(dmc->dmc_fe_delsys), + dmc->dmc_fe_freq, + dmc->u.dmc_fe_qam.symbol_rate, + dvb_qam2str(dmc->dmc_fe_modulation), + dvb_fec2str(dmc->u.dmc_fe_qam.fec_inner)); +} + +static int +dvb_mux_conf_str_dvbs ( dvb_mux_conf_t *dmc, char *buf, size_t bufsize ) +{ + const char *pol = dvb_pol2str(dmc->u.dmc_fe_qpsk.polarisation); + const char dir = dmc->u.dmc_fe_qpsk.orbital_dir; + return + snprintf(buf, bufsize, + "%s pos %d.%d%c freq %d %c sym %d fec %s mod %s roff %s", + dvb_delsys2str(dmc->dmc_fe_delsys), + dmc->u.dmc_fe_qpsk.orbital_pos / 10, + dmc->u.dmc_fe_qpsk.orbital_pos % 10, + dir >= ' ' && dir <= 'z' ? dir : '?', + dmc->dmc_fe_freq, + pol ? pol[0] : 'X', + dmc->u.dmc_fe_qpsk.symbol_rate, + dvb_fec2str(dmc->u.dmc_fe_qpsk.fec_inner), + dvb_qam2str(dmc->dmc_fe_modulation), + dvb_rolloff2str(dmc->dmc_fe_rolloff)); +} + +static int +dvb_mux_conf_str_atsc ( dvb_mux_conf_t *dmc, char *buf, size_t bufsize ) +{ + return + snprintf(buf, bufsize, + "%s freq %d mod %s", + dvb_delsys2str(dmc->dmc_fe_delsys), + dmc->dmc_fe_freq, + dvb_qam2str(dmc->dmc_fe_modulation)); +} + +int +dvb_mux_conf_str ( dvb_mux_conf_t *dmc, char *buf, size_t bufsize ) +{ + switch (dmc->dmc_fe_type) { + case DVB_TYPE_NONE: + return + snprintf(buf, bufsize, "NONE %s", dvb_delsys2str(dmc->dmc_fe_delsys)); + case DVB_TYPE_T: + return dvb_mux_conf_str_dvbt(dmc, buf, bufsize); + case DVB_TYPE_C: + return dvb_mux_conf_str_dvbc(dmc, buf, bufsize); + case DVB_TYPE_S: + return dvb_mux_conf_str_dvbs(dmc, buf, bufsize); + case DVB_TYPE_ATSC: + return dvb_mux_conf_str_atsc(dmc, buf, bufsize); + default: + return + snprintf(buf, bufsize, "UNKNOWN MUX CONFIG"); + } +} + #endif /* ENABLE_MPEGTS_DVB */ /**