视频编解码器中的片层的制作方法

文档序号:7607534阅读:134来源:国知局
专利名称:视频编解码器中的片层的制作方法
技术领域
本发明涉及用于数字式编码、解码并处理视频、图像和其它数字媒体内容的技术。
背景技术
数字视频消耗大量的存储和传输容量。典型的原始数字视频序列包括每秒15或30帧。每帧可包括数万或数十万个像素(也称为pel)。每个像素表示图片的小元素。在原始形式中,计算机通常将像素表示为总共有24个比特的三个样本的集。例如,一个像素可包括定义像素灰度成分的8-比特亮度样本(也称为luma样本),以及定义像素色彩成分的两个8-比特色度样本值(也称为chroma样本)。因而,典型的原始视频序列的每秒比特数或比特率可以是5百万比特/秒或以上。
许多计算机和计算机网络缺乏处理原始数字视频的资源。为此,工程师们使用压缩(也称为编码)以降低数字视频的比特率。压缩通过将视频转换成较低的比特率形式来降低存储并传输视频的成本。解压缩(也称为解码)从压缩形式中重构原始视频版本。“编解码器”是编码器/解码器系统。压缩可以是无损的,其中视频的质量未受损,但比特率的降低受视频数据固有的可变性(有时称为熵)限制。或者,压缩可以是有损的,其中视频的质量受损,但可获得的比特率降幅更大。有损压缩常结合无损压缩使用-在系统设计中,有损压缩建立信息的近似,而无损压缩技术被用来表示该近似。
一般而言,视频压缩技术包括“图片内”压缩和“图片间”压缩,其中图片是例如逐行扫描的视频帧、隔行扫描的视频帧(具有用于视频半帧的交替行)、或隔行扫描的视频半帧。对于逐行帧,图片内压缩技术压缩各个帧(通常称为I-帧或关键帧),而图片间压缩技术相对前面和/或随后的各帧(通常称为参考或锚帧)压缩各个帧(通常称为预测帧、P-帧、或B-帧)。
预测帧可分成称为宏块的区域。参考帧中对于特定宏块的匹配区域通过发送该宏块的运动向量信息来指定。运动向量指示了参考帧中其像素用作像素的当前宏块的预测值的区域位置。当前宏块(或其各块)和宏块预测值之间像素与像素之差的通常称为误差信号或残差被导出。该误差信号通常具有比原来信号更低的熵。因此,信息可以较低速率进行编码。通过在一个或多个用作预测值的参考帧中搜索匹配区域来确定用于帧的一个区域的运动向量,编码器执行运动估计。编码器或解码器通过将该运动向量应用于在一个或多个参考帧中寻找预测值,来执行运动补偿。
宏块的运动向量值常常相关于空间上位于四周的宏块的运动向量。因而,用来传送运动向量信息的数据的压缩可通过编码运动向量与从相邻运动向量形成的运动向量预测值之间的差异来获得。
在视频压缩技术中,经常地,像素块或诸如残差的其它空间域视频数据被转换成常是频域(即频谱)数据的变换域数据。频谱数据系数的结果块可被量化,然后进行熵编码。
当在显示结果视频之前解压缩数据时,解码器通常执行压缩操作的逆运算。例如,在解压缩数据的同时,解码器可执行熵解码、逆量化和逆变换。在使用运动补偿时,解码器(和编码器)从一个或多个先前已重构的帧中(现在用作参考帧)重构一个帧,然后新的重构帧可用作后面帧的运动补偿的参考帧。
数字编码视频的许多典型使用情形涉及经编码视频在各设备之间、以及频繁地在地理上相距遥远的位置之间的传送。此外,许多常用数据传送系统使用基于数据包的传输协议,在其中数据传输被分成称为“数据包”的独立路由单元。携带数字视频的这些各种传送系统常受噪音和传输差错的其它源的影响,并会经历“数据包丢失”。这种差错和信息包丢失可导致不能解码单个帧、或视频序列的多个相关帧。
因此需要将视频序列中图片的部分区域编码为可独立解码的单元。这有助于使能视频流的分组化。此外,这在压缩后的视频比特流中引入了附加冗余,这会增加对传输差错和数据包丢失的复原能力(resilience)。例如,因传输差错或丢失信息包的解码损失可限于部分区域,而不是视频序列的完整图片。然而,该复原能力是以压缩效率为代价而获得的。
许多公司都已生产了视频编解码器。例如,微软公司已生产了版本为WindowsMedia Video 8的视频编码器和解码器。除了这些产品以外,许多国际标准指定经压缩视频信息的视频解码器和格式的各个方面。这些标准包括H.261、MPEG-1、H.262、H.263和MPEG-4标准。直接地或隐含地,这些标准还指定某些编码器细节,但并未指定其它编码器细节。这些产品和标准使用(或支持使用)上述压缩和解压缩技术的不同组合。特别地,这些产品和标准提供部分图片单元编码的各种技术。
一种这种技术将视频序列内的帧分成多个片(slice)。片被定义为以其原来的从左到右顺序包含宏块的一个或多个毗邻行。片从一行的第一个宏块开始,并在同一或另一行上的最后一个宏块结束。
例如MPEG-1、MPEG-2、H.263(具有基本等同于片的GOB、或具有Annex K片结构化编码模式)、MPEG-4部分2和H.264/JVT/MPEG-4部分10的各种标准都将片作为其语法的一部分。其中因为差错/丢失的稳健性原因,它们在跨片边界上都禁用了内预测和运动向量预测以及大多数其它形式的预测。其中只有H.263(Annex J)和H.264/JVT包括环形滤波器。隔行扫描的H.263处理比较基本(半帧编码使用Annex W补充增强指示)。H.264具有更为耐差错的标头结构,并允许编码器选择在跨片边界上是否要应用环形滤波。
在这些各种视频解码标准中片的实现都致力于达到复原能力和编码效率之间的不同平衡。

