一种视频数据的压缩存储方法及装置与流程

文档序号:12068765阅读:484来源:国知局
一种视频数据的压缩存储方法及装置与流程
本发明属于视频数据压缩处理
技术领域
,尤其涉及一种视频数据的压缩存储方法及装置。
背景技术
:帧缓冲压缩(FBC,Framebuffercompression)技术是基于目前高带宽应用场景下有效降低带宽的有效方案。尤其是目前视频图像处理速度在4K60P/S甚至以上的性能要求下,节省双倍速率同步动态随机存储器DDR带宽成为了各个视频处理业务单元需要考虑的重大因素之一。该技术的应用场景主要在图像信号处理(ISP,ImageSignalProcessing)、视频编解码器(Videocodec)、视频处理子系统(VPSS,VideoProcessSub-System)、视频显示(VDP,Videodisplayprocess)等图像视频处理单元中。经过帧缓冲压缩FBC,每帧像素数据会有效压缩放入DDR中,后续处理或使用时,首先经过解压缩单元,恢复出图像像素数据。由于数据经过了压缩处理,解压缩的所需数据带宽会节省很多。先简要介绍在以上各个场景业务中的需求。(1)图像信号处理ISP一般在主要用来对前端图像传感器输出信号处理的单元。比较常见的就是在原始图像数据(RAWDATA)域数据进行相关的处理。处理顺序为一帧内的光栅扫描(rasterscan),处理比特深度与芯片相关。数据存储模式为打包格式(packmode)。(2)Videocodec主要用于从DDR中获取参考帧数据,以便进行帧间数据预测。该应用场景较为复杂。主要体现在各个视频协议的参考帧个数比较多,预测运动矢量(MV)范围随机,而且亮度和色度两个分量的MV也不相同等。这样就需要两个如下比较关键的需求,随机访问(randomaccess),内部必须集成高速缓存cache资源。主要包含两个类型的cache。压缩头cache和压缩后的数据cache。(3)视频处理子系统VPSS,视频显示VDP主要应用场景为帧内部的光栅raster扫描处理,在VPSS中亦有少量的randomaccess应用。目前算法基本大同小异,都是基于块来进行压缩和解压的。其中该块即是一个压缩单元(compressionunit)。然后,compressionunit内部分为子块(subblock),subblock是真正的一个压缩处理单位。压缩单元的大小是基于算法原理、应用场景、硬件实现面积、DDR访问效率等各个因素来决定的。压缩后分为压缩数据块头compressionhead和压缩数据块体compressionbody两个部分,解码时,根据compressionhead来完成compressionbody的解码。Compressionhead主要包含各个子块的size、是否压缩标志、压缩模式、直流(DC)值等信息。压缩数据块体主要存储的是像素之间的残差数据。在randomaccess的场景,对于数据块头的大小headsize特别敏感,会直接影响数据块头缓存(headcache)的大小。具体地说,就是cache的路(way)的个数会大大增加。如果要保证4K60P/S以上的性能,cache大小、硬件实现时序(Timing)都是很大的瓶颈。具体举例如下:对于数据块头缓存headcache而言,在cache大小相同的情况下,尽可能的提高cache的命中率,有利于保证各个处理单元的性能。相对于数据块体bodysize和DDRburst而言,很显然,头的数据位数很小,大约16--64bit不等,缓存行cacheline一般设置为图像行数为单位。假设算法按照64x2像素块压缩(宽度上64个像素,高度是2行),对于cachemiss情况下,总线可以一次申请的头head的最大图像行数分析如下(headsize按照最乐观分析即16bits;图像宽度4K;4K分辨率下视频编解码的参考帧设为2个)。每个64x2像素块的数据块头(headsize)是16bits,2个图像行的压缩块个数是4K/64=64个,对应64个head,64x16bits=1024bits,这样对于突发长度burstlength为128bits的总线位宽,需要的突发burst个数1024/128=8,对于最大系统AXIburstlength最大为16的情况下,cacheline为4个图像行对应的head数据量。对于4K图像,按照每个帧有2个参考帧的情况下,至少缓冲一个64大小的CTB图像行(64个图像行)需要的totallines=(64亮度行+32色度行)x2参考帧数(referenceframes)=192行,cache的最小ways=(192linessize/cacheline)=48;因此对于cache而言,cacheway很大,导致cachesize变大;同时way越大,对于硬件实现来讲,时序timing特别差。Timing在很差的情况下,就会很难在提高频率的情况下满足各个处理单元的性能要求。即head的size直接制约着cache的资源和硬件实现的时序timing,最终导致算法的硬件实现的面积和性能都是瓶颈。目前的硬件解决方案主要有两种。方案1:压缩数据块头compressionhead和压缩数据块体compressionbody分开存放,compressionbody按照压缩后的数据大小存放,bytes对齐处理。下面以YUV420semi-planar某个分量(YorUV)格式存储的压缩数据流程如图1所示。每个压缩单元块,通过内部的压缩处理单元进行压缩,压缩后每个分量(YorUV)放在DDR的两个区域,即头域headdomain和体域bodydomain,其中块头head是固定的Nbits,块体数据bodydata大小不固定。解压缩时,通过先获取头内容,然后获取对应大小的bodydata,最后解压缩即可。该方案存在如下不足之处:块头head的比特位数比较大,一般来说至少16bits,基本都是在32bits---64bits之间;如上所述,块头head的大小直接制约着高速缓存cache的资源和硬件实现的时序timing,最终导致硬件实现的面积和性能都是瓶颈。块体数据长度不固定,在压缩时总线会按照strobe(axi写数据协议中的信号,该信号指示写数据的哪些bytes位置有效)写入到DDR中,解压缩时,也会涉及到strobe读问题。该部分的优点是DDR内存空间节省了,同时带宽也节省了。但是无法满足对于VPU的随机访问randomaccess应用。由于数据带有strobe对齐问题,datacache的硬件实现复杂度会大大增加。DataCache的读取要始终关注Strobe的标志。方案2:主要对与数据块体的大小(bodysize)做了调整,即bodysize占用的DDR空间是不压缩情况下的空间,这样内存容量不变,仅仅降低带宽。该方案不存在strobe对齐的问题,大大降低了硬件实现的复杂度。但是,块头head的大小直接制约着高速缓存cache的资源和硬件实现的时序timing,最终导致硬件实现的面积和性能都是瓶颈依然存在。技术实现要素:有鉴于此,本发明所要解决的技术问题是提供一种用于。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。本发明提供的一种视频数据的压缩存储方法,包括:将视频数据压缩处理后,得到数据块头部(compressionhead)和数据块体(compressionbody);将所述数据块头部和数据块体一并存放到预定的存储空间;设置指示标识用于指示相应的数据块压缩大小,并且按照光栅扫描在内存中固定比特数存储;基于总线带宽确定压缩数据块的存储基本单位,并按照存储基本单位以及光栅扫描顺序存放压缩数据块。其中,将所述数据块头部和数据块体一并存放到预定的存储空间,具体为将数据块头部与数据块体并在一起,所述数据块头部以数据块体的前缀bodyprefix作为body的一部分。若所述压缩数据块的大小为KxL,K=2k,k=1,2,3,…,则所述指示标识的比特位数为:其中K为列数,L为行数,N为像素比特深度,2m为总线位宽。该压缩存储方法,还包括:进行数据存放时,获得压缩后数据块体的规格(bodysize),从DDR头域(headdomain)中获得该压缩后数据块体的规格(compressionunit的bodysize),再根据该规格获取压缩后数据块体body,以放置到相应的位置。基于总线宽带,确定存放的基本单位,若总线带宽为2m个比特位,则存放的基本单位为个总线位宽单位,其中K为列数,L为行数,N为像素比特深度。该方法进一步包括查找和提取所存储的数据块体的步骤:根据预设的坐标偏移和垂直偏移,读取缓存中的对应地址数据后,每个地址的数据截取相应的偏移位即可获得该压缩单元的指示标识(HEAD_NEW);基于所述数据块体的规格通过总线获取对应的长度的数据块体,根据指示标识的坐标,查找到对应的数据块体。本发明还提供一种用于存储视频数据的存储装置,包括:用于存储视频压缩数据的存储单元;所述视频压缩数据包括数据块头部和数据块体;用于存储指示标识(HEAD_NEW)的存储单元,该指示标识用于指示相应的视频压缩数据单元的大小,所述指示标识的比特位数根据所述压缩数据单元的大小确定;所述视频压缩数据按照存储基本单位以及指示标识指示存放,其中所述存储基本单位是基于总线带宽确定的。在该存储装置中存放的压缩数据单元,其数据块头部和数据块体并在一起,所述数据块头部以数据块体的前缀(bodyprefix)作为新数据块体body的一部分。若所述压缩数据块的大小为KxL,K=2k,k=1,2,3,…,则所述指示标识的比特位数为:其中K为列数,L为行数,N为像素比特深度,2m为总线位宽。所述压缩数据单元存放的基本单位根据总线宽带来确定,若总线带宽为2m比特位,则存放的基本单位为个总线宽度单位,其中K为列数,L为行数,N为像素比特深度。综上所述,本发明提供的技术方案,通过将所述数据块头部和数据块体存放到预定的存储空间;设置指示标识(HEAD_NEW)用于指示相应的数据块的有效大小,并给予总线带宽对齐。这样,同样性能performance要求下,所需cache空间(size)是原来的1/4,同时cache路(way)数是原来的1/4,路(way)数量的大大减少直接导致硬件实现逻辑级数减少,有利于后端时序收敛,能够运行到更高的频率,显著地提高性能。为了上述以及相关的目的,一个或多个实施例包括后面将详细说明并在权利要求中特别指出的特征。下面的说明以及附图详细说明某些示例性方面,并且其指示的仅仅是各个实施例的原则可以利用的各种方式中的一些方式。其它的益处和新颖性特征将随着下面的详细说明结合附图考虑而变得明显,所公开的实施例是要包括所有这些方面以及它们的等同。附图说明图1是现有技术中的一种存储压缩数据的流程示意图;图2是本发明实施例提供的一种视频数据的压缩存储方法流程图;图3是本发明实施例提供的一种存储压缩数据的流程示意图;图4是本发明具体实施例提供的获取参考帧数据部分解压缩的示意图;图5是本发明具体实施例提供的图像行和cache的地址的对应关系示意图。具体实施方式以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。其他实施方案可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的组件和功能是可选的,并且操作的顺序可以变化。一些实施方案的部分和特征可以被包括在或替换其他实施方案的部分和特征。本发明的实施方案的范围包括权利要求书的整个范围,以及权利要求书的所有可获得的等同物。在本文中,本发明的这些实施方案可以被单独地或总地用术语“发明”来表示,这仅仅是为了方便,并且如果事实上公开了超过一个的发明,不是要自动地限制该应用的范围为任何单个发明或发明构思。为了实现本发明的目的,本发明提出了一种视频数据的压缩存储方法,参照图2,包括如下步骤:S01,将视频数据压缩处理后,得到数据块头部(compressionhead)和数据块体(compressionbody);S02,将所述数据块头部和数据块体存放到预定的存储空间;S03,设置指示标识(HEAD_NEW)用于指示相应的数据块的压缩大小,并且在内存中按照光栅扫描顺序、固定比特数存放,所述指示标识的比特位数根据所述压缩数据块的大小确定;S04,基于总线带宽确定压缩数据块的存储基本单位,并按照存储基本单位以及光栅扫描顺序存放压缩数据块。在步骤S02中,将所述数据块头部和数据块体存放到预定的存储空间,具体为将数据块头部compressionhead与数据块体compressionbody并在一起,所述数据块头部(compressionhead)以数据块体的前缀bodyprefix作为body的一部分。若所述压缩数据块的大小为KxL,K=2k,k=1,2,3,…,则所述指示标识的比特位数为:其中K为列数,L为行数,N为像素比特深度,2m为总线位宽。该压缩存储方法,具体包括:进行数据存放时,获得压缩后数据块体的规格(bodysize),从DDRheaddomain域中获得该压缩后数据块体的规格(compressionunit的bodysize),再根据该规格获取压缩后数据块体body,以放置到相应的位置。基于总线宽带,确定存放的基本单位,若总线带宽为2m比特位,则存放的基本单位为个字节,其中2k为列数,L为行数,N为像素比特深度,[]表示取整。进一步地,该方法还包括查找和提取所存储的数据块体的步骤:根据预设的坐标偏移和垂直偏移,读取缓存中的对应地址数据后,每个地址的数据截取相应的偏移位即可获得该压缩单元的指示标识(HEAD_NEW);基于所述数据块体的规格(bodysize)通过总线获取对应的长度的数据块体,根据指示标识的坐标,查找到对应的数据块体。本发明还提供一种用于存储视频数据的存储装置,包括:用于存储视频压缩数据的存储单元;所述视频压缩数据包括数据块头部(compressionhead)和数据块体(compressionbody);用于存储指示标识(HEAD_NEW)的存储单元,该指示标识用于指示相应的视频压缩数据单元的压缩大小,并且在内存中按照光栅扫描顺序固定比特数存放,所述指示标识的比特位数根据所述压缩数据单元的大小确定。所述数据块头部(compressionhead)和数据块体(compressionbody)并在一起,所述数据块头部(compressionhead)以数据块体的前缀bodyprefix作为新数据块体body的一部分。所述视频压缩数据按照存储基本单位以及指示标识指示存放,其中所述存储基本单位是基于总线带宽确定的。每个压缩单位间数据块体body的大小偏移空间按照原始压缩单元(不压缩情况)下开辟,并且也是按照光栅扫描顺序存储。若所述压缩数据块的大小为KxL,K=2k,则所述指示标识的比特位数为:其中K为列数,L为行数,N为像素比特深度,2m为总线位宽。所述压缩数据单元存放的基本单位根据总线宽带来确定,若总线带宽为2i比特位,则存放的基本单位为个字节,其中K为列数,L为行数,N为像素比特深度。为了使本发明的原理、特性和优点更加清楚,下面结合具体实现方式对本发明的技术方案进行详细描述。参照图3,,将通常的算法压缩单元输出的压缩数据块头compressionhead并入到压缩数据体body中,即以块体前缀bodyprefix作为body的一部分,原来的body作为bodycore。并入后,由于总线访问是至少16bytes对齐,body的带宽增加几乎可以忽略不计。这样对于硬件实现来讲,需要预先知道的指示标识(HEAD_NEW)信息很少,只要获得压缩后块体body的大小即可。这样先从DDR头域headdomain中获得该compressionunit的压缩后块体的规格bodysize,然后再根据该块体规格获取数据块体,最后解码即可。而且对于该规格,如果总线宽带是128bits,那么就是16bytes对齐。基本单位是16bytes,而不是以bytes对齐。故设置的指示标识(HEAD_NEW)的内容如下:对于YUV420semi-planar,由于亮度和色度是分开存储分开压缩的。以64x2压缩单位为例,采用16bytes对齐。因为64x2在不压缩的情况下最大是64x2byts=8x16byts,最大是8个基本单位,3bit即可表示。为了便于硬件实现,可以扩展一个保留位reservebit,即新设置的指示标识HEAD_NEW为4比特。对应的,按照之前的分析,对于4K帧,该cacheline为16个图像行(即8个head行,因为每个压缩单元的高度是2行)的HEAD_NEW数据量。在具体应用中,如视频解码Videocodec中,预测支路获取参考帧数据部分解压缩的实现方案,参照图4,分析如下:(1)假设当前解码需要的参考预测数据块(也称为预测数据单元PU),假设参考块大小为16x4,当前请求的参考块的行(cur_line)为第0行,其坐标是P(x,y)=P(A,B),那么可以找到该行对应的压缩单元块64x2为单元的位置,即坐标为U(x,y)=U((A>>2),(B>>1));(2)根据U(x,y)坐标判断cache是否命中;假设cache在miss的情况下,首先获取HEAD_NEW数据写入到HEAD_NEWcache中,此时根据坐标,而且HEAD_NEW的size是固定的4bit,可以获取对应cacheline的HEAD_NEW数据(16个图像行=8个head行),如图4中所示的HEAD_NEW行0至行7;当前预测数据单元(PU)的当前行对应的Cacheline。(3)然后根据当前行(cur_line)坐标读取cache中的对应的HEAD_NEW;其中(2)(3),图像行(或者说HEAD_NEWline)和cache的地址的对应关系如图5所示。写cache过程:上图中,4K图像一个headline占用的bits数是:4K/64*4bit=256bit=2x128bits;即2个总线burst;即一个headline对应2个cache地址;即上图1/2标记;这样整个16总线burst对应addr0---addr15.读cache过程:每个地址占用1/2headline,同时U(x,y)在每个headline的水平坐标偏移和垂直偏移也是已知的,故可以通过读取cache的对应地址数据后,每个地址的数据截取相应的偏移位就可以获得该压缩单元的HEAD_NEW。(4)HEAD_NEW获取后,根据数据块规格size通过总线获取对应的长度的数据块体body,由于数据块体body所占用的内存跟不压缩占有的内存相同,即每个64x2压缩后所占有的空间还是64x2bytes,故根据指示标识HEAD_NEW的坐标,可以找到对应的数据块体body。这样,明显地节省了带宽。(5)最后,获取body之后开始解码压缩体前缀(body_prefix),进而根据body_prefix内容和压缩体核(body_core)内容,恢复图像像素数据。对于上述各个方案,以64x2压缩单元为例,性能要求相同情况下对比如下:现有技术本发明HEAD_NEWbits比特位数至少16bits4bits所需Cache空间size至少4NN所需Cache路(way)数48以上,典型值6412以上,典型值16结论:本发明提供的技术方案,同样的性能performance要求下,所需cache空间size是原来的1/4,同时cache路(way)数是原来的1/4,路way数量的大大减少直接导致硬件实现逻辑级数减少,有利于后端时序收敛,能够运行到更高的频率,显著地提高性能。本领域技术人员可以明白,这里结合所公开的实施例描述的各种示例性的方法步骤和装置单元均可以电子硬件、软件或二者的结合来实现。为了清楚地示出硬件和软件之间的可交换性,以上对各种示例性的步骤和单元均以其功能性的形式进行总体上的描述。这种功能性是以硬件实现还是以软件实现依赖于特定的应用和整个系统所实现的设计约束。本领域技术人员能够针对每个特定的应用,以多种方式来实现所描述的功能性,但是这种实现的结果不应解释为背离本发明的范围。利用通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者其它可编程的逻辑器件、分立门或者晶体管逻辑、分立硬件组件或者他们之中的任意组合,可以实现或执行结合这里公开的实施例描述的各种示例性的单元。通用处理器可能是微处理器,但是在另一种情况中,该处理器可能是任何常规的处理器、控制器、微控制器或者状态机。处理器也可能被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或者更多结合DSP核心的微处理器或者任何其他此种结构。结合上述公开的实施例所描述的方法的步骤可直接体现为硬件、由处理器执行的软件模块或者这二者的组合。软件模块可能存在于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、移动磁盘、CD-ROM或者本领域熟知的任何其他形式的存储媒质中。一种典型存储媒质与处理器耦合,从而使得处理器能够从该存储媒质中读信息,且可向该存储媒质写信息。在替换实例中,存储媒质是处理器的组成部分。处理器和存储媒质可能存在于一个ASIC中。该ASIC可能存在于一个用户站中。在一个替换实例中,处理器和存储媒质可以作为用户站中的分立组件存在。根据所述公开的实施例,可以使得本领域技术人员能够实现或者使用本发明。对于本领域技术人员来说,这些实施例的各种修改是显而易见的,并且这里定义的总体原理也可以在不脱离本发明的范围和主旨的基础上应用于其他实施例。以上所述的实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1