Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Scanning problems



Hello,

In PAT are found several services identified by service_id and associated with 
PMT referenced by one pid.

Several PMT could be transported on same pid : scan.c tool doesn't take care 
of that point (see attached patch for linux DVB drivers 1.0.1). 

PMT filtering for a service must contain tid_ext = service_id.

See problem with TS on Astra-19.2E (S 12207000 V 27500000 3/4): pid 0x0512 
transports several PMTs.

VDR 1.3.x have same problem with autopid feature, but it's more complex to 
resolve.

Stephane

PS: This rule must be followed for all DVB tables (NIT, EIT...).
In fact, tid_ext could be important.
155c155
< 		          int pid, int tid, int run_once, int segmented, int timeout);
---
> 		          int pid, int tid, int tid_ext, int run_once, int segmented, int timeout);
632c632
< 				     s->pmt_pid, 0x02, 1, 0, 5);
---
> 				     s->pmt_pid, 0x02, s->service_id, 1, 0, 5);
1006c1006
< 			  int pid, int tid, int run_once, int segmented, int timeout)
---
> 			  int pid, int tid, int tid_ext, int run_once, int segmented, int timeout)
1023c1023
< 	s->table_id_ext = -1;
---
> 	s->table_id_ext = tid_ext;
1075a1076,1082
> 	if (s->table_id_ext < 0x10000 && s->table_id_ext > 0) {
> 		f.filter.filter[1] = (uint8_t) ((s->table_id_ext >> 8) & 0xff);
> 		f.filter.filter[2] = (uint8_t) (s->table_id_ext & 0xff);
> 		f.filter.mask[1] = 0xff;
> 		f.filter.mask[2] = 0xff;
> 	}
> 
1475,1476c1482,1483
< 	setup_filter (&s0, demux_devname, 0x00, 0x00, 1, 0, 5); /* PAT */
< 	setup_filter (&s1, demux_devname, 0x11, 0x42, 1, 0, 5); /* SDT */
---
> 	setup_filter (&s0, demux_devname, 0x00, 0x00, -1, 1, 0, 5); /* PAT */
> 	setup_filter (&s1, demux_devname, 0x11, 0x42, -1, 1, 0, 5); /* SDT */
1482c1489
< 		setup_filter (&s2, demux_devname, 0x10, 0x40, 1, 0, 15); /* NIT */
---
> 		setup_filter (&s2, demux_devname, 0x10, 0x40, -1, 1, 0, 15); /* NIT */
1489c1496
< 			setup_filter (&s3, demux_devname, 0x10, 0x41, 1, 1, 15);
---
> 			setup_filter (&s3, demux_devname, 0x10, 0x41, -1, 1, 1, 15);

Home | Main Index | Thread Index