发明内容
在此描述的视频编解码器和比特流语法包括设计成灵活的片-层(slice-layer),并提供差错-复原能力和压缩效率的有效组合。该片-层提供以下关键特征a)用逐行、隔行扫描-帧和隔行扫描-半帧编码方法工作的有效片寻址机制,b)在片-层中有效重新传输图片标头的灵活和有效机制,以及c)通过禁用跨片-边界上所有形式的预测、重叠和环形-滤波的解码独立性,从而不管图片其它区域中的差错如何,以内-模式编码的片都可无差错地重构。
从以下参照附图进行的各实施例的详细描述中,本发明的其它特征和优点将变得显而易见。


图1是采用在此所述的片层编码的视频编码器的框图。
图2是采用在此所述的片层编码的视频编码器的框图。
图3是示出采用片层编码的视频编码器/解码器所使用的压缩后比特流中表示的视频序列的各个元素的分层结构排列的示图。
图4是示出采用片层编码的视频编码器/解码器所使用的压缩后比特流的编码语法的序列-层语法图。
图5示出采用片层编码的视频编码器/解码器所使用的压缩后比特流的编码语法的帧-层语法图。
图6是示出采用片层编码的视频编码器/解码器所使用的压缩后比特流的编码语法的片层-层语法图。
图7是示出在块边界上执行的重叠平滑(overlap smoothing)示例的示图。
图8是示出在执行环内分块滤波的I图片中的水平块边界像素的示例的示图。
图9是示出在执行环内分块滤波的I图片中的垂直块边界像素的示例的示图。
图10是图1和2的视频编码器/解码器的适当计算环境的框图。
图11是示出环形滤波中使用的4-像素分段的集合的示图。
图12是示出滤波操作中使用的像素的示图。
图13是对一小分段的第三像素对执行滤波操作的伪码列表。
图14是对一小分段的第一、二和四像素对执行滤波操作的伪码列表。
具体实施例方式
以下描述涉及视频编解码器和比特流语法中设计灵活的片层的实现,并提供差错复原能力和压缩效率的有效组合。片层编码的示例性应用在图像或视频编码器和解码器中。相应地,片层编码在通用图像或视频编码器和解码器的环境中描述,但可选择地结合到各种其它图像和视频编解码器的比特流语法中,这些编解码器可在细节上与以下所述的示例性比特流语法有所变化。
1.通用视频编码器和解码器图1是通用视频编码器(100)的框图,图2是通用视频解码器(200)的框图,其中可结合WMV9/VC9变换。
编码器和解码器内模块之间的所示关系表示编码器和解码器中的信息主流;其它关系为简化起见并未示出。特别地,图1和2通常并未示出表示用于视频序列、帧、宏块、块等的表示编码器设置、模式、表格等的辅助信息。这些辅助信息通常在辅助信息的熵编码之后在输出比特流中发送。输出比特流的格式可以是WindowsMedia Video格式或另一种格式。
编码器(100)和解码器(200)是基于块的,并使用4∶2∶0的宏块格式,其中每个宏块包括4个8×8亮度块(常被视为一个16×16宏块)和2个8×8色度块。或者,编码器(100)和解码器(200)是基于对象的、使用不同的宏块或块格式、或对不同于8×8块和16×16宏块的大小或配置的像素集执行操作。
取决于所需的压缩实现和类型,编码器或解码器的模块可添加、略去、分裂成多个模块、与其它模块相组合、和/或用类似模块替换。在其它实施例中,具有不同模块和/或模块其它配置的编码器或解码器执行一种或多种所述技术。
A.视频编码器图1是一般视频编码器系统(100)的框图。编码器系统(100)接收包括当前帧(105)的一个视频帧序列,并产生压缩后视频信息(195)作为输出。视频编码器的特定实施例通常使用通用编码器(100)的变体或补充版本。
编码器系统(100)压缩预测帧和关键帧。为演示起见,图1示出关键帧通过编码器系统(100)的路径,以及前向-预测帧的路径。编码器系统(100)的许多组件用于压缩关键帧和预测帧。由那些组件执行的确切操作可取决于所压缩的信息类型而变化。
预测帧[也称为p-帧、用于双向预测的b-帧、或中间编码的帧]根据来自一个或多个其它帧的预测(或差异)来表示。预测残差是所预测的和原来帧之间的差异。相反,关键帧[也称为I-帧、内编码帧]不参照其它帧进行压缩。
如果当前帧(105)是前向预测帧,则运动估计器(110)参照参考帧估计当前帧(105)的宏块或其它像素集的运动,其中参考帧是缓冲在帧存储器(120)中的先前重构帧(125)。在其它实施例中,参考帧是后面的帧或者当前帧是双向预测的。运动估计器(110)输出诸如运动向量的辅助信息运动信息(115)。运动补偿器(130)将运动信息(115)应用于先前重构帧(125)以形成运动补偿后的当前帧(135)。然而,预测很少是完美的,且运动补偿后的当前帧(135)和原来的当前帧(105)之间的差异是预测残差(145)。或者,运动估计器和运动补偿器应用另一类型的运动估计/补偿。
频率变换器(160)将空间域视频信息转换成频域(即频谱)数据。对于基于块的视频帧,频率变换器(160)应用在下节中描述的变换,该变换具有类似于离散余弦变换[“DCT”]的属性。在某些实施例中,频率变换器(160)将频率变换应用于关键帧的空间预测残差的块。频率变换器(160)可应用8×8、8×4、4×8或其它大小的频率变换。
然后量化器(170)量化频谱数据系数的各个块。该量化器将均匀的标量量化应用于频谱数据,其中步长在逐帧或其它基础上变化。或者,量化器将另一种类型的量化应用于频谱数据系数,例如不均匀的向量或非自适应量化,或者直接在不使用频率变换的编码器系统中量化空间域数据。除了自适应量化之外,编码器(100)可将帧丢弃、自适应滤波或其它技术用于速率控制。
当需要重构后的当前帧用于随后的运动估计/补偿时,逆量化器(176)对量化后的频谱数据系数执行逆量化。然后反向频率变换器(166)执行频率变换器(160)的反向操作,产生(预测帧的)重构后预测残差或重构后的关键帧。如果当前帧(105)是关键帧,则重构后的关键帧被取作重构后的当前帧(未示出)。如果当前帧(105)是预测帧,则重构后的预测残差被添加到运动补偿后的当前帧(135)中以形成重构后的当前帧。帧存储器(120)缓冲重构后的当前帧,以用于预测下一个帧。在某些实施例中,编码器将分块滤波器应用于重构后的帧以自适应地使帧块中的间断点平滑。
熵编码器(180)压缩量化器(170)的输出以及某些辅助信息(例如运动信息(115)、量化步长)。典型的熵编码技术包括算术编码、差分编码、哈夫曼编码、游程长度编码、LZ编码、字典编码以及以上的组合。熵编码器(180)通常使用用于不同类型信息(例如DC系数、AC系数、不同类型的辅助信息)的不同编码技术,并可从特定编码技术内的多个代码表中选择。
熵编码器(180)将压缩后的视频信息(195)置入缓冲器(190)。缓冲器层指示符被反馈给比特率自适应模块。压缩后的视频信息(195)以恒定或相对恒定的比特率从缓冲器(190)中放空,并以该比特率存储用于后续流。或者,编码器系统(100)在压缩后立即流传送压缩后的视频信息。
在缓冲器(190)之前或之后,压缩后的视频信息(195)可被信道编码用于在网络上传输。信道编码可将差错检测和纠正数据应用于压缩后的视频信息(195)。
B.视频解码器图2是一般视频解码器系统(200)的框图。解码器系统(200)接收包括用于视频帧的经压缩序列的信息(295),并产生包括重构帧(205)的输出。视频解码器的特定实施例通常使用通用解码器(200)的变体或补充版本。
解码器系统(200)解压缩预测帧和关键帧。为演示起见,图2示出关键帧通过解码器系统(200)的路径,以及前向-预测帧的路径。解码器系统(200)的许多组件用于解压缩关键帧和预测帧。由那些组件执行的确切操作取决于所解压缩的信息类型而变化。
缓冲器(290)接收压缩后视频序列的信息(295),并使接收到的信息可用于熵编码器(280)。缓冲器(290)通常以随时间相当恒定的速率接收信息,并包括一抖动缓冲器以使带宽或传输中的短期变化平滑。缓冲器(290)也可包括回放缓冲器和其它缓冲器。或者,缓冲器(290)以变化速率接收信息。在缓冲器(290)之前或之后,经压缩的视频信息可进行信道解码和用于差错检测和纠正处理。
熵解码器(280)通常应用编码器中执行的熵编码的逆,对熵编码后的量化数据以及熵编码后的辅助信息(例如运动信息、量化步长)进行熵解码。熵解码技术包括算术解码、差分解码、哈夫曼解码、游程长度解码、LZ解码、字典解码以及以上的组合。熵解码器(280)经常使用用于不同类型信息(例如DC系数、AC系数、不同类型的辅助信息)的不同解码技术,并可从特定解码技术内的多个代码表中选择。
如果要重构的帧(205)是前向预测帧,则运动补偿器(230)将运动信息(215)应用于参考帧(225)以形成重构中的帧(205)的预测值(235)。例如,运动补偿器(230)使用宏块运动向量来寻找参考帧(225)中的宏块。帧缓冲器(200)将先前重构的帧用作参考帧。或者,运动补偿器应用另一类型的运动补偿。由运动补偿器进行的预测很少是完美的,因此解码器(200)还重构预测残差。
当解码器需要一重构帧用于随后的运动补偿时,帧存储器(220)缓冲重构后的当前帧,以用于预测下一个帧。在某些实施例中,解码器将分块滤波器应用于重构后的帧以自适应地平滑帧块中的间断点。
逆量化器(270)对熵解码后的数据执行逆量化。一般而言,该逆量化器将均匀的标量逆量化应用于频谱数据,其中步长在逐帧或其它基础上变化。或者,该逆量化器将另一种类型的逆量化应用于数据,例如不均匀的向量或非自适应量化,或者在不使用逆频率变换的解码器系统中直接逆量化空间域数据。
逆频率变换器(260)将量化后的频域数据转换成空间域视频信息。对于基于块的视频帧,逆频率变换器(260)应用在以下各节中描述的逆变换。在某些实施例中,逆频率变换器(260)将逆频率变换应用于关键帧的空间预测残差的块中。逆频率变换器(260)可应用8×8、8×4、4×8或其它大小的逆频率变换。
2.片层编码如在以上背景技术章节中所述,防止或最小化因数据包丢失和传输差错的解码失败的一种技术是通过在可独立解码的部分图片单元中(诸如在某些先前的视频编解码器标准中提供的片)编码来提供附加冗余。一般而言,片是包括宏块的一个或多个毗邻行的图片的一部分。
片的主要挑战之一是使编解码器能得到差错复原能力和压缩的恰当权衡。原因在于一些视频编解码器应用或使用情形不得不克服大量的数据包丢失,因此相当注重差错复原能力。其它应用需要极小的差错复原能力,但需要有效的压缩。在所述视频编解码器的比特流语法的实现中,该语法结合所设计的片层或其它部分图片单元层,使复原能力和效率的最佳选择得以实现。该能力用以下方法来实现A)内-片的完美重构所示语法的片-层被设计成诸如环形滤波和重叠的操作不在片上起作用。因此,如果片的全部宏块是内编码的,且如果对应于该片的图片标头是已知的,则不管该图片的其它片(区域)中的差错如何,该片都能无差错地精确重构。这允许内-片的完美(无差错)重构,并提供显著的差错复原能力。
B)重复帧标头的低成本方法图片标头信息的重复增加了图片标头在解码器上接收的可能性,但以降低压缩效率为代价。所示片-层语法使用1-比特标记来发送片中是否传输图片标头的信号。这使编码器能选择片的数量、以及重新传输图片标头的特定片。
A.语法分级结构更具体地,所示视频编解码器语法使用分级语法结构来表示视频,该分级语法结构将视频序列的每个帧分解成三个基本分级结构层-图片310、宏块340和块350,如图3所示。图片310包括亮度(Y)信道330、以及色度(Cr和Cb)信道331-332。图片层310由宏块340的行组成。每个宏块通常包含6个块来自亮度层的2×2块组,以及来自每个色度信道的块。各个块通常由8×8亮度或色度样本组成(尽管4×8、8×4和4×4变换块也可用于所示视频编解码器语法),其中变换应用于这些样本以用于基于变换的编码。
此外,称为片层320的可任选第四层可出现于图片层310和宏块层340之间。片被定义为包含以光栅-扫描顺序扫描的宏块的一个或多个毗邻行。因而,图片310可被分解成片320,而片320依次又可被分解成宏块340。在所述视频编解码器语法中,片总是在行的第一宏块上开始,并在同一或另一行的最后一个宏块上结束。因而,片包含整数数量的完整行。此外,在所述视频编解码器的比特流语法中,图片和片总是字节-对齐的,并在以下所述的可独立解码单元(IDU)中传输。新的图片或片通过以下概述的起始-代码进行检测。
B.片层定义片表示以光栅-扫描顺序扫描的宏块的一个或多个毗邻行。所述语法中的片层是可任选的,并可通过将图片编码为单个可独立解码单元(IDU)而跳过。当图片以多个IDU进行编码时,使用片。注意,片总是在行的第一宏块上开始,并在同一或另一行的最后一个宏块上结束。因而,片包含整数数量的完整行。片总是字节-对齐的,并且每个片都在不同的IDU中传输。新的片的开始通过以下概述的搜索起始-代码而被检测。
当新片开始时,复位运动向量预测值、AC和DC系数的预测值、以及量化参数的预测值。换言之,对于预测值,片中宏块的第一行被视为图片中宏块的第一行。这确保预测值中没有片间依赖性。此外,当使用片时所有的比特平面信息被以原始模式携带,该原始模式确保每个宏块携带它自己的局部信息。
C.片层语法结构参照图4和5,压缩后的视频比特流195(图1)包括压缩后的逐行视频帧序列或其它图片(例如隔行扫描帧或隔行扫描半帧格式的图片)的信息。比特流被组织成由诸如图2的解码器(200)的解码器解码的若干分级结构层。最高层为具有全部帧序列的信息的序列层。此外(如先前概述的),每个压缩后的视频帧由结构化为三个分级结构层图片、宏块和块(从顶到底)、以及可任选地在图片和宏块层之间的片层的数据组成。
图4是序列层400的语法图,该序列层400包括序列标头410,然后是图片层500(参见图5)的数据。序列标头410包括由解码器处理并用于解码该序列的若干序列层元素。
图5是用于隔行扫描内编码帧[“隔行扫描I-帧”]的图片层500的语法图。诸如逐行扫描I-帧、P-图片和B-帧的其它图片的语法图具有许多类似语法元素。图片层500包括图片标头510,后接宏块层520的数据。图片标头510包括由解码器处理并用于解码相应帧的若干图片层元素。那些元素的一部分仅当它们的出现由序列层元素或先前的图片层元素发出信号或暗示时才出现。
图6是片层600的语法图,该片层600包括片的标头610,后接宏块层520的数据。组成片的标头610的元素包括片地址(SLICE_ADDR)元素620、以及图片标头出现标记(PIC_HEADER_FLAG)元素630,如以下表格1中所示。
片地址元素620是恒定长度的9-比特语法元素。片中第一宏块行的行地址在该语法元素中是二进制编码的。在所述实现中,该语法单元的范围是从1到511,其中8192的最大图片大小对应于最多512个宏块行。
PIC_HEADER_FLAG 630是出现在片标头中的1-比特语法元素。如果PIC_HEADER_FLAG=0,则图片标头信息不再在片标头中重复。如果PIC_HEADER_FLAG=1,则出现在包含该片的图片层中的图片标头510(图5)的信息在层标头中重复。
表格1片层比特流

