一般数字电视机顶盒的接收过程是:先从TS码流中搜索PAT和CAT,从PAT中找到收看节目的PMT,通过解析PMT得到该节目的ECM、视频、音频的PID;通过解析CAT得到该节目的EMM的PID,根据EMM和ECM。利用智能卡获得控制字CW,最终解出原始的视音频数据。
在搜索节目时,首先根据NIT表中PID取得NIT表,解析并保存,从NIT表中的第一个描述符循环中取得网络名,可根据需要决定是否显示在屏幕上,再从NIT表的第二个描述符循环中取得所有频点的几个关键字段值(频率、调制方式、符号率),获得全部网络信息资源;在已锁定的频点下,接收PSI/SI信息表中的PAT、PMT、SDT表,完成所有节目信息的收集,包括共多少个频点、每个频点下有多少套可供播放的节目、每个节目的名称、相关PCR_PID(程序参考时钟PID)、V_PID(视频PID)、A_PID(音频PID)等,根据以上信息可以组织菜单,并实现节目播放;可以通过在BAT中添加私有描述符的方式来实现节目的排序、声道设置和音量补偿等功能;最后接收EIT表,通过循环在一个物理频道上可以取得所有的节目时间表和内容。
机顶盒每次开机后会自动进行NIT表检查,若NIT表版本号有变化,则会在屏幕上显示相关信息,提示并引导用户进行更新,自动完成频道列表更新,机顶盒NIT表版本号是机顶盒判断节目更新的依据。
也就是说,一个DVB系统最基本的业务信息包括PSI和SI,EPG由SI生成,机顶盒靠EPG来引导接收和选择收看节目。
机顶盒通常采用从PAT表→PMT表→NIT表→SDT表→EIT表解析构造EPG并同时搜索节目。但根据SI标准及机顶盒的实际解码流程,应从NIT表直接构造EPG,即先忽略PAT、PMT表。首先通过在机顶盒预先设置的主频点从传输流中直接提取NIT表,根据NIT表携带的传输系统参数搜索所有载波信息,再解析SDT、EIT表等构造出基本的EPG信息,其过程是:NIT表→SDT表→EIT表→生成EPG。EPG提供的信息主要包括:传送信息的天数(例如一周)、传送频道的数目和名称、传送的节目数、节目提供商的标识和名称、传送网络的信息(网络标识和网络名称),其细节信息还包括:节目名称、节目的简单介绍、节目的开始和结束时间、节目的主题、节目的类属、节目的观看分级限制(例如对某个年龄段进行限制)。
机顶盒通过EPG菜单来切换不同频率的频道时的解析过程:根据SDT表给出的业务标识符service_id(它等于program_number)→PAT表→PMT表→找到所需节目的TS包→CAT表→解扰→解码(如果业务没被加扰,可省去CAT表→解扰过程)。
当加入了BAT表时,用户可根据节目的分类来检索所需要的节目频道。首先查找BAT,根据BAT列出一系列的节目种类,比如新闻、体育、电影、音乐等,用户可选择其中自己感兴趣的类型,如电影。接收应用程序根据此BAT中包含的业务群信息,得到一个业务群列表。此时用户可以根据自己的喜好,选择自己喜欢观看的电影频道。
此时,首先要找到该业务所对应的传输流,根据BAT中所给出的对应的传输流标识符,然后查找NIT中与此传输流标识匹配的传输流描述符,然后根据描述符中的参数(如频率、调制方式等)解调出该传输流,即transport_stream_id→NIT(得到流的解调参数)。再根据BAT中的业务群组标识符(bouquet_id)完成:bouquet_id→ service_id→PAT表→PMT表→找到所需节目的TS包→CAT表→解扰→解码的过程(如果业务没被加扰,可省去CAT表→解扰过程),从而收看到自己喜欢看的节目。同时根据service_id在SDT中查找,得到有关的业务信息,还可以查找EIT,得到有关事件的信息,比如开始时间、持续时间等