]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
SAT>IP : Add preliminary DVB-C code
authorJaroslav Kysela <perex@perex.cz>
Wed, 16 Apr 2014 15:57:56 +0000 (17:57 +0200)
committerJaroslav Kysela <perex@perex.cz>
Mon, 5 May 2014 20:00:36 +0000 (22:00 +0200)
src/input/mpegts/satip/satip.c
src/input/mpegts/satip/satip_frontend.c
src/input/mpegts/satip/satip_rtsp.c

index c4798ab49cf82a2e28e110d54eae7dafaabf29e3..fd4b1dd587430ae721927e565c2eef0220c2d91d 100644 (file)
@@ -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--;
index 4f8ee25aa2d12eadda18b0a9f6f4519123ba3d91..8eaf47deb23e3277e900d2d0cdd7e325491645b6 100644 (file)
@@ -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;
index d5bc0d45eb56eb6cbeb18d19d55a614bc6e699f8..4d52a74d7f17e2188d6f88b4cd1f89d851020433 100644 (file)
@@ -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)