]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
service: introduce streaming_service_deliver()
authorJaroslav Kysela <perex@perex.cz>
Fri, 3 Nov 2017 14:27:14 +0000 (15:27 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 3 Nov 2017 15:49:24 +0000 (16:49 +0100)
src/descrambler/descrambler.c
src/input/mpegts/linuxdvb/linuxdvb_frontend.c
src/input/mpegts/satip/satip_frontend.c
src/input/mpegts/tsdemux.c
src/input/mpegts/tvhdhomerun/tvhdhomerun_frontend.c
src/parsers/parser_teletext.c
src/parsers/parsers.c
src/service.c
src/streaming.c
src/streaming.h
src/subscriptions.c

index 000a0a91443696e3fbf2f0613ebacd0ee29791a7..bcceb95ecb30b3112212147a879f4e64d4879d75 100644 (file)
@@ -465,7 +465,7 @@ descrambler_notify_deliver( mpegts_service_t *t, descramble_info_t *di )
   sm = streaming_msg_create(SMT_DESCRAMBLE_INFO);
   sm->sm_data = di;
 
-  streaming_pad_deliver(&t->s_streaming_pad, sm);
+  streaming_service_deliver((service_t *)t, sm);
 }
 
 static void
index 1ad2e05a722c5737b6a3731bcb59f1abdaecae15..0504cbffd3e8733ab5ee0db8ce50215206a0bb9c 100644 (file)
@@ -1220,7 +1220,7 @@ linuxdvb_frontend_monitor ( void *aux )
 
   LIST_FOREACH(s, &mmi->mmi_mux->mm_transports, s_active_link) {
     pthread_mutex_lock(&s->s_stream_mutex);
-    streaming_pad_deliver(&s->s_streaming_pad, streaming_msg_clone(&sm));
+    streaming_service_deliver(s, streaming_msg_clone(&sm));
     pthread_mutex_unlock(&s->s_stream_mutex);
   }
 }
index 21dfa984169aef5eb95d760b34da2d852bf7edf3..a842670d2fe88b592056d68977a147526645992c 100644 (file)
@@ -153,7 +153,7 @@ satip_frontend_signal_cb( void *aux )
   sm.sm_data = &sigstat;
   LIST_FOREACH(svc, &mmi->mmi_mux->mm_transports, s_active_link) {
     pthread_mutex_lock(&svc->s_stream_mutex);
-    streaming_pad_deliver(&svc->s_streaming_pad, streaming_msg_clone(&sm));
+    streaming_service_deliver(svc, streaming_msg_clone(&sm));
     pthread_mutex_unlock(&svc->s_stream_mutex);
   }
   mtimer_arm_rel(&lfe->sf_monitor_timer, satip_frontend_signal_cb,
index d1f39f84855c787a563ec36231e1b9b22b7d57d6..e8f4a97448627da9128696e9e52d0067738cf49e 100644 (file)
@@ -438,11 +438,11 @@ ts_flush(mpegts_service_t *t, sbuf_t *sb)
 
   sm.sm_type = SMT_MPEGTS;
   sm.sm_data = pb;
-  streaming_pad_deliver(&t->s_streaming_pad, streaming_msg_clone(&sm));
+  streaming_service_deliver((service_t *)t, streaming_msg_clone(&sm));
 
   pktbuf_ref_dec(pb);
 
-  service_set_streaming_status_flags((service_t*)t, TSS_PACKETS);
+  service_set_streaming_status_flags((service_t *)t, TSS_PACKETS);
   t->s_streaming_live |= TSS_LIVE;
 
   sbuf_reset(sb, 2*TS_REMUX_BUFSIZE);
index 20ca3492c3dbedce325804e47dcbeb352501381b..4b39fad38b5c9fe753906cbac42e0bb1e6bbf411 100644 (file)
@@ -298,7 +298,7 @@ tvhdhomerun_frontend_monitor_cb( void *aux )
 
   LIST_FOREACH(svc, &mmi->mmi_mux->mm_transports, s_active_link) {
     pthread_mutex_lock(&svc->s_stream_mutex);
-    streaming_pad_deliver(&svc->s_streaming_pad, streaming_msg_clone(&sm));
+    streaming_service_deliver(svc, streaming_msg_clone(&sm));
     pthread_mutex_unlock(&svc->s_stream_mutex);
   }
 }
index 14ba05e149f3f5359570c99daabdf5532c5ed87d..bfebb4066c2bfcc981213b2086c9dc9d5f4d0df4 100644 (file)
@@ -796,7 +796,7 @@ extract_subtitle(mpegts_service_t *t, elementary_stream_t *st,
   th_pkt_t *pkt = pkt_alloc(st->es_type, sub, off, pts, pts, pts);
   pkt->pkt_componentindex = st->es_index;
 
-  streaming_pad_deliver(&t->s_streaming_pad, streaming_msg_create_pkt(pkt));
+  streaming_service_deliver((service_t *)t, streaming_msg_create_pkt(pkt));
 
   /* Decrease our own reference to the packet */
   pkt_ref_dec(pkt);
index eac5a57121e40e328cd433abcbd417c87e37cef5..5eac1ad6cf0da5b8f400303edb92b2c5c00ee035 100644 (file)
@@ -1893,7 +1893,7 @@ deliver:
   }
 
   /* Forward packet */
