| |
The highest level in the PSI hierarchy is the Program Association Table or PAT, which simply provides the transport_stream_id of the transport stream and describes where to find the Program Map Table (PMT) sections in the transport stream. Optionally, the packet id (or pid) where the Network Information Table (NIT) can be found can be published in the PAT. Like all the PSI sections listed below, PATs must be provided with instances that are currently effective, and may include "next" editions to inform. receivers of changes before they become effective.
There must be one Program Map Table (PMT) section for each program included in the transport stream. Each PMT section furnishes the program_number for each program service and gives the pid and stream_type for each program element that comprises the program service. PMT sections also include variable-length fields called descriptors that can include optional data describing the entire program or individual streams within the program service..
Program Association Table (PAT)
Program Map Table (PMT)
Conditional Access Table (CAT)
Transport Stream Description Table (TSDT)
IPMP((Intellectual Property Management and Protection)) Control Information Table( ICIT):
Network Information Table (NIT):
【hsy 理解】PSI, 似乎可以认为是MPEG-2提供的节目组成和相互关系的信息,从而使得在接收端可以正确的对多路传输流进行分解。所以,可以认为是MEPG-2的一部分。
【hsy 案】PAT,PMT,CAT,TSDT 都是TS 流的一部分,所以,分析可以从TS流组成来看,可参考MPEG2。
1. 1 PAT (Program Association Table) 节目映射表
it lists the program_number and packet id of Program Map Table sections in a transport stream.
. 1 Table_ID:
PAT,PMT,CAT,TSDT,ICIT..... ,所有的表,都有一个表头标识
.2 Section_syntax_indicator : Always is 1
.3 Reserved_bits: two reserved bit = '01'
.4 Section_length: 表示当前section的长度
.5 Transport_stream_ID : TS多路复用
.6 Version_number: PAT 版本号
.7 Current_next_indicator: PAT 当前有效还是无效的表示
.8 Section_number : PAT Section 的章节号码,初始的时候是0,以后按顺序一次一次增加
.9 Last_section_number : PAT 最后一章对应的章节号码
.10 重复部分:
.101 Program_number : Program_map_PID PID 对应的节目号
.102 Network_PID: 含有NIT的 TS PID 号码
.103 Program_map_PID : 含有PMT的TS PID号码,PMT对应的节目号码在Program_number中间表示
1. 2 PMT (Program Map Table) 节目映射表
System information starts with MPEG-2 Program Specific Information
(PSI), which can be constrained by MPEG-2 users such as ATSC, ARIB, DVB
and SCTE, each of which also provides for or requires the use of system
information specific to the user's protocols.For
ATSC-compliant broadcasters, system information is specified in ATSC A/65, is labeled PSIP, and follows constraints listed in ATSC A/53, the Digital Television standard. PSIP
technology is mandatory per ATSC specifications, and an edition of the
A/65 specification has been partially incorporated by reference in FCC regulations.
DVB-compliant systems generally observe the DVB-SI specification, which is published as EN 300468.
SCTE-compliant systems can, depending on needs and services, have a variety of SI specifications, including SCTE 54, SCTE 65 SCTE 57
MPEG-2 specified system-information is almost exclusively information useful only to receivers, while ARIB, ATSC, DVB and SCTE service information provide information useful to receivers and people.
【hsy 理解】如果是PSI是MPEG-2的精髓的话,那么SI,就是DVB或者是ATSC,SCTE,对PSI的扩展。理由简单,因为PSI,或者说MPEG-2给出的规格不够用。TableID表如下:
Value Description
0x00 Program_association_section
0x01 Conditional_access_section
0x02 Program_map_section
0x03 Transport_stream_description_section
0x04 TO 0x3F Reserved
0x40 Network_information_section-actual_network
0x41 Network_information_section-other_network
0x42 Service_description_section-actual_transport_stream
0x43 TO 0x45 Reserved for future use
0x46 Service_description_section-other_transport_stream
0x47 TO 0x49 Reserved for future use
0x4A Bouquet_association_section
0x4B TO 0x4D Reserved for future use
0x4E Event_information_section-actual_transport_stream,P/F
0x4F Event_information_section-other_transport_stream,P/F
0x50 TO 0x5F Event_information_section-actual_transport_stream,schedule
0x60 TO 0x6F Event_information_section-other_transport_stream,schedule
0x70 Time_data_section
0x71 Running_status_section
0x72 Stuffing_section
0x73 Time_offset_section
0x74 TO 0x7D Reserved for future use
0x7E Discontinuity_information_section
0x7F Selection_information_section
0x80 TO 0xFE User defined
0xFF Reserved
有了这两个ID我们可以在码流中找到我们想要的任何一张表。
SI主要包括以下一些信息表:
NIT(Network Information
Table):NIT的作用主要是对多路传输流的识别,NIT提供多路传输流,物理网络及网络传输的相关的一些信息,如用于调谐的频率信息以及编码方式。
调制方式等参数方面的信息。根据此信息设置IRD(Integrated Receiver Decoder)可以进行多路传输流之间的切换。
SDT(Service Description Table):用于描述系统中各路节目的名称,该节目的提供者,是否有相应的时间描述表等方面的信息。该表可以描述当前传输流,也可以描述其他的传输流,这由TableID进行区分。
EIT(Event Information Table):该表示对某一路节目的事件的描述。它提供事件的的名称,开始时间,时间长度,运行状态等。
TDT(Time and Data Table):该表提供当前的时间信息,该表用来对IRD(Integrated Receiver Decoder)的解码时钟进行更新
BAT(Bouquet (a collection of services marked as a singal entity 业务群)Association Table):该表提供一系列类似节目的集合。这些节目可以不在同一个传输流中,利用该表可以很方便的进行相关节目或某一类节目的浏览和选择。
RST(Running Status Table):该表提供某一具体事件的的运行状态,可用于按时自动的切换到指定的事件
TOT(Time Offset Table):该表提供当地时间与TDT之间的offset,该表与TDT配合使用。
TSDT(Transport Stream Description Table):由PID0x0002标识,提供传输流的一些参数.
ST(Stuffing Table):该表表明 invalidated existing sections,其内容是无效的,只是作为填充字节。
那么,我们如何运用DVB中的SI 信息表呢?
1、网络信息表(NIT)
网络信息表提供一组传输流以及相应的调谐信息。NIT在IRD(Integrated Receiver Decoder)启动程序中用到,并且调谐信息可以存储到不变的存储器中。NIT还可以用来标志调谐信息的变化。NIT遵从如下规定:
a、当前的传输系统必须包含NIT。
b、当且仅当NIT包含可用的传输系统描述符,当前传输系统才是有效的。这就指定了NIT包含有效信息的条件。在一些广播传输系统边界,TS中的NIT也
被允
许用来描述广播频道中的早期的网络。IRD(Integrated Receiver Decoder)不得不选择一个不同的机制来获得当前传输系统的相应的调谐信息。例如,一个卫星IRD接受到当前传输系统的一个
卫星传输系统描述符,那么这个描述符被视为有效,如果一个电缆IRD接收到当前传输系统的一个电缆传输系统描述符也是有效的,但是,如果电缆IRD接收到
当前传输系统的一个卫星传输系统描述符,那么这个描述符对于这个IRD就是无效的。
c、如果当前传输系统一个有效的NIT在SI比特流中出现,那么这个NIT应当列出当前传输系统中所有的TS。
d、SI流每10秒钟应当至少包含8个TS包来传输NIT或者空包。这个规定简化了广播传输边界中NIT的复位(replacement)。使用这样的复位机制,使得本地频率控制使用低廉设备成为可能。
SI 使用两个标志来描述传输系统。它们分别是network_id和original_network_id。后者用来作为一个TS中的一个服务的唯一标志符,即使这个TS被传送到了其他的传输系统之中。
一个TS可以被path: original_network_id/transport_stream_id唯一标识。
一个服务可以被path: original_network_id/transport_stream_id/service_id唯一标识。
显然,network_id不在这个
path之内。另外,每个original_network_id中都有不同的service_id。当一个服务(同一个TS内)被传送到另一个传输系统
后,只有network_id改变了,original_network_id不受影响。
下面举个例子,考虑如下情况:有两个服务(A和B),它们源于两个不同的传输系统并且碰巧有相同的service_id和transport_stream_id,它们被传输到一个新的传输系统。
在
这个例子中,这两个服务被安排在新network中的不同的TS中。如果这两个服务被放在同一个TS中,那么必须修改服务的ID号,因为在同一个TS中一
个service_id不能够分配给多个服务,并且一个TS仅仅可以对应一个original_network_id。
2、BAT(Bouquet (业务群)Association Table)信息
BAT提供一组服务,这些服务提供了一个基础,IRD(Integrated Receiver Decoder)在这些基础之上向用户展示有效的服务。BAT的传输是可选的。下面的规则提高了SI比特流的连贯性并且简化了IRD的工作。
SI比特流应当在每个BAT子表中列出集锦的所有服务。
注意:一个服务可以属于多个bouquet。这一规定使得IRD可以通过不同的TS得到一个服务。
如果IRD(Integrated Receiver Decoder)将Bouquet (业务群)中服务信息提供给用户,那么列在bouquet中的服务就得到保证,否则一些服务将会丢失。一个bouquet可以把不同网络
传输的多个TS中的服务集中起来。如果BAT中所有服务都被列在(Service Description Table)中,IRD对bouquet中所有服务信息的访问将会变得容易。同样的,如果NIT
信 息给出所有TS中service的容量,IRD对service的访问将会变得容易。
3、SDT(Service Description Table)信息
SDT用来罗列TS中service的名称以及其他参数。每一个TS中都有一个独立的SDT子表。为了提高对service的采集,定义了下列规则:
强制传输当前TS的SDT。
SDT列出的SI比特流至少包括TS中所有服务。
另外:
当前TS(例如table_id=0x46)中SDT(Service Description Table)描述其他TS时,应当列出这个TS的所有service。
强烈推荐service_id,在一个network中一旦把一个service_id分配给了一个特定的服务,那么这个service_id将不再变化,以便于IRD(Integrated Receiver Decoder)实现收藏频道列表之类的功能。
4. EIT (Event Information Table)信息
事件信息表用来传递当前的,将来的甚至更远的未来的事件的信息。每个Service都有自己独立的EIT子表。
4.1 EIT Present/Following 信息(一下简称EIT P/F)
下列规则简化了EIT P/F信息的获得。SI规范规定EIT段最大部超过4096字节。
SI 流中的每个Service都有两段来描述EIT Present/Following,section_number
0x00用来描述当前事件,section_number
0x01描述下一个事件。这些约束不适用于NVOD(准视频点播)引用的Service,这些Service在每段中可能有多个事件描述,并且在EIT
Present/Following中可能有更多的段。推荐提供事件描述event_id的升序排列。
在一个section中,SI可以用最多4096个字节来描述一个单独的事件。
对于当前事件有如下规定:
a、同一时刻最多只有一个当前事件。
b、当存在一个当前事件时,该事件应当被描述在EIT Present/Following的section0中。
c、当前事件中的running_status应当被给出。
e、在同一时刻,最多有一个following event。
f、如果following event存在,该事件应当在EIT Present/Following的section1中。
g、如果following event不存在,则传输一个section1为空的EIT Present/Following。
h、following event的running_status应当给出,如下表:
事件的持续时间和EIT持续时间一样,必须包含事件被置为“not running”或者“pausing”。事件的开始时间和EIT start_time一样,应当是整个事件的开始时间,而不是从pause恢复后的时间。
注 意:一个事件的开始时间加上它的持续时间可能比following
event的开始时间要小。换句话说,允许事件之间有间隔。在这种情况下,following
event被看作是间隔后的事件。这个事件应当编在EIT Present/Following的section1中。
注意:开始时间和持续时间都是预定的。一些广播服务提供商可能会更新这些信息。而另一些则更愿意保持开始时间不变。例如为了避免名为“8点新闻”的事件被误解,把信息中的开始时间从8:01:23改为8:00:00。
4.2 EIT Schedule信息
1)EIT Schedule结构
遵从如下规则:
a、EIT/Schedule分配了16个table_id,0x50-0x5F给当前TS,0x60-0x6F给其它TS,这些id按照时间顺序排列;
b、子表下的256个section被分为32段(segment),每8个section一个段(segment)。Segment#1,从section0到7,segment#2,从section8到15,等等;
c、每段包含三个小时内开始的事件信息;
d、段内事件信息按照时间排列;
e、
如果一个段(segment)有n节(section),而n<8,这个信息必须放在段中前n个节中,还要显式指明最后一节的位置:S0+n-1
(S0是段中第一节),这个值在EIT的segment_last_section_number中。例如,第二段只有两节,那么
segment_last_section_number包含值8+2-1=9;
f、如果段中有节的话,段的segment_last_section_number应当有值s0+7;
g、完全空的段通过空节(不含任何loop over事件)表示,段的vsegment_last_section_number值为s0+0;
h、段中事件的安排遵从一个时间t0。
t0是通用时间坐标(Universal Time Coordinated(UTC))的“last midnight”。
举个例子:UTC-6的下午5点,就是UTC-0的下午11点,即从“last midnight”算起23小时。因此对于UTC-6,t0就是前一天的下午6点;
i、 table_id
0x50(对其它TS是0x60)的第0段,包含从午夜(UTC时间)到“今天”02:59:59(UTC时间)(三个小时)的事件信息。第1段包含从
03:00:00到05:59:59(UTC时间)的事件信息,依此类推。这就意味着,第一个子表包含从“今天”UTC午夜时间算起前4天的信息;
j、last_section_number用来指明子表的结束位置;
k、last_table_id用来指明整个EIT/Schedule结构的结束位置;
l、与过去事件相关的段可以用空段代替,参见g规则;
m、EIT/Schedule包含的事件定义中的running_status应当设为“为定义”即0x00;
n、EIT/Schedule表不适用于NVOD涉及的服务,因为这些服务带有未定义开始时间的事件;
2)EIT 加密
EIT Schedule表格可以被加密。为了与条件接入相联系,必须分配一个service_id(=MPEG-2
program_number)来描述加密的EIT Schedule
Tables,这个service_id在PSI中。EIT在PMT中定义,service_id看成由一个private
stream组成的各种电视节目(The EIT is identified in the Program Map Table (PMT)
section for this service_id as a programme
consisting of one private stream),PMT包含一个或多个CA_descriptor来验证相关的CA码流。为达到这个目的,在DVB应用程序中service_id的值0xFFFF被保留。
PCR - Program Clock Reference
Synchronization of the receiver System Time Clock (STC) with the transmitter STC depends on transmitting PCRs through a constant-delay portion of the system. Thus, PCRs are inserted following the encoder buffer and extracted before the receiver buffer. PCRs are inserted with a maximum interval of 100ms.
Synchronization can be adversely affected by transmission over links having a variable delay or time jitter, and the accuracy of clock recovery must be studied if such an application is contemplated.
PCRs are also affected by the multiplexing of multiple program streams. In this case, there is additional buffering in the multiplexer, and it may become necessary to re-stamp the PCR values of data that is transmitted earlier or later than expected. Although the MPEG standards provide the means to maintain synchronization in this case, they do not specify the jitter limits, suggesting only that it is "intended" to be +/-4 ms maximum in a well-designed system.
STC - System Time Clock
The System Time Clock (STC) uses a 27 MHz oscillator with a worst case tolerance of +/- 810 Hz. [Note that this is a looser tolerance than that of the NTSC color subcarrier. The ATSC standard therefore contains a tighter constraint on the transmitted data rate so that it may be used if desired to regenerate the NTSC color carrier in equipment intended to feed an NTSC receiver. As discussed in the section Timing Model , the data and STC frequencies are independent.] There is a means provided to signal to the receiver the actual accuracy of the system time clock if it is better than the minimum allowed.
The STC first divides the the 27MHz by 300, giving a 90kHz clock that is counted by a 33 bit counter to give the base STC value. The remainder is taken as a 9-bit value that may be used as an STC extension.
PTS - Presentation Time Stamp
The Presentation Time Stamp (PTS) indicates the instant at which an access unit should be removed from the receiver buffer, instantaneously decoded, and presented for display. Any delay in a practical decoding or display process can be compensated for if it is fixed. Therefore, if a practical decoder has a variable delay, it must include buffering to restore a constant delay at the output. Note that the display itself may include a delay, for example, the time for the vertical scanning of a CRT to reach the middle of the picture.
PTS (or DTS) is entered in the bitstream at intervals not exceeding 700 mS. ATSC further constrains PTS (or DTS) to be inserted at the beginning of each access unit.