2.4.4 Program specific information
Program Specific Information (PSI) includes both ITU-T Rec. H.222.0 | ISO/IEC 13818-1 normative data and private data that enable de-multiplexing of programs by decoders. Programs are composed of one or more elementary streams, each labeled with a PID. Programs, elementary streams or parts thereof may be scrambled for conditional access. However, Program Specific Information shall not be scrambled.
In Transport Streams, Program Specific Information is classified into four table structures as shown in the table below. While these structures may be thought of as simple tables, they shall be segmented into sections and inserted in Transport Stream packets.
2.4.4.3 Program association table
The Program Association Table provides the correspondence between a program_number and the PID value of the Transport Stream packets which carry the program definition. The program_number is the numeric label associated with a program.
The overall table is to be split into one or more sections with the following syntax.
Program number 0x0000 is reserved to specify the network PID. This identifies the Transport Stream packets which carry the Network Information Table.
Table 2-26
-- Program association section
|
2.4.4.4 Table_id assignments
The table_id field identifies the content of a Transport Stream PSI section as shown in table 2-27 below.
Table 2-27 -- table_id assignment values
value |
description |
0x00 |
program_association_section |
0x01 |
conditional_access_section(CA_section) |
0x02 |
TS_program_map_section |
0x03-0x3F |
ITU-T Rec. H.222.0 | ISO/IEC 13818 reserved |
0x40-0xFE |
User private |
0xFF |
forbidden |
2.4.4.5 Semantic definition of fields in program association section
table_id -- This is an 8 bit field, which shall be set to 0x00 as shown in table 2-27 on page 47 above.
section_syntax_indicator -- The section_syntax_indicator is a 1 bit field which shall be set to '1'.
section_length -- This is a twelve bit field, the first two bits of which shall be '00'. It specifies the number of bytes of the section, starting immediately following the section_length field, and including the CRC. The value in this field shall not exceed 1021
transport_stream_id -- This is a 16 bit field which serves as a label to identify this Transport Stream from any other multiplex within a network. Its value is defined by the user.
version_number -- This 5 bit field is the version number of the whole Program Association Table. The version number shall be incremented by 1 whenever the definition of the Program Association Table changes. Upon reaching the value 31, it wraps around to 0. When the current_next_indicator is set to '1', then the version_number shall be that of the currently applicable Program Association Table. When the current_next_indicator is set to '0', then the version_number shall be that of the next applicable Program Association Table.
current_next_indicator -- A 1 bit indicator, which when set to '1' indicates that the Program Association Table sent is currently applicable. When the bit is set to '0', it indicates that the table sent is not yet applicable and shall be the next table to become valid.
section_number -- This 8 bit field gives the number of this section. The section_number of the first section in the Program Association Table shall be 0x00. It shall be incremented by 1 with each additional section in the Program Association Table.
last_section_number -- This 8 bit field specifies the number of the last section (that is, the section with the highest section_number) of the complete Program Association Table.
program_number -- Program_number is a 16 bit field. It specifies the program to which the program_map_PID is applicable. If this is set to 0x0000 then the following PID reference shall be the network PID. For all other cases the value of this field is user defined. This field shall not take any single value more than once within one version of the program association table. The program_number may be used as a designation for a broadcast channel, for example.
network_PID -- network_PID is a 13 bit field specifying the PID of the Transport Stream packets which shall contain the Network Information Table. The value of the network_PID field is defined by the user, but shall only take values as specified in table 2-4 on page 23. The presence of the network_PID is optional.
program_map_PID -- program_map_PID is a 13 bit field specifying the PID of the Transport Stream packets which shall contain the program_map_section applicable for the program as specified by the program_number. No program_number shall have more than one program_map_PID assignment. The value of the program_map_PID is defined by the user, but shall only take values as specified in table 2-4 on page 23.
CRC_32 -- This is a 32 bit field that contains the CRC value that gives a zero output of the registers in the decoder defined in Annex B after processing the entire program association section.
2.4.4.6 Conditional access table
The Conditional Access (CA) Table provides the association between one or more CA systems, their EMM streams and any special parameters associated with them. Refer to 2.6.16 on page 74 for a definition of the descriptor() field below.
The table may be segmented into one or more sections, before insertion into Transport Stream packets, with the following syntax.
Table
2-28 -- Conditional access section
|
2.4.4.7 Semantic definition of fields in conditional access section
table_id -- This is an 8 bit field, which shall be always set to 0x01 as shown in table 2-27 on page 47 above.
section_syntax_indicator -- The section_syntax_indicator is a 1 bit field which shall be set to '1'.
section_length -- This is a 12 bit field, the first two bits of which shall be '00'. It specifies the number of bytes of the section starting immediately following the section_length field, and including the CRC. The value in this field shall not exceed 1021.
version_number -- This 5 bit field is the version number of the whole conditional access table. The version number shall be incremented by 1 modulo 32 when a change in the information carried within the CA table occurs. When the current_next_indicator is set to '1', then the version_number shall be that of the currently applicable Conditional Access Table. When the current_next_indicator is set to '0', then the version_number shall be that of the next applicable Conditional Access Table.
current_next_indicator -- A 1 bit indicator, which when set to '1' indicates that the Conditional Access Table sent is currently applicable. When the bit is set to '0', it indicates that the Conditional Access Table sent is not yet applicable and shall be the next Conditional Access Table to become valid.
section_number -- This 8 bit field gives the number of this section. The section_number of the first section in the Conditional Access Table shall be 0x00. It shall be incremented by 1 modulo 256 with each additional section in the Conditional Access Table.
last_section_number -- This 8 bit field specifies the number of the last section (that is, the section with the highest section_number) of the Conditional Access Table.
CRC_32 -- This is a 32 bit field that contains the CRC value that gives a zero output of the registers in the decoder defined in Annex B after processing the entire conditional access section.
2.4.4.8 Program Map Table
The Program Map Table provides the mappings between program numbers and the program elements that comprise them. A single instance of such a mapping is referred to as a "program definition." The program map table is the complete collection of all program definitions for a Transport Stream. This table shall be transmitted in packets, the PID values of which are selected by the encoder. More than one PID value may be used, if desired. The table may be segmented into one or more sections, before insertion into Transport Stream packets, with the following syntax. In each section the section number field shall be set to zero. Sections are identified by the program_number field.
Definition for the descriptor() fields may be found in 2.6. on page 67 of this Recommendation | International Standard.
Table 2-29 -- Transport
Stream program map section
|
2.4.4.9 Semantic definition of fields in Transport Stream program map section
table_id -- This is an 8 bit field, which in the case of a TS_program_map_section shall be always set to 0x02 as shown in table 2-27 on page 47 above.
section_syntax_indicator -- The section_syntax_indicator is a 1 bit field which shall be set to '1'.
section_length -- This is a 12 bit field, the first two bits of which shall be '00'. It specifies the number of bytes of the section starting immediately following the section_length field, and including the CRC. The value in this field shall not exceed 1021.
program_number -- program_number is a 16 bit field. It specifies the program to which the program_map_PID is applicable. One program definition shall be carried within only one TS_program_map_section. This implies that a program definition is never longer than 1016 bytes. See Informative Annex C for ways to deal with the cases when that length is not sufficient. The program_number may be used as a designation for a broadcast channel, for example. By describing the different program elements belonging to a program, data from different sources (e.g. sequential events) can be concatenated together to form a continuous set of streams using a program_number. For examples of applications refer to Annex C.
version_number -- This 5 bit field is the version number of the TS_program_map_section. The version number shall be incremented by 1 modulo 32 when a change in the information carried within the section occurs. Version number refers to the definition of a single program, and therefore to a single section. When the current_next_indicator is set to '1', then the version_number shall be that of the currently applicable TS_program_map_section. When the current_next_indicator is set to '0', then the version_number shall be that of the next applicable TS_program_map_section.
current_next_indicator -- A 1 bit field, which when set to '1' indicates that the TS_program_map_section sent is currently applicable. When the bit is set to '0', it indicates that the TS_program_map_section sent is not yet applicable and shall be the next TS_program_map_section to become valid.
section_number -- The value of this 8 bit field shall be always 0x00.
last_section_number -- The value of this 8 bit field shall be always 0x00.
PCR_PID -- This is a 13 bit field indicating the PID of the Transport Stream packets which shall contain the PCR fields valid for the program specified by program_number. If no PCR is associated with a program definition for private streams then this field shall take the value of 0x1FFF. Refer to the semantic definition of PCR in 2.4.3.5 on page 25 for restrictions on the choice of PCR_PID value.
program_info_length -- This is a 12 bit field, the first two bits of which shall be '00'. It specifies the number of bytes of the descriptors immediately following the program_info_length field.
stream_type -- This is an 8 bit field specifying the type of program element carried within the packets with the PID whose value is specified by the elementary_PID. The values of stream_type are specified in table 2-36 on page 64.
elementary_PID -- This is a 13 bit field specifying the PID of the Transport Stream packets which carry the associated program element.
ES_info_length -- This is a 12 bit field, the first two bits of which shall be '00'. It specifies the number of bytes of the descriptors of the associated program element immediately following the ES_info_length field.
CRC_32 -- This is a 32 bit field that contains the CRC value that gives a zero output of the registers in the decoder defined in Annex B after processing the entire Transport Stream program map section.