-  streaming_pad_deliver(&t->s_streaming_pad, streaming_msg_create_pkt(pkt));
+  streaming_service_deliver(t, streaming_msg_create_pkt(pkt));
 
   /* Decrease our own reference to the packet */
   pkt_ref_dec(pkt);
index 3fc7b26c2bf8d40c5b37d9e6e798a3aabbfc2d04..7e38a9599907346e7dff092efc62adbeb7da59ae 100644 (file)
@@ -1423,11 +1423,11 @@ service_servicetype_txt ( service_t *s )
 void
 service_send_streaming_status(service_t *t)
 {
+  streaming_message_t *sm;
   lock_assert(&t->s_stream_mutex);
 
-  streaming_pad_deliver(&t->s_streaming_pad,
-                        streaming_msg_create_code(SMT_SERVICE_STATUS,
-                                                  t->s_streaming_status));
+  sm = streaming_msg_create_code(SMT_SERVICE_STATUS, t->s_streaming_status);
+  streaming_service_deliver(t, sm);
 }
 
 /**
@@ -1467,6 +1467,7 @@ service_set_streaming_status_flags_(service_t *t, int set)
 void
 service_restart(service_t *t)
 {
+  streaming_message_t *sm;
   int had_components;
 
   if(t->s_type != STYPE_STD)
@@ -1480,19 +1481,16 @@ service_restart(service_t *t)
   service_build_filter(t);
 
   if(TAILQ_FIRST(&t->s_filt_components) != NULL) {
-    if (had_components)
-      streaming_pad_deliver(&t->s_streaming_pad,
-                            streaming_msg_create_code(SMT_STOP,
-                                                      SM_CODE_SOURCE_RECONFIGURED));
-
-    streaming_pad_deliver(&t->s_streaming_pad,
-                          streaming_msg_create_data(SMT_START,
-                                                    service_build_stream_start(t)));
+    if (had_components) {
+      sm = streaming_msg_create_code(SMT_STOP, SM_CODE_SOURCE_RECONFIGURED);
+      streaming_service_deliver(t, sm);
+    }
+    sm = streaming_msg_create_data(SMT_START, service_build_stream_start(t));
+    streaming_pad_deliver(&t->s_streaming_pad, sm);
     t->s_running = 1;
   } else {
-    streaming_pad_deliver(&t->s_streaming_pad,
-                          streaming_msg_create_code(SMT_STOP,
-                                                    SM_CODE_NO_SERVICE));
+    sm = streaming_msg_create_code(SMT_STOP, SM_CODE_NO_SERVICE);
+    streaming_service_deliver(t, sm);
     t->s_running = 0;
   }
 
index 7dc547488a7b22195c7e8a6ff46fe3f7ab15cab6..c134abe68853b0a7a5fc68cfb2ce52e0c8b7295e 100644 (file)
@@ -420,6 +420,15 @@ streaming_pad_deliver(streaming_pad_t *sp, streaming_message_t *sm)
     streaming_msg_free(sm);
 }
 
+/**
+ *
+ */
+void
+streaming_service_deliver(service_t *t, streaming_message_t *sm)
+{
+  streaming_pad_deliver(&t->s_streaming_pad, sm);
+}
+
 /**
  *
  */
index 832055c5d477620e12c75cace341044416995245..549e7ca1d79b153589f0b51f8e7a08b6cf5df1e3 100644 (file)
@@ -91,6 +91,8 @@ void streaming_target_disconnect(streaming_pad_t *sp, streaming_target_t *st);
 
 void streaming_pad_deliver(streaming_pad_t *sp, streaming_message_t *sm);
 
+void streaming_service_deliver(service_t *t, streaming_message_t *sm);
+
 void streaming_msg_free(streaming_message_t *sm);
 
 streaming_message_t *streaming_msg_clone(streaming_message_t *src);
index 1360e137659f2b783cbf4987fe6ee4173748e7fb..22ffd8893f3cd15f215a78748a4c9a8eca4355f1 100644 (file)
@@ -108,10 +108,8 @@ subscription_link_service(th_subscription_t *s, service_t *t)
   // Link to service output
   streaming_target_connect(&t->s_streaming_pad, &s->ths_input);
 
-  streaming_pad_deliver(&t->s_streaming_pad,
-                        streaming_msg_create_code(SMT_GRACE,
-                                                  s->ths_postpone +
-                                                    t->s_grace_delay));
+  sm = streaming_msg_create_code(SMT_GRACE, s->ths_postpone + t->s_grace_delay);
+  streaming_service_deliver(t, sm);
 
   if(s->ths_start_message != NULL && t->s_streaming_status & TSS_PACKETS) {