]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts: move active mux check to mpegts_mux_instance_start()
authorJaroslav Kysela <perex@perex.cz>
Sun, 17 Aug 2014 20:41:44 +0000 (22:41 +0200)
committerJaroslav Kysela <perex@perex.cz>
Sun, 17 Aug 2014 20:41:44 +0000 (22:41 +0200)
src/input/mpegts/linuxdvb/linuxdvb_frontend.c
src/input/mpegts/mpegts_mux.c
src/input/mpegts/satip/satip_frontend.c

index abda550d88383d2f92d6d267173a2b4d7c9e4ecd..48abe760865c310b039ec342dc5fd02f7b1e12c0 100644 (file)
@@ -301,20 +301,6 @@ linuxdvb_frontend_start_mux
   ( mpegts_input_t *mi, mpegts_mux_instance_t *mmi )
 {
   linuxdvb_frontend_t   *lfe = (linuxdvb_frontend_t*)mi;
-  mpegts_mux_instance_t *cur = LIST_FIRST(&lfe->mi_mux_active);
-
-  /* Currently active */
-  if (cur != NULL) {
-
-    /* Already tuned */
-    if (mmi == cur)
-      return 0;
-
-    /* Stop current */
-    cur->mmi_mux->mm_stop(cur->mmi_mux, 1);
-  }
-  assert(LIST_FIRST(&lfe->mi_mux_active) == NULL);
-
   if (lfe->lfe_satconf)
     return linuxdvb_satconf_start_mux(lfe->lfe_satconf, mmi);
   return linuxdvb_frontend_tune1((linuxdvb_frontend_t*)mi, mmi, -1);
index faa3160b50b676e385648b677ecefa8378a66d50..9a6cb2b9e6fc992ddd3a511df64e9bd2da891ed3 100644 (file)
@@ -94,34 +94,47 @@ mpegts_mux_instance_start
   ( mpegts_mux_instance_t **mmiptr )
 {
   int r;
-  char buf[256], buf2[256];;
+  char buf[256], buf2[256];
   mpegts_mux_instance_t *mmi = *mmiptr;
-  mpegts_mux_t           *mm = mmi->mmi_mux;
+  mpegts_mux_instance_t *cur;
+  mpegts_mux_t          * mm = mmi->mmi_mux;
+  mpegts_input_t        * mi = mmi->mmi_input;
   mpegts_mux_nice_name(mm, buf, sizeof(buf));
 
   /* Already active */
   if (mm->mm_active) {
     *mmiptr = mm->mm_active;
     tvhdebug("mpegts", "%s - already active", buf);
-    mpegts_mux_scan_active(mm, buf, mmi->mmi_input);
+    mpegts_mux_scan_active(mm, buf, (*mmiptr)->mmi_input);
     return 0;
   }
 
+  cur = LIST_FIRST(&mi->mi_mux_active);
+  if (cur != NULL) {
+    /* Already tuned */
+    if (mmi == cur)
+      return 0;
+
+    /* Stop current */
+    cur->mmi_mux->mm_stop(cur->mmi_mux, 1);
+  }
+  assert(LIST_FIRST(&mi->mi_mux_active) == NULL);
+
   /* Start */
-  mmi->mmi_input->mi_display_name(mmi->mmi_input, buf2, sizeof(buf2));
+  mi->mi_display_name(mi, buf2, sizeof(buf2));
   tvhinfo("mpegts", "%s - tuning on %s", buf, buf2);
-  r = mmi->mmi_input->mi_start_mux(mmi->mmi_input, mmi);
+  r = mi->mi_start_mux(mi, mmi);
   if (r) return r;
 
   /* Start */
   tvhdebug("mpegts", "%s - started", buf);
-  mmi->mmi_input->mi_started_mux(mmi->mmi_input, mmi);
+  mi->mi_started_mux(mi, mmi);
 
   /* Event handler */
   mpegts_fire_event(mm, ml_mux_start);
 
   /* Link */
-  mpegts_mux_scan_active(mm, buf, mmi->mmi_input);
+  mpegts_mux_scan_active(mm, buf, mi);
 
   return 0;
 }
index ea0459d6ba066520682480c3ac86f75c78f0964f..41ae92435e871d799cc476da8ee23c9578a8b5c1 100644 (file)
@@ -1312,18 +1312,6 @@ static int
 satip_frontend_tune0
   ( satip_frontend_t *lfe, mpegts_mux_instance_t *mmi )
 {
-  mpegts_mux_instance_t *cur = LIST_FIRST(&lfe->mi_mux_active);
-
-  if (cur != NULL) {
-    /* Already tuned */
-    if (mmi == cur)
-      return 0;
-
-    /* Stop current */
-    cur->mmi_mux->mm_stop(cur->mmi_mux, 1);
-  }
-  assert(LIST_FIRST(&lfe->mi_mux_active) == NULL);
-
   if (udp_bind_double(&lfe->sf_rtp, &lfe->sf_rtcp,
                       "satip", "rtp", "rtpc",
                       satip_frontend_bindaddr(lfe), lfe->sf_udp_rtp_port,