]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
mpegts: one more dvb-s fix, I'm now able to stream from DVB-S!
authorAdam Sutton <dev@adamsutton.me.uk>
Sun, 16 Jun 2013 12:08:48 +0000 (13:08 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Sun, 16 Jun 2013 12:08:48 +0000 (13:08 +0100)
src/input/mpegts.h
src/input/mpegts/linuxdvb/linuxdvb_satconf.c
src/input/mpegts/mpegts_input.c
src/input/mpegts/mpegts_mux.c

index 28040221958e3ed5e2a13edfd650d5b5a3ab2ff5..fdf255f81315865b95f0b50fef913d76e5d6e44d 100644 (file)
@@ -397,6 +397,7 @@ struct mpegts_input
   mpegts_network_t *(*mi_network_create) (mpegts_input_t *mi, htsmsg_t *c);
   void (*mi_started_mux)    (mpegts_input_t*,mpegts_mux_instance_t*);
   void (*mi_stopped_mux)    (mpegts_input_t*,mpegts_mux_instance_t*);
+  int  (*mi_has_subscription) (mpegts_input_t*, mpegts_mux_t *mm);
 };
 
 #endif /* __TVH_MPEGTS_H__ */
index 02cecd074e11a12e2ba4d0178488d3162b07843a..2df82d30b283c002f09d8fb30c3c5f9ca12e217c 100644 (file)
@@ -280,6 +280,14 @@ linuxdvb_satconf_stopped_mux
   ls->ls_frontend->mi_stopped_mux(ls->ls_frontend, mmi);
 }
 
+static int
+linuxdvb_satconf_has_subscription
+  ( mpegts_input_t *mi, mpegts_mux_t *mm )
+{
+  linuxdvb_satconf_t *ls = (linuxdvb_satconf_t*)mi;
+  return ls->ls_frontend->mi_has_subscription(ls->ls_frontend, mm);
+}
+
 static int
 linuxdvb_satconf_open_pid
   ( linuxdvb_frontend_t *lfe, int pid, const char *name )
@@ -331,6 +339,7 @@ linuxdvb_satconf_create0
   ls->mi_network_create      = linuxdvb_satconf_network_create;
   ls->mi_started_mux         = linuxdvb_satconf_started_mux;
   ls->mi_stopped_mux         = linuxdvb_satconf_stopped_mux;
+  ls->mi_has_subscription    = linuxdvb_satconf_has_subscription;
   ls->lfe_open_pid           = linuxdvb_satconf_open_pid;
 
   /* Unoversal LMB */
index af07ed23bf6c9366f70e136f26e1e64a317d7c47..b4c09df68dabe4d5b4625ef35c75bee4bc979cf9 100644 (file)
@@ -204,6 +204,16 @@ mpegts_input_stopped_mux
   }
 }
 
+static int
+mpegts_input_has_subscription ( mpegts_input_t *mi, mpegts_mux_t *mm )
+{
+  service_t *t;
+  LIST_FOREACH(t, &mi->mi_transports, s_active_link)
+    if (((mpegts_service_t*)t)->s_dvb_mux == mm)
+      return 1;
+  return 0;
+}
+
 /* **************************************************************************
  * Data processing
  * *************************************************************************/
@@ -217,7 +227,6 @@ mpegts_input_recv_packets
   int len = l;
   int i = 0, table_wakeup = 0;
   mpegts_mux_t *mm = mmi->mmi_mux;
-  //assert(mmi->mmi_input == mi);
   assert(mm != NULL);
   assert(name != NULL);
 
@@ -394,6 +403,7 @@ mpegts_input_create0
   mi->mi_create_mux_instance  = mpegts_input_create_mux_instance;
   mi->mi_started_mux          = mpegts_input_started_mux;
   mi->mi_stopped_mux          = mpegts_input_stopped_mux;
+  mi->mi_has_subscription     = mpegts_input_has_subscription;
 
   /* Index */
   mi->mi_instance       = ++mpegts_input_idx;
index 73e78406c779c8b35f20bf7bf7e921ef98f16ef9..26d1d2d45ff84ceee15347447dd3e12de1d35988 100644 (file)
@@ -331,13 +331,9 @@ mpegts_mux_close_table ( mpegts_mux_t *mm, mpegts_table_t *mt )
 static int
 mpegts_mux_has_subscribers ( mpegts_mux_t *mm )
 {
-  service_t *t;
   mpegts_mux_instance_t *mmi = mm->mm_active;
-  if (mmi) {
-    LIST_FOREACH(t, &mmi->mmi_input->mi_transports, s_active_link)
-      if (((mpegts_service_t*)t)->s_dvb_mux == mm)
-        return 1;
-  }
+  if (mmi)
+    return mmi->mmi_input->mi_has_subscription(mmi->mmi_input, mm);
   return 0;
 }