diff --git a/src/input/mpegts/satip/satip.c b/src/input/mpegts/satip/satip.c index c4798ab4..fd4b1dd5 100644 --- a/src/input/mpegts/satip/satip.c +++ b/src/input/mpegts/satip/satip.c @@ -340,6 +340,9 @@ satip_device_create( satip_device_info_t *info ) } else if (strncmp(argv[i], "DVBT-", 5) == 0) { type = DVB_TYPE_T; m = atoi(argv[i] + 5); + } else if (strncmp(argv[i], "DVBC-", 5) == 0) { + type = DVB_TYPE_C; + m = atoi(argv[i] + 5); } if (type == DVB_TYPE_NONE) { tvhlog(LOG_ERR, "satip", "%s: bad tuner type [%s]", sd->sd_info.addr, argv[i]); @@ -511,6 +514,11 @@ satip_discovery_http_closed(http_client_t *hc, int errn) return; } +#if ENABLE_TRACE + tvhtrace("satip", "received XML description from %s", hc->hc_host); + tvhlog_hexdump("satip", hc->hc_data, hc->hc_data_size); +#endif + s = hc->hc_data + hc->hc_data_size - 1; while (s != hc->hc_data && *s != '/') s--; diff --git a/src/input/mpegts/satip/satip_frontend.c b/src/input/mpegts/satip/satip_frontend.c index 4f8ee25a..8eaf47de 100644 --- a/src/input/mpegts/satip/satip_frontend.c +++ b/src/input/mpegts/satip/satip_frontend.c @@ -162,6 +162,16 @@ const idclass_t satip_frontend_dvbs_class = } }; +const idclass_t satip_frontend_dvbc_class = +{ + .ic_super = &satip_frontend_class, + .ic_class = "satip_frontend_dvbc", + .ic_caption = "SAT>IP DVB-C Frontend", + .ic_properties = (const property_t[]){ + {} + } +}; + /* ************************************************************************** * Class methods * *************************************************************************/ @@ -419,6 +429,8 @@ satip_frontend_network_list ( mpegts_input_t *mi ) idc = &dvb_network_dvbt_class; else if (lfe->sf_type == DVB_TYPE_S) idc = &dvb_network_dvbs_class; + else if (lfe->sf_type == DVB_TYPE_C) + idc = &dvb_network_dvbc_class; else return NULL; @@ -1071,6 +1083,8 @@ satip_frontend_create idc = &satip_frontend_dvbs_class; else if (type == DVB_TYPE_T) idc = &satip_frontend_dvbt_class; + else if (type == DVB_TYPE_C) + idc = &satip_frontend_dvbc_class; else { tvherror("satip", "unknown FE type %d", type); return NULL; diff --git a/src/input/mpegts/satip/satip_rtsp.c b/src/input/mpegts/satip/satip_rtsp.c index d5bc0d45..4d52a74d 100644 --- a/src/input/mpegts/satip/satip_rtsp.c +++ b/src/input/mpegts/satip/satip_rtsp.c @@ -77,6 +77,9 @@ satip_rtsp_setup( http_client_t *hc, int src, int fe, { .t = DVB_SYS_DVBT2, "dvbt2" }, { .t = DVB_SYS_DVBS, "dvbs" }, { .t = DVB_SYS_DVBS2, "dvbs2" }, + { .t = DVB_SYS_DVBC_ANNEX_A, "dvbc" }, + { .t = DVB_SYS_DVBC_ANNEX_B, "dvbc" }, + { .t = DVB_SYS_DVBC_ANNEX_C, "dvbc" }, { .t = TABLE_EOD } }; static tvh2satip_t pol[] = { @@ -157,7 +160,7 @@ satip_rtsp_setup( http_client_t *hc, int src, int fe, satip_rtsp_add_val("freq", buf, dmc->dmc_fe_freq); if (dmc->dmc_fe_delsys == DVB_SYS_DVBS || dmc->dmc_fe_delsys == DVB_SYS_DVBS2) { - satip_rtsp_add_val("sr", buf, dmc->u.dmc_fe_qpsk.symbol_rate); + satip_rtsp_add_val("sr", buf, dmc->u.dmc_fe_qpsk.symbol_rate); ADD(dmc_fe_delsys, msys, "dvbs"); ADD(dmc_fe_modulation, mtype, "qpsk"); ADD(u.dmc_fe_qpsk.polarisation, pol, "h" ); @@ -165,6 +168,14 @@ satip_rtsp_setup( http_client_t *hc, int src, int fe, ADD(dmc_fe_rolloff, ro, "0.35"); if (dmc->dmc_fe_pilot != DVB_PILOT_AUTO) ADD(dmc_fe_pilot, plts, "auto"); + } else if (dmc->dmc_fe_delsys == DVB_SYS_DVBC_ANNEX_A || + dmc->dmc_fe_delsys == DVB_SYS_DVBC_ANNEX_B || + dmc->dmc_fe_delsys == DVB_SYS_DVBC_ANNEX_C) { + satip_rtsp_add_val("sr", buf, dmc->u.dmc_fe_qam.symbol_rate); + ADD(dmc_fe_delsys, msys, "dvbc"); + ADD(dmc_fe_modulation, mtype, "64qam"); + /* missing plp */ + ADD(u.dmc_fe_qpsk.fec_inner, fec, "auto"); } else { if (dmc->u.dmc_fe_ofdm.bandwidth != DVB_BANDWIDTH_AUTO && dmc->u.dmc_fe_ofdm.bandwidth != DVB_BANDWIDTH_NONE)