]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
linuxdvb: add Tune Repeats for frontend
authorJaroslav Kysela <perex@perex.cz>
Mon, 15 Dec 2014 08:38:59 +0000 (09:38 +0100)
committerJaroslav Kysela <perex@perex.cz>
Mon, 15 Dec 2014 08:38:59 +0000 (09:38 +0100)
src/input/mpegts/linuxdvb/linuxdvb_frontend.c
src/input/mpegts/linuxdvb/linuxdvb_private.h

index 1d7a433f50ad6d9f5ab92faf471deb339fe370a5..e7f5c2603474bc385cbefe3d41e7bd8b58dae06f 100644 (file)
@@ -91,6 +91,13 @@ const idclass_t linuxdvb_frontend_class =
       .name     = "Power Save",
       .off      = offsetof(linuxdvb_frontend_t, lfe_powersave),
     },
+    {
+      .type     = PT_U32,
+      .id       = "tune_repeats",
+      .name     = "Tune Repeats",
+      .opts     = PO_ADVANCED,
+      .off      = offsetof(linuxdvb_frontend_t, lfe_tune_repeats),
+    },
     {
       .type     = PT_U32,
       .id       = "skip_bytes",
@@ -1283,7 +1290,7 @@ int
 linuxdvb_frontend_tune1
   ( linuxdvb_frontend_t *lfe, mpegts_mux_instance_t *mmi, uint32_t freq )
 {
-  int r;
+  int r, i, rep;
   char buf1[256], buf2[256];
 
   lfe->mi_display_name((mpegts_input_t*)lfe, buf1, sizeof(buf1));
@@ -1292,7 +1299,14 @@ linuxdvb_frontend_tune1
 
   /* Tune */
   tvhtrace("linuxdvb", "%s - tuning", buf1);
-  r = linuxdvb_frontend_tune0(lfe, mmi, freq);
+  rep = lfe->lfe_tune_repeats > 0 ? lfe->lfe_tune_repeats : 0;
+  for (i = 0; i <= rep; i++) {
+    if (i > 0)
+      usleep(15000);
+    r = linuxdvb_frontend_tune0(lfe, mmi, freq);
+    if (r)
+      break;
+  }
 
   /* Start monitor */
   if (!r) {
index 8a6f46737d16d070859f68cef046e78518c8f429..165eaf359f9b0b98925284ac045550a6c3cb8edf 100644 (file)
@@ -111,6 +111,7 @@ struct linuxdvb_frontend
    * Configuration
    */
   int                       lfe_powersave;
+  int                       lfe_tune_repeats;
   uint32_t                  lfe_skip_bytes;
 
   /*