电子文章 | 电子资料下载 | 家电维修 | 维修资料下载 | 加入收藏 | 全站地图
您现在所在位置:电子爱好者维修技术维修教程知识电子制作MPEG-2 TS流分析模块及系统的设计和实现

MPEG-2 TS流分析模块及系统的设计和实现

09-08 12:09:44 | http://www.5idzw.com | 电子制作 | 人气:252
标签:电子小制作,http://www.5idzw.com MPEG-2 TS流分析模块及系统的设计和实现,http://www.5idzw.com

摘要: 本文介绍了基于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的相关测试给出结果,这其中包括了三个小的项目,即缓冲区错误、空缓冲区错误和数据延迟错误。

[1] [2]  下一页

,MPEG-2 TS流分析模块及系统的设计和实现