智能的解码图片缓冲的制作方法

文档序号:7737807阅读:141来源:国知局
专利名称:智能的解码图片缓冲的制作方法
技术领域
本发明的实施例涉及多媒体视频解码和对视频解码部分进行的智能解码图片缓冲。
背景技术
视频技术因为能够向消费者展示运动的图像而非常受欢迎。视频是表示电影场景的一系列静止图像,这些图像可以通过电子手段来捕获、记录、处理、存储、发送以及重建。可以通过数字存储格式和模拟存储格式来对视频进行存储。数字存储格式包含DVD、 QuickTime和MPEG-4。模拟存储格式包含VHS和Betamax录像带。视频压缩指的是一种对用来表示视频图像的数据进行编码并降低数据量的数据压缩过程。通常而言,视频压缩是在将视频数据发送到目的地并随后将其解码之前执行的。 视频压缩标准包含MPEG-2、ffi63、MPEG-4第2部分以及H264/AVC。与以前的标准相比, 64 标准以低比特速率提供了高质量的视频。之所以可以实现视频压缩,是因为视频数据包含空间冗余和时间冗余。这些冗余使得未经压缩的视频流效率低下。在一种技术中,视频压缩通过对单个帧的各个部分之间的差异进行寄存,使用帧内压缩来降低空间冗余。同样,通过对帧间的差异进行寄存,视频压缩使用帧间压缩来降低时间冗余。视频解决方案包含标清视频和高清(HD)视频。通常而言,HD视频指的是分辨率比标清视频的分辨率高的任何视频系统。HD视频分辨率包含1280X720(720p)或 1920X1080(1080i或1080p)。HD视频产生更好的视觉清晰度,但是也占用了更多的存储器
存储空间。在视频编码中,系统的最大数据传输速率就是其的数字带宽。换句话说,带宽是计算机能够在数据信道上传递数据的数据量。可以用比特速率(表达为比特/秒)来对带宽进行衡量,带宽表示能够通过一个连接来传递数据的最大比特速率。在计算机网络中,带宽管理是测量和控制通过网络信道进行传输的数据量的过程,以避免将信道占用达到其容量 (这种情况可能导致网络拥塞和较低的性能)。因此,节省带宽有助于防止较低的视频性能。在传统视频解码器中,将编码比特流输入到系统中。在一种技术中,可以对编码比特流进行熵编码以形成残差。随后,该残差可以被逆扫描、逆量化并逆变换。随后,运动补偿模块使用先前帧或将来帧来产生帧间宏块预测值,或者空间补偿模块使用相邻宏块来产生帧内宏块预测值。MPEG4/H263标准只支持帧间预测值,而H264标准既支持帧间预测值也支持帧内预测值。预测值宏块可以被添加到经扫描、量化和变换的残差。可以对这个结果进行滤波并且随后作为重建并解码的宏块进行输出。帧间宏块预测值可以从不同尺寸的块形成,这些不同尺寸的块包含可变尺寸的、 不重叠的块(称为分割和子分割)的整数倍。MPEG4/H263支持一个16x16宏块或4个8x8 块的块或分割。H264支持一个16x16宏块、2个16x8、2个8x16或4个8x8块或分割。H264还支持将每个8x8分割再分成1个8x8分割、2个8x4子分割、2个4x8或4个4x4子分割。 每个分割或子分割可以具有单独的运动向量,该运动向量描述了要使用哪个参考帧以及在参考帧中用于收集预测值分割或子分割的位置。这些参考帧可以被临时地存储并组织在存储器中的解码图片缓冲器中。解码图片缓冲器可以向解码像素处理器(即,解码器)提供图片或帧。视频解码器在存储器中保持若干缓冲器,其中,在对视频比特流进行解码的过程中,解码器从该存储器读取或者向该存储器写入。这些读取和写入包含视频比特流读取/ 写入、系统比特流读取/写入、命令缓冲器读取/写入以及运动向量读取/写入。在解码图片缓冲器和解码像素处理器之间发送和接收被参考的视频解码部分通常最为消耗带宽。视频的解码部分可以被解码器参考一次或者参考多次。视频部分被参考的越频繁,则占用的带宽越多。与解码视频部分不被频繁参考的情况相比,如果视频部分被频繁地参考,那么将消耗更多的带宽。这是因为每当解码视频部分被参考时,则将解码视频部分从解码图片缓冲器发送到解码器,而在每个传输期间都会消耗带宽。

发明内容
一个实施例是一种视频数据缓冲系统,其包括被配置为通过对与视频数据的解码部分相对应的视频数据比特流的编码部分进行前瞻来对所述视频数据的解码部分的值进行预测的前瞻解析器,被配置为对所述视频数据比特流的所述编码部分进行解码的解码器,以及被配置为基于所述视频数据的解码部分的所预测的值来将所述视频数据的解码部分存储在第一存储器的第一缓冲器中或第二存储器的第二缓冲器中的存储器管理器。在另一个实施例中,有一种用于对视频数据进行缓冲的方法,所述方法包括通过对与视频数据的解码部分相对应的视频数据比特流的编码部分进行前瞻来对所述视频数据的解码部分的值进行预测,对所述视频数据比特流的所述编码部分进行解码,以及基于所述视频数据的解码部分的所预测的值来确定是将所述视频数据的解码部分存储在第一存储器的第一缓冲器中还是第二存储器的第二缓冲器中。在另一个实施例中,有一种视频数据缓冲系统,包括用于通过对与视频数据的解码部分相对应的视频数据比特流的编码部分进行前瞻来对所述视频数据的解码部分的值进行预测的模块,用于对所述视频数据比特流的所述编码部分进行解码的模块,以及用于基于所述视频数据的解码部分的所预测的值来确定是将所述视频数据的解码部分存储在第一存储器的第一缓冲器中还是第二存储器的第二缓冲器中的模块。在另一个实施例中,有一种包含软件的计算机可读介质,所述软件在被执行时,使得计算机执行以下动作通过对与视频数据的解码部分相对应的视频数据比特流的编码部分进行前瞻来对所述视频数据的解码部分的值进行预测,对所述视频数据比特流的所述编码部分进行解码,以及基于所述视频数据的解码部分的所预测的值来确定是将所述视频数据的解码部分存储在第一存储器的第一缓冲器中还是第二存储器的第二缓冲器中。在另一个实施例中,有一种视频数据缓冲系统,包括被配置为对已编码的视频数据的跳过部分进行识别和标记的前瞻解析器,被配置为对所述视频数据的跳过部分进行解码的解码器,其中,经解码的所述视频数据的跳过部分具有视频数据的对应相同的解码部分,以及被配置为将经解码的所述视频数据的跳过部分和所述视频数据的对应相同的解码部分存储在单个参考存储器位置中的存储器管理器。


