| Program Association Table (PAT)
[MPEG Syntax] |
A Program Association table (PAT) has two simple function: it lists the program_number and packet id (location) of Program Map Table sections in a transport stream and
(secondly and optionally) the packet id where the Network Information Table (NIT) can be found. However, NITs are not used in the ATSC world.
ATSC maximums
ms per section | sections per instance | bytes per section | instances | max bps |
100 (ATSC) | 256 | 1024 | current next | 80,000 |
A PAT is required to be present in every MPEG-2 transport stream that contains one or more program services. The PAT must be transmitted on packet id
(pid) of 0 (hexadecimal 0x0000), and no other use can be made of this pid.
MPEG-2 does not specify how frequently a PAT must be transmitted, but ATSC A/53 requires a PAT to be transmitted at least once every 100 milliseconds. However, if the PAT is comprised of so many large sections that pid 0 might exceed the maximum of 80,000 bits per second permited for pids carrying MPEG-2 PSI sections, the repetition rate can be extended to no more than 140 milliseconds.
As explained below, it is unlikely that this extended repetition rate will ever
be needed.
The repetition rate -- even the higher limit of 140 ms -- makes the Program
Association Table the most common table instance in most transport streams,
which is ironic as the PAT is usually the least dynamic table in a transport stream and
contains the least amount of information. Each entry in a PAT -- whether
identifying the network_pid or the pid for a PMT section -- is eaactly 32 bits
(four bytes) in length. One PAT section can contain up to 253 entries.
Few transport streams will offer more than a fraction of this number of program
services.
The only time that a PAT must change is is when an active virtual channel (or
program service) is added or removed from the transport stream, or when the pid
for a PMT section or the pid for the Network Information Table changes. As
there is no context for the NIT in ATSC transport streams, PAT changes are
somewhat rare.
The reason for the short PAT repetition cycle is to minimize service acquisition time
when a transport stream is first demultiplexed, with the argument that no
Program Map Table can be found in the transport stream until the PAT has been
processed and its contents have been acted upon. While this might have
been true at the time of publication of the original edition of the MPEG-2
standard and within the MPEG-2 context, MPEG users such as ATSC and SCTE have
imposed constraints on the transport stream and Program Map Table such that a demultiplexer can
easily find and process PMT sections without first finding and processing the
PAT. In these cases, the PAT enables the demultiplexer to determine if all
the intended PMTs have been found and processed.
If a new PAT is to be more than one table section, it may be useful to send a "next" table so that when
change between "next" and current occurs, the change can be effected immediately.
This page was last modified on August 21, 2009.
|