dr->dr_key_index = 0xff;
dr->dr_last_descramble = dispatch_clock;
}
+ ((mpegts_service_t *)t)->s_dvb_mux->mm_descrambler_flush = 0;
}
void
if (mux == NULL)
return 0;
+ if (mux->mm_descrambler_flush)
+ return 0;
flags = pid >> 16;
pid &= 0x1fff;
TAILQ_FOREACH(dt, &mux->mm_descrambler_tables, link) {
cwc_caid_update(mux, 0, 0, -1);
#endif
pthread_mutex_lock(&mux->mm_descrambler_lock);
+ mux->mm_descrambler_flush = 1;
while ((dt = TAILQ_FIRST(&mux->mm_descrambler_tables)) != NULL) {
while ((ds = TAILQ_FIRST(&dt->sections)) != NULL) {
TAILQ_REMOVE(&dt->sections, ds, link);
if (mux == NULL)
return 0;
pthread_mutex_lock(&mux->mm_descrambler_lock);
+ if (mux->mm_descrambler_flush)
+ goto unlock;
TAILQ_FOREACH(emm, &mux->mm_descrambler_emms, link) {
if (emm->caid == caid && emm->opaque == opaque) {
+unlock:
pthread_mutex_unlock(&mux->mm_descrambler_lock);
return 0;
}
TAILQ_HEAD(, descrambler_table) mm_descrambler_tables;
TAILQ_HEAD(, descrambler_emm) mm_descrambler_emms;
pthread_mutex_t mm_descrambler_lock;
+ int mm_descrambler_flush;
/*
* Functions