Common PMCP Elements [PMCP Tutorial]
The PMCP schema defines elements as being optional or required in any PMCP message. It is important to keep in mind that while a particular element may be optional in any particular PMCP message, if that element hasn't been previously transmitted to a PSIP generator, the generator will not be able to transmit accurate PSIP, or may not be able to transmit PSIP at all.
Many PMCP elements -- ModulationType is a good example -- appear only under a single top-level Pmcp element. In the case of ModulationType, the sole appearance is as an optional element within the top-level TransportStream element.
The other extreme is occupied by DescriptorType and PrivateInformationType elements that are used in all top level elements save for the Show element, and actually are used multiple times in several elements.
This is due to the fact that all PSIP and PSI tables save for the Program Association Table (PAT) have at least one and usually two or more locations where descriptors may appear in a single table, and PMCP DescriptorType is used to transmit the information that appears in each of these locations.
A descriptor is a mechanism used to flexibly permit the inclusion of optional information at one or more positions with an MPEG-2 private table section. If a particular receiver doesn't understand a descriptor, the MPEG-2 specification tells the receiver to ignore the descriptor.
Each descriptor location in a PSIP or PSI table, depending on the syntax of the table section, feature 0 or more descriptors. What descriptors can be used in a particular location can vary depending on the type of table, the descriptor location and even the type of elementary stream.