DVB SI入门(一)——概念理解
一、数字电视和模拟电视节目选择的方式:
模拟电视:一个频道(一种频率)对应一个节目。
数字电视:一个物理频道(频率)对应一路码流(含多路节目),使用复用技术即可做到。要观看其中的某一路节目,还必须从传输流中提出该路节目的压缩包,然后再进行解码。
二、PSI与SI
PSI:在mpeg-2的传输流(TransportStream)中,节目专用信息PSI(Progame SpecificInformation),就是规定不同节目和节目的不同成分如何复用成一个统一的码流。以PSI为基础可以提供一个码流的构成,从而帮助用户对节目进行选择。
SI:DVB中的服务信息(Service Information)则对此进行了进一步的扩展,加入了一些对用户有用的信息,表示节目的类型、服务商、节目的相互关等。
1、PSI:节目特定信息(Progam Specific Information)
功能:
从一个携带多个节目的某一个TS流中正确找到特定的节目。PSI数据信息用于对复用流中的不同节目流进行解复用和解码。PSI中包括音视频数据的PID以及有关节目PID之间的关系。
特点:
描述了每一个ES(Elementary stream)
给每一个ES映射一个PID
由复用器生成
仅仅描述一个单一的码流。
PSI具体涉及4个表:PAT、PMT、CAT和NIT
(1)PAT(ProgramAssociation Table)节目相关表
包括该TS流中每个节目对应的PMT表的PID及NIT表的PID。PAT的PID=0x0000。
(2)PMT(ProgramMap Table)节目映射表
该表的PID是由PAT提供给出的。通过该表可以得到一路节目中包含的信息,例如:该路节目由哪些流构成和这些流的类型(视频、音频、数据),指定节目中各流对应的PID,以及该节目的PCR所对应的PID。
(3)CAT(ConditionalAccess Table)条件接收/访问列表
提供系统中条件接收的信息,指定CA系统与它们相应的授权管理信息EMM(Entitlement ManagementMessages)之间的联系,指定EMM的PID及其他相关的参数。CAT的PID=0x0001。
(4)NIT(NetworkInformation Table) 网络信息表
该表的PID是由PAT提供的。NIT的作用主要是对多路传输流的识别,NIT提供多路传输流、物理网络及网络传输的相关的一些信息,如用于调谐的频率信息以及编码方式、调制方式等参数方面的信息。
2、SI:业务信息(Service Information)
在TS中,仅有PSI信息时,STB不能自动接收某个业务并提供相应的节目信息,而是通过SI信息来为PSI作补充。
MPEG-2的PSI中提供了不少的关于节目组成和相互关系的信息,从而使得在接收端可以正确的对多路传输流进行分解。但是这些信息在实际使用时仍显得不够,为此在DVB中采用SI和PSI信息进行了进一步的扩展。
主要用途:
根据NIT、PAT、PMT等信息可以进行自动的频道调谐 ;
更方便的对节目进行选择与定位;
实现电子节目指南EPG(ElectronicProgram Guide)等
特点:
提供导航信息(包括频道名称、频道号、排序、节目指南等)给STB
要求与复用器同步(映射SIService ID)
覆盖多个码流(描述整个网络的相关信息)
PSI中的信息基本上都是与当先码流相关的,即它们所涉及的内容都与当前码流中的部分信息相关。与PSI不同的是,SI的基本信息可以包括不在当前码流中的一些服务和事件,允许用户进行更多的选择和了解更多的其他的服务信息。
DVB规定携带SI信息的传输包必须用指定的PID,指定的PID如下表:
PAT 0X0000
CAT 0X0001
TSDT 0X0002
RESERVED 0X0003 TO 0X000F
NIT、ST 0X0010
SDT、BAT、ST 0X0011
EIT、ST 0X0012
RST、ST 0X0013
TDT、TOT、ST 0X0014
在该表中可以看到同一个PID可以对应不同的表,要把这样的表区分开来,需要进一步找到TableID进行识别。
0x00Program_association_section
0x01Conditional_access_section
0x02 Program _map_section
0x03Transport_stream_description_section
0x04 TO 0X3F Reserved
0x40Network_information_section-actual_network
0x41Network_information_section-other_network
0x42Service_description_section-actual_stream
0x43 to 0x45 Resreved forfuture use
0x46Service_description_section-other_transport_stream 0x47 to 0x49 Reserved forfuture use
0x4ABouquet_association_section
0x4B to 0x4D Reserved forfuture use
0x4E Event_information_section-actual_transport_stream,P/F
0x4FEvent_information_section-other_transport_stream,P/F
0x50 to 0x5F Event_information_section-actual_stream,schedule
0x60 to 0x6FEvent_information_section-other_stream,schedule 0x70 Time_date_section
0x71Running_status_section
0x72 Stuffing_section
0x73 Time_offset_section
0x74 to 0x7D Reserved forfuture use
0x7EDiscontinuity_information_section
0x7FSelection_information_section
0x80 to 0xFE User defined
0xFF Reserved
SI具体涉及9个表:BAT、SDT、EIT、TDT、TOT及RST、ST、SIT、DIT
(1)BAT(Bouquet Association Table)业务群关联表
该表提供一系列类似节目的集合。这些节目可以在不同的传输流中,利用该表可以很方便的进行相关节目或某一类节目的浏览和选择。 BAT的PID=0x0011。智能卡在开户时,收费系统中分配一个BouquestID,并写在卡上。机顶盒开机找到BAT表后,根据卡上的BouquestID,显示出与该Bouquet对应的节目列表。
(2)SDT( Service Description Table)服务描述表
用于描述系统中节目的名称、节目提供者、是否有相应的事件描述表等方面的信息。SDT的PID=0x0011。该表可以描述当前传输流---SDTActual,也可以描述其他TS流---SDT Other,由Table ID进行区分。
(3)EIT(EventInformation Table)事件信息表
该表是对某一路节目的更进一步的描述,是生成EPG(Electronic Program Guide 电子节目指南)的主要表,EIT包含事件或节目的有关数据,如事件的名称、开始时间、时间长度、运行状态等。EIT的PID=0X0012。
描述当前传输流中的当前和下一条事件内容,称之为EITPresent/Following Actual,简称P/F Actual。
描述其他传输流中的当前和下一条事件内容,称之为EITPresent/Following Other,简称P/F Other。
描述当前传输流中节目的进一步的事件内容,称之为EITSchedule Actual,简称Schedule Actual。
描述其他传输流中节目的进一步的事件内容,称之为EITSchedule Other,简称ScheduleOther。
(4)TDT(Time and Date Table)时间日期表
提供当前时间和日期相关的信息,用来对IRD的解码时钟进行更新。TDT的PID=0x0014。
(5)TOT(Time Offset Table)时间偏移表
该表提供当地时间与TDT之间的关系,该表与TDT配合使用。TOT的PID=0x0014。
(6)RST(Running Status Table)运行状态表
该表提供某一具体事件的运行状态,可用于按时自动的切换到指定的事件;
(7)ST(Stuffing Table)填充表
该表表明其内容是无效的,只作为填充字节。
(8)SIT(Selection Information Table)选择信息表
(9)DIT(Discontinuity Information Table)间断信息表
DVB中的TS解复用(demux)原理:
1、机顶盒先调整高频头到一个固定的频率(如498MHZ),如果此频率有数字信号,则COFDM芯片(如MT352)会自动把TS流数据传送给MPEG-2 decoder。
2、MPEG-2decoder先进行数据的同步,也就是等待完整的Packet的到来。然后循环查找是否出现PID==0x0000的Packet。
①如果出现了,则马上进入分析PAT的处理,获取了所有的PMT的PID。接着循环查找是否出现PMT,如果发现了,则自动进入PMT分析,获取该频段所有的频道数据并保存。
只要我们处理了PMT,那么我们就可以获取频道中所有的PID信息,例如当前频道包含多少个Video,共多少个Audio,和其他数据,还能知道每种数据对应的PID分别是什么。这样如果我们要选择其中一个Video和Audio收看,那么只需要把要收看的节目的VideoPID和AudioPID保存起来,在处理Packet的时候进行过滤即可实现。
②如果没有发现PAT或者没有发现PMT,说明该频段没有信号,进入下一个频率扫描。
从以上描述可以看出,机顶盒搜索频率是随机发生的,要使每次机顶盒都能搜索到信号,则要求TS流每隔一段时间就发送一次PAT和PMT。事实上DVB传输系统就是这么做的。因此无论何时接入终端系统,系统都能马上搜索到节目并正确解复用实现播放。不仅仅如此,其他数据也都是交替传送的。比如第一个Packet可能是PAT,第二个Packet可能是PMT,而第三个Packet可能是Video1,第四个Packet可能是Video2,只要系统传输速度足够快(就是称之为"码率"的东东),实现实时播放是没有任何问题的。
到这里虽然实现了解复用,但可以看出,使用的PID都是枯燥的数字,如果调台要用户自己输入数字那可是太麻烦了,而且还容易输入错误,操作非常不直观,即使做成一个菜单让用户选择也是非常的呆板。针对这个问题,DVB系统提出了一个SDT表格,该表格标志一个节目的名称,并且能和PMT中的PID联系起来,这样用户就可以通过直接选择节目名称来选择节目了。