TSReader |
Network Detection and Processing |
Introduction
The MPEG-2 specifications define the video, audio and multiplexing of MPEG-2 transport streams. They leave the definition of the extra tables required to implement a fully functional digital TV system up to other standards bodies. As a result, the world contains a number of different systems - all based on MPEG-2 transport stream, but with additions specific to the distribution method - satellite, cable or terrestrial.
When TSReader starts running, it examines the stream in an attempt to determine which type of stream is currently being processed - this we call a network type. Supported types are DVB, ATSC, ISDB and Digicipher II (DCII). Generally, no network specific streams are processed until TSReader has determined the network type - so if you're not seeing tables show up but you know they're there, TSReader most likely hasn't detected the correct network. To resolve this, either use the command-line option to force the network type or correct the network which usually means making changes to the multiplexor or SI/PSIP generator.
How TSReader determines the network type
In order to determine which network type is being sent through TSReader, we use the following criteria:
Network Type | Criteria |
DVB | PAT with program zero (the network program) with the PMT PID set to 0x0010. |
ATSC | PID 0x1ffb present and containing a valid MGT. |
ISDB | Same rule for DVB (so may show DVB initially) but TSReader also looks for ISDB specific tables and then switches if these are present. |
DCII | PAT with program zero (the network program) with the PMT PID set to 0x0ffe. |
Exceptions to the rule
There are a few exceptions to the rules above when processing streams, due to the number of badly constructed transport streams that we've come across.
Exception | Criteria |
DVB | If an SDT is seen on a network that TSReader has not recognized as being DVB and there is an SDT present, TSReader will use the SDT names to label each channel. |
DCII | Some DCII streams contain no network tables but do contain a special descriptor in the PMT for each program with the name of the channel (a type 0x40 descriptor). This decriptor is then processed to get the channel name. |
Forcing the network type
It's possible to override the network type by using a command-line switch:
Switch | Network |
-Dd | DVB |
-Da | ATSC |
-Di | ISDB |
-Dm | DCII |