用于减少上下文自适应二进制算术编码存储需求的系统和方法

文档序号:6557433阅读:168来源:国知局
专利名称:用于减少上下文自适应二进制算术编码存储需求的系统和方法
技术领域
本发明通常涉及视频数据的代码转换,尤其是涉及用于减少上下文自适应二进制算术编码存储需求的系统和方法。
背景技术
现有编码-解码器系统使用熵代码转换来减少复杂度和进行实时编码-解码,必须使用相当大的代码转换缓冲区,而且还必须在输入缓冲区中提供额外的缓冲区空间。需要这种额外数据存储的根本原因是现有系统代码转换引擎必须在完全的网络抽象层(NAL)单元(也就是在附图上maxTranscodeUnit=max NAL size,在附图上最大代码转换单元=最大NAL尺寸)上完成操作,因此在当前NAL处理完成前不能用来执行任何其它操作。如果代码转换引擎有效运行没有被停止,用于代码转换引擎的输入缓冲区必须能够包括至少除了用于建立下一个完整的NAL单元以外的一个完整的NAL单元,所以直到对一个特定数据流形成一个完整的NAL之前,代码转换引擎也可以做其它事(例如,处理另一个数据流)。当在以前的NAL单元上操作代码转换引擎时,这个数据存储器允许将有效缓冲区空间提供给代码转换引擎来填充/形成下一个NAL单元的过程,其以额外的缓冲区数据存储器为代价,使得代码转换器停止的风险最小。精确的存储器大小是可变得,但对于这些额外的存储器需要几个典型的最大NAL尺寸。甚至可能需要较大的代码转换缓冲器,来解决从上下文自适应二进制算术编码(CABAC)到上下文自适应变长编码(CAVLC)的扩展。额外的数据存储器需求数量和需要存储2.5非压缩图像的数量一样多。代码转换引擎可以是一个用来执行多个同步编码和解码操作的单独硬件单元。典型的,在许多家电用品中可以发现一个高密度(HD)电视解码器和一个标准密度(SD)电视编码器,或者两个解码器(SD或者HD)和一个编码器(SD或者HD)。在现有技术中,代码转换操作不能在处理NAL单元时被打断。由于每个NAL单元可以被独立的熵解码/代码转换,这样的优势是当在两个不同的数据流处理过程之间切换时不需要存储状态信息。劣势是需要巨大的缓冲区存储器。相反,由于CAVLC解码通常是在主机处理器上执行,那么在一个宏模块的行的(例如)基础上可能被中断/存储和重新开始/恢复,解码代码转换缓冲区尺寸仅仅由解码代码转换引擎可以处理的最小单元(一个扩展的最大NAL尺寸)规定,并且不需要提供较大的尺寸来容纳不能在宏模块行中存储/恢复的它的状态(由于一个压缩的宏模块行的最大尺寸远远小于一个压缩图像的最大尺寸)。
发明概述因此,需要一种用于减少CABAC代码转换器的数据存储需求的方法。在一个典型实施例中,提供了一种减少CABAC存储需求的系统。该系统包括一个用来在视频数据流上执行CABAC的代码转换引擎。代码转换引擎接收保存数据,停止CABAC,并转换视频数据流到子网络抽象层(NAL)单元状态数据。一个熵状态数据存储器系统接收子网络抽象层单元(sub-NAL)状态数据和存储子网络抽象层单元(sub-NAL)状态数据。代码转换引擎随后接收恢复数据,从熵状态数据存储系统中抽取子网络抽象层单元(sub-NAL)状态数据,并且在视频数据流上重新开始CABAC。本领域技术人员通过结合附图的详细描述所理解的其它重要方面,可以进一步意识到本发明的优势和好处。
附图的概括说明

