用于非变换编码的扫描次序的制作方法_2

文档序号:9693681阅读:来源:国知局
内容的比特流。在解码视频内容时,解码器128可改变针对满足一个或多个准则的非变换块的扫描次序,该一个或多个准则诸如与特定类型的预测(例如,帧内预测)相关联和/或具有特定大小(例如,比8x8块小的大小)。虽然图1中没有示出,但是存储器126还可以包括被配置成编码视频内容的编码器。
[0027]编码器114和/或解码器128可一般地对编码单元(CU)(也称为编码块(CB))、宏块或其他类型的编码结构执行编码技术。为了便于讨论,编码技术可在编码单元的上下文中讨论。每个编码单元可对应于图像的像素块。编码单元可具有预先确定的像素尺寸(例如,4x4、8x8、16x16、32x32、64x64等)和/或可通过视频压缩标准(诸如H.264/高级视频编码(AVC)或高效视频编码(HEVC))来定义。在一些实例中,随着编码单元被编码,编码单元被表示为一个或多个预测单元或一个或多个变换单元。即,当执行预测时,编码单元可由一个或多个预测单元(PU)(也称为预测块)来表示。与此同时,当执行变换时,编码单元可由一个或多个变换单元(TU)(也称为变换块)来表示。预测单元和/或变换单元可以是编码单元的子单元。如此,在某些实例中,编码单元可被拆分成子单元,并且编码操作可个别地在子单元上执行(例如,扫描过程可在作为编码单元的子单元的变换单元上执行)。
[0028]虽然编码器114和解码器128在图1中被示出为被实现为模块,但是编码器114和/或解码器128或任何相关联的操作可被实现为一个或多个硬件逻辑组件,诸如现场可编程门阵列(FPGA)、应用专用集成电路(ASIC)、程序专用标准产品(ASSP)、片上系统(SOC)系统、复杂可编程逻辑器件(CPLD)等等。在某些实例下,编码器114和/或解码器128可以与音频编码器/解码器集成在一起,并包括适当的MUX-DEMUX(复用-解复用)单元或其它硬件和/或软件,以处理共同的数据流或分开的数据流中的音频和视频两者的编码/解码。替换地或附加地,编码器114和/或解码器128可被结合作为一个或多个处理器110(例如,CPU、GPU、微处理器等)的一部分。此外,在一些实例中,编码器114和/或解码器128可以被结合在操作系统或其他应用中。编码器114和/或解码器128可以根据诸如MPEG-1、MPEG_2、MPEG_4、H.261、
H.263、H.264/AVC、HEVC等视频压缩标准来工作。
[0029]尽管存储器112和126在图1中被描绘成单个单元,但存储器112和/或126(以及本文中描述的所有其他存储器)可包括一个计算机可读介质或计算机可读介质的组合。计算机可读介质可包括计算机存储介质和/或通信介质。计算机存储介质包括以用于存储如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括但不限于,相变存储器(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(R0M)、电可擦除可编程只读存储器(EEPROM)、闪存或其他存储器技术、光盘只读存储器(CD-ROM)、数字多功能盘(DVD)或其它光存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或可用于存储由计算设备访问的信息的任何其他非传输介质。
[0030]相反,通信介质可在诸如载波之类的已调制数据信号或其他传输机制中体现计算机可读指令、数据结构、程序模块或其他数据。如本文所定义的,计算机存储介质不包括通信介质。
[0031]如上所述,视频内容源102和设备104可以经由网络106来通信。网络106可包括多种不同类型的网络中的任一个或其组合,诸如蜂窝网络、无线网络、局域网(LAN)、广域网(WAN)和因特网。
[0032]示例编码组件
[0033]图2示出图1的编码器114的示例细节。如以上提到的,编码块(例如,单元)被编码器114编码。编码块可在预测时被表示为一个或多个预测块并在变换时被表示为一个或多个变换块。如此,预测操作可在各个预测块上执行,而变换操作可在各个变换块上执行。为了便于说明,参考图2以及在本公开的其它地方讨论的编码技术将一般参考“±夬”。这个块将包括在预测阶段的预测块以及在变换阶段的变换块。
[0034]编码器114可包括预测组件202(例如,模块、硬件等)来在块(例如,预测块)上执行预测。预测组件202可在该块上执行不同的预测模式,诸如帧内(例如,空间)或帧间(例如,时间)预测。在帧内预测中,预测组件202可将相同帧内的参考块确定为最匹配该块的块。即,在来自该帧的像素块中,参考块可具有与该块最高的相似性(例如,根据像素值)。在帧间预测中,预测组件202可确定该块的帧的时间上相邻的帧中最匹配该块的参考块。此处,在来自相邻的帧中的像素块中,参考块可具有与该块最高的相似性(例如,根据像素值)ο在任一情况下,当参考块不精确地匹配该块时,预测组件202可确定参考块和该块的像素值之间的差。这个差被称为“残余信息”(也称为“残余”或“残余值”)。预测组件202可输出残余信息的二维阵列(例如,包括针对预测块的每个像素值的残余信息的块)。
[0035]编码器114还可包括变换组件204,该变换组件204可将变换应用到块(例如,预测块的残余信息)。变换可包括离散余弦变换(DCT)、离散小波变换、整数变换或用于变换信息的任意其它一般已知的技术。变换可被变换组件204选择性地应用。即,在一些实例中,变换被应用(例如,变换系数被输出),而在其它实例中,变换不被应用(例如,残余信息在不被变换的情况下被输出)。为了说明,变换组件204可避免在块的最高像素值和最低像素值之间的差高于预先确定的值时或在速率失真约束被满足(例如,不变换块的速率失真成本小于变换块的速率失真成本)时等执行变换。在一些实现中,变换根据在申请号为13/593,214、2012年8月23日提交的、题为“非变换编码”的美国专利申请(其通过引用结合于此)中讨论的技术被选择性地应用。
[0036]当变换被执行时,变换组件204可输出对应于块的残余信息的变换系数集。替换地,当变换不被执行时,变换组件204可输出被输入到变换组件204的残余信息。如在本文中使用的,“非变换块”可指没有被变换的块,即使该块可能已经通过了变换组件204。在任一情况下,变换组件204可输出数据的二维阵列(例如,变换系数或残余信息)。
[0037]编码器114还可包括量化组件206来量化块(例如,非变换块的残余信息或经变换的块的变换系数)。在其中块被变换的实例中,块的系数可被量化。在其中块不被变换的实例中,块的残余信息可被量化。量化组件206可输出数据的二维阵列(例如,经量化的残余信息或经量化的系数)。
[0038]编码器114还可包括熵编码组件208来对块(如经量化的残余信息或经量化的系数)进行熵编码。为了对块进行熵编码,扫描过程可在该块上执行来生成数据的一维阵列。例如,扫描过程可扫描表示该块的数据的二维阵列(例如,经量化的残余信息或经量化的系数)来生成该数据的一维阵列。即,扫描过程可串行化二维阵列形式的该数据。
[0039]图2示出可被熵编码组件208执行的示例扫描过程。在此,取决于变换是否被执行,二维阵列210的子单元(例如,“al” 一 “al6”)可表示经量化的残余信息或经量化的变换系数。如示出的,扫描过程可开始于子单元“al6”并沿着实线到子单元“a4”,接着扫描在子单元“al5”处开始的下一列,并以类似的方式继续来扫描剩余的列。通过执行扫描,熵编码组件208可产生该数据的一维阵列212。
[0040]熵编码组件208可根据扫描次序来执行扫描过程以尝试将特定类型的数据分组在一起。在一些实例中,可能存在以下的较高的可能性:非零数据(例如,非零系数或残余信息)被安排在特定区域处的二维阵列中。例如,返回到图2的二维阵列210,非零系数(有时被称为能量)可被分组在阵列210的左上角中(例如,朝子单元“al”)。为了高效地执行熵编码,二维阵列210的子单元可根据对角线扫描(参考图4来详细讨论)来被扫描,使得二维阵列210被安排到一维阵列212中,其中非零系数被分组在一端。然而,被应用到所有类型的块的统一扫描次序可能不能导致这样的分组。
[0041]因此,熵编码组件208可针对不同类型的块来选择性地改变扫描次序。即,熵编码组件208可确定是否从一个或多个预先确定的或默认的扫描次序改变。例如,对于经变换的块,一个或多个预先确定的或默认的扫描次序可被用于扫描块(例如,基于块的预测模式、块的大小等)。与此同时,对于非变换块,熵编码组件208可基于非变换块的特征来从被用于经变换的块的一个或多个预先确定的或默认的扫描次序选择性地改变。
[0042]为了说明,当扫描具
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1