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);
( 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);
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 )
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);
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);