From 88578c22a60eadde2d1245a48eb8f9bc1139eec5 Mon Sep 17 00:00:00 2001 From: Adam Sutton Date: Mon, 17 Jun 2013 16:40:59 +0100 Subject: [PATCH] csa: fix some silly mistakes in TS processing I have now managed to get a cwc decryption to work on my system. --- src/input/mpegts/dvb.h | 2 +- src/input/mpegts/dvb_psi.c | 3 +++ src/input/mpegts/tsdemux.c | 2 +- src/service.c | 2 ++ 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/input/mpegts/dvb.h b/src/input/mpegts/dvb.h index 215518ff..3247bf4b 100644 --- a/src/input/mpegts/dvb.h +++ b/src/input/mpegts/dvb.h @@ -33,7 +33,7 @@ struct mpegts_table; /* PIDs */ #define DVB_PAT_PID 0x00 -#define DVB_CAT_PID 0x02 +#define DVB_CAT_PID 0x01 #define DVB_NIT_PID 0x10 #define DVB_SDT_PID 0x11 #define DVB_BAT_PID 0x11 diff --git a/src/input/mpegts/dvb_psi.c b/src/input/mpegts/dvb_psi.c index 525fade3..bdfcff98 100644 --- a/src/input/mpegts/dvb_psi.c +++ b/src/input/mpegts/dvb_psi.c @@ -499,6 +499,7 @@ static int dvb_ca_callback (mpegts_table_t *mt, const uint8_t *ptr, int len, int tableid) { + (void)dvb_table_begin(mt, ptr, len, tableid, 0, NULL, NULL, NULL); #if ENABLE_CWC cwc_emm((uint8_t*)ptr, len, (uintptr_t)mt->mt_opaque, mt->mt_mux); #endif @@ -530,6 +531,8 @@ dvb_cat_callback case DVB_DESC_CA: caid = ( ptr[0] << 8) | ptr[1]; pid = ((ptr[2] & 0x1f) << 8) | ptr[3]; + tvhdebug("cat", " caid %04X (%d) pid %04X (%d)", + (uint16_t)caid, (uint16_t)caid, pid, pid); if(pid != 0) mpegts_table_add(mm, 0, 0, dvb_ca_callback, (void*)caid, "ca", MT_FULL, pid); diff --git a/src/input/mpegts/tsdemux.c b/src/input/mpegts/tsdemux.c index 7e1f3b5b..e6723ed6 100644 --- a/src/input/mpegts/tsdemux.c +++ b/src/input/mpegts/tsdemux.c @@ -102,7 +102,7 @@ ts_recv_packet0 case SCT_CA: if(st->es_section == NULL) st->es_section = calloc(1, sizeof(mpegts_psi_section_t)); - mpegts_psi_section_reassemble(st->es_section, tsb, 1, got_ca_section, st); + mpegts_psi_section_reassemble(st->es_section, tsb, 0, got_ca_section, st); break; default: diff --git a/src/service.c b/src/service.c index e06ebf8a..9801f4b1 100644 --- a/src/service.c +++ b/src/service.c @@ -891,6 +891,8 @@ service_restart(service_t *t, int had_components) if(t->s_refresh_feed != NULL) t->s_refresh_feed(t); + descrambler_service_start(t); + if(TAILQ_FIRST(&t->s_components) != NULL) { sm = streaming_msg_create_data(SMT_START,