]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
Changed the PID lookup and other optimizations
authorJaroslav Kysela <perex@perex.cz>
Thu, 6 Mar 2014 11:42:06 +0000 (12:42 +0100)
committerAdam Sutton <dev@adamsutton.me.uk>
Fri, 7 Mar 2014 20:35:19 +0000 (20:35 +0000)
Followed the Adam's advice to remove _fast functions.

src/input/mpegts.h
src/input/mpegts/dvb_psi.c
src/input/mpegts/mpegts_input.c
src/input/mpegts/mpegts_mux.c
src/input/mpegts/tsdemux.c
src/service.c
src/service.h

index 4a43f1410843a2cabf5d0815c314601ae8f86c64..9b59b7b51b727c149d817b97d2aa5062f3345709 100644 (file)
@@ -603,16 +603,16 @@ void mpegts_mux_remove_subscriber(mpegts_mux_t *mm, th_subscription_t *s, int re
 int  mpegts_mux_subscribe(mpegts_mux_t *mm, const char *name, int weight);
 void mpegts_mux_unsubscribe_by_name(mpegts_mux_t *mm, const char *name);
 
-#define mpegts_mux_find_pid_fast(mm, pid, create) ({ \
+#define mpegts_mux_find_pid(mm, pid, create) ({ \
  mpegts_pid_t *__mp; \
  if ((mm)->mm_last_pid != (pid)) \
-   __mp = mpegts_mux_find_pid(mm, pid, create); \
+   __mp = mpegts_mux_find_pid_(mm, pid, create); \
  else \
    __mp = (mm)->mm_last_mp; \
  __mp; \
 })
 
