发明内容
本发明要解决的问题是现有技术难以在保持视频质量的情况下显著降低片外存储器的访问带宽和功耗。
为解决上述问题,本发明技术方案提供一种视频帧缓存再压缩装置,适于对视频帧中的像素单元进行压缩,包括:第0级至第n级压缩器,每一级压缩器压缩后产生的误差数据作为下一级压缩器的输入单元,同一级压缩器的输入单元的尺寸和目标压缩率相同;其中n为自然数。
可选的,压缩器的级别越高,其对应输入单元的尺寸越大。
可选的,各级压缩器在对应输入单元的尺寸不同时,分别采用不同的压缩模块。
可选的,两个或两个以上不同级别的压缩器在对应输入单元的尺寸相同或相似时复用同一压缩模块。
可选的,每一级压缩器支持单独编码或参考上一级压缩器的压缩模式进行预测编码。
可选的,各级压缩器均包含量化工具,支持根据目标压缩率调整量化级数。
为解决上述问题,本发明技术方案还提供一种视频帧缓存再压缩方法,包括:将视频帧中的每个像素单元作为输入单元依次送入上述的视频帧缓存再压缩装置的第0级压缩器进行压缩;以每一级压缩器压缩后产生的误差数据作为输入单元送入下一级压缩器进行压缩。
可选的,根据分配的带宽情况确定数据压缩的最高压缩级数imax1,所述imax1的取值范围为[1,n]。
可选的,所述以每一级压缩器压缩后产生的误差数据作为输入单元送入下一级压缩器进行压缩包括:将第i-1级压缩器产生的每Xi/Xi-1个误差数据合并为大小等于L*Xi的误差数据单元EUi,并将所述EUi作为第i级压缩器的输入单元;其中Xi为大于或等于1的整数且Xi是Xi-1的整数倍,i的取值范围为[1,n-1],L为像素单元的存储尺寸。
可选的,所述以每一级压缩器压缩后产生的误差数据作为输入单元送入下一级压缩器进行压缩包括:将第i-1级压缩器产生的每Xi/Xi-1个误差数据合并为大小等于L*Xi的误差数据单元EUi,并将所述EUi作为第i级压缩器的输入单元;若第i-1级压缩器进行的压缩均为无损压缩或者i大于imax1,则跳过第i级压缩器的第i级压缩;其中,所述Xi为大于或等于1的整数且Xi是Xi-1的整数倍,i的取值范围为[1,n-1],L为像素单元的存储尺寸,imax1为根据分配的带宽情况确定的数据压缩的最高压缩级数,所述imax1的取值范围为[1,n]。
可选的,所述视频帧缓存再压缩方法,还包括:将一帧视频对应的存储空间分为n个分别对应于第0级至第n-1级压缩器的子存储空间;将第0级至第n-1级压缩器的压缩数据存储于各自对应的子存储空间,将第n级压缩器的压缩数据分别存储于第1级至第n-1级压缩器对应子存储空间中的空余存储空间。
可选的,所述将第n级压缩器的压缩数据分别存储于其余各级压缩器对应子存储空间中的空余存储空间包括:当第n-1级压缩器进行的压缩为有损压缩时,计算第n级压缩的目标存储空间;若第n级压缩的目标存储空间大小为0,则跳过第n级压缩,否则进行第n级压缩;将第n级压缩单元依照第1级至第n-1级压缩单元的大小进行拆分,并将拆分后的各部分数据依次存储于第1级至第n-1级子存储空间;其中,第i级压缩单元是指对一个像素单元或误差数据单元进行第i级压缩后形成的压缩数据,所述误差数据单元由一个误差数据构成或者由一个以上误差数据合并而成,i的取值范围为[1,n]。
可选的,所述计算第n级压缩的目标存储空间包括:以n-1个移位寄存器分别缓存第0级至第n-2级压缩器完成压缩后的压缩标志,所述压缩标志用于标识下一级压缩器对应的子存储空间是否存在空余;当第n-1级压缩器压缩完一个输入单元后,将各移位寄存器都左移1比特;将各级中对应第n-1级压缩单元的所有压缩单元的压缩标志进行或运算后存入相应移位寄存器的最低比特,然后读取各寄存器最高位比特;将标识为空余的各级压缩单元的存储空间相加,得到第n级压缩的目标存储空间大小。
可选的,所述压缩标志存储于各级压缩单元中或集中存储于片内存储器。
可选的,所述第n级压缩单元拆分后的各部分数据存储的位置为与当前第n-1级压缩单元间隔T×Xn-1长度的第n-1级压缩单元在各级子存储空间中对应的第一个压缩单元位置,所述T为自然数,Xn-1为i=n-1时的Xi,Xi为大于或等于1的整数且Xi是Xi-1的整数倍,i的取值范围为[1,n-1]。
为解决上述问题,本发明技术方案还提供一种视频帧缓存解压缩装置,包括:第0级至第n级解压缩器,分别对应于上述视频帧缓存再压缩装置的第0级至第n级压缩器,各级解压缩器分别对其对应的压缩器的压缩数据进行解压缩;输出单元,用于将各级解压缩器解压缩后获得的数据相加以生成像素单元的数据。
为解决上述问题,本发明技术方案还提供一种视频帧缓存解压缩方法,包括:以上述视频帧缓存解压缩装置的第0级至第n级解压缩器分别对各自对应的压缩器的压缩数据进行解压缩;将各级解压缩器解压缩后获得的数据相加以生成像素单元的数据。
可选的,所述以第0级至第n级解压缩器分别对各自对应的压缩器的压缩数据进行解压缩包括:根据要读取的像素单元的位置判断需要读取的第0级至第n级压缩单元的位置;其中,第i级压缩单元是指对一个像素单元或误差数据单元进行第i级压缩后形成的压缩数据,所述误差数据单元由一个误差数据构成或者由一个以上误差数据合并而成,i的取值范围为[1,n];分别从第0级至第n-1级子存储空间中读取所需的第0级至第n-1级压缩单元,并由第1级至第n-1级解压缩器对读取的压缩数据进行解压缩;所述第0级至第n-1级子存储空间由所述要读取的像素单元所属视频帧对应的存储空间拆分而成;分别从第1级至第n-1级子存储空间中读取被拆分的第n级压缩单元对应位置的数据,进行拼接后恢复所述第n级压缩单元,再由第n级解压缩器对所述第n级压缩单元进行解压缩。
可选的,读取所需的各级压缩单元包括:若压缩单元的压缩标志集中存于片内存储器,则根据压缩标志表示的压缩数据长度向所需读取的各级压缩单元对应的片内存储器并行发送读数据指令,所述压缩标志用于标识下一级压缩器对应的子存储空间是否存在空余。
可选的,读取所需的各级压缩单元包括:若压缩标志存于各级压缩单元中,则依次从片外存储器中读取各级压缩单元,直至从当前压缩单元中分析出该压缩单元所进行的压缩为无损压缩或者达到最高解压缩级数,所述压缩标志用于标识下一级压缩器对应的子存储空间是否存在空余。
可选的,所述视频帧缓存解压缩方法,还包括:根据分配的带宽情况确定数据解压缩的最高级数imax2,所述imax2的取值范围为[1,n]。
可选的,输入各级解压缩器的数据复用片内存储器中存储的从片外存储器中已读取压缩数据。
可选的,所述片内存储器中缓存压缩数据的大小根据压缩单元的访问概率非均匀分配,所述压缩单元是指对一个像素单元或误差数据单元进行压缩后形成的压缩数据,所述误差数据单元由一个误差数据构成或者由一个以上误差数据合并而成。
可选的,访问概率越高的压缩单元分配的存储空间越大。
为解决上述问题,本发明技术方案还提供一种视频系统,包括:上述视频帧缓存再压缩装置和视频帧缓存解压缩装置;第一存储器,适于存储所述视频帧缓存再压缩装置对视频帧中的像素单元进行压缩后形成的压缩数据。
与现有技术相比,本发明技术方案至少具有以下优点:
通过采用多级像素单元压缩器,以每一级压缩器压缩后产生的误差数据作为下一级压缩器的输入单元,并且同一级压缩器的输入单元的尺寸和目标压缩率相同,由于各级压缩子空间中压缩单元大小相同,既可以用极低地代价实现随机像素块访问,避免了帧缓存无损再压缩方法实现随机访问的高代价,又能避免传统帧缓存有损再压缩方法在压缩过程中造成的数据误差,从而能在保持视频质量的同时,有效降低存储器带宽和功耗。
由于多级压缩结构提供了多种压缩目标尺寸,减少了压缩数据传输中冗余数据的比例,相比传统帧缓存有损再压缩方法进一步降低了带宽。
高级别的压缩器采用较大尺寸的输入单元,最后一级压缩器复用其余级的存储空间,都有效扩展了像素单元的最大压缩尺寸,减少了因压缩尺寸限制带来的视频损失。
解压缩装置中采用多级片内存储器缓存压缩数据,可以有效降低带宽,且所述片内存储器的大小根据压缩单元的访问概率非均匀分配,可以减小片内存储器大小。
视频帧缓存再压缩/解压缩装置支持根据带宽情况自适应限制传输的压缩数据级数,调整传输数据量,支持自适应控制视频损失来换取视频编解码系统的实时性能,避免跳帧。
具体实施方式
如背景技术中所述,现有的集成帧缓存再压缩技术的视频系统中,难以在保持视频质量的情况下显著降低片外存储器的访问带宽和功耗。下面首先对此进行简单分析:
为了能够保持视频质量,理想的压缩应该是无损的,在无损压缩的情况下,视频像素单元的压缩率受到视频内容、像素单元大小等因素的影响。选择大的像素单元尺寸可以带来好的压缩率,但是太大的像素单元尺寸,会使得编解码器读入的冗余像素增加,影响带宽性能。受到硬件实现的限制,已有的设计都是在提高压缩率和减小带宽两者间进行平衡,确定一个固定的压缩单元大小。
虽然无损FBR可以保持视频质量,但是由于图像块压缩后尺寸不一,为了满足运动补偿模块对像素随机访问的要求,需要为每个压缩单元建立索引,存储压缩后的起始地址和长度。以高清1080p视频为例,假设总线宽度64bit,按照8×8单元压缩,每帧需要85KB的空间来存储压缩单元地址,对于如H.264的多参考帧的编解码情况,每帧编解码用到的地址存储空间还要乘以参考帧数量,因此将压缩单元地址存在片内是难以接受的;而将地址信息存在片外,常需要扩展地址比特位数以对齐总线宽度,使得读写地址信息需额外增加不少带宽,并且每个压缩单元的访问延时都成倍增加。因此,完全无损的FBR很少在编解码器中得到实际应用。
实际采用的有损FBR方法,大都将所有像素单元按某一相同压缩率进行压缩。当像素单元简单时,压缩后的尺寸小于分配的存储空间,压缩后没有视频损失,但多分配的存储空间仍需读写,这意味着冗余数据的传输。而当像素单元复杂时,按照有损的方法强制压缩到目标尺寸,目标尺寸越小,视频损失越大。由于帧缓存压缩引入的误差会通过帧间预测迅速积累扩大,为了平衡最坏情况,减小视频损失,实际设计中只能选用较大的目标压缩尺寸(目标压缩率),使得节省带宽的效果有限。
基于上述分析,发明人考虑,造成已有的有损FBR算法性能不高的原因,是受限于同时减少片外存储空间和带宽的思想限制,即现有的有损FBR方法一般既要求实现片外存储空间的减少以达到降低成本的目的,又要求节省对片外存储器的访问带宽并降低功耗。近来,在移动高分辨率视频编解码设备中,由于存储器的成本显著下降,与带宽占用和高功耗对系统的整体性能的影响相比,视频帧占用的片外存储空间不再成为系统的瓶颈。
因此,本发明实施方式提供一种视频帧缓存自适应多级再压缩装置,在保持原有存储空间不变或者少量增加片外存储空间的情况下,采用多级像素单元压缩器,既保留有损FBR方法实现随机访问的低复杂度优点,又引入无损FBR压缩率可自适应的特性,在保持视频质量的同时,能有效降低存储器带宽和功耗;并且,在具体实施时,这一视频帧缓存再压缩装置还支持根据带宽分配情况来自适应调整带宽需求的应用。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施例做详细的说明。
本发明实施例提供的视频帧缓存再压缩装置,适于对视频帧中的像素单元进行压缩,包括:第0级至第n级压缩器,每一级压缩器压缩后产生的误差数据作为下一级压缩器的输入单元,同一级压缩器的输入单元的尺寸和目标压缩率相同;其中n为自然数。
本实施例中,所述视频帧缓存再压缩装置采用多级压缩器,所述第0级至第n级压缩器具体依次为第0级压缩器、第1级压缩器、第2级压缩器、……、第n-1级压缩器、第n级压缩器,其中:第0级压缩器用于对输入的视频帧中的每一个像素单元依次进行第0级压缩,此时每一个像素单元作为第0级压缩器的输入单元;若第0级压缩如果存在损失,则第0级压缩产生的误差数据(可简称为第0级误差数据)送入第1级压缩器进行第1级压缩,此时第0级误差数据作为第1级压缩器的输入单元;若第1级压缩如果存在损失,则第1级压缩产生的误差数据(可简称为第1级误差数据)送入第2级压缩器进行第2级压缩,此时第1级误差数据作为第2级压缩器的输入单元;同理如此,每一级压缩器压缩后产生的误差数据作为下一级压缩器的输入单元,直至某一级压缩器进行的压缩均为无损压缩(不产生误差数据)或者到达预设的最高压缩级数为止,所述最高压缩级数可以根据分配的带宽情况确定。
需要说明的是,本发明实施例中的一级压缩器并不局限于一个压缩器,某一级别的压缩器可能包含有多个压缩器,一个压缩器也可能复用为多个级别的压缩器;第0级压缩器与其他级别压缩器是有所不同的,第0级压缩器的输入单元是视频帧中的像素单元,经过第0级压缩器压缩后形成的数据是像素单元的压缩数据,而其他级别压缩器的输入单元是各自上一级压缩所产生的误差数据,经过其他各级压缩器压缩后形成数据是误差数据的压缩数据;此外,本发明实施例中将每个像素单元或者误差数据单元经过压缩器压缩之后形成的压缩数据称为一个压缩单元,所述误差数据单元可以由一个误差数据构成,也可以由一个以上误差数据合并而成。特别地,经过第0级压缩器压缩后的每一个压缩单元是压缩后的像素单元,而经过其他级别的压缩器压缩后的每一个压缩单元是压缩后的误差数据。
本实施例提供的所述视频帧缓存再压缩装置的多级压缩器中,同一级压缩器的输入单元的尺寸和目标压缩率相同,这样能够便于数据随机访问,从而能保留有损FBR方法实现随机访问的低复杂度优点,避免了帧缓存无损再压缩方法实现随机访问的高代价;而不同级别的压缩器,对应输入单元的大小能够改变,由于多级压缩结构提供了多种压缩目标尺寸,减少了压缩数据传输中冗余数据的比例,相比传统帧缓存有损再压缩方法进一步降低了带宽和功耗。在本实施例中,压缩器的级别越高,其对应输入单元的尺寸越大,由于较大的输入单元尺寸有利于提高压缩性能,因此能够有效扩展像素单元的最大压缩尺寸,减少因压缩尺寸限制带来的视频损失。当然,在其他实施例中,对于不同级别的压缩器,对应输入单元的大小也可以相同,这并不影响所述视频帧缓存再压缩装置的实现。
本发明实施例中的压缩器没有具体指定,可以根据各级输入数据特征分别采用不同的压缩器,即当各级压缩器在对应输入单元的尺寸不同时,分别采用不同的压缩模块实现;也可以根据输入数据特征复用某些压缩器,即当两个或两个以上不同级别的压缩器在对应输入单元的尺寸相同或相似时,可以复用同一压缩模块实现,从而能够减少实现代价。所述压缩器对应输入单元的尺寸相似是指输入压缩器的数据规模较为接近,可以预先针对各数据规模设定对应的输入单元的尺寸范围,将处于同一尺寸范围内的输入单元确定为尺寸相似的输入单元。
本实施例中,每一级压缩器可以支持单独编码以提高压缩并行性,也可以参考上一级压缩器的压缩模式进行预测编码以提高压缩率,所述压缩模式包括压缩器的输入单元尺寸和目标压缩率。
此外,本发明实施例中的各级压缩器均包含量化工具,支持根据目标压缩率调整量化级数。
在实际实施时,由于大量像素单元仅需要少数级压缩就可完成,压缩后传输的数据量减少,且多级压缩结构提供了多种目标压缩尺寸,减少了压缩数据传输中冗余数据的比例,因此本发明实施例提供的视频帧缓存多级再压缩装置,在保持视频质量的同时,能显著降低对片外存储器的访问带宽和功耗,并支持视频质量和带宽的自适应调整。
基于上述视频帧缓存再压缩装置,本实施例还提供一种视频帧缓存再压缩方法,包括:将视频帧中的每个像素单元作为输入单元依次送入上述视频帧缓存再压缩装置的第0级压缩器进行压缩;以每一级压缩器压缩后产生的误差数据作为输入单元送入下一级压缩器进行压缩。
下面结合附图对上述视频帧缓存再压缩方法作详细说明。
本发明实施例中像素单元的自适应多级再压缩过程如图3所示。一帧视频图像分割成大小相等的长方形像素单元PU,设像素单元PU的存储尺寸等于L(单位为总线宽度),则一帧图像含有PU的数量为:一帧存储尺寸/L。以总线宽度64bit,PU等于8×8像素块为例,L等于8,一帧1080P4:2:0图像包含48960个PU。
本实施例中,自适应多级PU压缩流程如下:
1)确定各级压缩器的压缩数据的存储空间。在本实施例中,将一帧视频对应的存储空间分为n个分别对应于第0级至第n-1级压缩器的子存储空间;将第0级至第n-1级压缩器的压缩数据存储于各自对应的子存储空间,将第n级压缩器的压缩数据分别存储于第1级至第n-1压缩器对应子存储空间中的空余存储空间。
参阅图3,将一帧视频图像的存储空间拆分为n个大小不同的子存储空间,具体为Cache0、Cache1、Cache2、…、Cache n-1,分别对应于第0级压缩器、第1级压缩器、第2级压缩器、…、第n-1级压缩器,可以分别称为第0级存储子空间、第1级存储子空间、第2级存储子空间、…、第n-1级存储子空间,其中:Cache0用于存储第0级压缩器的压缩数据CU0,分配的存储空间长度为L0;Cache1用于存储第1级压缩器的压缩数据CU1,分配的存储空间长度为L1;Cache2用于存储第2级压缩器的压缩数据CU2,分配的存储空间长度为L2;…;Cache n-1用于存储第n-1级压缩器的压缩数据CUn-1,分配的存储空间长度为Ln-1。因为一帧视频图像的存储空间的尺寸为L,所以L=L0+L1+L2+…+Ln-1,第j个子存储空间分配的比例为Lj/L,j=0,1,2…,n-1。L0、L1、L2、…、Ln-1又分别为第0级压缩器、第1级压缩器、第2级压缩器、…、第n-1级压缩器对各自对应输入单元进行压缩的目标压缩尺寸。
本实施例中,不存在与第n级压缩器相对应的独立存储空间Cache n,第n级压缩器的压缩数据CUn分别通过Cache1、Cache2、…、Cache n-1中的空余存储空间进行存储。如图3所示,可以将压缩数据CUn拆分为长度分别等于L1、L2、…、Ln-1的几个数据块,各数据块对应存储于第1级子存储空间、第2级子存储空间、…、第n-1级子存储空间。
最后一级压缩器通过复用除第0级压缩器之外的其余各级压缩器的空余存储空间,不仅能在保持原有存储空间不变的情况下显著降低存储器带宽和功耗,而且有效扩展了像素单元的最大压缩尺寸,减少了因压缩尺寸限制带来的视频损失。
需要说明的是,在其他实施例中,也可以不将一帧视频对应的存储空间拆分为n个大小不同的子存储空间,还可以不利用其余各级压缩器的空余存储空间存储最后一级压缩器的压缩数据,而是通过增加存储空间Cache n的方式以存储第n级压缩器的压缩数据。
2)根据分配的带宽情况确定数据压缩的最高级数imax1,imax1的取值范围为[1,n],即imax1为1到n之间的某一整数(包括1和n)。
一般来说,实际分配的带宽越大,则最高压缩级数imax1的取值也可以越大,此时因压缩而带来的损失也越少,后续对压缩后的数据进行解压缩所获得的图像质量也越好。反之,当实际分配的带宽较小时,那么受到带宽限制,压缩的级数不允许太多,否则会导致数据传输量过大,从而影响视频编解码系统的实时性能。
在具体实施时,当确定最高压缩级数imax1之后,对于超过imax1级的数据则不进行压缩和传输。在分配的存储带宽不足的情况下,可以省去最后几级的数据压缩和传输,以少量视频损失来换取视频编解码系统的实时性能,避免跳帧。
因此,本实施例提供的视频帧缓存再压缩装置能够支持根据带宽情况自适应限制传输的压缩数据级数,调整传输数据量,支持自适应控制视频损失来换取视频编解码系统的实时性能。
在其他实施例中,也可以不确定最高压缩级数imax1,而是以n作为数据压缩的最高级数。
3)第0级压缩器的第0级压缩过程。
每个像素单元(PU0、PU1、PU2……)依次送入第0级压缩器进行压缩,目标压缩长度为L0。压缩完的数据CU0存入第0级子存储空间中的对应位置,同时记录本次压缩是否无损。如果是有损压缩,则计算压缩产生的误差数据,作为下一级压缩器(即第1级压缩器)的输入单元。当一个像素单元压缩过程完成,继续压缩下一个像素单元,直至一帧输出完成。所述计算压缩产生的误差数据为本领域技术人员所知晓,此处不再详细描述。
需要说明的是,第0级压缩器的压缩数据CU0是对像素单元进行压缩后获得的数据,将其存储于第0级存储子空间后,所述第0级存储子空间中不存在空余存储空间。
4)第1级压缩器至第n级压缩器的压缩过程。具体地,以每一级压缩器压缩后产生的误差数据作为输入单元送入下一级压缩器进行压缩。例如:将第0级压缩器压缩后产生的误差数据作为第1级压缩器的输入单元进行压缩,若第1级压缩为有损压缩,将再第1级压缩器压缩后产生的误差数据作为第2级压缩器的输入单元进行压缩,以此类推,直至某一级压缩器进行的压缩均为无损压缩或者到达预设的最高压缩级数,并输出一帧视频图像。
本实施例中,设Xi为大于或等于1的整数且Xi是Xi-1的整数倍,i为从1到n-1的整数(特殊地,可以认为X0=1),将每Xi/Xi-1个第i-1级压缩器产生的误差数据合并为大小等于L×Xi的误差数据单元EUi,作为第i级压缩器的输入单元。如图3所示,将经过第0级压缩之后的X1个误差数据合并为大小等于L×X1的误差数据单元EU1,将经过第1级压缩之后的X2/X1个误差数据合并为大小等于L×X2的误差数据单元EU2,…,依此类推,直至将经过第n-2级压缩之后的Xn-1/Xn-2个误差数据合并为大小等于L×Xn-1的误差数据单元EUn-1。由于较大的输入单元尺寸有利于提高压缩性能,因此本实施例上述将多个误差数据进行合并的方式能够有效扩展像素单元或误差数据单元的最大压缩尺寸,减少因压缩尺寸限制带来的视频损失。在其他实施例中,也可以不对两个或两个以上误差数据进行合并,而是以一个误差数据作为一个误差数据单元。
当EUi对应的上一级压缩单元都是无损压缩(即第i-1级压缩器进行压缩均为无损压缩)或者i大于imax1时,跳过本EUi压缩,不输出任何数据;否则对本EUi进行第i级压缩,压缩完的数据CUi存入第i级子存储空间中,同时识别本次压缩是否无损。如果是有损压缩,则计算本级压缩产生的误差数据,作为下一级压缩器的输入单元。当本EUi单元压缩过程结束,继续压缩下一个EUi单元,直至一帧输出完成。
5)第n级压缩的目标存储空间的计算。
参阅图3,假设第n-1级压缩器进行的压缩仍为有损压缩,则经过第n-1级压缩之后产生的误差数据将不再进行合并,直接以大小等于L×Xn-1的误差数据单元EUn作为第n级压缩器的输入单元,如图3中相应虚线框所示。如前所述,在本实施例中,为了不增加存储空间大小,第n级压缩器不存在对应的存储空间,而是通过复用除第0级压缩器之外的其余各级压缩器的空余存储空间,具体是将压缩数据CUn拆分为长度分别等于L1、L2、…、Ln-1的几个数据块(如图3中相应的虚线框所示),各数据块对应存储于第1级子存储空间、第2级子存储空间、…、第n-1级子存储空间。
当第n-1级压缩结果仍为有损时,先要计算第n级压缩的目标存储空间大小。要计算第n级压缩的目标存储空间,需要了解第1级压缩器至第n-1级压缩器对应的子存储空间是否存在空余存储空间,本实施例中,在依次进行第0级至第n-1级压缩过程中,可以通过设置压缩标志的方式标识下一级压缩器对应的子存储空间是否存在空余,所述压缩标志可以放在各压缩单元CUi中(即分散存于片外存储器中,待后续解压缩时再从读取的压缩单元中分析获得),也可以集中存于片内存储器以减少读数据延时。
本发明实施例中,通过采用n-1个移位寄存器来分别缓存第0级至第n-2级器压缩完成之后的压缩标志,以压缩标志为1表示下一级压缩器对应的子存储空间非空,压缩标志为0表示下一级压缩器对应的子存储空间存在空余。所述移位寄存器的宽度为T+1个比特,其中T为自然数,T的取值可以根据实际需要进行设定。
在具体实施时,当第n-1级压缩器压缩完一个输入单元后,各移位寄存器都左移1比特,各级中对应压缩单元CUn-1的所有压缩单元的压缩标志进行或运算后存入相应移位寄存器的最低比特,然后读取各移位寄存器最高位比特,将标识为空余的各级压缩单元的存储空间相加,就得到第n级的目标存储空间大小。
下面结合图4,对计算第n级压缩的目标存储空间大小进行举例说明(图4中以n等于4为例)。
图4中示出了第0级至第3级子存储空间,对应的长度分别为L0、L1、L2和L3,所有子存储空间的长度总和为L,分别对应第0级压缩器至第3级压缩器进行压缩后所形成压缩单元是否存储的情况,每一个长方形格子表示一个压缩单元的存储空间(随着压缩级别的不同,一个压缩单元的尺寸及其对应存储空间大小也可能有所不同),以具有斜线填充的格子表示压缩单元的存储空间非空,空白格子表示压缩单元的存储空间空余。由于第0级子存储空间用于存储经过第0级压缩之后的像素单元,因此第0级子存储空间不存在空余。
需要说明的是,图4中在用于表示压缩单元的存储空间的长方形格子中标示的“0”、“1”、“2”、“3”、“4”分别表示第0级压缩后形成的压缩单元(简称为第0级压缩单元)、第1级压缩后形成的压缩单元(简称为第1级压缩单元)、第2级压缩后形成的压缩单元(简称为第2级压缩单元)、第3级压缩后形成的压缩单元(简称为第3级压缩单元)、第4级压缩后形成的压缩单元(简称为第4级压缩单元),其中,第4级压缩单元以虚线框表示,这部分数据存储于第1级子存储空间、第2级子存储空间以及第3级子存储空间的空余存储空间之中。
图4中还示出了3个用于缓存压缩标志的移位寄存器,分别为移位寄存器1、移位寄存器2、移位寄存器3,移位寄存器1用于标识第1级子存储空间是否存储压缩单元的情况(图4中以虚线箭头标示对应关系),移位寄存器2用于标识第2级子存储空间是否存储压缩单元的情况(图4中以实线箭头标示对应关系)、移位寄存器3用于标识第3级子存储空间是否存储压缩单元的情况(图4中以点滑线箭头标示对应关系)。如前所述,每个移位寄存器的宽度为T+1个比特,图4中示出的各移位寄存器的每个长方形格子中的数字0或1是移位寄存器中存储的1个比特,每一列比特上方标示的“0”、“1”、“2”、“3”和“T”(此时T=4)分别对应于一个第3级压缩单元及其前面相应的各级压缩单元是否存储的情况(各自的对应关系如粗线箭头所示),其中,“0”对应的一列比特位是各移位寄存器的最低位比特,对应标识图4中最右侧一个第3级压缩单元及其前面相应的各级压缩单元中的第一个压缩单元是否存储的情况,“T”对应的一列比特位是各移位寄存器的最高位比特,对应标识图4中与最右侧的第3级压缩单元间隔T×Xn-1长度的第3级压缩单元及其前面相应的各级压缩单元中的第一个压缩单元是否存储的情况。
如果第n级压缩的目标存储空间大小为0,则跳过第n级压缩;否则进行第n级压缩,压缩后的数据CUn(包含长度信息)依照各级压缩单元CUi大小拆分,从第n-1级子存储空间开始依次存储到各级子存储空间中,其位置为与当前CUn-1间隔T×Xn-1长度的压缩单元CUn-1在各级子存储空间中对应的第一个压缩单元位置。由于难压缩的像素单元,在一帧图像中常聚集在一起,通过设置间隔T存储可以使第n级压缩更好的利用空余的存储空间。
对应于上述视频帧缓存再压缩装置,本发明实施例还提供一种视频帧缓存解压缩装置,包括:第0级至第n级解压缩器,分别对应于上述视频帧缓存再压缩装置的第0级至第n级压缩器,各级解压缩器分别对其对应的压缩器的压缩数据进行解压缩;输出单元,用于将各级解压缩器解压缩后获得的数据相加以生成像素单元的数据。
本实施例提供的帧缓存解压缩装置在解压缩时,将各级压缩数据分别解压缩后进行合并,得到最终的解压缩数据。在实际实施时,所述帧缓存解压缩装置,可以采用多个片内存储器来分别缓存从片外存储器读取的各级压缩数据,解压缩器的输入数据复用片内存储器中缓存的已读取数据可以进一步减少带宽。解压缩器从片内存储器中搜索需读取的压缩单元,对搜索未命中的压缩单元数据从片外存储器读取并更新到相应片内存储器中。各级压缩单元缓存的大小根据压缩单元的被访问概率非均匀分配,可以将访问概率较高的低级压缩单元分配较多的缓存空间。通过设置片内存储器来缓存从片外存储器读取的压缩数据,并且片内存储器的大小根据压缩单元的访问概率非均匀分配,可以节省片内存储器的容量。在其他实施例中,也可以不设置用于缓存压缩数据的片内存储器,而是直接从片外存储器读取各级压缩数据进行解压缩。此外,在实际实施时,所述输出单元可以通过配置若干加法器或加法运算电路实现。
基于上述视频帧缓存解压缩装置,本实施例还提供一种视频帧缓存解压缩方法,包括:分别以上述视频帧缓存解压缩装置的第0级至第n级解压缩器对各自对应的压缩器的压缩数据进行解压缩;将各级解压缩器解压缩后获得的数据相加以生成像素单元的数据。
本发明实施例中像素单元的自适应多级解压缩过程仍然可以参阅图3,具体流程包括如下:
1)根据要读取的像素单元的位置判断需要读取的各级压缩单元的位置。
参考上述视频帧缓存再压缩方法中相关描述可知,像素单元经过多级再压缩,形成多级的压缩单元,分别存于一帧视频相应的存储空间之中,因此,根据当前要读取的像素单元位于一帧视频图像中的具体位置,便可以获知该像素单元对应的各级压缩单元的存储位置,以便读取所述各级压缩单元以恢复该像素单元的数据。
2)根据分配的带宽情况确定数据解压缩的最高级数imax2,imax2的取值范围为[1,n],即imax2为1到n之间的某一整数(包括1和n)。
与上述视频帧缓存再压缩方法中关于数据压缩的最高级数imax1相类似,在进行视频帧缓存解压缩过程中,同样可以根据分配的带宽情况确定最高解压缩级数imax2。一般来说,实际分配的带宽越大,则最高解压缩级数imax2的取值也可以越大,此时因解压缩而带来的损失也越少,解压缩后所获得的图像质量也越好。反之,当实际分配的带宽较小时,那么受到带宽限制,解压缩的级数不允许太多,否则会导致数据传输量过大,从而影响视频编解码系统的实时性能。
在具体实施时,当确定最高解压缩级数imax2之后,对于超过第imax2级的压缩单元数据则不进行读取和解压缩。在分配的存储带宽不足的情况下,可以省去最后几级的数据读取和解压缩,以少量视频损失来换取视频编解码系统的实时性能,避免跳帧。
因此,本实施例提供的视频帧缓存解压缩装置也能够支持根据带宽情况自适应限制传输的解压缩数据级数,调整传输数据量,支持自适应控制视频损失来换取视频编解码系统的实时性能。
需要说明的是,一般来说,最高解压缩级数imax2与最高压缩级数imax1相等,视频帧缓存再压缩过程与解压缩过程相对应,解压缩后的视频图像与压缩前的视频图像基本一致。但最高解压缩级数imax2并不一定限于与最高压缩级数imax1相等,当视频帧缓存再压缩过程中,并未设定最高压缩级数imax1,若实际压缩的级数高于imax1,在视频帧缓存解压缩过程则可以设定最高解压缩级数imax2,此时对于大于第imax2级的压缩单元不进行读取和解压缩,从而也能够实现以少量视频损失来换取视频解码的实时性能。
3)第0级至第n级压缩单元的读取过程。
根据上述视频帧缓存再压缩方法中关于所述压缩标志的相关描述可知,所述压缩标志可以存于各级压缩单元之中,也可以集中存储于片内存储器。如果压缩单元的压缩标志集中存于片内存储器,则根据压缩标志表示的压缩数据长度向所需读取的各级压缩单元对应的片内存储器并行发送读数据指令。如果压缩标志存于各级压缩单元中,则依次从片外存储器中读取各级压缩单元,直至从当前压缩单元中分析出该压缩单元所进行的压缩为无损压缩(即该压缩单元为无损压缩单元)或者当前压缩单元已经是第imax2级压缩单元。在实际实施时,可以根据所述压缩标志判断当前压缩单元是有损压缩单元还是无损压缩单元,例如所述压缩标志为0,则说明当前读取的压缩单元为无损压缩单元,则无需读取下一级压缩单元。此外,也可以将第imax2级压缩单元的压缩标志直接设为0。
4)第0级至第n级压缩单元的解压缩过程。读取的各级压缩单元数据送入各级解压缩器进行解压缩,并将解压缩后的各级数据相加生成像素块数据。
如图3所示,分别存储于Cache0、Cache1、Cache2、…、Cache n-1的第0级压缩单元、第1级压缩单元、第2级压缩单元、…、第n-1级压缩单元,经读取后,分别由第0级解压缩器、第1级解压缩器、第2级解压缩器、…、第n-1级解压缩器对各级压缩单元进行解压缩,形成相应的解压缩后的数据DEC U0、DEC U1、DEC U2、…、DEC Un-1,这些数据的长度等于像素单元PU的存储尺寸L,其中DEC U0为解压缩后未经过误差修正的像素单元,而DEC U1、DEC U2、…、DEC Un-1则为该像素单元的误差数据。
当需要解压缩第n级压缩单元的数据时,需要从第1级至第n-1级子存储空间中读取对应位置的数据,进行拼接后恢复压缩单元CUn,再由第n级解压缩器对压缩单元CUn进行解压缩,得到像素单元的最后一部分误差数据DEC Un。在实际实施时,当读取片内存储器中缓存的数据未命中时,则从片外存储器获取数据并更新相应的片内存储器。
各级压缩单元经相应的解压缩器进行解压缩之后,再将解压缩后的各级数据相加便生成像素块数据。
由上述的压缩和解压缩流程可知,一个长度的像素单元PU经0到n-1级压缩后的尺寸可在L0到的范围内变化,当第n级压缩的目标存储空间空闲时,压缩后的最大尺寸可以扩展到这样最坏情况下像素单元有足够的空间进行扩展存储,降低了因目标存储空间限制引入视频损失的几率。
另外,本实施例还提供一种视频系统,包括:上述视频帧缓存再压缩装置和视频帧缓存解压缩装置;第一存储器,适于存储所述视频帧缓存再压缩装置对视频帧中的像素单元进行压缩后形成的压缩数据。