图1是根据本发明的一个典型实施例,用于减少CABAC存储需求的系统框图;图2是根据本发明的一个典型实施例,用于执行视频编码的系统框图;图3是根据本发明的一个典型实施例,用于编码或解码视频数据流的方法流程图,以便执行具有减少的数据缓存需求的从CABAC到CAVLC的编码或者从CAVLC到CABAC的编码,以允许CABAC编码在一个子网络抽象层(sub-NAL)基础上停止。
发明的详细描述在下面的描述中,分别对说明书和附图中的相同部分使用相同的附图标记。为了清楚和简明,附图所显示的只是通常的或者示意性的构造,不能依比例决定和确定部件,需要通过商品名称来确定。图1是根据本发明的一个典型实施例,用于减少CABAC存储需求的系统100的框图。系统100可以在硬件,软件,或者一个适当的软硬件组合中执行,也可以是在数字信号处理器平台或者其它适当的硬件或者软件系统上执行的一个或者多个软件系统。系统100从视频输入或者存储器114接收视频数据,产生传输流输出110。将视频数据提供给视频输入116,视频输入提供视频数据给H.264编码器/预处理器118。视频输入数据也可以在视频数据缓冲区(DPB)126中缓冲。作为传输流输出发生器的一部分,H.264编码/预处理器118提供数据到H.264命令发生器120,它产生主机/SP命令122。将从H.264编码/预处理器118输出的数据,提供给H.264单独的CAVLC ES缓冲区112,缓冲区112存储从H.264仅仅代码转换到CABAC(EP)106(H.264 only transcode to CABAC(Ep))的熵处理器所使用的状态信息。系统100包括视频PES缓冲区(CPB)102,用来接收视频打包基本码流(PES)数据和缓冲用来处理的视频PES数据。视频PES缓冲器(CPB)102提供数据给编程多路复用器108,其产生传输流输出110。从H.264仅仅代码转换到CABAC(EP)106(H.264 only transcode to CABAC(Ep))中接收数据,其执行CABAC代码转换和其它合适的处理。在一个典型实施例中,H.264仅仅代码转换到CABAC(EP)106(H.264 only transcode to CABAC(Ep))可以在一个解码操作中执行从CABAC到CAVLC的译码,以及在一个编码操作中执行从CAVLC到CABAC的编码。在附图1所示的典型实施例中,正在执行解码。在一个典型实施例中,编程多路复用器108和H.264仅仅代码转换到CABAC(EP)106(H.264 only transcode to CABAC(Ep))可以作为系统处理器的任务104来执行。在这个典型实施例中,系统处理器通常从一个携带了H.264视频数据或者其它合适数据的MPEG传输流的输出中解析比特流,来分离出原始的压缩视频和音频比特流,然而同时也可以用来执行代码转换。因此,代码转换可能被中断,其以前需要整个NAL单元存储器。本发明通过允许代码转换中断而不需要整个NAL单元存储器,来减少存储器需求。H.264单独的CAVLC ES缓冲器112提供缓冲的状态数据或者上下文自适应变长编码数据到H.264仅仅代码转换到CABAC(EP)106(H.264 onlytranscode to CABAC(Ep))。在一个典型实施例中,H.264单独的CAVLC ES缓冲器112缓冲子网络抽象层(NAL)单元的状态数据,因此H.264单独的CAVLCES缓冲区112的尺寸明显小于现有技术需要的尺寸。在这个典型实施例中,现有技术的缓冲器和编码器相连,比如H.264仅仅代码转换到CABAC(EP)106(H.264only transcode to CABAC(Ep)),编码器不需要存储状态数据而仅仅在一个NAL单元上执行CABAC编码或者解码直到结束,现有技术的缓冲器的大小范围通常达到非压缩图像尺寸的2.5倍,反之利用本发明,H.264单独的CAVLCES缓冲区112可以小于一个图像尺寸。本发明允许H.264仅仅代码转换到CABAC(EP)106(H.264 only transcode to CABAC(Ep))停止对H.264数据的NAL单元的处理,并对那个NAL单元重新开始CABAC译码,例如其中的代码转换引擎必须执行其它任务。因而,不需要在缓冲区中存储整个NAL数据集合的装置。H.264单独的CAVLC ES缓冲区112接收来自于H.264编码器/预处理器118的数据。将来自于视频输入或者存储器114的数据提供给视频输入116,其中视频输入存储视频数据缓冲区(DPB)126。将来自于视频输入116或者视频数据缓冲区(DPB)126的数据提供给H.264编码器/预处理器118。除了提供视频输出或者存储器数据到H.264单独的CAVLC ES缓冲区112外,H.264编码器/预处理器118还提供视频数据到H.264命令发生器120。由H.264命令发生器120产生的命令被作为主机/SP命令122输出。此外,视频输出116,H.264编码/预处理器118,和H.264命令发生器120可以作为视频处理器的任务124来执行,视频处理器执行视频解码任务获得原始的压缩视频比特流,并将它恢复到视频数据。在运行时,系统100在一个小于NAL单元的单元上存储和恢复所有熵状态信息,例如分别在一个宏模块行或者每个宏模块基础上,分别的,这里的(最大代码转换单元)=(最大压缩宏模块行)或者(最大压缩宏模块尺寸)。同样的,在主机处理器上的CAVLC解码使用一个相似尺寸单元以用于它自己的存储和恢复容量,其使得在系统中的所有缓冲区尺寸需求和容量相匹配,而不论(最大解码单元)=(最大代码转换单元)是否成立。系统100允许大量的减少缓冲区尺寸,来替代非压缩图像尺寸2.5倍的尺寸,可以使用宏模块所基于的单元的缓存区尺寸,其尺寸远远小于非压缩图像尺寸,也就是说,根据整个系统所使用的存储器根本就可以忽略(不同于对所有存储器使用需求的数量的排序)。系统100在大量潜在的熵译码状态之间有存储/恢复能力,其中最重要的是熵译码上下文状态和引擎状态寄存器。在一个典型实施例中,系统100可以在任何时间存储至少两个完整的状态,其中的一个状态可以被恢复并且可以重新开始代码转换,当同时恢复一个先前存储的状态和在与所存储状态相关的数据流上重新开始代码转换时存储第三状态。在这种条件下,可能需要系统进行切换,以对代码转换引擎的利用需求最大化,并且对缓冲区存储器的需求最小化,例如在单个宏模块的结束时、在每个宏模块行结束时进行切换,或者用其它合适的方式进行切换。在这种方式下的代码转换允许系统中两个或者多个视频数据流中的一个通过代码转换器进行处理,例如在一个两位解码器,一个编码器的系统中。由于没有用于CABAC的宏模块行的编码/解码复杂度的标准,对于用于代码转换引擎的存储/恢复体系结构,使用现有技术的系统来配置是困难的。虽然根据H.264中每个宏模块不能被扩展这种限制,在宏模块行中的比特数受到限制,二进制的比特速率(二进制计算作为CABAC复杂度的一个指示器)仅仅被限制在一个图像层(通常单元选择一个NAL),而不是在宏模块层上。最差情况下,比特流请求CABAC来代码转换一个宏模块行,并且可能需要有很多循环,这就需要很大量的代码转换缓冲区。然而实际上,复杂度可以被限制。最差情况下CABAC复杂度的基准比特流的改进允许代码转换缓冲区的尺寸可以在解码最差情况数据流时实时的决定。由于缓冲区尺寸小于解码基准比特流所必需的大小,通常(非安全的/恢复代码转换体系结构)对于基准比特流没有设计值。现有技术通常被束缚在通过代码转换器在一个NAL上不能被中断上,而并不关注最差情况下CABAC代码转换/解码编码复杂度。图2是根据本发明的一个典型实施例,用于执行视频编码的系统200的框图。系统200包括传输流输入208,其由编程解复用器206接收。编程解复用器206提供传输流输入208到视频PES缓冲器(CPB)102,接着视频PES缓冲器(CPB)102提供缓冲区数据到H.264仅仅代码转换到CAVLC(EP)204(H.264 only transcode to CAVLC(EP))。编程解复用器206和H.264仅仅代码转换到CAVLC(EP)204(H.264only transcode to CAVLC(EP))都可以作为系统处理的任务202或者其他合适的结构来执行。H.264仅仅代码转换到CAVLC(EP)204(H.264only transcode toCAVLC(EP))执行CABAC到CAVLC的代码转换。在一个典型实施例中,H.264仅仅代码转换到CAVLC(EP)204(H.264only transcode to CAVLC(EP))提供数据到H.264单独的CAVLC ES缓冲区112,它定义了传输流输入208的一个或多个状态变量。在这个典型实施例中,传输流输入208的处理可以在一个NAL单元中被停止,这样H.264单独的CAVLC ES缓冲区112可以明显小于系统需要完成的整个NAL单元完全处理所需的缓冲区。系统200同样包括H.264命令解析216,H.264编码器/通知处理器214,和视频输出212,每一个都可以作为视频处理的任务218或者以其他合适的方式来执行。H.264命令解析216接收主机/SP命令122,使用其来控制H.264编码器/通知处理器214处理从H.264单独的CAVLC ES缓冲区112中接收的数据。H.264编码器/通知处理器214提供输出到视频数据缓冲区(DPB)126和视频输出212。视频输出212产生的视频数据通过视频输出或者存储器210提供。在运行中,系统200允许解码传输流输入,以为了传输到视频输出或者存储器,并且大量减少所需缓冲区尺寸,这样子网络抽象层单元可以在一个NAL单元处理期间被存储。在这个典型实施例中,系统200允许宏模块行或者单个宏模块的状态信息被存储在H.264单独的CAVLC ES缓冲区112中。图3是根据本发明的一个典型实施例,用于编码或者解码视频数据流的方法流程图,以便执行具有减少的数据缓存需求的从CABAC到CAVLC编码或者CAVLC到CABAC的编码,以允许CABAC编码在一个子网络抽象层基础上停止。方法300从接收视频数据流302开始。在一个典型实施例中,视频数据流可以是一个传输流,例如传输流被用来解码。同样的,视频数据流可以是一个从视频输入或者存储器接收的原始视频输送,并且可以被转换成传输流,例如在视频数据被用来编码的地方。方法然后继续到304。在304上,方法继续到306还是308依赖于视频数据是用于编码还是解码。视频数据是用于编码还是解码的判断由处理器处理,可以根据输入的视频数据流是从哪里接收的,或者其它合适的方式。如果视频数据流正在被解码,方法继续到306,其中熵处理器或者其它适合的处理器执行CABAC到CAVLC的编码。否则,如果视频数据流正在被编码,方法继续到308,其中熵处理器或者其它适合的处理器执行CAVLC到CABAC的编码。也可以执行其它合适的变化或者选择性的执行。方法然后继续到310。在310处,决定是否需要保存当前状态信息。例如熵处理器或者其它合适的系统可能需要执行其它数据流的处理,或者用于其它任务,例如在一个两位解码/一个编码系统中。如果它决定保存所需要的数据,例如用于在H.264中的单独宏模块或者宏模块列中的子网络抽象层单元状态数据,或者其它合适的数据,方法继续到312,否则方法跳转到302,在302处继续接收视频数据流。在312上,存储子网络抽象层单元状态数据。在一个典型实施例中,子网络抽象层单元状态数据可以包括熵译码上下文状态,引擎状态寄存器,或者其它合适的数据。方法然后继续到314,其中用来执行编码或者解码操作的处理器还能够执行其它任务,例如其它数据流的代码转换。在316处决定处理的任务是否已经完成,例如收到来自于系统命令处理器的命令或者其它合适的数据。如果在316中判断任务没有完成,方法返回到314,否则方法继续到318。在318处,从缓冲器或者存储器中重新恢复子网络抽象层单元状态数据。然后在320中恢复CAVLC到CABAC或者CABAC到CAVLC的编码,例如通过继续对视频数据流进行处理,视频数据流可以例如是传输流或者原始的视频流,和其它方式所需求的存储器数量相比,使用存储的状态数据来减少对存储器数量的需求。在操作中,方法300通过允许存储用于数据的子网络抽象层单元的状态信息,来减少用来处理视频数据所需的存储器,数据的子网络抽象层单元例如是宏模块行或者单独的宏模块。在这个典型实施例中,代码转换处理器可以停止代码转换处理,和执行其它任务,例如需要允许实时传递的视频数据或者执行视频数据的代码转换。在另一个典型实施例中,提供了一个常用目的的视频码格式代码转换系统。提供一个中央计算/代码转换资源,例如一个常用目的计算平台,其具有带宽和处理能力来代码转换多个视频数据流,同时在每个数据流上维持独立实时的约束。通常,代码转换在一个预先确定单元上执行,例如GOPs(图像群),图像,或者片段。由于这样的预先确定单元的尺寸可以有很大的变化范围,需要存储器缓冲器来充分的缓冲数据流,以便不会出现中央资源停止等待输入数据或者输出数据存储器的情况。使用本发明的优势是中央处理/代码转换资源允许对给定数据流的代码转换可以在任意点被中断,其中可以存储代码转换状态变量,以便这样的代码转换处理可以在以后恢复。代码转换然后可以被切换到不同的数据流,以便允许缓冲区存储器的明显减少。在这个典型实施例中,不需要缓冲当前不活动的数据流,这样可以减少所需缓冲区存储器。在另一个典型实施例中,提供一个常用目的的实时视频码,其用来编码/解码视频数据。在现有技术的实施例中,在编码或者解码之间进行切换前是工作在帧,片段或者宏模块行上。为了维持或者提高效率和减少存储器缓冲,编码/解码操作可以在任何较高清晰度处被中断。虽然系统的典型实施例和本发明的方法已经在这里进行了详细的描述,本领域技术人员可以在不背离附加的权利要求的范围和实质内,对系统和方法进行各种替代和修改,
权利要求
1.一种用于减少上下文自适应二进制算术编码(CABAC)存储需求的系统,包括代码转换引擎,其适用于在视频数据流上执行CABAC,接收保存的数据,停止CABAC,以及转换视频数据流到子网络抽象层(NAL)单元状态数据;熵状态数据存储器系统,其适用于接收子网络抽象层单元(sub-NAL)状态数据和存储子网络抽象层单元(sub-NAL)状态数据;以及代码转换引擎接收恢复数据,从熵状态数据存储器系统中抽取子网络抽象层单元(sub-NAL)状态数据,以及在视频数据流上重新开始CABAC。
2.如权利要求1所述系统,其中子网络抽象层单元(sub-NAL)状态数据包括熵译码上下文状态。
3.如权利要求1所述系统,其中子网络抽象层单元(sub-NAL)状态数据包括引擎状态寄存器数据。
4.如权利要求1所述系统,其中熵状态数据存储器系统包括一代码转换缓冲区,其大小小于一张未压缩图像的大小。
5.如权利要求1所述系统,其中代码转换引擎包括一个熵处理器。
6.如权利要求1所述系统,其中代码转换引擎包括一个系统处理器任务。
7.如权利要求1所述系统,其中代码转换引擎执行上下文自适应变长编码(CAVLC)到CABAC的代码转换。
8.如权利要求1所述系统,其中代码转换引擎执行CABAC到CAVLC的代码转换。
9.如权利要求1所述系统,其中每次当基于至少以下一个原因没有输入数据可以获得,以及没有输出存储器可以获得,而不能进一步进行处理时就停止CABAC。
10.如权利要求9所述系统,其中CABAC状态分辨率小于一个比特。
11.如权利要求1所述系统,其中在一个特定点停止对第一数据流的CABAC,熵状态数据存储系统保存一个相应的代码转换状态,以及代码转换引擎切换代码转换到不同的数据流。
12.如权利要求1所述系统,其中在一个预定时间停止CABAC。
13.一种用于减少上下文自适应二进制算术编码(CABAC)存储需求的方法,其包括在一个视频数据流上执行CABAC;接收保存的数据;在一个视频数据流上停止CABAC;将视频数据流转换成子网络抽象层(NAL)单元状态数据;存储子网络抽象层单元(sub-NAL)状态数据;接收恢复的数据;从存储器中抽取子网络抽象层单元(sub-NAL)状态数据;以及在视频数据流上重新开始CABAC。
14.如权利要求13所述方法,其中存储子网络抽象层单元(sub-NAL)状态数据包括存储熵编码上下文状态。
15.如权利要求13所述方法,其中存储子网络抽象层单元状态数据包括存储的引擎状态寄存器数据。
16.如权利要求13所述方法,其中在一个视频数据流上执行CABAC包括在一个视频数据流上使用熵处理器执行CABAC。
17.如权利要求13所述方法,其中在一个视频数据流上执行CABAC包括在一个视频数据流上使用系统处理器任务执行CABAC。
18.如权利要求13所述方法,其中执行CABAC进一步包括执行CAVLC到CABAC。
19.如权利要求13所述方法,其中执行CABAC进一步包括执行CABAC到CAVLC。
20.如权利要求13所述方法,其中每次当基于至少以下一个原因没有输入数据可以获得,以及没有输出存储器可以获得,而不能进一步进行处理时就停止CABAC。
21.如权利要求20所述方法,其中CABAC状态分辨率小于一个比特。
22.如权利要求13所述方法,其中在一个特定点停止对第一数据流的CABAC,熵状态数据存储系统保存一个相应的代码转换状态,以及代码转换引擎切换代码转换到不同的数据流。
23.如权利要求13所述方法,其中在一个预定时间停止CABAC。
24.一种用于减少上下文自适应二进制算术编码(CABAC)存储需求的系统,包括代码转换引擎装置,用于在视频数据流上执行CABAC,接收保存的数据,停止CABAC,以及将视频数据流转换成子网络抽象层(NAL)单元状态数据;数据存储装置,用于接收子网络抽象层单元(sub-NAL)状态数据和存储子网络抽象层单元(sub-NAL)状态数据;以及代码转换引擎装置,用于接收恢复数据,从熵状态数据存储装置中抽取子网络抽象层单元(sub-NAL)状态数据,以及在视频数据流上重新开始CABAC。
全文摘要
提供一种用于减少上下文自适应二进制算术编码(CABAC)存储需求的系统。系统包括一个代码转换引擎,其在视频数据流上执行CABAC。代码转换引擎接收保存的数据,停止CABAC,以及将视频数据流转换成子网络抽象层(NAL)单元状态数据。熵状态数据存储器系统接收子网络抽象层单元(sub-NAL)状态数据和存储子网络抽象层单元(sub-NAL)状态数据。代码转换引擎随后接收恢复数据,从熵状态数据存储器系统中抽取子网络抽象层单元(sub-NAL)状态数据,以及在视频数据流上重新开始CABAC。
文档编号G06T9/00GK101014124SQ20061006412
公开日2007年8月8日 申请日期2006年10月26日 优先权日2005年10月26日
发明者L·L·温格, E·C·皮尔森 申请人:Lsi罗吉克公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1