5.系统的解码
由前述,MPEG-2系统要解决的问题是:
1)系统的复用与解复用
MPEG-2采用时分多路复用技术,让多路信号在同一信道上占用不同的时隙进行存储和传输,以提高信道利用率。
2)声音图像要同步显示
由于时分多路复用中的位时隙、路时隙、帧之间具有严格的时间关系,这就是同步。区分各路信号以此为据。为了恢复节目,先对ES进行解码。声音、图像信号的重现需要同步显示,从而要求收发两端数据流要达到同步。为此,MPEG-2系统规范通过在数据中插入时间标志来实现:SCR或PCR为重建系统时间基准的绝对时标;在有效PS和TS产生前,已插入PES的DTS和PTS为解码和重现时刻的相对时标。
3)解码缓存器无上下溢
MPEG-2系统是由视音频编码器、编码缓存器、系统编码器及复用器、信道网络编解码器及存储环境编解码器、系统解码器及解复用器、解码缓存器和视音频解码器构成。其中,编码缓存器和解码缓存器延迟是可变的;信道网络编解码器及存储环境编解码器和从视/音频编码器输入到视音频解码器输出,延迟是固定的。这表明,输入视/音频编码器的数字图像和音频取样,经过固定的、不能变的点到点延迟后,应该精确地同时出现在视音频解码器的输出端。编码及解码缓存器的可变延迟的范围就应该受到严格限制,使解码缓存器无上、下溢。
为了解决复用、同步、无溢出问题,需要定义1个系统目标解码器(STD-System Target Decoder)模型。用于解释传输流TS解码并恢复基本流ES时的过程;用于在复用器数据包交织时确定某些时间的边界条件。因此,每个相应的MPEG-2 TS必须借助于专门的解码器模型来解码。图9为TS的系统目标解码器模型。
STD与实际解码器的主要差别是:STD对数据流的操作是瞬时完成的,无须时间延迟。而实际解码器是有延迟的。于是,可以利用这个差别,根据STD设计解码器的缓存器的容量。例如,PAL制视频图像每隔1/25 s解码出1帧,压缩视频以4Mb/s码率到达视频解码器。要完全移走1帧图像,视频解码器比STD的时间要延迟1/25 s ,其缓存器容量要比STD规定容量大4Mb/s×1/25s = 0.16Mb。相对于STD,视频解码及显示有延迟,音频解码及显示也应延迟同样的时间,以便视音频正确同步。
要防止STD上溢或下溢,首先要确定解码延迟时间。为此,就要找出第一个DTS字段值与起始SCR字段值的差值。这个差值指出解码器第一个I帧在复用数据流第一个SCR字段的最后1个字节之后的解码的时刻。利用I帧和P帧编码时间和显示时间的不同时性,计算出PTS与DTS之时间差,从而确定P帧在重新排序缓存器中存储的时间,或P帧在重新排序缓存器中停留多长时间后开始解码。只要在解码器开始解码前,完全传送完1个存取单元,就不会产生下溢。若每个存取单元在解码前瞬时的缓存器最大充满度与STD数据流缓存器容量大小比较适配,就不会产生上溢。
由图9可见,MPEG-2 TS包含N个ES的数据。按照PID值,根据ES的性质是视频的还是音频的或系统的,通过换向器,将每个相关数据包切换到相应路径,并分别传送给各个传输缓存器(TB-Transport Buffer)。如视频ES输入到传输缓存器TB-1,音频ES输入到传输缓存器TB-N,PSI输入到系统缓存器SB-PSI.从STD输入端传送到TB或SB是瞬时的。
TB的容量略大于2个传输流包的相应长度,MPEG规定为512 B。有利于较高复用器码率与较低解码存储器存取速度相适应,因缓存器读出采用较低的ES速率就可以实现。之所以要采用ES速率,是因为要降低解码硬件对处理器支持的PSI信息分析的复杂性,从而规定缓存器读出速度最大不超过传输速率0.2%。视频基本数据流从TB-1输出时,由于包头再也不能识别TS数据包结构,并已去除了全部相关传输记录信息,同时误差指示器查询可能有的包误差。因此,要抛弃PES包头,并将所有存储在TB-1中的PES包的净负荷数据全部送到主存储器1,以便为解码器1提供数据。净负荷数据从TB-1传送到主存储器1是瞬时完成的。
DTS标明从STD的ES解码缓存器移走存取单元全部数据的时刻。对输入到主存储器1-N的所有存取单元的数据,都必须在DTS规定的瞬时移走。解码器1-N及系统信息解码器的解码是瞬时完成的。顺便说明的是:传输数据包的同时,应将误差信息传送给解码器,以便对数据内容解扰,至于对内容的进一步解码,已不是传输解码器的事情。数据解压缩、显示单元重建及在正确的显示时间显示已同步的序列,是解码系统的任务。
PTS标明STD出现显示单元(PU-Presentation Unit)的时间,显示之前,I帧和P帧需要经过重新排序缓存器的延迟。
节目专用信息PSI包括节目源结合表PAT(PID=0)、条件接收表CAT(PID=1)、节目源映射表PMT。由于PSI的数据量比较小,系统缓存器SB-PSI的规模限制在1536B。到达系统信息解码器的PSI传输流,在该解码器中检查所期望节目的相关信息。解码器通过PSI表了解来自数据流的哪些数据包,即数据中哪些PID应继续传送,其余不期望的节目数据包可忽略。显然,存储在节目源映射表PMT中的PID值,是用于检测TS内所需要的数据包的。
二、MPEG-2的编码
编码是MPEG-2标准的核心内容之一,其涉及到MPEG-2视频流层结构、MPEG-2帧间编码结构、MPEG-2的类与级、MPEG-2运动估值等技术。
1. MPEG-2视频流层结构
为了便利于误码处理、随机搜索及编辑,MPEG-2用句法定义了1个层次性结构,用于表示视频编码数据。MPEG-2具体的视频流层结构如图10所示:将MPEG-2视频流分为图像序列层(VSL-Video Sequence Layer)、图像组层 (GOPL-Group of Pictures Layer)、图像层(PL-Picture Layer)、宏块条层(SL-Slice Layer)、宏块层(ML-Macroblock Layer)、块层(BL-Block Layer)共6个部分,每层都有确定的功能与其对应。
1) 图像序列层(VSL)
VSL是由数据头及一系列图像组(GOP)组成的视频数据包,具体是指一整个要处理的连续图像。用于定义整个视频序列结构,可采用逐行或隔行两种扫描方式。其中,数据头给出了有关图像水平大小、垂直大小、宽高比、帧速率、码率、视频缓存校验器的大小、量化矩阵、层号(Layer-id)、分级法(Scalable mode)等,为解码提供了重要依据。
2) 图像组层(GOPL)
GOPL是图像序列层中若干图像组的1组图像,由数据头和若干幅图像组成,用于支持解码过程中的随机存取功能。图像分组是从有利于随机存取及编辑出发的,不是MPEG-2结构组成的必要条件,可在分组与否之间灵活选择。其中,数据头给出了图像编码类型、码表选择、图像组头部开始码、视频磁带记录时间及控制码、涉及B帧处理的closed GOP、broken link。为了给编辑数据流提供接入点,第1个总是I帧。
3)图像层(PL)
PL由数据头和1帧图像数据组成,是图像组层若干幅图像中的1幅,包含了1幅图像的全部编码信息。MPEG-2图像扫描可有逐行或隔行两种方式:当为逐行时,图像为逐帧压缩;当为隔行时,图像为逐场或逐帧压缩,即在运动多的场景采用逐场压缩,在运动少的场景采用逐帧压缩。
因为,从整个帧中去除的空间冗余度比从个别场中去除得多。其中,数据头提供的基本部分有头起始码、图像编号的时间基准、图像(I,B,P)帧类型、视频缓存检验器延迟时间等,扩展部分有图像编码扩展、图像显示扩展、图像空间分级扩展、图像时间分级扩展等。其中,基本部分由MPEG-1及MPEG-2共用,扩展部分由MPEG-2专用。
一幅视频图像是由亮度取样值和色度取样值组成的,而亮度与色度样值比例的大小是由取样频率之比决定的。在MPEG-2中,亮度与色度之间的比例格式有4:2:0(或4:0:2)、4:2:2、4:4:4三种。
4) 宏块条层(SL)
SL由附加数据和一系列宏块组成,其最小长度 = 1个宏块,当长度 = 图像宽度时,就成了MPEG-2层面中最大宏块条长度。为了隐匿误差,提高图像质量,将图像数据分成由若干个宏块或宏块条组成的一条条位串。一旦某宏块条发生误差,解码器可跳过此宏块条至下一宏块条的位置,使下一宏块条不受有误差而无法纠正的宏块条的影响,一个位串中的宏块条越多,隐匿误差性能就越好。为此,附加数据部分定义了宏块条在整个图像中的位置、默认的全局量化参数、变量优先切换点(PBP-Priority Break Point)。其中,PBP用于指明数据流在何处分开,解码器要在两个数据流的恰当点处切换,以保证读取完整、正确的解码信息,确保解码完整无误。注意,在离散余弦反变换(IDCT-Inverse Discrete Cosine Transform)时,SL可提供重新同步功能。
5) 宏块层(ML)
ML是宏块条层中一系列宏块中的1块,由附加数据、亮度块和色度块共同组成。其中,亮度为16×16像素块,称为宏块。宏块是码率压缩中运动补偿的基本单元,由4个8×8像素块构成,用于消除P图像与B图像之间的时间冗余度。色度块由
该文观点仅代表作者,本站仅提供信息存储空间服务,转载请注明出处。若需了解详细的安防行业方案,或有其它建议反馈,欢迎联系我们。