pid = (tsb[1] & 0x1f) << 8 | tsb[2];
- st = service_stream_find(t, pid);
+ st = service_stream_find((service_t*)t, pid);
/* Extract PCR */
- if(tsb[3] & 0x20 && tsb[4] > 0 && tsb[5] & 0x10 && !error)
- ts_extract_pcr(t, st, tsb, pcrp);
+ if (pcr != PTS_UNSET)
+ ts_process_pcr(t, st, pcr);
- if(st == NULL) {
+ if((st == NULL) && (pid != t->s_pcr_pid)) {
pthread_mutex_unlock(&t->s_stream_mutex);
- return;
+ return 0;
}
if(!error)
avgstat_add(&t->s_rate, 188, dispatch_clock);
if((tsb[3] & 0xc0) ||
- (t->s_scrambled_seen && st->es_type != SCT_CA)) {
- (t->s_scrambled_seen && st && st->es_type != SCT_CA &&
- st->es_type != SCT_PMT)) {
++ (t->s_scrambled_seen && st && st->es_type != SCT_CA)) {
/**
* Lock for descrambling, but only if packet was not in error