]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
service: add service_id16() helper
authorJaroslav Kysela <perex@perex.cz>
Fri, 23 Mar 2018 10:32:21 +0000 (11:32 +0100)
committerJaroslav Kysela <perex@perex.cz>
Fri, 23 Mar 2018 17:05:29 +0000 (18:05 +0100)
12 files changed:
src/descrambler/capmt.c
src/descrambler/cccam.c
src/descrambler/constcw.c
src/descrambler/cwc.c
src/descrambler/dvbcam.c
src/input/mpegts/dvb_charset.c
src/input/mpegts/dvb_psi.c
src/input/mpegts/dvb_psi_pmt.c
src/input/mpegts/mpegts_mux.c
src/input/mpegts/mpegts_service.c
src/input/mpegts/mpegts_tsdebug.c
src/service.h

index b7661c141e873584f1cd5a6ae4283bff7a3a3610..413529ec910e715e31b28c6e431945e5e2c8f577 100644 (file)
@@ -331,7 +331,7 @@ capmt_oscam_new(capmt_t *capmt)
   if (capmt_oscam_so_wrapper(capmt))
     return 0;
 #ifdef CAPMT_OSCAM_OLD
-  if (capmt->capmt_oscam = CAPMT_OSCAM_OLD)
+  if (capmt->capmt_oscam == CAPMT_OSCAM_OLD)
     return 0;
 #endif
   return 1;
@@ -800,7 +800,7 @@ capmt_send_stop(capmt_service_t *t)
     int i;
     // searching for socket to close
     for (i = 0; i < MAX_SOCKETS; i++)
