dvb_support: add dvb_mux_conf_str()

This commit is contained in:
Jaroslav Kysela 2014-06-13 19:59:32 +02:00
parent 4699c3a71a
commit 02d1da49c2
3 changed files with 93 additions and 26 deletions

View file

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

View file

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

View file

@ -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 */
/**