From: Jaroslav Kysela Date: Fri, 17 Nov 2017 17:54:55 +0000 (+0100) Subject: mpegts: add mpegts_input_open_cat_monitor() for ddci X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=23741fb7b9e8f98e4a6d474555091fd6cb1ab352;p=thirdparty%2Ftvheadend.git mpegts: add mpegts_input_open_cat_monitor() for ddci --- diff --git a/src/descrambler/dvbcam.c b/src/descrambler/dvbcam.c index 2ff108cfb..df0e94c85 100644 --- a/src/descrambler/dvbcam.c +++ b/src/descrambler/dvbcam.c @@ -425,6 +425,7 @@ end: if (mi) { pthread_mutex_lock(&mi->mi_output_lock); pthread_mutex_lock(&t->s_stream_mutex); + mpegts_input_open_cat_monitor(mm, (mpegts_service_t *)t); mpegts_input_open_service_pid(mi, mm, t, SCT_CA, c->pid, MPS_WEIGHT_CA, 1); pthread_mutex_unlock(&t->s_stream_mutex); diff --git a/src/input/mpegts.h b/src/input/mpegts.h index a2cff3d8b..8b03821a7 100644 --- a/src/input/mpegts.h +++ b/src/input/mpegts.h @@ -1011,6 +1011,8 @@ int mpegts_input_open_service_pid ( mpegts_input_t *mi, mpegts_mux_t *mm, service_t *s, streaming_component_type_t stype, int pid, int weight, int create ); +void mpegts_input_open_cat_monitor ( mpegts_mux_t *mm, mpegts_service_t *s ); + #if ENABLE_TSDEBUG void tsdebug_started_mux(mpegts_input_t *mi, mpegts_mux_t *mm); diff --git a/src/input/mpegts/mpegts_input.c b/src/input/mpegts/mpegts_input.c index 0975b0abc..2b8f31944 100644 --- a/src/input/mpegts/mpegts_input.c +++ b/src/input/mpegts/mpegts_input.c @@ -731,6 +731,17 @@ mpegts_input_cat_pass_callback return dvb_table_end((mpegts_psi_table_t *)mt, st, sect); } +void +mpegts_input_open_cat_monitor + ( mpegts_mux_t *mm, mpegts_service_t *s ) +{ + s->s_cat_mon = + mpegts_table_add(mm, DVB_CAT_BASE, DVB_CAT_MASK, + mpegts_input_cat_pass_callback, s, "cat", + LS_TBL_BASE, MT_QUICKREQ | MT_CRC, DVB_CAT_PID, + MPS_WEIGHT_CAT); +} + void mpegts_input_open_service ( mpegts_input_t *mi, mpegts_service_t *s, int flags, int init, int weight ) @@ -795,13 +806,8 @@ no_pids: mpegts_table_add(mm, DVB_PMT_BASE, DVB_PMT_MASK, dvb_pmt_callback, s, "pmt", LS_TBL_BASE, MT_CRC, s->s_pmt_pid, MPS_WEIGHT_PMT); - if (s->s_scrambled_pass && (flags & SUBSCRIPTION_EMM) != 0) { - s->s_cat_mon = - mpegts_table_add(mm, DVB_CAT_BASE, DVB_CAT_MASK, - mpegts_input_cat_pass_callback, s, "cat", - LS_TBL_BASE, MT_QUICKREQ | MT_CRC, DVB_CAT_PID, - MPS_WEIGHT_CAT); - } + if (s->s_scrambled_pass && (flags & SUBSCRIPTION_EMM) != 0) + mpegts_input_open_cat_monitor(mm, s); } mpegts_mux_update_pids(mm); @@ -821,6 +827,7 @@ mpegts_input_close_service ( mpegts_input_t *mi, mpegts_service_t *s ) mpegts_table_destroy(s->s_cat_mon); } s->s_pmt_mon = NULL; + s->s_cat_mon = NULL; /* Remove from list */ pthread_mutex_lock(&mi->mi_output_lock);