-mpegts_pid_t *mpegts_mux_find_pid(mpegts_mux_t *mm, int pid, int create);
+mpegts_pid_t *mpegts_mux_find_pid_(mpegts_mux_t *mm, int pid, int create);
 
 size_t mpegts_input_recv_packets
   (mpegts_input_t *mi, mpegts_mux_instance_t *mmi, uint8_t *tsb, size_t len,
index 4b700edb89c383fdace36364a7691b23ffb6c45a..866c264fcd21e52fdb19e3015fbcfd3ab519c1c9 100644 (file)
@@ -1176,7 +1176,7 @@ psi_desc_add_ca
   tvhdebug("pmt", "  caid %04X (%s) provider %08X pid %04X",
            caid, descrambler_caid2name(caid), provid, pid);
 
-  if((st = service_stream_find_fast((service_t*)t, pid)) == NULL) {
+  if((st = service_stream_find((service_t*)t, pid)) == NULL) {
     st = service_stream_create((service_t*)t, pid, SCT_CA);
     r |= PMT_UPDATE_NEW_CA_STREAM;
   }
@@ -1282,7 +1282,7 @@ psi_desc_teletext(mpegts_service_t *t, const uint8_t *ptr, int size,
       // higher than normal MPEG TS (0x2000 ++)
       int pid = DVB_TELETEXT_BASE + page;
     
-      if((st = service_stream_find_fast((service_t*)t, pid)) == NULL) {
+      if((st = service_stream_find((service_t*)t, pid)) == NULL) {
         r |= PMT_UPDATE_NEW_STREAM;
         st = service_stream_create((service_t*)t, pid, SCT_TEXTSUB);
         st->es_delete_me = 1;
@@ -1492,7 +1492,7 @@ psi_parse_pmt
     
     if(hts_stream_type != SCT_UNKNOWN) {
 
-      if((st = service_stream_find_fast((service_t*)t, pid)) == NULL) {
+      if((st = service_stream_find((service_t*)t, pid)) == NULL) {
         update |= PMT_UPDATE_NEW_STREAM;
         st = service_stream_create((service_t*)t, pid, hts_stream_type);
       }
index 0758406c8c8e883a75354457ed0c672ce3088b0e..9c1227f2ecf1c1aded1303aa702a24f70a3a24b8 100644 (file)
@@ -373,7 +373,7 @@ mpegts_input_recv_packets
                name, pid, pid, mmi);
 
       /* Find PID */
-      if ((mp = mpegts_mux_find_pid_fast(mm, pid, 0))) {
+      if ((mp = mpegts_mux_find_pid(mm, pid, 0))) {
         int stream = 0;
         int table  = 0;
 
index a5f5be6a746d098f18b5533894d908804406e3d6..b2c025915c43bf2c0f72ca198adb8d34b940e2a4 100644 (file)
@@ -901,7 +901,7 @@ static int mp_cmp ( mpegts_pid_t *a, mpegts_pid_t *b )
 };
 
 mpegts_pid_t *
-mpegts_mux_find_pid ( mpegts_mux_t *mm, int pid, int create )
+mpegts_mux_find_pid_ ( mpegts_mux_t *mm, int pid, int create )
 {
   mpegts_pid_t *mp;
   
index 7c13a5a17f10f596f23ea9fdafb2cdf6dbad2fee..7cb078d18294c660d7220fcf46ddd9ad2591627c 100644 (file)
@@ -68,7 +68,7 @@ ts_recv_packet0
 {
   int off, pusi, cc, error;
 
-  service_set_streaming_status_flags_fast((service_t*)t, TSS_MUX_PACKETS);
+  service_set_streaming_status_flags((service_t*)t, TSS_MUX_PACKETS);
 
   if(streaming_pad_probe_type(&t->s_streaming_pad, SMT_MPEGTS))
     ts_remux(t, tsb);
@@ -206,7 +206,7 @@ ts_recv_packet1
 
   pthread_mutex_lock(&t->s_stream_mutex);
 
-  service_set_streaming_status_flags_fast((service_t*)t, TSS_INPUT_HARDWARE);
+  service_set_streaming_status_flags((service_t*)t, TSS_INPUT_HARDWARE);
 
   if(error) {
     /* Transport Error Indicator */
@@ -216,7 +216,7 @@ ts_recv_packet1
 
   pid = (tsb[1] & 0x1f) << 8 | tsb[2];
 
-  st = service_stream_find_fast((service_t*)t, pid);
+  st = service_stream_find((service_t*)t, pid);
 
   /* Extract PCR */
   if (pcr != PTS_UNSET)
@@ -228,7 +228,7 @@ ts_recv_packet1
   }
 
   if(!error)
-    service_set_streaming_status_flags_fast((service_t*)t, TSS_INPUT_SERVICE);
+    service_set_streaming_status_flags((service_t*)t, TSS_INPUT_SERVICE);
 
   avgstat_add(&t->s_rate, 188, dispatch_clock);
 
@@ -259,9 +259,9 @@ ts_recv_packet1
 
     if(!error && t->s_scrambled != 0) {
       if(n == 0) {
-        service_set_streaming_status_flags_fast((service_t*)t, TSS_NO_DESCRAMBLER);
+        service_set_streaming_status_flags((service_t*)t, TSS_NO_DESCRAMBLER);
       } else if(m == n) {
-        service_set_streaming_status_flags_fast((service_t*)t, TSS_NO_ACCESS);
+        service_set_streaming_status_flags((service_t*)t, TSS_NO_ACCESS);
       }
     }
 
@@ -282,7 +282,7 @@ ts_recv_packet2(mpegts_service_t *t, const uint8_t *tsb)
   elementary_stream_t *st;
   int pid = (tsb[1] & 0x1f) << 8 | tsb[2];
 
-  if((st = service_stream_find_fast((service_t*)t, pid)) != NULL)
+  if((st = service_stream_find((service_t*)t, pid)) != NULL)
     ts_recv_packet0(t, st, tsb);
 }
 
@@ -310,7 +310,7 @@ ts_remux(mpegts_service_t *t, const uint8_t *src)
 
   pktbuf_ref_dec(pb);
 
-  service_set_streaming_status_flags_fast((service_t*)t, TSS_PACKETS);
+  service_set_streaming_status_flags((service_t*)t, TSS_PACKETS);
 
   sbuf_reset(sb);
 }
index 21ce9c001b1c92fe0acf2750beacc0713aa67583..a3ff609c4fa67257d40ae3ac6106cc076fe4a0a6 100644 (file)
@@ -679,7 +679,7 @@ service_stream_create(service_t *t, int pid,
  * Find an elementary stream in a service
  */
 elementary_stream_t *
-service_stream_find(service_t *t, int pid)
+service_stream_find_(service_t *t, int pid)
 {
   elementary_stream_t *st;
  
@@ -796,7 +796,7 @@ service_servicetype_txt ( service_t *s )
  *
  */
 void
-service_set_streaming_status_flags(service_t *t, int set)
+service_set_streaming_status_flags_(service_t *t, int set)
 {
   int n;
   streaming_message_t *sm;
index 2de8a7a866fd9364228b2ffdb24c908617179b66..77536db1dc3048b4c1f2a0eed25e73c5667b98b1 100644 (file)
@@ -450,16 +450,16 @@ service_instance_t *service_find_instance(struct service *s,
                                           int *error,
                                           int weight);
 
-#define service_stream_find_fast(t, pid) ({ \
+#define service_stream_find(t, pid) ({ \
   elementary_stream_t *__es; \
   if ((t)->s_last_pid != (pid)) \
-    __es = service_stream_find(t, pid); \
+    __es = service_stream_find_(t, pid); \
   else \
     __es = (t)->s_last_es; \
   __es; \
 })
 
-elementary_stream_t *service_stream_find(service_t *t, int pid);
+elementary_stream_t *service_stream_find_(service_t *t, int pid);
 
 elementary_stream_t *service_stream_create(service_t *t, int pid,
                                     streaming_component_type_t type);
@@ -483,11 +483,11 @@ void service_destroy(service_t *t, int delconf);
 void service_remove_subscriber(service_t *t, struct th_subscription *s,
                               int reason);
 
-void service_set_streaming_status_flags(service_t *t, int flag);
+void service_set_streaming_status_flags_(service_t *t, int flag);
 
-#define service_set_streaming_status_flags_fast(t, flag) \
+#define service_set_streaming_status_flags(t, flag) \
   do { if (((t)->s_streaming_status & flag) != flag) \
-    service_set_streaming_status_flags(t, flag); } while (0)
+    service_set_streaming_status_flags_(t, flag); } while (0)
 
 struct streaming_start;
 struct streaming_start *service_build_stream_start(service_t *t);