3.可独立解码单元的起始码在所述视频编码器/解码器的比特流语法中,压缩后视频数据的可独立解码单元(IDU)以称为起始码(SC)的标识符开始。IDU可指单个图片、或片(即图片中的宏块组)、或图片组(GOP)、或序列标头。
起始码是一个4字节序列,该序列由唯一的三-字节起始码前缀(SCP)和一个字节的起始码后缀(SCS)组成。SCP是唯一的3字节序列(0x000001)。SCS用来标识起始码之后的IDU类型。例如,图片前起始码的后缀与片前起始码的后缀不同。起始码总是字节对齐的。
封装机制(EM)被描述为防止对比特流中起始码前缀的仿真。封装前的经压缩数据称为原始的可独立解码单元(RIDU),而封装后的IDU(EIDU)指封装后的数据。
以下章节提供有关起始码和封装如何操作的编码器侧概观。小节E.2指定在解码器处的起始码和EIDU的检测。小节E.3处理RIDU从EIDU的提取。小节E.4指定各种IDU类型的起始码后缀。
A.起始码和封装-编码器观点以下描述封装RIDU以获得EIDU。
步骤1拖尾的‘1’比特被添加到RIDU的末端。EM现在将0到7比特之间附加到IDU的末端,从而IDU在字节对齐位置结束。这些“填充”比特的值为‘0’。结果,在该步骤结束时,IDU用整数数量的字节来表示,其中IDU的最后一个字节不能是零值字节。字节的结果字符串被称为IDU的有效负载字节。
步骤23-字节起始码前缀(0x000001)和标识IDU类型的适当起始码后缀被置于EIDU的开始处。
步骤3EIDU的其余通过经由以下仿真防止过程处理IDU的有效负载字节来形成。IDU中起始码前缀的仿真通过字节-填充来消除。该仿真防止过程等效于以下操作1)用值为0x00的2个字节、加上等于0x03的字节、加上等于原来3-字节字符串的最后一个字节的字节,来替换有效负载内的值为0x00的2个毗邻字节、加上其6个MSB(不管LSB值如何)中包含零值的一个字节的每个字符串。该过程如表格2中所示。
表格2仿真防止模式替换