-      if (capmt->sids[i] == s->s_dvb_service_id)
+      if (capmt->sids[i] == service_id16(s))
         break;
 
     if (i == MAX_SOCKETS) {
@@ -829,8 +829,8 @@ capmt_send_stop(capmt_service_t *t)
     buf[pos++] = 0; /* total length */
     buf[pos++] = 0; /* total length */
     buf[pos++] = CAPMT_LIST_ONLY;
-    buf[pos++] = s->s_dvb_service_id >> 8;
-    buf[pos++] = s->s_dvb_service_id;
+    buf[pos++] = service_id16(s) >> 8;
+    buf[pos++] = service_id16(s);
     buf[pos++] = capmt->capmt_pmtversion;
     capmt->capmt_pmtversion = (capmt->capmt_pmtversion + 1) & 0x1F;
     buf[pos++] = 0; /* room for length - program info tags */
@@ -852,7 +852,7 @@ capmt_send_stop(capmt_service_t *t)
     buf[4]  = ((pos - 6) >> 8);
     buf[5]  = ((pos - 6) & 0xFF);
   
-    capmt_queue_msg(capmt, t->ct_adapter, s->s_dvb_service_id,
+    capmt_queue_msg(capmt, t->ct_adapter, service_id16(s),
                     buf, pos, CAPMT_MSG_CLEAR);
   }
 #endif
@@ -1271,7 +1271,7 @@ capmt_process_notify(capmt_t *capmt, uint8_t adapter,
   LIST_FOREACH(ct, &capmt->capmt_services, ct_link) {
     t = (mpegts_service_t *)ct->td_service;
 
-    if (sid != t->s_components.set_service_id)
+    if (sid != service_id16(t))
       continue;
     if (adapter != ct->ct_adapter)
       continue;
@@ -2228,7 +2228,7 @@ capmt_send_request(capmt_service_t *ct, int lm)
 {
   capmt_t *capmt = ct->ct_capmt;
   mpegts_service_t *t = (mpegts_service_t *)ct->td_service;
-  uint16_t sid = t->s_components.set_service_id;
+  uint16_t sid = service_id16(t);
   uint16_t pmtpid = t->s_components.set_pmt_pid;
   uint16_t transponder = t->s_dvb_mux->mm_tsid;
   uint16_t onid = t->s_dvb_mux->mm_onid;
@@ -2593,7 +2593,7 @@ static const struct strtab caclient_capmt_oscam_mode_tab[] = {
   { N_("OSCam net protocol (rev >= 10389)"), CAPMT_OSCAM_NET_PROTO },
 #endif
 #ifdef CAPMT_OSCAM_UNIX_SOCKET_NP
-  { N_("OSCam new pc-nodmx (rev >= 10389)"), CAPMT_OSCAM_UNIX_SOCKET_NP },
+  { N_("Problematic: OSCam new pc-nodmx (rev >= 10389)"), CAPMT_OSCAM_UNIX_SOCKET_NP },
 #endif
 #ifdef CAPMT_OSCAM_TCP
   { N_("OSCam TCP (rev >= 9574)"),           CAPMT_OSCAM_TCP },
index 575925a01d118cbfa6d399e5bf4576f017ea1ede..2905e63957b2211aea99ea50bc3e3e98f79e2e7c 100644 (file)
@@ -775,7 +775,7 @@ cccam_send_ecm(void *cc, cc_service_t *ct, cc_ecm_section_t *es,
   provid = es->es_provid;
   card_id = pcard->cs_id;
   es->es_card_id = card_id;
-  sid = t->s_components.set_service_id;
+  sid = service_id16(t);
   es->es_seq = seq & 0xff;
 
   buf = alloca(len + 13);
index dcd2e99bf02a0e8f2a08cba67396ff64bc7ce4fe..3462d9ab4ea2927a24995be0aad7616377091bb7 100644 (file)
@@ -133,7 +133,7 @@ constcw_service_start(caclient_t *cac, service_t *t)
   if (mt->s_dvb_forcecaid && mt->s_dvb_forcecaid != ccw->ccw_caid)
     return;
 
-  if (mt->s_components.set_service_id != ccw->ccw_sid)
+  if (service_id16(mt) != ccw->ccw_sid)
     return;
 
   if (mt->s_dvb_mux->mm_tsid != ccw->ccw_tsid)
index 0ac8f31bd3197a56524ee0c6f07e4849c8e4dfe4..6d9a99b19fee189ef36190af05c12ea4b490cbf7 100644 (file)
@@ -634,7 +634,7 @@ cwc_send_ecm(void *cc, cc_service_t *ct, cc_ecm_section_t *es,
              cc_card_data_t *pcard, const uint8_t *data, int len)
 {
   mpegts_service_t *t = (mpegts_service_t *)ct->td_service;
-  uint16_t sid = t->s_components.set_service_id;
+  uint16_t sid = service_id16(t);
   uint16_t seq;
   int r;
 
@@ -657,7 +657,7 @@ cwc_send_emm(void *cc, cc_service_t *ct,
 
   if (ct) {
     t = (mpegts_service_t *)ct->td_service;
-    sid = t->s_components.set_service_id;
+    sid = service_id16(t);
   }
 
   cwc_send_msg(cc, data, len, sid, 1, pcard->cs_ra.caid, provid, NULL);
index 8ba7970802ad9245975d9d40f896899c120c1341..8fd1a5ab590224ced63a0af0df3838a337318d57 100644 (file)
@@ -332,7 +332,7 @@ dvbcam_pmt_data(mpegts_service_t *s, const uint8_t *ptr, int len)
   }
 
   r = en50221_capmt_build(s, bcmd,
-                          s->s_components.set_service_id,
+                          service_id16(s),
                           ac->caids, ac->caids_count,
                           as->last_pmt, as->last_pmt_len,
                           &capmt, &capmt_len);
@@ -363,7 +363,7 @@ dvbcam_service_destroy(th_descrambler_t *td)
     if (ac) {
       s = (mpegts_service_t *)td->td_service;
       r = en50221_capmt_build(s, EN50221_CAPMT_BUILD_DELETE,
-                              s->s_components.set_service_id,
+                              service_id16(s),
                               ac->caids, ac->caids_count,
                               as->last_pmt, as->last_pmt_len,
                               &capmt, &capmt_len);
index b8ce2f7de7252577f5684cf6dba22da1794905ae..237f19b739eb3074bd80ed4009f18eee94db1bbb 100644 (file)
@@ -115,7 +115,7 @@ const char *dvb_charset_find
   if (mm) {
     LIST_FOREACH(enc, &dvb_charset_list, link) {
       if (mm->mm_onid == enc->onid && mm->mm_tsid == enc->tsid) {
-        if (s && (s->s_components.set_service_id == enc->sid)) {
+        if (s && service_id16(s) == enc->sid) {
           ret = enc;
           break;
         } else if (!enc->sid) {
index e4d86f3346f6efcf586b1b05ea2132c2235ffb94..4b5caa4240b3d3710f2d0519115c18d03cd31eaa 100644 (file)
@@ -749,7 +749,7 @@ dvb_freesat_completed
   /* Find all "fallback" services and region specific */
   TAILQ_FOREACH(bs, &bi->services, link) {
     total++;
-    sid = bs->svc->s_components.set_service_id;
+    sid = service_id16(bs->svc);
     TAILQ_FOREACH(fs, &bi->fservices, link)
       if (fs->sid == sid) {
         fs->svc = bs->svc;
@@ -933,7 +933,7 @@ dvb_bskyb_local_channels
     }
 
     TAILQ_FOREACH(bs, &bi->services, link)
-      if (bs->svc->s_components.set_service_id == sid)
+      if (service_id16(bs->svc) == sid)
         break;
     if (mm && !bs) {
       s = mpegts_service_find(mm, sid, 0, 0, NULL);
index 6a55ea86bba71b738bbaa960144d8cf25e228734..7f0335d03ab2193bec0889171860db8f2903219d 100644 (file)
@@ -573,7 +573,7 @@ dvb_pmt_callback
 
   /* Find service */
   LIST_FOREACH(s, &mm->mm_services, s_dvb_mux_link)
-    if (s->s_components.set_service_id == sid) break;
+    if (service_id16(s) == sid) break;
   if (!s) return -1;
 
   /* Process */
index 83b0b64212ed2aed2d875ea036210ec8c14c5a9e..51cfcf0414abefa8c58b4d4874dfea0288959980 100644 (file)
@@ -1079,8 +1079,7 @@ mpegts_mux_scan_service_check ( mpegts_mux_t *mm )
         s->s_dvb_check_seen + 24 * 3600 < last_seen) {
       tvhinfo(LS_MPEGTS, "disabling service %s [sid %04X/%d] (missing in PAT/SDT)",
               s->s_nicename ?: "<unknown>",
-              s->s_components.set_service_id,
-              s->s_components.set_service_id);
+              service_id16(s), service_id16(s));
       service_set_enabled((service_t *)s, 0, SERVICE_AUTO_PAT_MISSING);
     }
   }
@@ -1453,7 +1452,7 @@ mpegts_mux_find_service ( mpegts_mux_t *mm, uint16_t sid )
 {
   mpegts_service_t *ms;
   LIST_FOREACH(ms, &mm->mm_services, s_dvb_mux_link)
-    if (ms->s_components.set_service_id == sid && ms->s_enabled)
+    if (service_id16(ms) == sid && ms->s_enabled)
       break;
   return ms;
 }
index e48dfb336b2c1cac86b0c3260dad95f25e5b115d..2112f3c54513e60e93fbc1197f1ba9207326a790 100644 (file)
@@ -535,7 +535,7 @@ mpegts_service_channel_number ( service_t *s )
       r = ms->s_dvb_opentv_chnum * CHANNEL_SPLIT;
   }
   if (r <= 0 && ms->s_dvb_mux->mm_network->mn_sid_chnum)
-    r = ms->s_components.set_service_id * CHANNEL_SPLIT;
+    r = service_id16(ms) * CHANNEL_SPLIT;
   return r;
 }
 
@@ -630,7 +630,7 @@ mpegts_service_channel_icon ( service_t *s )
     snprintf(prop_sbuf, PROP_SBUF_LEN,
              "picon://1_0_%X_%X_%X_%X_%X_0_0_0.png",
              config.picon_scheme == PICON_ISVCTYPE ? 1 : ms->s_dvb_servicetype,
-             ms->s_components.set_service_id,
+             service_id16(ms),
              ms->s_dvb_mux->mm_tsid,
              ms->s_dvb_mux->mm_onid,
              hash);
@@ -701,7 +701,7 @@ mpegts_service_find_e2(uint32_t stype, uint32_t sid, uint32_t tsid,
       if (mm->mm_tsid != tsid || mm->mm_onid != onid) continue;
       if (!mpegts_service_match_mux((dvb_mux_t *)mm, hash, idc)) continue;
       LIST_FOREACH(s, &mm->mm_services, s_dvb_mux_link)
-        if (s->s_components.set_service_id == sid)
+        if (service_id16(s) == sid)
           return (service_t *)s;
     }
   }
@@ -848,9 +848,7 @@ mpegts_service_create0
   pthread_mutex_unlock(&s->s_stream_mutex);
 
   tvhdebug(LS_MPEGTS, "%s - add service %04X %s",
-           mm->mm_nicename,
-           s->s_components.set_service_id,
-           s->s_dvb_svcname);
+           mm->mm_nicename, service_id16(s), s->s_dvb_svcname);
 
   /* Bouquet */
   mpegts_network_bouquet_trigger(mn, 1);
@@ -884,7 +882,7 @@ mpegts_service_find
 
   /* Find existing service */
   LIST_FOREACH(s, &mm->mm_services, s_dvb_mux_link) {
-    if (s->s_components.set_service_id == sid) {
+    if (service_id16(s) == sid) {
       if (pmt_pid && pmt_pid != s->s_components.set_pmt_pid) {
         s->s_components.set_pmt_pid = pmt_pid;
         if (save) *save = 1;
@@ -944,8 +942,8 @@ mpegts_service_autoenable( mpegts_service_t *s, const char *where )
   if (!s->s_enabled && s->s_auto == SERVICE_AUTO_PAT_MISSING) {
     tvhinfo(LS_MPEGTS, "enabling service %s [sid %04X/%d] (found in %s)",
             s->s_nicename,
-            s->s_components.set_service_id,
-            s->s_components.set_service_id,
+            service_id16(s),
+            service_id16(s),
             where);
     service_set_enabled((service_t *)s, 1, SERVICE_AUTO_NORMAL);
   }
index b44bd98ad9e767d85f5c5a7f2e09f984e8b1eb2f..c7d12c8cfbc7ac114655382bfa22da510b7fe105 100644 (file)
@@ -73,7 +73,7 @@ tsdebug_check_tspkt( mpegts_mux_t *mm, uint8_t *pkt, int len )
     if (crc != tvh_crc32(pkt, pos, 0x859aa5ba))
       return;
     LIST_FOREACH(t, &mm->mm_services, s_dvb_mux_link)
-      if (t->s_components.set_service_id == sid) break;
+      if (service_id16(t) == sid) break;
     if (!t)
       return;
     pos = 4 + 24 + 4;
index b7b330be09dd2ecff965ebc060ff8ad37f9da85b..4ea9726b6ee48ffb76e91930cf42922644585f1d 100644 (file)
@@ -389,12 +389,10 @@ typedef struct service {
 } service_t;
 
 
-
-
-
 void service_init(void);
 void service_done(void);
 
+
 int service_start(service_t *t, int instance, int weight, int flags,
                   int timeout, int postpone);
 void service_stop(service_t *t);
@@ -427,12 +425,17 @@ void service_settings_write(service_t *t);
 
 const char *service_servicetype_txt(service_t *t);
 
+static inline uint16_t service_id16(void *t)
+  { return ((service_t *)t)->s_components.set_service_id; }
+
 int service_is_sdtv(service_t *t);
 int service_is_uhdtv(service_t *t);
 int service_is_hdtv(service_t *t);
 int service_is_radio(service_t *t);
 int service_is_other(service_t *t);
-#define service_is_tv(s) (service_is_hdtv(s) || service_is_sdtv(s) || service_is_uhdtv(s))
+
+static inline int service_is_tv( service_t *s)
+  { return service_is_hdtv(s) || service_is_sdtv(s) || service_is_uhdtv(s); }
 
 int service_is_encrypted ( service_t *t );