From f6537ab39f129f5242b77915c06dfacfa324f2a0 Mon Sep 17 00:00:00 2001 From: Jaroslav Kysela Date: Wed, 11 Feb 2015 15:03:31 +0100 Subject: [PATCH] cwc: little optimization in cwc_table_input --- src/descrambler/cwc.c | 28 +++++++++------------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/src/descrambler/cwc.c b/src/descrambler/cwc.c index 570dffe0..80337bb0 100644 --- a/src/descrambler/cwc.c +++ b/src/descrambler/cwc.c @@ -1606,7 +1606,6 @@ cwc_table_input(void *opaque, int pid, const uint8_t *data, int len) ecm_section_t *es; char chaninfo[32]; struct cs_card_data *pcard = NULL; - int i_break; caid_t *c; uint16_t caid; uint32_t providerid; @@ -1669,27 +1668,18 @@ cwc_table_input(void *opaque, int pid, const uint8_t *data, int len) return; } - i_break = 0; - c = NULL; - TAILQ_FOREACH(st, &t->s_components, es_link) { - if (st->es_pid != pid) continue; - LIST_FOREACH(c, &st->es_caids, link) { - LIST_FOREACH(pcard,&cwc->cwc_cards, cs_card) { - if(pcard->cwc_caid == c->caid && verify_provider(pcard, c->providerid)){ - i_break = 1; - break; - } - } - if (i_break == 1) break; - } - if (i_break == 1) break; + st = service_stream_find((service_t *)t, pid); + if (st) { + LIST_FOREACH(c, &st->es_caids, link) + LIST_FOREACH(pcard, &cwc->cwc_cards, cs_card) + if(pcard->cwc_caid == c->caid && verify_provider(pcard, c->providerid)) + goto found; } - if(c == NULL) { - pthread_mutex_unlock(&t->s_stream_mutex); - return; - } + pthread_mutex_unlock(&t->s_stream_mutex); + return; +found: caid = c->caid; providerid = c->providerid;