图1是示出了视频比特流中的一组帧的框图。图2是示出了一种用于进行智能解码图片缓冲的系统的框图。图3是示出了一种用于进行智能解码图片缓冲的高层级处理的流程图。图4是示出了用于进行智能解码图片缓冲的一个实施例的测试结果图。
具体实施例方式本文描述了一种用于进行智能解码图片缓冲的系统和方法。在一个实施例中,视频比特流缓冲器接收并且临时保持编码压缩比特流,该编码压缩比特流包含视频的各个部分。在一个实施例中,缓冲器保持来自输入视频比特流的一个或多个视频帧。随后,前瞻解析器提前在视频比特流缓冲器中进行扫描以分析视频比特流缓冲器中的编码视频比特流的各个部分,从而对解码视频部分的“值”进行预测。在一个实施例中,解码视频部分的值与该视频部分被后来的视频帧参考的频繁程度有关。举例而言,那些被确定为要被多次参考的视频帧可以被设为具有高值,而那些不被其他视频帧参考的视频帧可以被设为具有低值。基于对视频值的前瞻预测,智能存储器管理器对解码图片缓冲器中的不同解码视频部分的优先次序进行区分。可以将高值视频部分发送到具有非常快的存取时间的第一缓冲器,并且将低值视频部分发送到具有较慢的存取时间的第二缓冲器。在一个实施例中,将高值视频部分存储在第一内部存储器中,而将低值视频部分存储在第二外部存储器中。与将全部的解码视频部分存储在单个存储器中的情况相比,通过使用这种策略,可以实现带宽、功率和经济成本的节省。在一个实施例中,内部存储器可以是高速缓冲存储器,而外部存储器可以是随机存取存储器(RAM)。在手持式应用和移动应用中,节省功率、带宽和经济成本是至关重要的。文中详细的描述针对本发明的某些特定实施例。但是,本发明可以体现在多种不同的方法中。在本说明书中参照附图,其中,所有附图中相同的附图标记表示相同的部件。 更具体地,可以预期的是这些实施例可以在各种电子设备(例如,但是不限于,移动电话、 无线设备和个人数据助理(PDA))中实现或者与这些各种电子设备关联起来实现。本文所使用的“视频部分”包含编码视频部分和解码视频部分。编码视频部分包含解码前的视频文件或比特流的部分。解码视频部分是编码视频部分的解码版本,并且解码视频部分可以具有与它们相关联的值。视频部分可以包含多个视频帧、一个视频帧、 视频帧的片段(fragment)、切片(slice)、像素、解码图片缓冲器页面、组块(chunk)、片段 (fragment)、片(piece)、部分(portion)、比特、图片、块(block)、宏块(macroblock)、子宏士夬(submacroblock)、分割(partition)或帧的子分割(sub-partition)。众所周知,多个视频块形成一个宏块,并且多个宏块形成一个切片。多个切片形成一个帧,且多个帧转而形成一个视频。在一个实施例中,每个解码视频部分的尺寸是相同的。在另一个实施例中,多个解码视频部分可以在存储器中对应于一些可变的尺寸。另外,从视频解码的角度来看,本文所使用的“高值”视频部分是比低值视频部分更为重要的视频部分。与其他视频部分相比,高值视频部分可以包含那些更为频繁地用于解码的视频部分(例如,帧和宏块)。举例而言,如果解析器预测到一个视频部分将会被频繁地参考,那么该视频帧可以被认为是高值的。再作为一个示例,比特流中的其他解码视频部分可以频繁地访问高值视频部分。来自后来视频部分的运动向量可以频繁地参考高值视频部分。相反地,低值视频部分可以包含那些不被频繁地参考的视频部分。另外,本文所使用的“预测(视频部分的)值”可以包含在解码过程期间对视频部分的重要性等级进行预测。在一个实施例中,预测基于在解码比特流或视频比特流缓冲器中视频部分(例如,帧)被参考的次数。这种预测可以是准确的确定,或者这种预测可以仅仅是对基于预期视频部分被后来视频帧参考的频繁程度的一种估计。“参考”视频部分可以包含已经被解码但是被用于确定后来的解码视频部分的那些视频部分。对视频部分进行参考还可以被称为对视频部分进行存取。图1是示出了视频比特流中的视频帧llOa-e的时间序列的框图。随着帧110在时间上从时间-1推进到时间+3,帧llOa-e在每个视频帧内示出了从左向右移动的汽车 lOfe-e。在一个实施例中,在时间-1处对视频比特流进行分析以预测在即将到来的帧中被参考次数最多的宏块。在帧-1中,包含汽车105的宏块115和118随后被当前帧、帧+1、 帧+2和帧+3参考。因此,包含汽车105的宏块115和118可以被确定为是被频繁参考的。 在一个实施例中,如参照图2所解释的那样,与其他宏块相比,被频繁参考的宏块被存储在提供到处理器的较快存取时间的存储位置中。图2示出了一种用于进行智能解码图片缓冲的系统架构200。系统200包含编码视频比特流A,视频比特流缓冲器210对编码视频比特流A进行处理,然后发送到前瞻解析器220,并且最后进入电路四5。电路295包含解码器230、存储器管理器MO、地址转译器 250以及第一存储器270中的第一缓冲器沈0。电路四5的外部是第二存储器四0中的第二缓冲器观0。本领域技术人员还应当理解,结合本申请的实施例描述的各种示例性的逻辑框、 模块、电路和算法步骤均可以实现成电子硬件、计算机软件或这两者的组合。为了清楚地说明硬件和软件之间的可交换性,对各种示例性的组件、方框、模块、电路和步骤均围绕其功能进行总体描述。至于这种功能是实现成硬件还是实现成软件,取决于特定的应用和对整个系统所施加的设计约束条件。熟练的技术人员可以针对每个特定应用,以变通的方式实现所描述的功能,但是,这种实现决策不应解释为导致背离本发明的范围。图2中的编码视频比特流A可以包括压缩视频数据,以使得能够在介质(例如,空气)上有效地发送视频数据。视频比特流缓冲器210能够临时地存储压缩视频数据,直到压缩视频数据已经做好了由解码器230进行解码的准备。因此,解码器230提供了一个用于对视频数据比特流的编码部分进行解码的模块。在压缩视频比特流被临时地存储在缓冲器210中后,该压缩视频比特流对前瞻解析器220而言是可用的。前瞻解析器220能够贯穿视频比特流缓冲器210中的各个编码视频部分进行扫描以预测压缩比特流中的哪些视频部分最有可能对解码器而言是高值的。因此,前瞻解析器220提供了一种用于通过对与视频数据的解码部分相对应的视频数据比特流的编码部分进行前瞻来对视频数据的解码部分的值进行预测的模块。在一个实施例中,该预测是通过向每个视频部分分配一个值来实现的。在一个实施例中,这个值被存储在由存储器管理器240监视的、经优先级化的表(未示出)中。在一个实施例中,当预测值大于或等于阈值时,则将解码视频部分发送到第一缓冲器沈0,而当预测值小于阈值时,则将解码视频部分发送到第二缓冲器观0。在一个实施例中,这个值与解码视频部分的预测带宽有关。在另一个实施例中,这个值与解码视频部分的预测寿命有关,或者与在该寿命期间解码视频部分的预测带宽变化有关。在一个实施例中,这个值与预期解码视频部分在解码器230中被视频比特流中的后来帧参考的次数有关。解析器220可以将编码视频部分发送到解码器230,并且将预测值发送到存储器管理器140。在解码前,前瞻解析器220被配置成在时间上对视频的编码部分进行前瞻,并且在解码后,前瞻解析器220被配置成针对相应的解码视频部分来预测一个值。在一个实施例中,解码视频部分的带宽是通过以下方式来计算的将由系统中的解码器进行的视频部分的总读取次数和总写入次数之和除以视频部分的总寿命。换句话说,带宽与对视频的一个特定帧或多个特定帧进行参考的正在进行的次数有关。因此,解析器220能够主动并且智能地对编码视频部分进行前瞻以定量地确定或者预测将会对哪些解码视频部分进行频繁地参考。为了利用数据的局部性,通常要提早至少数个帧对参考模式进行确定。因为这个原因,等到视频帧已被解码时,可能已来不及利用数据的局部性。因此,前瞻解析器220可以提前对哪些视频部分会被更频繁地参考进行确定。举例而言,解析器220可以对给定数目的编码视频部分(例如,15个帧)进行前瞻,并且着眼于视频比特流缓冲器中的那些后来帧的运动向量。通过对与每个帧相关联的运动向量进行分析,解析器220随后可以针对每个帧确定其向回参考了多少个其他帧。此外,解析器220可以对哪些视频部分被频繁地参考以及哪些视频部分不被频繁地参考进行确定。在一个实施例中,将那些被频繁存取的视频部分(例如,帧)存储在内部的较近的存储器(例如,eDRAM)中,而将那些被较少存取的视频部分存储在外部的较远的存储器(例如,SDRAM)中。举例来说,通过从视频比特流缓冲器210中取回15个帧,解析器220可以对这15 个帧进行前瞻。对于15个帧中的每个帧,前瞻解析器220对与每个帧相关联的运动向量进行确定。随后,解析器识别那些被每个运动向量参考的帧。随后,将被超过阈值数目个运动向量参考的那些帧存储在第一存储器270内,以使得解码器230能够快速地取回这些帧。 而将被少于阈值数目个运动向量参考的那些帧存储在第二存储器四0中,这是因为解码器 230较少需要这些帧。解析器220前瞻得越远,值的预测越准确。前瞻解析器220能够执行完全解析和部分解析的实施例。在一个完全解析的实施例中,前瞻解析器220提前扫描并且浏览整个压缩视频。在这种情况下,解析器220准确地确定特定的视频部分被参考的次数。在一个完全解析的实施例中,前瞻解析器220可以做出哪些帧是被参考次数最多的单次确定,并且将这些帧存储在第一存储器中。在另一个完全解析的实施例中,前瞻解析器220还可以一次性计算存取的数目,但是使用这个信息来连续地对将哪些视频部分存储在第一存储器中进行重分配。在一个完全解析的实施例中,对运动向量和参考索引两者进行重建以获得最准确的带宽信息。虽然完全解析能够产生对视频部分的值的准确确定,但是这种处理是相当复杂并且耗时的,并且取决于解码系统的计算能力,这种处理可能不适用于实时视频解码。前瞻解析器220还可以执行“部分解析”。在部分解析中,前瞻解析器220只检查部分视频数据。在一个基于参考类型的部分解析的实施例中,只对参考索引而不是运动向量进行重建。在另一个部分解析的实施例中,参考索引和运动向量都不被重建,而只对切片级别的头部进行重建。结果,因为没有对运动向量进行解码,部分解析的实施例获得准确度较低的带宽信息。但是,虽然信息准确度较低,但是其处理起来较快,并且因此可能更适于实时的情形。因此,部分解析可能不对运动向量是整数还是分数进行确定,并且因此可能影响带宽计算的准确度。在另一个部分解析的实施例中,前瞻解析器220对少于整个编码比特流的编码比特流进行扫描。举例而言,前瞻解析器220可以仅对每隔一帧进行分析。虽然扫描比特流的更多帧导致更为准确预测哪些帧或哪些宏块可能会被经常参考,但是这种做法也需要高水平的计算开销。通常而言,对少于整个视频流的视频流进行扫描是更为可行的。在部分解析中,前瞻解析器220可以基于对存储在缓冲器内的视频部分在时间上的快照(snapshot) 进行检查来对哪些视频部分具有最高值做出预测。作为前瞻过程的一部分而预览的帧的数目可能改变。在一个实施例中,之前已经浏览过的帧的数目与视频比特流缓冲器210的尺寸成比例。在另一个实施例中,解析器220 提前扫面数个帧,例如1-5个帧、6-10个帧、11-15个帧、16-20或21-25个帧等。作为一个示例,对解析器220的预测方面进行了解释,当前瞻解析器220提前读取下15个帧时,其已经知道了那些帧内的每个宏块的值。但是,解析器220可能还需要对那些下15个帧再往后的任何帧的值进行预测。提前扫描的帧越多,并且随着视频的进一步推进,预测的准确度也越高。随着时间的推移,视频部分的值可以是不均勻的。举例而言,随着时间的推移,高值视频部分可以转变成低值部分。发生这种情况时,管理器240可以将包含在高性能第一缓冲器260中的低值视频部分发送到第二缓冲器观0。同样地,低值视频部分也可以变成高值视频部分。发生这种情况时,管理器240可以将高值视频部分从第二缓冲器280发送到第一缓冲器260。当值基于带宽时,第一缓冲器中的每个解码视频部分的带宽大于第二缓冲器中的每个解码视频部分的带宽。在部分解析中,解析器220可以有规律地更新其对包含在第一缓冲器260和第二缓冲器观0中的视频部分的预测。在完全解析中,管理器240可以基于解码视频部分的当前预测值来对缓冲器中的视频部分的优先次序进行区分。前瞻解析器220在上文中多次被描述为对给定数目的帧进行前瞻。但是,前瞻解析器220可以对视频的任何部分进行前瞻。电路四5内的解码器230对视频部分进行重建,以使得它们能够由用户浏览。在一个实施例中,解码器230被称为像素处理器。为了对当前视频部分进行解码,解码器230 可以对通过地址转译器250获得的先前解码视频部分进行参考。存储器管理器240被连接到解码器230的输出,并且可以基于由解析器220预测的解码视频部分的预测值来将解码视频部分在第一存储器270中的第一缓冲器260和第二存储器290中的第二缓冲器280之间进行分配。可以将高值视频部分放入第一缓冲器沈0。 相反地,可以将低值视频部分放入第二缓冲器观0。因此,存储器管理器240提供一种用于基于视频数据的解码部分的预测值来确定是将视频数据的解码部分存储在第一存储器270 的第一缓冲器260中还是存储在第二存储器四0中的第二缓冲器观0中。在一个实施例中,管理器240按照最有价值到最没价值的顺序在表格中对视频部分进行组织。在一个实施例中,在使用第二缓冲器之前,先填充第一缓冲器。举例而言,管理器240可以用最有价值的片(例如,大带宽解码视频部分)来填充第一缓冲器沈0,并且随后将剩余的片发送到第二缓冲器观0中。管理器240还可以对第一缓冲器260和第二缓冲器280中的视频部分进行重组和丢弃。在完全解析和部分解析中,高值视频部分可以随着时间改变。因此,管理器240可以对第一缓冲器260和第二缓冲器观0进行重组,以使得高值视频部分保留在第一缓冲器沈0 中。此外,当一个视频部分不再被参考时,管理器240可以丢弃该过时的视频部分。这种智能的系统和方法与传统高速缓冲存储器不同。通常而言,传统高速缓冲存储器与诸如FIFO (先进先出)之类的确定性替换策略相关联。传统高速缓冲存储器通常与诸如直接映射或集合关联之类的确定性映射策略相关联。这些确定性策略不太可能在高速缓冲存储器中“净得”高值视频部分。传统高速缓冲存储器是临时的存储区域,其中,被频繁参考的数据可以被存储以用于快速存取。在传统高速缓冲存储器中,一旦数据存储在高速缓冲存储器中,将来对该数据的使用可以通过参考缓存副本的方式来实现,而不是对原始数据进行重取或重计算。与原本从计算机的主存储器取得数据的情况相比,传统高速缓冲存储器降低了对数据的存取时间。但是,传统高速缓冲存储器不是智能的。传统高速缓冲存储器被动地对数据进行保存。传统高速缓冲存储器只知道其复制的数据的地址,并且只有在需要数据的时,系统才检查传统高速缓冲存储器,而且数据要么在高速缓冲存储器中要么不在高速缓冲存储器中。传统高速缓冲存储器不主动地对将来帧进行前瞻。因此, 传统高速缓冲存储器没有时间来预测或确定哪个数据是重要的。因此,传统高速缓冲存储器不基于视频部分的预测值来做出决策。此外,传统高速缓冲存储器不对由视频的编码部分占用的带宽进行预测。因此,传统高速缓冲存储器不同于进行智能解码图片缓冲的系统和方法。在一个实施例中,第一存储器270和第二存储器290都不是高速缓冲存储器。在给定帧或图像的寿命期间,解码器230可以对其进行多次参考。通常不会在短时间(例如,处理一个宏块所需要的时间)内发生对参考帧的多次存取(数据局部性)。而是,典型地,在数个帧的跨度上发生数据局部性。由于参考行为不会在短的时间或空间跨度内发生,因此传统高速缓冲存储器不能使用数据局部性。在这种情况下,对于避免不得不从外部存储器一次又一次地加载给定帧的情况而言,将那些被高度参考的帧保存在内部或较近的存储器(例如,eDRAM)内是有用的,这种做法有助于整体的外部存储带宽,这是因为运动补偿带宽对整体的视频解码带宽的占用较大。在本发明的一个实施例中,将高值视频部分存储在第一存储器(例如,内部存储器)中,而将低值数据部分存储在第二存储器(例如,外部存储器)中。在另一个实施例中,在使用第二缓冲器之前,先填充第一缓冲器。与将所有的解码视频部分只存储在内部存储器或外部存储器中的一个中的系统相比,管理器240发送解码视频部分以对至少两个存储器进行参考的能力也是不同的。对于诸如HD视频之类的大视频应用而言,将所有的视频数据都存储在内部存储器中将需要非常大的eDRAM,这是很昂贵而且不切实际的。或者,将所有的HD视频数据都存储在SDRAM 中将会使用显著的带宽和功率,这对通信设备来说是不理想的。在本发明的一个实施例中, 通过将最频繁存取的视频部分存储在内部存储器(例如,eDRAM)中并且将其余的视频部分存储在外部存储器(例如,SDRAM)中,管理器240对各个视频部分的优先次序进行区分。由于这种优先级化的原因,可以实现经济成本和带宽的节省。
在视频部分被解码前,管理器240可以对第一缓冲器沈0中的空间进行分配。在一个实施例中,管理器140撤回那些不再是高值的视频部分(例如,预期不再会占用带宽)。 在另一个实施例中,在预期到高值视频部分的情况下,管理器140对第一缓冲器260中的可用存储器空间进行分配。在不同的实施例中,管理器240可以较少地或频繁地对解码视频部分进行分配。 在较少分配的实施例中,管理器240最初基于解码视频部分的值来将解码视频部分在第一存储器260和第二存储器280之间进行分配。一旦做出该分配,那么该较少分配的实施例允许视频部分保留在所分配的存储器中,直到帧已过时(即不再被参考)。换句话说,一旦管理器240做出了最初的分配决策,那么视频部分不会频繁地在第一存储器260和第二存储器280之间来回转移。虽然这是一个比较呆板的实施例,但是与更为频繁地进行分配的实施例相比,这个过程复杂度较低。在频繁分配检查的实施例中,管理器240最初基于解码视频部分的值来将解码视频部分分配给第一缓冲器260或第二缓冲器观0。在这个实施例中,管理器240不断地检查解码视频部分的值以审视是否应当对它们进行重分配。在这个实施例中,管理器240可以基于视频部分的值来在表格中对视频部分进行分类,以减轻识别应当对哪些视频部分进行重分配的负担。地址转译器250也被连接到解码器230。地址转译器250可以执行检查功能和转译功能。在检查功能中,地址转译器250可以在解码期间检查第一存储器270和第二存储器四0以确定是从第一存储器270还是从第二存储器290对存储器参考进行路由。然而, 地址转译器250并不需要直接地(例如,物理地)检查第一存储器270或第二存储器四0, 这是因为作为替代,地址转译器250可以访问页面表。页面表可以由存储器管理器240产生并且可以包含转译地址条目。地址转译器250可以访问转译地址条目以确定是从第一存储器270还是从第二存储器290对存储器参考进行路由。在转译功能中,通过动态地将第二存储器四0的虚拟地址转译成第一存储器270的物理地址,地址转译器250可以支持虚拟存储器的假象。页面表的概念与虚拟存储器概念具有类似应用。已经在传统计算机架构中使用了虚拟存储器的概念以实现主存储器和SDRAM之间的指令和数据的移动的自动化,从而展现了单个大存储器的表象。在本发明的一个实施例中,第一存储器270在物理地址空间对高值视频部分进行存储。不需要对第一存储器270的物理地址进行转译。可以将低值视频部分存储在第二存储器四0中,其中,第二存储器四0的地址可以由虚拟地址来表示。随后,通过动态地将第二存储器四0的虚拟地址转译成第一存储器270的物理地址,地址转译器250可以支持虚拟存储器的假象。结果,第一存储器270可以被用作包含来自第二存储器四0的数据的虚拟存储器。在一个实施例中,地址转译器250支持eDRAM和SDRAM之间的虚拟化。地址转译器250可以被实施为转译后援缓冲器。第一缓冲器260和第二缓冲器280可以分别是将解码视频部分存储在第一存储器 270和第二存储器290中的解码图片缓冲器。在一个实施例中,解码图片缓冲器被设计成大到足够存储6-8个视频帧。存储器的两个示例是嵌入式动态随机存取存储器(eDRAM)和同步动态随机存取存储器(SDRAM)。与典型的SDRAM不同,eDRAM是典型地集成在同一卡片、管芯或封装上的、 作为主ASIC或解码处理器的本地或内部存储器。嵌入式存储器允许宽得多的总线和更高的工作速度。然而,eDRAM的制造要昂贵得多,部分原因是不得不将数个管芯封装在一个芯片中。SDRAM具有同步接口,这意味着SDRAM在对控制输入做出响应之前将等待时钟信号。因此,SDRAM与计算机的系统总线是同步的。在通信设备中,功率和带宽是至关重要的。 eDRAM具有较低带宽和较低功耗的优点,但是与SDRAM相比,具有存储密度较低而且经济成本较高的缺点。第一存储器270可以在电路295上与解码器230集成在一起。由于第一存储器 270是在内部,因此第一存储器270中的视频部分离解码器230较近,并且由此对整体视频带宽的占用较小,从而节省功率。在一个实施例中,第一存储器是eDRAM。在另一个实施例中,第一存储器270比第二存储器290更近。在另一个实施例中,第一存储器270具有比第二存储器290更快的存取时间。第二存储器290可以位于电路四5的外部。由于在外部,第二存储器四0中的视频部分对整体视频带宽的占用更大,但是允许将第一存储器270设计成较小的存储器,并且因此更为便宜。对于实际应用而言,允许合理尺寸的、较近的外部存储器是可取的。在一个实施例中,第二存储器290是SDRAM。在另一个实施例中,第二存储器四0比第一存储器 270远或者比第一存储器270慢。电路295可以是诸如视频显示控制器或视频显示处理器之类的输入视频数据的任何组件。在不脱离本发明的精神的前提下,电路295可以具有诸如额外的存储器、缓冲器、解析器和处理器之类的没有在图2中示出的额外组件。在一个实施例中,通过将那些被更频繁参考的视频部分存储在离处理器近的缓冲器中,系统降低了带宽和功率。在另一个实施例中,发现高值视频部分并且将这些高值视频部分发送到内部存储器的缓冲器中,在其中,可以较快地对这些高值视频部分进行存取,从而降低了带宽并且节省了功率。由于额外的视频部分被存储在附近的缓冲器中,因此可以实现额外的带宽节省。在不考虑经济成本的一个实施例中,将所有的解码视频部分都存储在附近的缓冲器中。在另一个实施例中,基于预测值来将解码视频部分在第一缓冲器260 和第二缓冲器280之间进行分配。相反地,将至少一些视频部分存储在外部存储器缓冲器中的做法有一个优点。视频标准(例如,H264)要求一定量的解码视频(例如,6-8个帧)可供参考。通过将至少一些视频部分存储在外部缓冲器中,这种做法允许将外部存储器设计成较小的存储器,以使得两个缓冲器都满足视频标准所要求的解码视频存储量。较小的嵌入式存储器比较大的嵌入式存储器便宜得多。因此,可以在通过使用较大较近的缓冲器来节省带宽和通过使用较小较近的缓冲器来节省经济成本之间做一个折衷。为了实现低带宽和低功率,消耗较多带宽的视频部分应当被存储在解码器230或电路四5附近。由于在较远的距离上发送视频部分会消耗更多的功率,因此内部存储器存储优于外部存储器存储。此外,如上所述,诸如HD视频的一些视频解决方案会比标准视频消耗更多的存储器空间。对于很多电路应用而言,大到足够用于HD视频帧的内部存储器通常是非常昂贵的。举例而言,H264视频标准需要解码图片缓冲器存储并且保持大约6-8个可供解码器进行参考的解码图片帧。如果每个帧约为3MB,那么对6-8个帧进行存储将需要18-24MB的存储器,这对很多电路应用中的内部存储器而言,都是过于昂贵的。某些视频区域不随着时间改变,并且这些视频区域被称为是静态的。静态视频区域往往会大量出现,特别是在高分辨率视频中。静态视频区域包含跳过的视频部分(例如, 跳过的宏块),并且具有零运动向量预测值。在对静态视频部分进行解码后,解码视频部分与另一解码视频部分是相同的。在一个实施例中,相同视频部分是包含与另一解码视频部分完全相同的像素的解码视频部分。按照惯例,会产生相同解码视频部分的重复“副本”并且将其存储在存储器中。举例而言,如果存在5个相同宏块,那么按照惯例,将会产生原始的宏块和4个副本并且将它们存储在存储器中。传统方法的缺点包含用于产生这4个副本的额外带宽以及被这4个副本占用的额外存储空间。在一个实施例中,只占用存储器中的单个物理位置,并且这个位置表示多个相同视频部分。举例而言,如果存在5个相同宏块,那么5个宏块中的每个宏块在存储器中将由该单个存储器位置来表示。该单个存储器位置被当作每个相同视频部分的参考位置。在一个实施例中,前瞻解析器220将跳过的视频部分标记为“跳过”。当解码器230对跳过的视频部分进行解码时,解码器230使用地址转译器250来参考该参考位置。针对相同视频部分只对单个参考位置进行存储和参考显著地节省了带宽。特别地,唯一的带宽消耗是由显示处理器(未示出)进行的读出操作导致的。对于相同视频部分,这个方法消除了解码器230和存储器270以及290之间的所有其他写出和读入带宽分量。由于带宽的节省,实现了伴随着的功率节省。此外,存储空间和复杂度也得以降低。存储空间的降低有效地增加了可以存在于第一存储器270中的视频部分的数目。由于存储空间的降低,可以将来自第二存储器290的更多视频部分存储在第一存储器270中,这提供了额外的带宽节省。图3是示出了一种进行智能解码图片缓冲的高层级处理的流程图。该过程在步骤 300处开始。在步骤310处,这个方法使用前瞻解析器来对编码比特流中的视频部分的值进行预测。在一个实施例中,前瞻解析器可以使用完全解析或部分解析来对给定数目的编码帧进行前瞻,以对解码后的一部分帧的带宽值进行预测。在步骤320处,这个处理使用解码器来对视频部分进行解码。如上所讨论,视频部分可以是帧、图片和宏块等。接下来,决策步骤330对视频部分的预测值是否为高进行确定。如果是,那么该处理移向步骤340,其中,将具有高预测值的解码视频部分存储在第一存储器中。在一个实施例中,第一存储器是内部存储器(例如,eDRAM)。如果对决策步骤330的回答是否,那么该处理移向步骤350,在步骤350中,该处理将解码视频部分存储在第二存储器中。在一个实施例中,第二存储器是外部存储器(例如, SDRAM)中。在步骤360处,该处理将第二存储器的地址转译成虚拟第一存储器地址。在一个实施例中,这个转译是由地址转译器来执行的。在步骤370处,该处理对来自第一存储器或虚拟第一存储器的解码视频部分进行参考。随后,该处理要么循环回到步骤310,要么在步骤380处结束。图4示出了使用智能解码图片缓冲的测试结果图。测试条件包含eDRAM内部存储器、SDRAM外部存储器、4个解码参考图片帧,其中每个解码帧的分辨率为1920xl088(每个约3MB),并且因此4个解码帧总共约12M。此外,测试条件包含H264压缩、IBBPBBP组的帧格式、30帧/秒的帧速率、64比特的总线宽度、4KB视频部分、6虹64参考图片、前瞻解析器先于解码器对15个帧进行前瞻,以及完全解析。在图4的y轴中,以兆字节/秒(mbs)来对带宽节省进行衡量。在χ轴中,用第一存储器和第二存储器器中的兆字节数据来对视频部分进行衡量。在这个测试中,第一存储器是eDRAM,而第二个存储器是SDRAM。测试的结果表明,带宽节省与放进第一存储器中的数据量有关,但不是直接地成比例关系。在这个测试中,当12MB中的OMB存储在第一存储器中(即全部的12MB都位于第二存储器中),那么节省的带宽为OMBps。随着更多的存储器从第二存储器移位到第一存储器,就实现了带宽的节省。举例而言,当12MB中的1MB存储在第一存储器中(意味着第二存储器中有IlMB的数据),就实现了相应的50MBps的带宽节省。当12MB中的4MB (或 5MB)存储在第一存储器中,就实现了相应的250MBps的带宽节省。换句话说,当视频尺寸的 30% (即12MB中的4MB)存储在第一存储器中,那么可以实现50%的带宽节省(即300MBps 中的250MBps)。如果将全部的12MB都存储在第一存储器中,就实现了相应的300MBps的带宽节省。但是,将12MB的存储内容存储在第一存储器中的代价可能是高昂的。将少于全部解码视频部分的解码视频部分存储在第一存储器中可能是所期望的在带宽和经济成本之间的折衷。由于通过管理器的优先级化获得的带宽节省以及随之产生的功率节省,因此可以对诸如高清视频之类的大存储器应用进行处理。通过上面的描述,应当理解的是上述实施例提供了对设备(例如,移动站)中的视频部分进行的智能解码图片缓冲。所描述的实施例可以应用于双模AMPS和CDMA系统中的通信。此外,本领域的普通技术人员很容易想到如何在其中需要进行智能缓冲的类似情形中应用本发明。名称为"Spread Spectrum Multipl e Access Communication System Using Satellite or Terrestrial Repeaters"的美国专利 No. 4,901, 307 对 CDMA 通信系统的一般原理(特别是用于通信信道上的传输的扩频信号的产生的一般原理)进行了描述,该专利已转让给本发明的受让人。此外,名称为“System and Method for Generating Signal Waveforms in a CDMA Cellular Telephone System,,的美国专利 No. 5,103,459 公开了与 PN扩频和Walsh覆盖相关的原理,以及用于产生CDMA扩频通信信号的技术。此外,本发明的实施例利用了数据的时分复用以及与“高数据速率”通信系统相关的各种原理,并且可以在“高数据速率”通信系统中使用本文所公开的实施例,这种系统例如1997年11月3日提交的、申请号为 08/963,386、名称为"Method and Apparatus for High Rate Packet Data Transmission”的美国专利申请中所公开的通信系统,该申请已转让给本发明的受让人。本领域技术人员应当理解,可以使用任何各种不同技术和方法来表示信息和信号。例如,在上面的描述中提及的数据、指令、命令、信息、信号、比特、符号和码片可以由电压、电流、电磁波、磁场或粒子、光场或粒子或者其组合来表示。结合本文公开的实施例所描述的各种示例性逻辑方框、模块和电路可以用以下组件来实现或执行通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立硬件组件、或者其设计用于执行本文所述功能的任意组合。通用处理器可以是微处理器,但是可替代地,处理器可以是任何传统的处理器、控制器、微控制器或状态机。处理器也可以实现为计算设备的组合,例如DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP核或任何其它类似配置。结合本申请的实施例所描述的方法或者算法的步骤可直接体现为硬件、由处理器执行的软件模块或两者的组合。软件模块可以位于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其它形式的存储介质中。将一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,并且可向该存储介质写入信息。或者,存储介质也可以集成到处理器。处理器和存储介质可以位于ASIC中。ASIC可以位于移动站中。或者,处理器和存储介质也可以作为分立组件存在于移动站中。提供所公开的实施例的先前描述以使得本领域的技术人员能够获得或使用本发明。对这些实施例进行各种各样的修改对本领域技术人员来说是显而易见的,并且在不背离本发明精神和范围的前提下,本文所定义的一般原理可以应用在其他实施例上。因此,本发明并不限于本文所给出的实施例,而是与本文所公开的原理和新颖的特征相一致的最广范围相符合。
权利要求
1.一种视频数据缓冲系统,包括前瞻解析器,其被配置为通过对与视频数据的解码部分相对应的视频数据比特流的编码部分进行前瞻来对所述视频数据的解码部分的值进行预测;解码器,其被配置为对所述视频数据比特流的所述编码部分进行解码;以及存储器管理器,其被配置为基于所述视频数据的解码部分的所预测的值来将所述视频数据的解码部分存储在第一存储器的第一缓冲器中或第二存储器的第二缓冲器中。
2.根据权利要求1所述的系统,其中,所述视频数据的解码部分的所预测的值是所述视频数据的解码部分的预测带宽、所述视频数据的解码部分的预测寿命或者在所述寿命期间所述视频数据的解码部分的预测带宽变化。
3.根据权利要求2所述的系统,其中,所述第一缓冲器中的所述解码视频数据的每一部分的所述预测带宽大于所述第二缓冲器中的所述解码视频数据的每一部分的所述预测带宽。
4.根据权利要求1所述的系统,其中,与所述第二缓冲器中的视频数据的每个解码部分相比,所述第一缓冲器中的视频数据的每个解码部分被预测为更加频繁地被参考。
5.根据权利要求1所述的系统,其中,所述视频数据的解码部分的所预测的值是所述视频数据的解码部分将要被参考以用于进行运动补偿的预测次数。
6.根据权利要求2所述的系统,其中,所述第一缓冲器是解码图片缓冲器,其中,所述解码图片缓冲器是内部存储器或嵌入式动态随机存取存储器(“eDRAM”)。
7.根据权利要求6所述的系统,其中,当所述视频数据的解码部分的所述预测带宽被预测为大于或等于阈值时,所述视频数据的解码部分被存储在内部存储器中。
8.根据权利要求2所述的系统,其中,所述第二缓冲器是解码图片缓冲器,其中,所述解码图片缓冲器是外部存储器或同步动态随机存取存储器(“SDRAM”)。
9.根据权利要求8所述的系统,其中,当所述视频数据的解码部分的所述预测带宽被预测为小于或等于阈值时,所述视频数据的解码部分被存储在外部存储器中。
10.根据权利要求1所述的系统,其中,所述前瞻解析器执行完全解析或部分解析。
11.根据权利要求1所述的系统,其中,所述视频数据的所述部分包括解码图片缓冲器页面、帧、宏块或子宏块。
12.—种对视频数据进行缓冲的方法,所述方法包括通过对与视频数据的解码部分相对应的视频数据比特流的编码部分进行前瞻来对所述视频数据的解码部分的值进行预测;对所述视频数据比特流的所述编码部分进行解码;以及基于所述视频数据的解码部分的所预测的值来确定是将所述视频数据的解码部分存储在第一存储器的第一缓冲器中还是第二存储器的第二缓冲器中。
13.根据权利要求12所述的方法,其中,所述视频数据的解码部分的所预测的值是所述视频数据的解码部分的预测带宽、所述视频数据的解码部分的预测寿命或者在所述寿命期间所述视频数据的解码部分的预测带宽变化。
14.根据权利要求13所述的方法,其中,所述第一缓冲器中的所述解码视频数据的每一部分的所述预测带宽大于所述第二缓冲器中的所述解码视频数据的每一部分的所述预测带宽。
15.根据权利要求12所述的方法,其中,所述视频数据的解码部分的所预测的值是所述视频数据的解码部分将要被参考以用于进行运动补偿的预测次数。
16.根据权利要求12所述的方法,其中,所述第一缓冲器是解码图片缓冲器,其中,所述解码图片缓冲器是内部存储器或嵌入式动态随机存取存储器(“eDRAM”)。
17.根据权利要求12所述的方法,其中,所述第二缓冲器是解码图片缓冲器,其中,所述解码图片缓冲器是外部存储器或同步动态随机存取存储器(“SDRAM”)。
18.根据权利要求12所述的方法,其中,在使用所述第二缓冲器之前,对所述第一缓冲器进行填充。
19.一种视频数据缓冲系统,包括用于通过对与视频数据的解码部分相对应的视频数据比特流的编码部分进行前瞻来对所述视频数据的解码部分的值进行预测的模块;用于对所述视频数据比特流的所述编码部分进行解码的模块;以及用于基于所述视频数据的解码部分的所预测的值来确定是将所述视频数据的解码部分存储在第一存储器的第一缓冲器中还是第二存储器的第二缓冲器中的模块。
20.根据权利要求19所述的系统,其中,所述视频数据的解码部分的所预测的值是所述视频数据的解码部分的预测带宽、所述视频数据的解码部分的预测寿命或者在所述寿命期间所述视频数据的解码部分的预测带宽变化。
21.根据权利要求19所述的系统,其中,所述视频数据的解码部分的所预测的值是所述视频数据的解码部分将要被参考以用于进行运动补偿的预测次数。
22.一种包含软件的计算机可读介质,所述软件在被执行时使得计算机执行以下动作通过对与视频数据的解码部分相对应的视频数据比特流的编码部分进行前瞻来对所述视频数据的解码部分的值进行预测;对所述视频数据比特流的所述编码部分进行解码;以及基于所述视频数据的解码部分的所预测的值来确定是将所述视频数据的解码部分存储在第一存储器的第一缓冲器中还是第二存储器的第二缓冲器中。
23.根据权利要求22所述的介质,其中,所述视频数据的解码部分的所预测的值是预测带宽。
24.根据权利要求22所述的介质,其中,所述视频数据的解码部分的所预测的值是所述视频数据的解码部分将要被参考以用于进行运动补偿的预测次数。
25.一种视频数据缓冲系统,包括前瞻解析器,其被配置为对已编码的视频数据的跳过部分进行识别和标记;解码器,其被配置为对所述视频数据的跳过部分进行解码,其中,经解码的所述视频数据的跳过部分具有视频数据的对应相同的解码部分;以及存储器管理器,其被配置为将经解码的所述视频数据的跳过部分和所述视频数据的对应相同的解码部分存储在单个参考存储器位置中。
26.根据权利要求25所述的系统,其中,所述单个参考存储器位置位于第一存储器中。
27.根据权利要求沈所述的系统,其中,所述第一存储器是嵌入式动态随机存取存储器(“eDRAM”)。
全文摘要
本文描述了一种用于进行智能解码图片缓冲的系统和方法。在一个实施例中,视频比特流缓冲器接收并且临时保持编码压缩比特流,其中该编码压缩比特流包含视频的各个部分。随后,前瞻解析器提前在视频中进行扫描以分析视频比特流缓冲器中的编码视频比特流的各个部分,从而对视频的值进行预测。基于这个预测,智能存储器管理器对各个视频部分的优先次序进行区分,并且随后将高值视频部分发送到第一缓冲器并将低值视频部分发送到第二缓冲器。
文档编号H04N7/26GK102246522SQ200980149660
公开日2011年11月16日 申请日期2009年12月11日 优先权日2008年12月12日
发明者R·纳加拉杰, S·A·莫洛伊 申请人:高通股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1