步骤33-字节起始码前缀(0x000001)和标识IDU类型的适当起始码后缀被附于EIDU的开始处。结果的负载是经封装的IDU。
也允许编码器将任何数量的零-值填充字节插入到EIDU的末端之后。同等地,可在起始码前面插入任何数量的零-值填充字节。起始码被结构化成即使出现这些零值填充值它也可由解码器检测。在诸如H.320的一些传输环境中,编码器可使用该特征来按需插入额外的零-值填充字节,这可使解码器即使已丢失比特流与字节边界的期望对齐的跟踪也能快速恢复起始码的位置。此外,这些零-值填充字节在接合比特流、填充恒定比特率的信道等中有用。起始码之前、或在EIDU末端的零-值填充字节都未经由封装机制处理-只有RIDU数据需要这种处理。
B.起始码和EIDU的检测EIDU的检测以对起始码前缀的搜索开始。
起始码的检测从字节对齐位置开始。在不能失去字节对齐的解码器中,或者一旦已建立了字节对齐,起始码检测就进行如下。
1.在发现值为0x00的两个或多个字节加上值为0x01的一个字节的字符串的任何时候,就声明起始码前缀检测。
当检测到2个毗邻的起始码前缀时,它们之间的有效负载比特流被声明为新的EIDU。
丢失解码器中的字节对齐之后检测起始码。在已丢失字节-对齐的解码器中(如在某些传输环境中会发生的),起始码前缀检测和字节-对齐检测进行如下。在发现值为0x00的三个或多个字节的字符串的任何时候,要发现随后的任何非零字节,声明起始码前缀检测,并理解要恢复的字节对齐,从而非零字节中的第一非零比特是字节-对齐的起始码的最后一个比特。
C.从EIDU提取RIDU以下描述从封装IDU中提取原始IDU。
步骤1起始码后缀用来标识IDU的类型。
步骤2第一个步骤是要在EIDU的末端移除零-值填充字节。在该步骤之后,IDU的最后一个字节必须具有非-零值。
步骤3检测并移除用于仿真预防的字节。该过程如下在值为0x00的两个字节的字符串之后是等于0x03的字节的任何时候,等于0x03的字节被理解为仿真防止字节并去除。
表格3仿真防止数据的解码器移除

