MPEG-2 TS流分析模块及系统的设计和实现
摘要:本文介绍了基于PC的MPEG-2和DVB传输流的通用分析模块和系统的设计和实现。分析模块可以实现对传输流中各种信息的分析以及ETR290参数的测试。模块中充分应用了多线程调度、模块化等设计思想,使得该模块可以配合硬件板卡等各种获取数据模块完成传输流分析的功能。应用此模块实现了静态传输流分析系统,验证了分析模块的功能。
关键词:MPEG-2、DVB、TS、多线程调度、模块化设计
MPEG-2作为一个关于运动图像压缩的国际标准,其中的传输流(Transport stream)已经成为数字电视领域中普遍应用的系统层编码标准。传输流针对有一定误码信道的传输,可以将多路节目复合成一个流进行传输,它允许同一路节目包含多个音频和视频流,同时也可以加入一些附加信息。传输流具有固定的包长188字节。它的结构是极其复杂的,对用户来说,针对一个特定的流,首先要知道其由哪些PID(Packet ID)的包构成。MPEG-2定义了一些用来描述传输流所携带内容的信息表,称为节目特定信息(PSI)表,包括4个与之相关的表。其中,节目关联表PAT和节目映射表PMT是确定当前传输流中各节目内容的最关键的两个表。
我国目前采用的DVB标准是欧洲各国采用的数字电视标准,基带数据格式采用MPEG-2标准,即视频和音频编码以及码流的复用均符合MPEG-2标准。DVB标准对PSI进行扩展后统称为服务信息即SI。这些信息以及传输流的规范性对于正确接收数字电视节目是至关重要的。
数字电视系统的集成是一项庞大复杂的工程,为了在开发中迅速有效地找出故障源、解决问题,经常需要对数字电视码流进行分析。此外码流测试技术更为广泛的应用在对数字电视网络的监测中。由于TS是经过压缩的信号数据间的相关性很小,而且TS流有着严格的数据格式,因而很小的误差都将导致图像质量的急剧下降甚至无法解码,因此必须对信号进行监测。为此我们开发了这个通用的传输流分析模块,它可以分析包括节目信息、码率、带宽分配、PCR精度和缓冲区溢出等在内的各种码流相关信息,同时还可以进行ETR290相关参数的测试,由于在设计时充分采用了模块化设计的思想,该模块可以配合各种获取数据的模块共同工作从而完成不同环境下的传输流分析工作。此外为验证分析模块的功能,我们开发了TS文件的静态分析系统,以下着重介绍分析模块的设计和实现以及该模块在系统中的应用。
1.设计思想
在功能上,整个分析模块完成对码流各种信息的分析和ETR290参数的测试。码流信息的分析包括:基本信息、节目信息、带宽信息、音视频信息、复用结构、PCR信息和缓冲区信息等部分。其中基本信息包含了流的速率、流ID、提供者的名称等基本信息;节目信息包含了传输流中各个节目的名称,PID(Packet ID)分配,节目速率,节目单等信息;带宽信息包含了各个PID所占的带宽;音视频信息包含了流中音视频相关的各种信息;复用结构显示了流中各个节目的复用情况;PCR信息显示了流中各个PCR的精度和间隔;缓冲区信息包含了虚拟解码器(STD)在解码当前流时各个缓冲区的状态。除了这些信息之外,模块完成了ETR290参数的测试,这些参数是DVB标准的制定者在官方文档中给出的一系列测试的参数,其一般目标是对TS流中的最重要的元素提供“健康测试”,根据重要性以及不同的性质,这些推荐测试的参数被分为3个优先级,其中:第一个优先级集中了一套基本的参数,这些参数保证ts流能够被解码;第二个优先级集中了一些附加参数,这些参数推荐用来进行连续性检测;第三个优先级集中了一些特定应用可能感兴趣的参数。
模块在设计上希望能够保持通用性,即只要模块能够通过接口取得传输流的数
据即可完成分析工作,实际中,为了测试分析模块的工作情况而设计了用于从文件获取数据的模块,该模块和分析模块都被设计成动态链接库即dll的形式,同时编写了用于显示结果的上层应用程序,该程序结合获取数据和分析模块即实现了一个完整的传输流静态分析系统,这里可以看出,若分析模块需要用于实时分析系统,则只要相应的获取数据的设备,例如硬件数据采集卡,提供相同功能的dll用于分析模块获取数据即可。此外,在设计中较强的可扩展性也是目标之一,希望今后能够根据需要灵活方便的增加更多的分析功能。以下将以上述静态分析系统为载体说明分析模块的设计和实现以及在实际系统中的位置和作用。
2.设计和实现
2.1 整体设计
如图1所示,整个系统分为三个大的部分,即获取数据模块、分析模块、界面模块。
获取数据模块在从数据源(可能是文件,也可能是实时输入的传输流,在静态分析系统中即TS文件)拿到数据之后需要进行码流的预处理,码流预处理的作用是为码流中的每个包加上时间标签,这个时间标签在后续的分析过程中能够提供每个包的到达时间,从而为测试提供方便。对于实时码流来说,一般来讲可以由硬件的数据采集卡来加入对应包实际的到达时间,而对于从文件获取数据来讲则可以根据流中的PCR来计算出该包对应的时间标签,可见,不管什么形式的数据获取设备,只要它能够提供上述功能,分析模块就可以正常工作。
分析模块包括一个循环的缓冲区和实际的数据分析单元,后面会有详细的介绍。
界面模块,用于系统和用户之间的信息交换,用户控制部分负责向系统传达用户的命令,例如开始分析,停止分析和选择文件等,结果显示部分向用户显示传输流分析和测试的结果。
2.2 多线程调度技术的应用
如果整个分析模块采用单线程,即每次取得一定量的数据然后分析,如此循环往复,那么无法充分利用系统资源,必定会造成分析测试的效率低下,为证明这个观点,在开发初期曾经采用这种单线程的方法做了试验,结果显示,这种情况下即使只有一个基本信息分析的子模块,也将使得分析模块的效率在处理实时码流的时候完全不可接受。为此,设置了一个循环缓冲区作为数据的中转站,如图2所示。
如图,线程1从数据获取模块取得数据后写入循环缓冲区;线程2从循环缓冲区中读取数据,然后利用分析单元进行分析,循环缓冲区以类对象的形式存在,编程中注意了线程间同步的问题。应用多线程调度技术后,分析模块的工作效率大幅提高。该技术的应用为分析和测试的实施打下了良好的基础。
2.3 分析单元设计
分析单元是整个模块的核心,在功能上完成两部分工作:码流信息的分析和ETR290参数的测试。码流信息的分析主要对应于码流语义上的分析,这部分的工作根据模块化的原则,对应于若干个小的模块,每个模块完成一种信息的分析和提取;ETR290参数测试主要对应语法上的测试,如前所述,ETR290参数包括3个优先级,按照测试方法可分为4个大类:SI表相关测试、PCR相关测试、缓冲区测试和其它测试。下面以缓冲区测试为例做较详细的说明。
MPEG-2标准规定了一个虚拟解码器STD(System Target Decoder),STD是一个概念上的模型,它可以用来规范在构造和检验TS流中的解码过程,虽然不同的解码器可以有不同的结构,但是它们必须保证一个能够在STD上正确解码的TS流也一定能够在实际中被正确解码,也就是说STD这个虚拟的解码器是检验TS流能否正确解码的一个重要标准,ETR290参数中所有有关缓冲区的测试都由STD的相关测试给出结果,这其中包括了三个小的项目,即缓冲区错误、空缓冲区错误和数据延迟错误。
该类错误的主要测试方法是按照标准确定的规则模拟一个解码器的工作,使得传输流数据在解码器的各个缓冲区间传输,其中包括了TS包、PES包和ES包之间的转换、各个缓冲区大小的分析和显示单元的解码时间的提取计算等操作。在上述模拟的基础上测试该类三个错误,即是否有缓冲区溢出、是否有数据在STD停留时间过长以及某些缓冲区是否在规定时间内清空。缓冲区的分析同样以类对象形式存在,在对象内根据标准确定的规则对传输流进行解包,包的转换,时间标签提取等操作,在模拟的基础上记录和测试上述三个参数。该部分涉及了几乎所有实际解码时的数据处理工作,因此是所有分析测试子模块中最复杂的。
综上所述,整个分析单元的流程图如图3所示。
2.4 模块化保持通用性和扩展性
如前所述,为了保持分析模块向上的通用性,该模块被设计成动态链接库dll的形式,dll提供了所有用户需要的接口来完成诸如初始化、开始分析、停止分析、取各种分析结果等工作,这样用户只需要了解各个接口并完成上层应用程序的编写,即可完成整个码流分析系统。为了分析模块能具有向下的通用性,模块对于获取数据的模块只要求完成数据预处理工作并能够提供数据即可,实际中用到的从文件获取数据的dll就是一例,目前实验室准备后续开发的usb接口的分析仪,只要在硬件的驱动程序能够实现相同的预处理和获取数据功能即可替换目前的从文件获取数据的dll,从而完成usb接口的码流分析仪整个系统的开发。
在分析模块的流程设计当中同样也处处应用着模块化的思想,由于传输流的数据是固定长度包的排列,因此各种分析的功能都被设计成单独的接收一系列包的模块,这样的设计使得在开发中能够分阶段开发和测试,例如节目信息分析模块可以单独开发和测试,通过后只要集成到分析线程中即可,这样的结构为测试和今后添加新的分析功能提供了极大的方便。
2.5 模块对内和对外的通信
由于分析过程中有可能会遇到出现错误的情况,分析模块的用户也需要控制启动哪些分析和测试子模块,因此必须有一种通信机制,使得分析模块能够和外界交换信息,为此,在模块初始化的时候,用户可通过接口指定需要启动的分析或测试的子模块;此外采用消息机制使得在分析和测试发现错误时能够通知分析模块的用户,进而对最终用户做出相应提示。
3.结束语
开发中用上述静态分析系统对多节目、单节目、高清、标清、卫星节目、HDTV节目等各种类型TS流进行了测试,结果显示该模块工作正常、结果正确,同时,由于通过文件的码率和大小即可得知文件所对应传输流的实时持续时间,因而通过分析完成静态测试所用的时间同样可以得知该模块用于实时分析时的工作效率,实验表明,该模块具有较好的效率,能够用于静态和实时分析等各种场合,具有较好的通用性和可扩展性。目前应用该分析模块的分析系统已经应用于实验室数字电视产品的辅助开发中,并发挥了很大的作用。
参考文献
⑴ International Organization for Standardization and International Electrotechnical Commission , ISO/IEC 13818-1 : Information technology-generic coding of moving pictures and associated audio information: Systems. 1994.
⑵ International Organization for Standardization and International Electrotechnical Commission , ISO/IEC 13818-2 : Information technology-generic coding of moving pictures and associated audio information: Video. 1994.
⑶ International Organization for Standardization and International Electrotechnical Commission , ISO/IEC 13818-3 : Information technology-generic coding of moving pictures and associated audio information: Audio. 1994.
⑷ European Telecommunication Standards Institute. ETSI EN 300 468: Specification for Service Information (SI) in DVB Systems. 2000.
⑸ European Telecommunication Standards Institute. ETSI TR 101 290: Measurement guidelines for DVB systems. 2001.
评论