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

[10-10 20:38:44]   来源:http://www.88dzw.com  电子制作   阅读:8252

文章摘要:2. 设计和实现2.1 整体设计 如图1所示,整个系统分为三个大的部分,即获取数据模块、分析模块、界面模块。 获取数据模块在从数据源(可能是文件,也可能是实时输入的传输流,在静态分析系统中即TS文件)拿到数据之后需要进行码流的预处理,码流预处理的作用是为码流中的每个包加上时间标签,这个时间标签在后续的分析过程中能够提供每个包的到达时间,从而为测试提供方便。对于实时码流来说,一般来讲可以由硬件的数据采集卡来加入对应包实际的到达时间,而对于从文件获取数据来讲则可以根据流中的PCR来计算出该包对应的时间标签,可见,不管什么形式的数据获取设备,只要它能够提供上述功能,分析模块就可以正常

MPEG-2 TS流分析模块及系统的设计和实现,标签:电子小制作,http://www.88dzw.com

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停留时间过长以及某些缓冲区是否在规定时间内清空。缓冲区的分析同样以类对象形式存在,在对象内根据标准确定的规则对传输流进行解包,包的转换,时间标签提取等操作,在模拟的基础上记录和测试上述三个参数。该部分涉及了几乎所有实际解码时的数据处理工作,因此是所有分析测试子模块中最复杂的。

上一页  [1] [2] [3]  下一页


Tag:电子制作电子小制作维修教程知识 - 电子制作