如果在比特流内看到的以下字节模式,表示差错条件(注意,失去解码器的适当字节对齐被视为一种差错条件)a)值为0x00的两个字节加上等于0x02的字节的字符串表示差错条件。
b)值为0x00的三个或多个字节的字符串,如果随后不是0x01的字节是差错条件(注意如果两个或多个等于零的字节之后是值0x01的字节,且字节对齐并未丢失,则声明检测到了随后的起始码)。
c)值为0x00的两个字节、加上值0x03的一个字节、加上不是0x00、0x01、0x02或0x03之一的字节的字符串。
步骤4在IDU的最后一个字节中,标识最后的非零比特,并去除该非零比特和所有后跟的“零”比特。该结果为原始IDU。
D.IDU类型的起始-码后缀各种IDU类型的起始码后缀如表格4所示。
表格4各种IDU类型的起始码后缀


发送序列标头后缀以标识携带序列标头410(图4)的IDU。
发送入口-点标头后缀以标识携带入口点标头的IDU。
发送图片后缀以标识包含图片310(图3)和图片标头510(图5)的IDU。
发送半帧后缀以标识包含被编码为两个独立半帧的图片的第二个半帧的IDU。
发送片后缀以标识携带片320(图3)和片标头610(图6)的IDU。
序列、入口-点、帧、半帧和片层用户数据后缀用来分别传输与序列、入口-点、帧、半帧和片相关联的任何用户定义数据。
“序列结束”是一任选后缀,表示当前序列已结束且对该序列将不传输其它数据。注意,可进行“序列结束”的传输,但序列的结束应从下一序列的标头推断。
4.片层独立性所示片层320(图3)还实现独立可解码性,以及独立重构。这使该片不管图片310(图3)其它区域中的传输差错或数据包丢失如何都能在解码器上无差错地重构。
A.独立可解码性片层320的内容独立于图片其它片或区域中的图片内容进行解码。当新的片开始时,编码器100和解码器200复位运动向量预测值、AC和DC系数的预测值和量化参数的预测值。换言之,对于预测值,该片中第一行宏块被视为仿佛它就是图片中的第一行宏块。这有助于确保各预测值中没有片间依赖性。此外,在使用片时,在图片层上以其它方式编码(例如使用比特平面编码)的宏块层信息(诸如运动向量模式、和用于AC预测的标记)与诸如变换系数的其它宏块层信息一起局部地携带。这使得每个片都能独立地解码(即不依赖从图片的其它片解码的数据)。
B.独立重构此外,片的重构过程独立于图片中任何其它片(例如相邻片)的重构而执行。相应地,不允许任何以其它方式应用于图片中相邻片之间边界上的过程(诸如以下所述的环内分块或重叠滤波)。换言之,在这种边界处理过程中,每个片的顶部或底部宏块行被视为仿佛它们是该图片的顶部和底部宏块行。
重叠平滑重叠变换是在跨块的边界交换信息的基于已更改块的变换。使用设计良好的重叠变换,可最小化分块的人工痕迹。对于内块,所述视频编解码器通过使8×8块变换耦合于滤波操作来模拟重叠变换(称为重叠平滑)。将两个内块分开的8×8块的边缘被平滑-实际上在该接口上实现重叠变换。除此之外,在任何情形中都不执行跨片边界上重叠平滑。
如果序列层语法元素OVERLAP(重叠)420(图4)被设置为1,则可在跨两个相邻内块的边缘上可有条件地对亮度和色度信道执行滤波操作。该滤波操作(称为重叠平滑)在解码该帧之后以及环内分块之前执行。然而,重叠平滑可在相关宏块片被解码之后完成,因为这在功能上等效于解码整个帧之后平滑。
图7示出用I块对P帧的一部分执行的重叠平滑的一个示例。这可以是亮度或色度信道。I块是灰色(或交叉阴影的)而P块是白色的。在该示图中,应用重叠平滑的边缘接口用交叉线图案标记。重叠平滑应用于分开边界的每一侧上的两个像素。帧的右下区域在此被示为示例。占据各个单元和块的像素用粗线分开。黑色圆圈标出在两个方向上滤波的2×2像素边角子块。
图7中的下插图示出4个标示像素,a0和a1在竖直块边缘的左边,而b1、b0在其右边。上插图示出标示为p0、p1、q1和q0的位于水平边缘两侧的像素。下一小节描述应用于这4个像素位置的滤波。
重叠平滑基于未箝位的16比特重构来实现。因为与重叠平滑相关联的前向处理可导致范围扩展到像素值所允许的8比特范围之外,所以这是必需的。重叠平滑的结果是箝位降至8比特,与重叠平滑未触及的其余像素相一致。
首先滤波竖直边缘(以上示例中的像素a0、a1、b1、b0),然后滤波水平边缘(像素p0、p1、q1、q0)。第一阶段滤波(竖直边缘平滑)之后的中间结果以16比特存储。应用于位于任一边缘两边的四个像素的核心滤波如下
y0y1y2y3=(7001-1711117-11007x0x1x2x3+r0r1r0r1)>>3]]>所滤波的原始像素为(x0,x1,x2,x3)。r0和r1是取3和4的任一值以确保无统计偏差舍入的舍入参数。各原始值通过具有显然便于实现的元素的矩阵来滤波。这些值在添加舍入因子之后,移位3个比特来给出滤波后输出(y0,y1,y2,y3)。
对于水平和竖直边缘滤波,舍入值对奇数索引列和行分别为r0=4,r1=3,假设块内的编号从1开始。对偶数索引列/行,r0=3且r1=4。滤波被定义为适当的16比特操作-因而原始像素在平滑之后被重写。对于竖直边缘滤波,像素(a0,a1,b1,b0)对应于(x0,x1,x2,x3),并被滤波成(y0,y1,y2,y3)。类似地,对于水平边缘滤波,则分别对应于(p0,p1,q1,q0)。
如图7中黑色圆圈所示的2×2边角中的像素在两个方向上都进行滤波。滤波的顺序确定它们的最终值,因此保持顺序对于比特精确性是重要的-竖直边缘滤波然后是水平边缘滤波。在概念上,箝位在两个方向的滤波阶段之后对所有已滤波的像素执行。然而,将箝位和滤波组合在一起可有一些计算优点。
环内分块滤波环形滤波是由视频编码器/解码器在块边界上执行的用来平滑间断性的过程。如果序列层语法元素LOOPFILTER(环形滤波)430(图4)被设置成1,则对每个重构后帧执行滤波操作。该滤波操作在将重构帧用作运动预测编码的参考之前执行。
因为环形滤波的意图是要平滑块边界上的间断性,所以滤波处理在接近相邻块的像素上操作。对于P图片,块边界取决于是否使用8×8、8×4或4×8逆变换可在每个第4、第8、第12等像素行或列上出现。对于I图片,滤波在每个第8、16、24等像素行和列上进行。
对于I图片,分块滤波在所有8×8块边界上执行,,但分块滤波不在片边界(被示为类似于图片边界)上执行。图8和9示出在I-图片帧的水平和竖直边界区域上滤波的像素。这些图示出分量(亮度、Cr或Cb)平面的左上角。十字形表示像素而加圆十字形表示滤波后的像素。
如图所示,没有滤波图片或片的顶部水平行和第一竖直行。尽管并未示出,也没有滤波图片或片的底部水平行和最后的竖直行。用更正式的术语,以下各行得到滤波在N=平面上水平的8×8块数量(N*8=水平帧大小)和M=平面上竖直的8×8块数量(M*8=竖直帧大小)时,滤波水平行(7,8),(15,16)...((N-1)*8-1,(N-1)*8),并滤波竖直行(7,8),(15,16)...((M-1)*8-1,(M-1)*8)。
滤波像素的顺序是重要的。首先滤波帧中全部水平边界行,然后滤波竖直边界行。
对于P图片,块可以是内或中间编码。内编码块总是使用8×8变换来变换样本,且8×8块边界总是被滤波。中间编码的块可使用8×8、8×4、4×8或4×4逆变换来构建表示残差的样本。取决于各相邻块的状态,可以滤波或不滤波当前块和相邻块之间的边界。在任一情形中,不滤波图片或片的边界。
滤波操作本小节描述在如上所述的I和P帧的块边界像素上执行的滤波操作。
因为在行或列中滤波的最小数量的毗邻像素为4且行或列中像素的总数量总是4的倍数,所以滤波操作在4个像素的片段上执行。
例如,如果滤波组成两个块之间竖直边界的8个像素对,则这8个像素被分成两个4-像素片段1100,如图12所示。在每个4-像素片段中,首先滤波由X标示的第三像素对。该滤波操作的结果确定是否也滤波该分段中的另三个像素,如下所述。
图10示出在对第三像素对执行的滤波操作中使用的像素1200。像素P4和P5是可在滤波操作中变化的像素对。
图13的伪码1300示出在每个片段的第三像素对上执行的滤波操作。值filer_other_3_pixels指明是否也要滤波片段中的其余三个像素对。如果filer_other_3_pixels为真,则滤波另三个像素对。如果filer_other_3_pixels为假,则不滤波它们且滤波操作继续到下一4-像素片段。图14的伪码1400示出如果filer_other_3_pixels为真对第1、第2和第4像素对执行的滤波操作。
本小节使用竖直边界作为示例。同样的操作可用于滤波水平边界像素。
5.计算环境片层编码的上述实现可在执行图片和视频信号处理的各种设备的任一种上执行,包括计算机;图片和视频处理、传输和接收设备;便携式视频播放器;可视会议;Web视频流应用等。图片和视频编码技术可在硬件电路(例如ASIC、FPGA等电路)、以及在如图10所示的计算机或其它计算环境内执行(在中央处理单元(CPU)、或专用图形处理器、视频卡等上执行)的图片和视频处理软件中实现。
图10示出可实现所述片层编码的适当计算环境(1000)的通用示例。计算环境(1000)并非旨在提出对本发明使用范围或功能的任何限制,因为本发明可在不同的通用或专用计算环境中实现。
参照图10,计算环境(1000)包括至少一个处理单元(1010)和存储器(1020)。在图10中,该最基本配置(1030)包括在虚线内。处理单元(1010)执行计算机可执行指令,且可以是实或虚处理器。在多处理系统中,多个处理单元执行计算机可执行指令以增加处理能力。存储器(1020)可以是易失性存储器(例如寄存器、高速缓冲存储器、RAM)、非易失性存储器(例如ROM、EEPROM、闪存等)或两者的组合。存储器(1020)存储实现所述片层编码的软件(1080)。
计算环境可具有附加特征。例如,计算环境(1000)包括存储(1040)、一个或多个输入设备(1050)、一个或多个输出设备(1060)、以及一个或多个通信连接(1070)。诸如总线、控制器或网络的互连机制(未示出)使计算环境(1000)的各个组件互相连接。通常,操作系统软件(未示出)向在计算环境(1000)中执行的其它软件提供一个操作环境,并协调计算环境(1000)的各个组件的动作。
存储(1040)可以是可移动或不可移动的,并包括磁盘、磁带或磁卡、CD-ROM、CD-RW、DVD、或任何其它可用于存储信息并可在计算环境(1000)内访问的媒体。存储(1040)为软件(1080)存储实现执行片层编码的音频编码器的指令。
输入设备(1050)可以是诸如键盘、鼠标、电子笔的触摸输入设备、或跟踪球、语音输入设备、扫描设备、或向计算环境(1000)提供输入的另一设备。对于音频,输入设备(1050)可以是接受模拟或数字形式的音频输入的声卡或相似设备、或将音频样本提供给计算环境的CD-ROM读取器。输出设备(1060)可以是显示器、打印机、扬声器、CD刻录机、或从计算环境(1000)提供输出的另一设备。
通信连接(1070)使能经通信媒体与另一计算实体的通信。通信媒体传送诸如计算机可执行指令、压缩后音频或视频信息、或已调制数据信号中的其它数据。已调制数据信号是使其特征的一个或多个以在信号中编码信息的方式进行设置或改变的信号。作为示例且非限制,通信媒体包括用电子、光学、RF、红外线、声学或其它载体实现的有线或无线技术。
片层编码/解码技术可在计算机可读媒体的环境中描述。计算机可读媒体是可在计算环境内访问的任何可用媒体。作为示例,但非限制,对于计算环境(1000),计算机可读媒体包括存储器(1020)、存储(1040)、通信媒体、以及以上任一个的组合。
片层编码/解码技术可在计算机可执行指令的环境中描述,诸如在目标实或虚处理器上的计算环境中执行的程序模块所包括的计算机可执行指令。通常,程序模块包括执行具体任务或实现具体抽象数据类型的例程、程序、库、对象、类、组件、数据结构等。程序模块的功能可在各个实施例中按需在程序模块之间组合或划分。程序模块的计算机可执行指令可在本地或分布式的计算环境内的执行。
为说明起见,详细描述使用像“确定”、“产生”、“调节”和“应用”的术语来描述计算环境中的计算机操作。这些术语是由计算机执行的操作的高层抽象,且不应与人执行的动作相混淆。对应于这些术语的实际计算机操作取决于实现而变化。
根据本发明原理可应用其中的许多可能实施例,我们将本发明的全部这些实施公开为落于以下权利要求和等效体的范围和精神之内。
权利要求
1.一种解码视频和图像的方法,包括从具有语法分级结构的编码后比特流中解码图片,所述语法分级结构包括至少一个图片层、一任选的可独立解码的部分图片单元、以及一宏块层,其中所述任选的可独立解码的部分图片单元的编码语法用信号表示所述单元的地址、以及图片标头信息是否在所述单元中重复的指示;在包括所述可独立解码的部分图片单元的情形中,对所述用信号表示的、关于图片标头信息是否在所述单元中重复的指示进行解码;如果指示图片标头信息要重复,则解码所述图片标头信息;解码所述用信号表示的地址;以及在图片中由所述用信号表示的地址指示的位置上重构所述部分图片单元。
2.如权利要求1所述的方法,其特征在于,所述部分图片单元是包含所述图片的至少一个毗邻宏块行的片。
3.如权利要求2所述的方法,其特征在于,所述编码语法将所述地址用信号表示为所述片的宏块行索引。
4.如权利要求1所述的方法,其特征在于,所述编码语法将所述图片标头信息是否在所述单元中重复的指示用信号表示为单个比特标记。
5.如权利要求1所述的方法,还包括除在所述部分图片单元的边界外,在所述部分图片单元内的至少一些块边缘上执行重叠平滑。
6.如权利要求1所述的方法,还包括除在所述部分图片单元的边界外,在所述部分图片单元内的至少一些块边缘上执行分块滤波。
7.如权利要求1所述的方法,还包括在开始解码所述部分图片单元之后,复位预测编码参数。
8.一种编码/解码图片或视频的方法,包括以至少一个可独立解码的部分图片单元来编码/解码图片;在开始编码/解码所述至少一个可独立解码的部分图片单元中相应的一个的图片内容信息时,复位预测编码参数。
9.如权利要求8所述的方法,还包括使用唯一的起始码模式从编码器向解码器发信号表示所述至少一个可独立解码的部分图片单元中相应的一个的开始。
10.如权利要求8所述的方法,还包括使用与图片内所述相应部分图片单元的开始宏块位置相关的地址参数,从编码器向解码器发信号表示所述至少一个可独立解码的部分图片单元中相应的一个的位置。
11.如权利要求10所述的方法,其特征在于,所述相应部分图片单元是包含所述图片中至少一整个毗邻宏块行的片,且其中所述地址参数是所述片的起始宏块行索引。
12.如权利要求8所述的方法,还包括从编码器向解码器发信号表示图片标头信息是否在所述至少一个可独立解码的部分图片单元中相应的一个中重复的指示。
13.如权利要求12所述的方法,其特征在于,所述指示是标记值。
14.如权利要求8所述的方法,还包括独立于所述相应的部分图片之外的图片内容,重构所述相应部分图片单元的图片内容。
15.如权利要求14所述的方法,其特征在于,所述独立重构包括除在所述相应部分图片单元的边界外,在所述相应部分图片单元的所述图片内容内执行块边缘的分块。
16.如权利要求14所述的方法,其特征在于,所述独立重构包括除在所述相应部分图片单元的边界外,在所述相应部分图片单元的所述图片内容内执行块边缘的重叠滤波。
17.至少一种其上具有软件模块的计算机可读程序携带媒体,所述软件模块可由处理单元执行以执行一种对使用可独立解码的部分图片单元来编码的图像或视频比特流进行编码/解码的方法,所述方法包括确定是否要对在所述比特流内编码的图片执行部分图片单元编码;以及如果是,则独立于所述部分图片单元之外的图片内容,执行每个部分图片单元内图片内容的编码/解码和重构。
18.如权利要求17所述的至少一种计算机可读程序携带媒体,其特征在于,所述方法还包括解释所述比特流中用信号表示图片内相应部分图片单元的位置的语法元素;以及在所述位置重构相应部分图片内容的图片内容。
19.如权利要求18所述的至少一种计算机可读程序携带媒体,其特征在于,所述语法单元包括与图片内所述相应部分图片单元的起始宏块位置相关的地址参数。
20.如权利要求19所述的至少一种计算机可读程序携带媒体,其特征在于,所述相应部分图片单元是包含所述图片中至少一整个毗邻宏块行的片,且其中所述地址参数是所述片的起始宏块行索引。
21.如权利要求17所述的至少一种计算机可读程序携带媒体,其特征在于,所述方法还包括解释所述比特流中用信号表示图片标头信息是否在相应部分图片单元内重复的指示的语法元素。
22.如权利要求21所述的至少一种计算机可读程序携带媒体,其特征在于,所述指示是标记值。
23.如权利要求17所述的至少一种计算机可读程序携带媒体,其特征在于,所述方法还包括除在所述相应部分图片单元的边界外,在所述相应部分图片单元的所述图片内容内执行块边缘的分块。
24.如权利要求17所述的至少一种计算机可读程序携带媒体,其特征在于,所述方法还包括除在所述相应部分图片单元的边界外,在所述相应部分图片单元的所述图片内容内执行块边缘的重叠滤波。
全文摘要
一种视频编码器/解码器使用提供可独立解码的部分图片单元的比特流语法,该图片单元可以是包含一个或多个毗邻宏块行的单元(称为片)的形式。该片层提供差错-复原能力和压缩效率的灵活组合。该片层编码有效的寻址机制(例如指定片层的开始宏块行的语法单元)、以及可任选地重新传输图片标头信息的有效机制。该片层通过禁用跨片-边界的所有形式的预测、重叠和环形-滤波来提供解码和重构的独立性。这使得不管图片其它区域中的差错如何,以内-模式编码的片都可无差错地重构。
文档编号H04N7/34GK1965321SQ200480023141
公开日2007年5月16日 申请日期2004年9月3日 优先权日2003年9月7日
发明者S·瑞古纳萨恩, P·苏, 王策, C-L·B·林, J·梁, S·斯里尼瓦杉 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1