From 76957a2d43a4024ea10ff7dddf299f7016f3057d Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Fri, 23 Mar 2018 11:32:21 +0100 Subject: [PATCH] service: add service_id16() helper --- src/descrambler/capmt.c | 16 ++++++++-------- src/descrambler/cccam.c | 2 +- src/descrambler/constcw.c | 2 +- src/descrambler/cwc.c | 4 ++-- src/descrambler/dvbcam.c | 4 ++-- src/input/mpegts/dvb_charset.c | 2 +- src/input/mpegts/dvb_psi.c | 4 ++-- src/input/mpegts/dvb_psi_pmt.c | 2 +- src/input/mpegts/mpegts_mux.c | 5 ++--- src/input/mpegts/mpegts_service.c | 16 +++++++--------- src/input/mpegts/mpegts_tsdebug.c | 2 +- src/service.h | 11 +++++++---- 12 files changed, 35 insertions(+), 35 deletions(-) diff --git a/src/descrambler/capmt.c b/src/descrambler/capmt.c index b7661c141..413529ec9 100644 --- a/src/descrambler/capmt.c +++ b/src/descrambler/capmt.c @@ -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 }, diff --git a/src/descrambler/cccam.c b/src/descrambler/cccam.c index 575925a01..2905e6395 100644 --- a/src/descrambler/cccam.c +++ b/src/descrambler/cccam.c @@ -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); diff --git a/src/descrambler/constcw.c b/src/descrambler/constcw.c index dcd2e99bf..3462d9ab4 100644 --- a/src/descrambler/constcw.c +++ b/src/descrambler/constcw.c @@ -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) diff --git a/src/descrambler/cwc.c b/src/descrambler/cwc.c index 0ac8f31bd..6d9a99b19 100644 --- a/src/descrambler/cwc.c +++ b/src/descrambler/cwc.c @@ -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); diff --git a/src/descrambler/dvbcam.c b/src/descrambler/dvbcam.c index 8ba797080..8fd1a5ab5 100644 --- a/src/descrambler/dvbcam.c +++ b/src/descrambler/dvbcam.c @@ -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); diff --git a/src/input/mpegts/dvb_charset.c b/src/input/mpegts/dvb_charset.c index b8ce2f7de..237f19b73 100644 --- a/src/input/mpegts/dvb_charset.c +++ b/src/input/mpegts/dvb_charset.c @@ -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) { diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c index e4d86f334..4b5caa424 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -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); diff --git a/src/input/mpegts/dvb_psi_pmt.c b/src/input/mpegts/dvb_psi_pmt.c index 6a55ea86b..7f0335d03 100644 --- a/src/input/mpegts/dvb_psi_pmt.c +++ b/src/input/mpegts/dvb_psi_pmt.c @@ -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 */ diff --git a/src/input/mpegts/mpegts_mux.c b/src/input/mpegts/mpegts_mux.c index 83b0b6421..51cfcf041 100644 --- a/src/input/mpegts/mpegts_mux.c +++ b/src/input/mpegts/mpegts_mux.c @@ -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 ?: "", - 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; } diff --git a/src/input/mpegts/mpegts_service.c b/src/input/mpegts/mpegts_service.c index e48dfb336..2112f3c54 100644 --- a/src/input/mpegts/mpegts_service.c +++ b/src/input/mpegts/mpegts_service.c @@ -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); } diff --git a/src/input/mpegts/mpegts_tsdebug.c b/src/input/mpegts/mpegts_tsdebug.c index b44bd98ad..c7d12c8cf 100644 --- a/src/input/mpegts/mpegts_tsdebug.c +++ b/src/input/mpegts/mpegts_tsdebug.c @@ -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; diff --git a/src/service.h b/src/service.h index b7b330be0..4ea9726b6 100644 --- a/src/service.h +++ b/src/service.h @@ -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 ); -- 2.47.3