毕业设计(论文)-MPEG-2传输流分析与视音频同步问题的研究【含程序】.doc_第1页
毕业设计(论文)-MPEG-2传输流分析与视音频同步问题的研究【含程序】.doc_第2页
毕业设计(论文)-MPEG-2传输流分析与视音频同步问题的研究【含程序】.doc_第3页
毕业设计(论文)-MPEG-2传输流分析与视音频同步问题的研究【含程序】.doc_第4页
毕业设计(论文)-MPEG-2传输流分析与视音频同步问题的研究【含程序】.doc_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MPEG-2传输流分析与视音频同步问题的研究第一章 绪论源程序,联系153893706自上一世纪20年代电视问世以来,这一伟大发明给人们的生活、娱乐、工作和学习带来了无可估量的作用。从早期的黑白电视到上世纪六十年代彩电问世,到数字电视和高清晰度电视的诞生,无一不引起人们的极大关注和带来广播、家电产品的革命。电视对于当今世界的任何国家来说,都是最重要的消费电子产品,它己经不仅仅是一种电子产品,而是成为了改变人们生活方式的工具。11 数字电视的标准和发展状况111 数字电视及其标准数字电视包括普及型数字电视(PDTV)或者低清晰度数字电视(LDTV)、标准清晰度数字电视(SDTV)和高清晰度数字电视(HDTV)。现在国际上的数字电视存在三种标准,第一种是美国的ATSC标准,第二种是欧洲的DVB标准,第三种是日本的ISDB标准5。112 高清晰数字电视在各地区的发展美国是目前世界上高清电视发展进程最快的国家。从节目方面看,目前,美国在黄金时段播放的电视节目中,约有70%是以高清形式制作的高清电视节目。现在在美国主要的体育比赛转播当中,50%以上的节目使用的都是HD高清制作的。日本在上世纪80年代最早在亚洲开始进行高清电视节目的播出。不过当时使用的是模拟高清,随着全球高清电视节目的数字化,模拟高清慢慢地淡出了历史舞台。日本从2000年12月份开始进行数字高清节目的卫星播出的。从2003年开始,日本已有很多电视台开展高清电视设计的。与其他国家不同,韩国是唯一一个通过政府的支持来促进高清电视节目发展的国家,韩国政府在高清电视的发展方面给予的财政支持大多面向民用电视机生产商。由于韩国政府在发展高清电视节目方面制定了非常严格的时间表,即2010年韩国会停止模拟电视广播,所以从客观上迫使韩国广电行业向高清阶段过度。欧洲模拟高清电视HD-MAC播出的时间很早,但没有发展起来然而,在最近这一两年的时间里,欧洲的情况发生了很大的变化。从目前来看,欧洲诸国的政府还没有在发展高清电视方面给予大力支持,也没有规定什么时间表。我国于1994年制订了HDTV研究开发的“两步走”发展策略:第一步,建立一套HDTV功能样机系统;第二步,适时进行HDTV试播,尽快建立起相关的产业基础。1999年,国家广电总局成立了数字(高清晰度)电视标准工作组,讨论和制定我国的数字电视方案(包括SDTV和HDTV)。其中HDTV视频标准定为:场频50Hz,欲减少闪烁,可以倍频。扫描格式为1920 X 1080和24p,图像宽高比为16:9。高清晰度数字电视技术是电视技术发展一个崭新的里程碑,是未来电视的发展方向。我国现阶段主要是积累高清制作和试播经验。未来一定是高清晰度数字电视的时代5。1 2 MPEG-2标准概述121 MPEG历史概要1987年,国际电工委员会(IEC)和国际标准化组织(ISO)组建了一个专家小组,其任务是制定数字视频和音频的压缩标准。这个小组就是运动图像专家组(Moving Picture Experts Group),即MPEG.MPEG包含了一个家族的标准,详细说明了视频编码,相关的音频和超媒体。这些标准目前包括MPEG-1,MPEG-2,MPEG-4,很快还有MPEG-7和MPEG-21。MPEG标准定义了语法,或者结构,压缩比特流的语义和解码数据流到原始视频音频内容的过程。因为MPEG标准没有定义具体的编码算法,人们可以改进算法而不侵犯标准。这个灵活性提供给制造厂商从新科技发展中获得私有利益的机会110。122 MPEG-2标准简介MPEG-2标准特别适用于广播级数字电视的编码和传送。它是针对数字电视和高清晰度电视在各种应用下的压缩方案和系统层的详细规定,并不是MPEG-1的简单升级,MPEG-2在系统和传送方面作了更加详细的规定和进一步的完善,并兼顾了与ATM信元的适配问题。MPEG-2标准目前有9个部分,统称为ISO/IEC 13818国际标准。其中6个部分的内容如下:第一部分ISO/IEC13818-1, System:系统,描述多个视频、音频和数据基本码流合成传输码流和节目码流的方式。第二部分ISO/IEC13818-2, Video:视频,描述视频编码方法。第三部分ISO/IEC13818-3, Audio:音频,描述与MPEG-1音频标准反向兼容的音频编码方法。第四部分ISO/IEC13819-4, Compliance:符合测试,描述测试一个编码码流是否符合MPEG-2码流的方法。第五部分ISO/IEC13818-5, Software:软件,描述了MPEG-2标准的第一、二、三部分的软件实现方法。第六部分ISO/IEC13818-6, DSM-CC:数字存储媒体命令与控制,描述交互式多媒体网络中服务器与用户间的会话信令集。以上六个部分均已获得通过,成为正式的国际标准,并在数字电视等领域中得到了广泛的实际应用。此外,MPEG-2标准还有三个部分:第七部分规定不与MPEG-1音频反向兼容的多通道音频编码;第八部分现己停止;第九部分规定了传送码流的实时接口19。13 本文的主要工作和内容安排131 主要工作本课题主要通过了解MPEG-2传送流TS包的结构,在此基础上,更进一步分析TS包中的基本码流ES,从而得到更多的关于视频、音频等数据的信息,并能把相应的视音频信息解码出来。同时,通过分析TS码流中的视音频同步信息,从而设计出使得视音频能达到同步播放的算法。132 内容安排首先需要大量的收集、查阅相关MPEG-2运动图像压缩编码国际标准的有关TS传输流资料的参考文献。并对MPEG-2 TS传输流的系统层结构进行详细的分析与认真研究。其次,查阅了关于介绍Visual C+软件的书籍,为后面编程奠定基础。再次,能够结合Visual C+软件和MPEG-2的标准进行编程,实现码流读取模块,码流分析分析模块,视音频解码模块,视音频同步模块,最后设计出一个播放界面,使结果一目了然。从第二章开始介绍MPEG-2系统部分,第三章讲述MPEG-2视频编码的主要技术,第四章是有关视音频同步方案的研究,第五章,第六章是本次毕业设计的关键内容:码流分析模块和码流同步播放模块的设计。14 小结本章从介绍电视的基本概念入手,介绍了数字电视的基本原理、现有标准(ATSC, DVB, ISDB)以及高清晰度电视的市场发展状况,然后详细介绍了作为数字电视信源编解码标准的MPEG-2标准的特点。最后说明了此次毕业设计的主要工作任务和内容安排。第二章 MPEG-2系统部分21 引言MPEG-2标准主要包括3个部分:系统部分,视频部分和音频部分。由于本文的研究工作是针对MPEG-2系统部分的传送流进行的,因此有必要对系统部分所涉及的主要内容加以介绍。MPEG-2的系统模型如图所示。图 2-1是TS系统的结构图1。图 2-1 MPEG-2系统结构图22 MPEG-2传送流语法结构MPEG-2系统有两种编码格式:传送流(Transport Stream,TS)和节目流(Program Stream,PS),两种类型的码流都可以实现基本流(Elementary Stream,ES)的复用(基本流是对编码的视频,音频或其他数据的比特流的通称),只是适用于不同的应用当中。节目流是针对错误较少的环境设计的,适用于像交互式多媒体这样一些涉及软件处理系统信息的应用。与节目流相比较,传送流是针对那些容易发生错误的环境而设计的,例如卫星信道等容易引入噪音干扰以及容易丢失数据的存储传输环境。传送流采用分组方式进行传输,分组长度固定为188Bytes,分为分组头部,调整字段和有效负载三个部分,结构如图2-2所示。其中调整字段是可选的,并不是所有的传送流分组中都出现调整字段1。图2-2 TS分组包结构TS分组头部共四个字节,结构如图2-3所示。图2-3 TS分组头部字段下面对一些主要字段的语义加以介绍:sync_byte:分组同步字,是TS分组的第一个字节,其值固定为0x47,作为建立分组同步的信息。sync_byte可以用来对分组同步功能进行验证,在解码器中可以作建立分组同步的基本信息源。transport_error_indicater:传送错误指示位,1bit。置“1”表明在相关的TS分组中至少有一个不可纠正的错误位。当置“1”后,在错误被纠正之前不能重置为“0”,此时TS分组中的有效负载不能使用。playload_unit_star_indicator:有效负载起始标志,1bit。用来指示TS分包含有效负载数据的情况。transport_priority:传输优先级,1bit。置“1”时表明相关的分组比其他具有相同的分组标识符但此位没被置“1”的分组具有更高的优先级,传送机制可根据此位确定一个基本流中数据的优先级。PID(Packet Identifier):分组标识符,13bit。指示存储于分组有效负载中数据的类型,由它可以识别出分组属于哪个基本码流或控制码流。由于PID字段在TS分组中的位置总是固定的,因此对分组中的PID进行过滤而建立起分组同步后,提取属于某一特定基本码流的TS分组的工作变得非常容易。transport_scrambling_control:传输加密控制,2bit。用于指示TS分组有效负载的加密模式。“00”表示未加密。adaption_field_control:调整字段控制,2bit。用于指示TS分组头部是否跟随调整字段。continuity counter:连续计数,4bit。随着每一个具有相同PID的TS分组而增加,当它达到最大值后又回复到0。若adaption_field_control字段为“00”或“10”,则Continuity counter不增加113。23 分组基本流PESTS流和PS流都是从PES分组按一定的语法规则加上分组头部打包生成的。PES分组的大小比TS分组大得多,因此一个PES分组将分割成多个TS分组进行传输。TS流由一路或者多路节目组成,每路节目由一个或多个基本流和一些其他的流多路复用在一起。基本流数据加载在PES分组中,PES分组由PES分组头部以及其后的分组数据(有效负载)组成。PES分组是插在TS分组中传输的,每个PES分组头部的第一个字节就是TS分组有效负载的第一个字节。PES分组的结构图如图2-4所示。图2-4 PES分组结构PES分组中的有效负载是信源编码器生成的连续的基本流,对视频和音频来说,分别是编码后的视频帧和音频帧序列。PES分组头部中所包含的主要字段如下:packet_start_code_prefix:分组起始码前缀,24bit。与其后的stream_id一起构成标示一个分组开始的分组开始码字,Packet_start_code_prefix固定为0x000001。stream_id:规定基本流的类型和数目。PES_packet_length:PES分组长度,16bit。说明在此字段最后一个字节之后的PES分组的字节数,最大为2的16次方。但视频流的PES分组一般都很长,超过了此限制,以“0”值表示视频分组长度不受限制。PTS(Presentation Time Stamp,显示时间标签),DTS(Decoding Time Stamp,解码时间标签):PTS为解码器指示一个显示单元应该显示的时间,DTS指示一个访问单元进行解码的理想时刻。一个访问单元就是一个经过编码的显示单元。一个PES分组开始的开始码字。视频PES分组由一幅图象构成。PES分组与一个图象序列,一个图象组或一副图象的起始码是对齐,即视频PES分组的有效负载的第一个字节要么是图象序列的起始码,要么是图象组的起始码,要么是图象的起始码。为保证PES分组总是结束于TS分组的边界,有时要在TS分组的调整字段中加入若干0xff填充字节114。24 PSI信息表在多节目传输流中,会通过一些特定的传输包发送节目特殊信息(PSI). PSI中包含了对应于每套节目视频PES流、音频PES流和PCR的PID描述,以及其他一些特定用的系统信息。在传输流中,程序特殊信息表(PSI),有以下四种:节目关联表(PAT-Program Association Table) ;节目映射表(program_ map_ table);网络信息表(Network information table);条件访问表(conditional access_ table)。这些表中包含进行多路解调和显示程序的必要的和足够的信息。其中,对于查找视频信息有关的是程序关联表和程序映射表。在多节目传输流中,会通过一些特定的传输包发送节目特殊信息(PSI). PSI中包含了对应于每套节目视频PES流、音频PES流和PCR的PID描述,以及其他一些特定用的系统信息。在传输流中,程序特殊信息表(PSI),有以下四种:节目关联表(PAT-Program Association Table) ;节目映射表(program_ map_ table);网络信息表(Network information table);条件访问表(conditional access_ table)。这些表中包含进行多路解调和显示程序的必要的和足够的信息。其中,对于查找视频信息有关的是程序关联表和程序映射表。节目关联表(PAT-Program Association Table):每个传输流必须有一完整有效的节目关联表,节目关联表给出了program_number和带有此节目定义的传输流分组PID(PMT_PID)之间的对应。在映射为一传输流分组之前,PAT可能被分成255个分段,每个分段含有整个PAT的一部分。这种分法,预计在错误条件下将使数据丢失最小化,也就是分组丢失或位错误可定位于更小的PAT分组,这样就允许其他分段被接受和正确解码。如果整个PAT信息置于一个分段中,则table id中位的改变这样的错误,将导致整个PAT 丢失,然而,分段的长度只要不超过1024字节的限制就行了1。在每个TS上都有一个PAT,用于定义节目源映射表。用MPEG-2指定的PID(00)标明,通常用PID=0表示 。就是PID=0的TS包的净荷就是PAT表。节目源映射表(PMT-Program Map Table):在TS上,每个节目源都有一个对应的PMT,是借助装入PAT中节目号推导出来的。用于定义每个在TS上的节目源(Program),即将TS上每个节目源的ES及其对应的PID信息、数据的性质、数据流之间关系列在一个表里。解码器要知道分配节目的ES的总数,因为MPEG总共允许256个不同的描述符,其中ISO占用64个,其余由用户使用。根据PID将TS上从不同的ES来的TS包分别出来可分两步进行:其一是从PID=0的PAT上找出带有PMT的那个节目源,如Program-1,或Program-2;其二是从所选择的PMT中找到组成该节目源的各个ES的PID,如从Program-1箭头所指的PMT-1中ES-2所对应的Audio-1的PID为48,或从Program-2箭头所指的PMT-2中ES-1所对应的Video的PID为16。同样,Program-1的MAP的PID为22,ES-1所对应的Video的PID为54;Program-2的PMT-2中ES-2所对应的Audio-1的PID为81,ES-1所对应的Video的PID为16,MAP的PID为33;PAT的PID为0,如图2-5。图2-5 根据PID将TS流中从不同ES来的TS包分别出来这样,就追踪到了TS上从不同的ES来的TS包及其PID,如图6所示的TS上不同ES的TS包的PID分别为48、16、22、21、54、0、16、33、1。显然,解码器根据PID将TS上从不同的ES来的TS包分别出来的过程14。25 小结本章主要阐述了运动压缩编码国际标准MPEG-2的系统部分,详细介绍了TS流的结构和PES包的语法结构以及PSI,PAT,PMT表的结构和语义。PSI信息表对于TS流中ES流的查找,同步信息的查找等都是非常重要的,解码首先就是从解PSI表开始的。第三章 MPEG-2视频编码技术与编码数据的结构31 引言数字存储媒体、电视广播以及通信等应用领域对于运动图像及其伴音的通用编码方法的要求日益增大,MPEG-2标准的视频部分即应这种要求而产生。它的用处在于可以使运动视频数据作为一种计算机可处理的数据形式,并且可以存储在各种存储媒体上,可以在现存或未来的网络上发送、接受,并且可以在现存或未来的广播信道上传播。32 视频编码主要技术321 图象分块在基于DCT的压缩编码过程中,由于变换是对一个一个的图像块进行的,所以在对图像进行DCT变换之前需要将图像分为互不重叠的图像块.假设一帧图像的大小为MXN,我们将其分为尺寸为LXL的彼此没有重处的子图像。M. N必须为L的整数倍4。322 DCT变换一般说来,尺寸越大,越能利用图像的空间相关性,压缩效果会史好一些。但研究表明,当尺寸大到一定程度时,由于图像像素之间的相关性减弱,使得压缩效果的改善不是很大,而且还导致运算复杂性的增加。实验表明,在具有相同图像质量的情况下,压缩比与选取的尺寸有如图3-1关系。图3-1 DCT变换压缩比与选取尺寸的关系由图中可知,当子块尺寸超过8x8时,压缩效果的改善不是很大,所以现在一般都选择8x8的尺寸为DCT的处理单元。现在的VLSI技术己经能很容易地实现8X8的DCT运算。需要说明:DCT变换是一个无损变换,即我们对得到的变换系数进行反变换,从理论上应该得到原始的输入图像块。但由于在计算机中进行DCT变换需要进行浮点计算,而计算机在运算中存在字长效应,因此反变换得到的信号与原始信号会有很小的差别,但差别很小,几乎可以忽略4。323 量化DCT变换将时间域的图像变换到了频率域,其中左上角的系数对应于图像的低频信息,而右下角的系数对应于高频的信息。由于人的眼睛对图像的低频特性比如物体的总体亮度之类的信息很敏感,而对图像中高频信息不敏感,因此在传送过程中可以少传或不传送高频信息,而只传送低频的信戈抓图像压缩编码正是利用人眼的这种特性来进行图像压缩的。基于DCT的图像压缩编码算法通过量化过程来判断是否要传送某一个频率分量,量化的目的是去除人眼视觉不敏感的信息,从而降低信息传送的速率。量化的过程可以简单的用下面的公式来表示: (3-1)其中: Fq(u,v)表示经过量化后的DCT系数F(u,v)表示量化前的DCT系数Q(u,v)表示量化加权矩阵q表 示 量 化器步长round 表示归整,即将输出的值取为与之最接近的整数值。类似地我们可以很容易地写出反量化的表达式:F(u,v)= Fq(u,v)xQ(u,v)xq (3-2)由于量化过程是一个非线性过程,信号F(u,v) 经过量化和反量化后得到的值F(u,v)与F(u,v) 本身是不同的,即存在一定的误差。由于人的眼睛对不同的频率分量具有不同敏感度,比如人的眼睛对低频分量比较敏感,而对高频分量不太敏感,因此在量化过程中可以对不同的系数采用的不同加权系数,使得在量化步长为q时,不同的系数具有不同的误差。量化加权矩阵是很多的国际性组织和个人经过对各种各样的图像综合统计后给出的。在量化过程中还有一个重要的参数:量化步长q。量化步长的作用是控制量化误差的大小。通过调整q的值可以改变编码后所需要的比特数目,实际上是牺牲图像质量来换取较低的传送速率或用宽的带宽来换取较高的图像质量。事实上目前的图像编码器的输出速率之所以能在较大的范围内变化,最主要的原因就是它可以调节量化器的量化步长4。324 运动估计和运动补偿运动估计与补偿是活动图像压缩的关键技术之一。目前己经成为国际标准的图像压缩算法,从H.261, H.263. MPEG-1, MPEG-2到MPEG-4等标准,都无一例外使用了运动补偿(简称MC)技术。运动补偿(MC)是消除图像序列时间方向冗余度的有效手段,它常常和各种其它技术组合在一起实现完整的编码器。运动估值技术一般将输入图像分割成若干彼此不相重亚的方块(通常为16X 16大小的块),然后为每一个块寻找一个运动矢量,如图3-2所示4。图3-2 运动矢量的确定寻找运动矢量的过程是一个优化过程,即按照某种匹配准则(如MSE,最小均方误差准则)为当前块在参考图像中寻找一个误差最小的块,这两个图像块的相对位移便是运动矢量。运动补偿是将运动矢量所指的图像块“粘贴”到当前块所在位置,作为当前块的预测值,如图3-3所示4。图3-3 运动补偿过程325 I,B,P帧编码模式在基于DCT的图像压缩编码中常常采用I,B ,P 帧的编码模式。在编码过程中,编码算法将输入到编码器的每一帧图像分为I ( Intra)帧、B(Bi-direction prediction)和P (Prediction)帧三种不同的类型,并且具有一定的排列顺序。如图3-4所示的1, B, P帧的组织结构是一种非常典型的组织结构。 图3-4 I,B,P帧的组织结构不同类型的帧在编码过程有不同的处理方法。对于I帧图像来说,在编码过程中它不需要进行运动估计和运动补偿,它只是对当前输入图像的舒个小块直接进行编码,没有消除时间方向的相关性,所以压缩的效果不是很好。P图像与I图像不同,它在编码过程中要利用前面的I或P图像作为参考图像进行运动补偿,编码实际上是对当前图像与运动补偿图像的差值进行编码,B图像的编码方式与P图像相似,唯一不同的地方是在编码过程中它要利用在当前位置前面的I或P图像和后面的I或P图像进行预测,并从中选出个最佳的运动矢量。图3-5给出了1, B, P帧图像在编码时使用参考图像的情况。从图中可以看出在对第4帧的P图像进行编码时需要使用第1帧的1图像作为预测帧,而对位于第2帧的B图像进行编码时需要用位于第1帧的I图像和位于第4帧的P图像作为参考帧。图3-5 I,B,P帧在编码时使用的参考图从图中可以看出编码端在进行图像编码时需要对图像编码的顺序进行调整,通常需要在编码器中有一个大的输入缓冲器将当前输入的图像进行缓存。解码 过 程 与编码过程相似。解码后的图像也要先写入缓冲器,然后照显示顺序从缓冲器中读出要显示的图像帧,利用这样的方法就可以保证输入图像和输出图像在时间顺序上的一致性。需要注意的是:在解码过程中只有I帧图像才能独立的解码,B和P图像均需要利用参考图像并结合运动矢量完成解码过程,所以说在解码过程中通常需要从I图像的位置开始解码。33 视频编码数据的结构331 不可分级语法与可分级语法完整的语法可以分为两类。一类是不可分级语法,是ISO/IEC11172-2定义的语法的一个超集。不可分级语法的主要特点是它有对隔行扫描的视频信号的额外压缩方法。第二类是可分级语法,主要特点可以从分块的比特流中分割重构出有用的视频信号,这可将整个比特流分为两个或更多层次来实现,从一个独立的基本层开始并加入一些附加的层。基本层可以用不可分级语法,或在某些参考情况下参考ISO/IEC11172-2的语法1。332 编码数据的层次关系编码的视频数据由一层称作层的比特流序列组成。如果仅有一层,那么这编码的视频数据称为不可分级的视频比特流如果有两层或更多层,那么这编码的视频数据称为划分等级。视频比特流分为6层,即序列层,图象组层,图象层,条层,宏块层,块层。除块层外,每层均设头部信息,块层包含被编码亮度和色度信号的DCT系数。块层不设头部信息,设块结束码EOB58。MPEG-2的视频比特流的结构如图3-6所示。图3-6 视频比特流的数据结构具体的头部信息分析将在第五章提取码流头部信息进行分析时介绍。34 小结这一章节重点介绍了编码的主要技术,因为解码只是编码的逆过程,所以必须对编码的具体技术和原理要了解清楚。然后介绍了编码数据的层次结构,头部信息在解码的时候起了重要的作用,将在第五章中介绍。第四章 MPEG-2视频解码过程与视音频同步方案41 引言在前一章节详细介绍了视频编码的主要技术的基础上,本章对于视频的解码过程只作简单的描述,因为编码的过程比解码的过程更为复杂,所以就不再赘述解码的详细过程,这么做还有一方面的原因就是解码的细节技术还有待改进,没有硬性的规定。此外本章还阐述了有关视音频同步的问题,实际上有很多不同的同步方法,像是硬件同步,软件同步等都有其各自的实现方法,这里所介绍的同步方法是标准的同步方法。本次设计是基于软件的基础,所以设计同步方面是通过软件来实现的,方法虽然跟这里介绍的有差别,但是原理上来讲是一致的,具体将在第六章中详细说明。42 简化的视频解码过程下面详述解码器将要执行的解码过程,实现从编码比特流中恢复图象数据。除了反离散余弦变换(IDCT),解码过程被定义为所有解码器都将产生同样数字结果。下面图4-1是一个简化的视频解码过程1。图4-1 简化的视频解码过程从图中可以看出,编码数据输入解码器后解码的顺序为:变长码解码反扫描反量化反DCT运动补偿解码的像素。43 视音频同步原理431 时间标签和时间基准的分析图4-2中展示了一个简单的解码器,它能够从程序里或者传输流中截取并且重放视频和音频。图中的开关被控制来识别含有所希望的视频或者音频基本流的传输流中的传输包(或者程序流中的PES包)。开关仅仅循序那些想要的基本流通过缓冲器。任何不是原始基本流的字节都不能通过。当每个缓冲区被填充时,组成原始ES流的访问单元也在积累。它们应该被重新排列使得一个视频访问单元就是一个被压缩的图片。当被指示做这些工作时,视频解码器从缓冲区内读取一个完整的视频访问单元,解码并且把被解码的图片显示在屏幕上。同样的,音频解码器解码每个音频访问单元,得到几毫秒的音频。解码器是怎么解码每个访问单元的呢?时间标签精确地设定究竟在说明时间应该把访问单元从缓冲器中移出和解码。正确使用时间标签的解码器将准确的解码访问单元,使之和其他基本流同步,构成一个节目,并且其缓冲区不会上溢或下溢59。图4-2 涉及同步的简单解码器时间标签是代表时间的值。复用器的一个功能就是给访问单元加上时间标签,当这些访问单元被编码器编码产生的时候。在图4-3中,视频编码器生成了3个访问单元,它们都被加上了时间标签,分别是10:27, 10:28和10:29。在这个例子里(很低的帧率),第一个访问单元将在10:27分被解码,第二个将在10:28分被解码,第三个将在10:29分被解码59。图4-3 加上时间标签的视频访问单元432 时间基准的分析为了分配时间标签,编码器必须有一个时钟基准。当前时间是由复用器里精确的时钟维护的。任何时刻一个新的访问单元被编码器生成,当前时间被检查,并且一个基于当前时间的时间标签被赋给这个访问单元。要注意的是,时间标签不是仅仅等于当前时间;它也不能等于当前时间。时间标签代表的是解码端访问单元将被解码的时间。这肯定是出现在将来的一个时间。因此当一个时间标签第一次被复用器分配给访问单元,它总会被刻意地加上一个将来时间的偏移量。应 该给时间标签加上多少的偏移量取决于它本身和许多因素,包括编码器的大小,解码器的缓冲区大小,基本流在复用器里的比特率等等。偏移量必须足够大,使得访问单元通过编码器缓冲区,通过复用被传送到解码器,并且完全写入到解码器的缓冲区中。为了利用时间标签,解码器也必须有自己的准确的时钟,以决定解码某一个访问单元的正确时间。本质上需要解码器端的时钟和复用器的时钟同步。这是通过加上在复用器里对当前时间的定期采样(对于复用器时钟)而实现的。解码器使用这些采样来检查和纠正自己的时钟。复用器和解码器端使用的时钟不是以小时和分钟来衡量时间的,而是用42bits的二进制码表示的以27MHz为单位的值。该时钟不需要和任何国家时钟标准有关。MPEG-2复用的传输流可能含有许多独立的节目,每个节目有自己独立的时钟,这叫做节目时钟(Program Clock),它不需要和其他节目的时钟同步(虽然也允许许多节目共享一个节目时钟)。构成一个节目的访问单元被赋予时间标签,这些时间标签是基于相关的节目时钟的。节目时钟的采用就叫做节目时钟参考PCR (Program Clock Reference),它们被携带在传输流中使得解码器的时钟和将要被解码的节目的时钟相同步。PCR必须至少每0.1秒出现一次。对一个节目来说,究竟哪个传输包携带有PCR的信息可以其PMT表中找到6。433 时间标签的分析在MPEG-2中,时间标签主要有两类:显示时间标签PTS(Presentation Time Stamp)和解码时间标签DTS(Decoding Time Stamp)。PTS是最基本的时间标签,它指出访问单元应该在什么时间从解码器缓冲区里读出,解码并呈现给观众。MPEG假设这些可以瞬时完成。在实际中,数据传送到解码器和解码过程本身是需要一些时间来完成的,对于解码器设计者来说,他们需要负责时间的补偿。对许多类型的基本流,PTS是唯一需要的时间标签。然而,在携带MPEG视频的基本流中,还需要有第二类时间标签DTS。DTS表示何时从解码器缓冲区中移出访问单元并解码,但是不显示给观众。相反地,被解码的图片被暂时存储起来,将在以后播放。这种处理方法仅对MPEG编码的视频序列中的I图和P图有效(它们被B图分离)。DTS从来不会单独出现,它总是伴随着PTS出现的。这里,PTS表示合适被解码的图片最终从临时存储区中取出并呈现给观众。所以,PTS总是比相应的DTS要大(更加将来)。没有必要给每个访问单元分配时间标签。解码器总是可以提前知道将要解码的访问单元的速率,这己经足够提供临时的时间标签,使得解码过程保持长远的同步。MPEG规定时间标签必须至少每0.7秒在视频或音频PES包中出现一次。在 MPEG-2复用中,时间标签出现在PES包的头部可选字段中。如果访问单元有与其相关的时间标签,那么这个那么这个时间标签被编码在该访问单元开始的PES包的头部6。44 视频同步策略在前面介绍过,视频图像编码有3种图像类型,I帧,P帧和B帧。所有的B帧解码和显示时间相同,所以B帧的PES包不存在DTS域,对应的DTS计数值即为其PTS值。而对于I帧和P帧而言,两种类型处理方式基本相同,只是对于编码器的第一个GOP的第一个I帧是特殊情况,由于其只是在整个编码过程中开机瞬间仅有一帧为特殊,所以可以不必考虑。对于双B帧GOP的I和P帧,其PTS值应超前DTS值3帧的时间。对于采用50Hz而言,其大约是120ms;对于采用60Hz,其大约为l00ms。当解码器检测到视频PES包头部到达解码器时,系统从头部数据段中抽取DTS和PTS并保存到一张列表中。解码时,每解到一帧图像,则可以从列表中读出相应的DTS/PTS,把此DTS/PTS值与STC值比较。当二者相等时,当前图像开始解码/显示。在MPEG-2的传输流中并非每一个PES包或图像均有PTS和DTS,一般间隔为0.7秒。对于没有PTS的图像要进行插值,可以在前一图像的PTS基础上加一增量(对DTS一样),即: (4-1)其中,n-当前的Picture数。对于在PES包中仅有PTS的情况,则认为DTS等于PTS。对于图像来说,其演示单元为不可分割的视频帧,显示输出可采用简单的重复显示帧或跳帧的方法实现。(1)当PTS一STC0.5帧间隔时,此时解码稍快,可重复显示上一图像帧,视频解码暂停,等到STC与PTS相同时再显示当前图像;(2)STC-PTS0.5帧间隔时,系统解码过慢,应根据该帧的结构做出相应的同步调整:若该帧为B帧,则系统丢掉当前帧,解码下一帧,同时显示前一帧;若该帧为P帧,则冻结前一帧图像并停止解码,等待下一I帧或者VideoSequence的到来。由于比较判决在最后的显示单元,解码后视频帧数据和相应的PTS值(如果有的话)一起传送到最后一级,而视频的同步控制在解码输出部分,要实现当前帧立即跳帧,图像的解码必须提前2帧以上,并要有相应容量的存储器支持。如果 采 用 滞后跳帧控制方法,跳帧在判决产生后控制解码处理部分,不是直接控制当前帧是否输出。对于I或P帧,放弃显示解码的图像帧,直接显示下一帧;对于B帧,解码器跳过未解码的一帧,直接解码下一帧图像。由于跳帧是滞后执行的,跳帧在判决产生后的连续几帧都会使PTS偏差(如果有PTS的话)超过阐值,需要判决时增加滞后的识别机制,附带增加的时间偏差并不多,最大的益处是对解码和存储容量没有特别的要求56。45 音频同步策略一般来说,音频的同步可以采用两种方法:跳/重复帧方法和调节数字分频比的方法。1 跳/重复帧这种方法 ,音频同步和视频同步类似,但音频处理要有更多的考虑。简单的重复显示帧或者跳帧的方法,音频的“帧”不能太长,否则会产生噪音或跳音,引起听觉的不自然。音频输出没有类似视频帧间隔的限制,一个音频样本的时间间隔比较短。PTS的最大间隔是0.7s,当PCM或系统时钟有40ppm的偏差时,每次引起的偏差最多有0.7X40X10-6X44.1 X103=1.2348个样点,可以考虑每次跳一个样点或者重复一个样点的方法。2 数字分频比采用跳/重复帧的方法,最大的缺点是容易产生噪音或跳音;而采用调节数字分频比的方法,不仅解决了这个问题,而且实现起来更容易。音频PCM的时钟从本地系统时钟分频而来,其分频比N可控。音频的播放通过不断微调分频比N而微调播放的速度,实现音频播放的同步。当音频播放过快时,即PTS-STC 0,调小N,放慢播放速度;当音频播放过慢时,即PTS-STCO,调大N,加速播放速度。由于不存在跳帧或重复帧,不会引起听觉杂音56。4.6 小结本章在上一章详细介绍视频编码原理的基础上简单地阐述了视频解码的过程,然后总结了有关视音频同步方案的有关问题,从中可以看出在解码的过程中是如何达到同步的,实现的办法可以自己去寻找,去改进,这就是我们研究同步问题的目的。第五章 MPEG-2视频部分码流信息分析的软件实现51 引言本次设计是继承上届师兄做的PSParse码流分析软件进行的,PSParse只分析到了视频序列头。我所要做的就是把TS流中的ES信息,即AUDIO和VIDEO包的信息提取出来并进行分析,由于时间关系,只进行了图像组层头部信息,图象层头部信息,图象层扩展信息,条层头部信息的提取与分析。52 设计原理本设计的方案主要是根据MPGE-2运动图像压缩编码国际标准来进行的。传输流是根据国际标准来定义的一种数据流,因此,它的每一位的数据都是可以找到相关的规律的,所以只要根据运动图象压缩编码的国际标准来对传输流进行操作就能查找到PSI表信息,从而解出PAT表,PMT表,找出ES流中的基本的VIDEO包,再解VIDEO包就可以得到序列层头部信息,图象组层头部信息,图象层头部信息,条层头部信息等。53 设计流程531 PSParse软件的回顾这个程序的总流程是以解PAT包到解PMT包到解VIDEO包一个一个分别解出并且显示的,图5-1是PSParse程序的运行结果。界面右上方是开始按钮,当程序开始分析后,就将获得的数据显示在应有的空格内。简要介绍一下这个软件的分析结果:PES header分析如下start_code:实验结果是0x000001这个是PES分组开始码stream_id:它为1110*的为视频信息,实验结果是0xE0。PES length:是PES的总长度,PES最大可以是65535,它将数据分段装入TS包中,解码时候,要分别取出来,再进行组合。其他的PES分段都是解码相关内容,就不一一叙述了。VIDEO header分析如下Sequence_header:0xb3,中定义了视频比特流中用到的起始码,0xb3作为sequence_header_code 被定义了。Horizontal_size_value:720,是水平像素。Vertical_size_value:576,垂直像素;这两个像素刚好和电视的像素匹配。Ratio:这个高宽比是通过VIDEO中的aspect_ratio_information得到的,在中,对aspect_ratio_information的不同值都取了不同的高宽比。这个TS流的高宽比刚好对应于3/4。图5-1 PSParse软件的分析界面532 图像组层头部信息的提取图象组层头部信息主要包括group_start_code,closed_gop,broken_link。group_start_code是一个十六进制位串000001B8,closed_gop和broken_link都是一个一位的标志。这部分信息提取的主要思路是先查找到0000 01B8的字节位,然后根据它们之间位数的关系进行移位查找,把closed_gop和broken_link的值也查找到,然后保存并导出为txt文本形式。图5-2是程序group部分的流程图:图5-2 group部分程序流程图533 图象层头部信息和图象扩展信息的提取这部分主要包括picture_start_code,temporal_reference,picture_coding_type,vbv_delay等信息。picture_extension中包含的信息主要是:f_code00,f_code01,f_code10,f_code11,intra_dc_precision,picture_structure,top_field_first等等。picture_start_code是一个00000100的十六进制32位的串,temporal_reference是与每个输入图象均有关系的10位无符号整数,picture_coding_type指明了图象的编码类型,vbv_delay 它是一个16位无符号整数。这部分信息查找的思路是:先根据00000100查找出picture_start_code,然后以这个为基础开始进行位移的操作,从而查出剩下的信息。最后导出txt文本的格式。picture extension中的信息通过CListCtrl控件以界面的形式直观的显示出来。图5-3是Picture部分的程序流程图(因为picture extension中的信息查找流程图与picture的类似,所以就不在这里赘述)。图5-3 picture部分程序流程图5.3.4 条层信息的提取条层信息主要包括:slice_start_code,slice_vertical_position,priority_breakpoint等。slice_start_code 它是一个32位的串。开始的24位为十六进制值000001,后8位是slice_vertical_position,在十六进制区间01-AF取值。priority_breakpoint 这个7位整数指明了比特流在语法中的分割点。这部分信息提取的主要思路也是从slice_start_code开始,找到它以后就可以移位进行其他信息的查找,图5-4是Slice部分的程序流程图。图5-4 slice部分程序流程图54 数据的提取显示与分析541 实现界面在原有的PSParse软件的基础上添加了一个“打开TS分析”按扭,点这个按扭后选取TS文件然后稍微等待10几秒(因为数据的提取需要一定的时间),然后跳出一个“分析结束”的对话框,并且在那个TS文件的目录下会新生成3个txt文本文件,分别为:gopdata.txt,picturedata.txt,slicedata.txt。此外利用CListCtrl控件添加了一个新的数据显示窗口,在“VIDEO 包头”下面,为“图象扩展信息”,如图5-5所示。图5-5 实现界面542 数据分析点“打开TS分析”,然后选择sinxx.ts文件,等待大概10几秒后,生成了三个txt文本形式的文件。1 GOP头部信息的分析打开gopdata.txt文本可以看到如下的信息(只提取了其中一部分):group_start_code address:9926h;closed_gop:1;broken_link:0group_start_code address:1E167h;closed_gop:1;broken_link:0group_start_code address:3277Dh;closed_gop:1;broken_link:0group_start_code address:47364h;closed_gop:1;broken_link:0group_start_code address:5BA36h;closed_gop:1;broken_link:0group_start_code address:70277h;closed_gop:1;broken_link:0group_start_co

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论