CN103533366A - 用于视频运动补偿的缓存方法与装置 - Google Patents

用于视频运动补偿的缓存方法与装置 Download PDF

Info

Publication number
CN103533366A
CN103533366A CN201210228887.0A CN201210228887A CN103533366A CN 103533366 A CN103533366 A CN 103533366A CN 201210228887 A CN201210228887 A CN 201210228887A CN 103533366 A CN103533366 A CN 103533366A
Authority
CN
China
Prior art keywords
buffer memory
data
frame
memory
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201210228887.0A
Other languages
English (en)
Other versions
CN103533366B (zh
Inventor
韦虎
林福辉
李尚文
周晋
王森
罗小伟
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Spreadtrum Communications Shanghai Co Ltd
Original Assignee
Spreadtrum Communications Shanghai Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Spreadtrum Communications Shanghai Co Ltd filed Critical Spreadtrum Communications Shanghai Co Ltd
Priority to CN201210228887.0A priority Critical patent/CN103533366B/zh
Publication of CN103533366A publication Critical patent/CN103533366A/zh
Application granted granted Critical
Publication of CN103533366B publication Critical patent/CN103533366B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

一种用于视频运动补偿的缓存方法与装置,所述装置包括:第一缓存、第二缓存、检测模块、数据读取控制模块、第一更新控制模块和第二更新控制模块;第一更新控制模块将数据读取控制模块在第一缓存未命中时读取的数据更新到第一缓存中;第二更新控制模块,将数据读取控制模块在第二缓存未命中时读取的B帧后向参考块数据更新到第二缓存中;还在判断出数据读取控制模块在第二缓存未命中时读取的P帧前向参考块数据相对于第二缓存中未命中的缓存数据的被重用概率更高后,将该读取的P帧前向参考块数据更新到第二缓存中。本技术方案在保持B帧编解码原有性能的情况下,提高P帧编解码时的缓存命中率,减少P帧编解码时运动补偿所需的外部存储带宽。

Description

用于视频运动补偿的缓存方法与装置
技术领域
本发明涉及视频技术领域,特别涉及一种用于视频运动补偿的缓存方法与装置。
背景技术
运动估计与补偿技术经常被应用在视频处理中,特别是在各大标准组织定义的视频编解码器里都包含了运动补偿(Motion Compensation)单元。在视频运动补偿中,相邻宏块(MB,MacroBlock)的参考像素块(简称为参考块)间通常存在明显的空间重叠。图1是视频运动补偿中宏块的参考像素块重叠的示意图。如图1的例子所示,MBn、MBn+1、MBn+w分别为某一帧图像中的三个宏块,其中,MBn和MBn+1之间是同一行中两个相邻的宏块,MBn和MBn+w之间是垂直方向上两个相邻的宏块,MBn中存在两个参考块,图1中以竖直方向的虚线将MBn隔开表示为参考块1和参考块2,MBn+1中也存在两个参考块,图1中以水平方向的虚线将MBn+1隔开表示为参考块3和参考块4,MBn+w中存在一个参考块5。各参考块之间存在的空间重叠如图1中的填充区域所示,其中,斜线填充区域表示垂直方向宏块间参考块的重叠,方格填充区域表示宏块内部及水平方向宏块间参考块的重叠,可以参考图1下方对于不同类型填充区域的标示。例如,图1中所示的参考块1与参考块2之间以及参考块3与参考块4之间的重叠属于宏块内部的参考块的重叠,参考块2与参考块3、参考块4之间的重叠属于水平方向宏块间参考块的重叠,参考块5与参考块2、参考块4之间的重叠属于垂直方向宏块间参考块的重叠。因此,利用内部缓存(Cache)来重用相邻宏块间参考块重叠部分的像素数据,可以减少对外部存储器的访问。
随着高清视频的应用,视频编解码器运动补偿所需的带宽成为限制编解码器性能的瓶颈。在设计中通常采用缓存的方法来复用运动补偿的参考像素数据,以减少对外部存储器的访问,提高编解码的效率。传统的运动补偿缓存大都采用二维的结构,即缓存数据和外部存储器中的参考帧数据(所述参考帧数据包括该帧图像中所有参考块的像素数据)是在二维空间上进行映射。由于硬件电路复杂度和成本的限制,其映射方式常采用直接映射(direct map)或者多路组相联的方式,并且选取的缓存容量远小于一行宏块的大小。针对这一尺寸范围内的缓存,有研究表明(请参考文献:Xianmin CHEN,Peilin LIU.“A High Performance and Low Bandwidth Multi-Standard Motion CompensationDesign for HD Video Decoder”.IEICE Transactions on Electronics93(3),253-260,2010-03-01),在多路组相联情况下,当路(way)的数量超过某个值时,缓存对外部存储带宽的减少作用会趋近极限。另一些研究(请参考文献:T.D.Chuang,L.M.Chang,T.W.Chiu,Y.H.Chen,and L.G.Chen,“Bandwidth-efficient cache-based motion compensation architecture withDRAM-friendly data access control,”in Proc.IEEE Int.Conf.Acoust.,Speech,Signal Process.,pp.2009-2012,2009)则发现,在小于一行宏块大小的范围内,当缓存的容量增加到一定数量时,多路组相联和直接映射相比不再具有优势。因此对大于某一尺寸(且远小于一行宏块大小)的缓存,由于其电路实现最简单,大多选用直接映射的缓存结构。
采用直接映射结构的运动补偿缓存,其大小一般配置为最优尺寸,即使得外部存储带宽的减少接近极限的某个最小尺寸(假设该缓存大小为2S)。这是双向参考帧(B帧)运动补偿所对应的最优配置;而实际对于前向参考帧(P帧),其相应所需的最小尺寸为S,多出的另外S大小的缓存空间将不会对减少外部存储带宽有明显帮助。并且,在硬件设计中,这S大小的缓存空间也难以用于其他P帧独有的用途,因此,P帧的缓存配置会出现浪费。
发明内容
本发明要解决的问题是现有技术中缓存配置利用率低。
为解决上述问题,本发明技术方案提供一种用于视频运动补偿的缓存方法,包括:
编码或解码B帧时,若第一缓存未命中,则从外部存储器读取相应的B帧前向参考块数据并将其更新到所述第一缓存中;若第二缓存未命中,则从外部存储器读取相应的B帧后向参考块数据并将其更新到所述第二缓存中;
编码或解码P帧时,
若所述第一缓存未命中且所述第二缓存的缓存行地址匹配失败,则从外部存储器读取相应的P帧前向参考块数据并将其更新到所述第一缓存中;
若所述第一缓存的缓存行地址匹配失败且所述第二缓存未命中,则从外部存储器读取相应的P帧前向参考块数据,并在判断出读取的数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高后,将其更新到所述第二缓存中;
若所述第一缓存和第二缓存均未命中,则从外部存储器读取相应的P帧前向参考块数据并将其更新到所述第一缓存中,并在判断出读取的数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高后,将其更新到所述第二缓存中。
为解决上述问题,本发明技术方案还提供一种用于视频运动补偿的缓存装置,包括:
第一缓存和第二缓存;
检测模块,适于匹配所述第一缓存或第二缓存的缓存行地址,以及检测所述第一缓存或第二缓存是否命中;
数据读取控制模块,适于在编码或解码B帧时,若所述检测模块检测到所述第一缓存未命中,则从外部存储器读取相应的B帧前向参考块数据;若所述检测模块检测到所述第二缓存未命中,则从外部存储器读取相应的B帧后向参考块数据;
所述数据读取控制模块,还适于在编码或解码P帧时,若所述检测模块检测到所述第一缓存未命中且所述第二缓存的缓存行地址匹配失败,或者检测到所述第一缓存的缓存行地址匹配失败且所述第二缓存未命中,或者检测到所述第一缓存和第二缓存均未命中,则从外部存储器读取相应的P帧前向参考块数据;
第一更新控制模块,适于将所述数据读取控制模块在所述第一缓存未命中时读取的数据更新到所述第一缓存中;
第二更新控制模块,适于将所述数据读取控制模块在所述第二缓存未命中时读取的B帧后向参考块数据更新到所述第二缓存中;还适于判断出所述数据读取控制模块在所述第二缓存未命中时读取的P帧前向参考块数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高后,将该读取的P帧前向参考块数据更新到所述第二缓存中。
与现有技术相比,本发明技术方案具有以下优点:
通过提供一种在编码或解码B帧和P帧时采用不同缓存模式的双模式缓存结构,一方面保持小尺寸运动补偿缓存在B帧编码或解码时的性能,另一方面利用对P帧而言冗余的缓存空间,来缓存编码或解码P帧过程中被判断出被重用概率较高的参考块数据,从而能够在提高缓存配置利用率的基础上,进一步提高P帧编码或解码时的缓存命中率,减少P帧编码或解码时运动补偿所需的外部存储带宽。
附图说明
图1是视频运动补偿中宏块的参考像素块重叠的示意图;
图2是二维直接映射缓存的示意图;
图3是图2所示二维直接映射缓存的缓存地址与外部存储地址之间映射的示意图;
图4是现有技术中运动补偿缓存装置的示意图;
图5是本发明实施例提供的运动补偿缓存装置的示意图;
图6是一维直接映射缓存的示意图;
图7是图6所示的一维直接映射缓存的缓存地址与外部存储地址之间映射的示意图;
图8是图5所示第二更新控制模块的结构示意图。
具体实施方式
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。在以下描述中阐述了具体细节以便于充分理解本发明。但是本发明能够以多种不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本发明内涵的情况下做类似推广。因此本发明不受下面公开的具体实施方式的限制。
本领域技术人员知晓,为了在高效压缩编解码的条件下,获得可随机存取的高压缩比、高质量图像,在例如MPEG-2、H.264等多种编解码标准中都定义了I、P、B三种图像格式,分别称为帧内图(Intra Picture)、预测图(PredictedPicture)及双向图(Bidirectional Picture),即I图(I帧)、P图(P帧)及B图(B帧),用于表示一定时间间隔的帧序列画面。因为要满足随机存取的要求,仅利用I帧本身信息进行帧内编解码就可以了,而要满足高压缩比和高质量图像的要求,单靠I帧的帧内编解码还不行,还要加上由P帧和B帧参与的帧间编解码,以及块匹配运动补偿预测,即用前一帧图像预测当前图像的因果预测和用后一帧图像预测当前图像的内插预测。
对于直接映射结构的缓存,考虑到B帧需要分别缓存前向和后向两帧中的宏块数据,其所需的实际缓存大小是P帧所需缓存的一倍。因此,如背景技术中所述,如果B帧运动补偿所对应的最优配置大小为2S,则对于P帧,其相应所需的最小尺寸为S,从而导致P帧的缓存配置会浪费S大小的缓存空间。解决这种浪费的方法,一种选择是可以将整个缓存大小设为S,然而这样会显著降低编码或解码B帧时的缓存命中率,考虑到B帧对外部存储器的访问带宽需求比P帧更大,这明显是得不偿失的;另一种选择,就是利用这S大小的缓存,设计优化的缓存结构以及缓存更新方法,进一步提高P帧缓存命中率,以减少P帧编码或解码时对外部存储器的访问带宽需求。
发明人考虑,由于通常视频按光栅扫描顺序编码或解码宏块,宏块内部各块以及同一行中相邻宏块间的重叠数据可以很快被重用,因此这种情况需要的缓存尺寸较小;而垂直方向相邻宏块间的重叠数据,需要等一行宏块处理完成后才会被重用,这种情况需要较大的缓存尺寸。以分辨率为1920*1080的H.264高清视频为例,缓存一行宏块的亮度分量参考像素数据,需要的存储空间在30.72至155.52K字节之间,此外还需要相当数量的存储空间用来存储缓存标志信息。由于受缓存大小的成本限制,现有的缓存方法大都采用小尺寸缓存(例如小于16KB),仅解决第一种情况下的数据复用,但是,如果利用对P帧而言冗余的缓存空间来缓存垂直方向相邻宏块间可能重叠的参考像素数据,那么就能在不增加电路缓存尺寸的情况下,实现对两种情况下的数据重用都加以利用,从而进一步提高P帧编码或解码时的缓存命中率,减小外部存储带宽需求。
本领域技术人员知晓,缓存中最基本的存储访问单元一般称为“缓存行”(Cache line)。Cache line是传送到缓存中的最小内存块,通常有固定的大小,典型的范围为16~256个字节。缓存行大小的确切值依据具体应用而定,系统设计者可能会对其配置为不同的尺寸。当一个缓存行中包含有有效的缓存数据或指令时,这个缓存行就是有效的,反之是无效的。在重置(Reset)时,所有的缓存行都无效,当有数据或指令从外部存储器装载到缓存行中时,这个缓存行有效。
在实际情况中,通常以随机存储器(RAM,Random Access Memory)作为缓存,此时,缓存的存储地址(简称为缓存地址)可以称为RAM地址。如背景技术中所述,对于传统的运动补偿缓存,缓存中的参考帧数据和外部存储器中的参考帧数据是在二维空间上进行直接映射的。图2是二维直接映射缓存的示意图。如图2所示,x方向为帧图像的宽度方向,y方向为帧图像的高度方向,W和H分别表示帧图像的宽度和高度,二维缓存(2D Cache)的宽度和高度分别设为2M和2N,缓存中的Cache line的宽度和高度设为2L和2K。某一帧图像中相应位置的参考像素数据与其在缓存中的存储位置之间的对应关系如图2中箭头所示。此外,图2中标示的forward表示前向参考帧数据对应的缓存空间,backward表示后向参考帧数据对应的缓存空间。
参考像素数据在外部存储器中的存储地址(简称为外部存储地址)按图3所示的方法映射到RAM地址。参阅图3,外部存储地址映射为缓存标志Tag、缓存地址索引Index和偏移量Offset三部分,其中:Offset表示参考像素在Cache line中的位置,Index表示缓存中的RAM地址,Tag用于区分某一RAM地址的缓存数据在图像中的不同位置。图3中,X_address和Y_address分别表示在宽度和高度这两个维度上对应的外部存储地址,X_address包括缓存标志Tag_x、长度为M的缓存地址索引Index_x和长度为L的偏移量Offset_x,Y_address包括缓存标志Tag_y、长度为N的缓存地址索引Index_y和长度为K的偏移量Offset_y。需要说明的是,缓存标志Tag和缓存地址索引Index均存储于缓存之中,待进行视频编码或解码时,便可以通过存储的Tag和Index先从缓存中寻找所需要的数据,若有则获取该数据,若无则再从外部存储器中读取,并将读取的数据更新到缓存中,以便后续需要再次使用时快速获取。此外,Tag中Refidx用于存储参考帧号,一般可以通过4个比特进行表示;在Tag中还包括有效性标记位Valid,用于标识RAM地址对应数据的有效性,一般以1个比特位进行表示,例如:Valid比特位的值为0表示缓存中的数据无效,为1表示缓存中的数据有效。
为了便于理解本实施例提供的运动补偿缓存装置以及缓存方法的具体实现,下面先对现有技术中运动补偿缓存装置的工作方式进行简要说明。图4是现有技术中运动补偿缓存装置的示意图。如图4所示,现有技术中运动补偿缓存装置通常包括:参考块确定及缓存行地址产生模块101、RAM地址及Tag生成模块102、命中检测模块103、命中判断模块104、更新控制模块105、数据读取(Fetch Data)控制模块106、第一缓存100a以及第二缓存100b。需要说明的是,若编码或解码B帧,则第一缓存100a用于存储B帧前向参考块数据,第二缓存100b用于存储B帧后向参考块数据;若编码或解码P帧,则第一缓存100a和第二缓存100b均用于存储P帧前向参考块数据,而且同一数据有可能同时存于第一缓存100a和第二缓存100b之中。
图4中第一缓存100a和第二缓存100b都分为Tag RAM和Data RAM部分,分别用于存储参考像素数据中Tag部分的数据和Data部分的数据。当在缓存中寻找所需要的数据时,首先通过该数据对应的Index去匹配第一缓存100a或第二缓存100b的缓存行地址,在匹配成功后,将输入的Tag与相应于Index的Tag RAM中保存的Tag进行比较,根据比较结果确定与该Index相对应的Data RAM中保存的Data部分的数据是否为所需要的数据。此外,外部存储器300虽然不属于运动补偿缓存装置的一部分,但与运动补偿缓存的工作过程紧密相关,因此将其表示在图4中。
请继续参阅图4,在视频编码或解码过程中,首先由参考块确定及缓存行地址产生模块101根据输入的运动矢量MV、参考帧号Refid和宏块模式MB_type计算运动补偿所需的实际参考块大小和位置,并以此确定各参考块中像素数据对应的缓存行地址;RAM地址和Tag生成模块102则将确定的缓存行地址依次映射成与外部存储地址相对应的Index和Tag。命中检测模块103通过所需要的数据对应的Index去匹配第一缓存100a或第二缓存100b的缓存行地址,并在匹配成功后将输入的Tag与相应于Index地址的Tag RAM中的内容进行比较,若两者相等,则缓存命中(产生Hit信号),通过命中判断模块104来选择输出Data RAM中相应index地址的数据;当两块缓存空间(第一缓存100a和第二缓存100b)都未命中,则通过数据读取控制模块106访问外部存储器300,读取所需的相关数据。最后,读取的数据则通过更新控制模块105更新到缓存空间中,覆盖旧数据。
下面对上述缓存访问和更新的过程举例说明。仍然如图4所示,假设在编码或解码B帧过程中,若所需数据对应的Index地址为Index0,通过Index0先从第一缓存100a中寻找,若Index0与第一缓存100a中某缓存行地址对应的Index一致,则表明匹配成功,该数据为B帧前向参考块数据,有可能存储在第一缓存100a中相应于Index0的缓存行中,然后进一步由命中检测模块103再根据输入的Tag0与相应于Index0的Tag RAM中的Tag内容进行比较,若两者相等,则缓存命中,输出Hit1的信号,命中判断模块104根据接收到的Hit1的信号,选择输出Data RAM中相应Index0的Data数据,如图4所示的Data Output;若两者不同,则缓存未命中,输出Hit0的信号,命中判断模块104根据接收到的Hit0的信号,向数据读取控制模块106发送“未命中”的信号,数据读取控制模块106基于该“未命中”的信号访问外部存储器300,读取相应的数据,该数据包括所需的参考像素数据中Tag部分的数据和Data部分的数据,通过更新控制模块105可以将其更新到缓存空间中。如果Index0与第一缓存100a中的缓存行地址匹配失败,则说明所需的数据为B帧后向参考块数据,可以从第二缓存100b中寻找,寻找的方式与在第一缓存100a中寻找的方式类似,在此不再赘述。
在编码或解码P帧过程中,所需的数据为P帧前向参考块数据,其可能存储于第一缓存100a,也可能存储于第二缓存100b,还可能同时存储于第一缓存100a和第二缓存100b,那么需要先在第一缓存100a寻找,判断第一缓存100a的缓存行地址是否匹配,是则判断是否命中,如果未命中再在第二缓存100b中寻找,判断第二缓存100b的缓存行地址是否匹配,是则判断是否命中,如果未命中则从外部存储器300读取相应的数据,并将其更新到对应的缓存中。需要说明的是,由于RAM地址及Tag生成模块102会建立缓存地址与外部存储地址之间的映射关系,因此,在缓存中寻找所需数据时,至少会在第一缓存100a和第二缓存100b的其中之一实现缓存行地址的匹配。
需要说明的是,图4中分别示出的两个命中检测模块103和两个更新控制模块105,在实际情况中,一般仅存在一个模块,而非两个相同功能的模块,即通过一个命中检测模块103和一个更新控制模块105便能够实现对两块缓存空间的操作,图4中将其分为两部分表示是为了使对于第一缓存100a的操作和对于第二缓存100b的操作能够有较为明显的区分。
本发明实施例中提供了一种不同于现有技术的运动补偿缓存装置,所述运动补偿缓存装置在编码或解码B帧和P帧时采用不同的缓存模式,在编码或解码B帧时,与现有技术中的缓存访问和更新过程相同,而在编码或解码P帧时,将缓存分为两部分,一部分进行二维地址直接映射,一部分进行一维地址直接映射,分别用于缓存更新周期不同的可重用数据。对于编码或解码P帧时进行一维地址直接映射的那部分缓存,提出一种长期更新策略,在缓存容量受限制的情况下,优先缓存当前行宏块的参考块中最下方的像素数据。
图5是本发明实施例提供的运动补偿缓存装置的示意图。如图5所示,本实施例提供的运动补偿缓存装置包括:第一缓存200a和第二缓存200b;参考块确定及缓存行地址产生模块201,适于基于输入的运动矢量MV、参考帧号Refid和宏块模式MB_type确定运动补偿所需的实际参考块的大小和位置,并以此确定各参考块中像素数据对应的缓存行地址;RAM地址及Tag生成模块202,适于将所述参考块确定及缓存行地址产生模块201确定的缓存行地址依次映射成与外部存储地址相对应的缓存地址索引Index和缓存标志Tag;命中检测模块203,适于通过缓存地址索引Index匹配第一缓存200a或第二缓存200b的缓存行地址,并在匹配成功后将输入的Tag与相应于Index的第一缓存200a或第二缓存200b中存储的Tag进行比较,并根据比较结果输出相应的检测结果;命中判断模块204,适于基于所述命中检测模块203输出的检测结果,判断第一缓存200a或第二缓存200b是否命中;数据读取控制模块206,适于编码或解码B帧时,若所述命中判断模块204判断出所述第一缓存200a未命中,则从外部存储器300读取相应的B帧前向参考块数据;若所述命中判断模块204判断出所述第二缓存200b未命中,则从外部存储器300读取相应的B帧后向参考块数据;所述数据读取控制模块206,还适于在编码或解码P帧时,若所述命中判断模块204判断出所述第一缓存200a未命中且所述命中检测模块203检测到所述第二缓存200b的缓存行地址匹配失败,或者所述命中检测模块203检测到所述第一缓存200a的缓存行地址匹配失败且所述命中判断模块204判断出所述第二缓存200b未命中,或者所述命中判断模块204判断出所述第一缓存200a和第二缓存200b均未命中,则从外部存储器300读取相应的P帧前向参考块数据;第一更新控制模块205a,适于将所述数据读取控制模块206在所述第一缓存200a未命中时读取的数据更新到第一缓存200a中;第二更新控制模块205b,适于将所述数据读取控制模块206在所述第二缓存200b未命中时读取的B帧后向参考块数据更新到所述第二缓存200b中;所述第二更新控制模块205b还适于判断出所述数据读取控制模块206在所述第二缓存200b未命中时读取的P帧前向参考块数据相对于所述第二缓存200b中未命中的缓存数据的被重用概率更高后,将该读取的P帧前向参考块数据更新到所述第二缓存200b中。
本实施例中,图5所示的参考块确定及缓存行地址产生模块201、RAM地址及Tag生成模块202、命中检测模块203、命中判断模块204的实现过程分别与图4所示的参考块确定及缓存行地址产生模块101、RAM地址及Tag生成模块102、命中检测模块103、命中判断模块104相同。图5所示的数据读取控制模块206的实现过程虽然在编码或解码B帧时与图4所示的数据读取控制模块106的实现过程相同,但在编码或解码P帧时,数据读取控制模块206是基于命中检测模块203以及命中判断模块204的不同检测结果,从外部存储器300读取相应的数据的。图5所示的第一更新控制模块205a的实现过程虽然与图4所示的更新控制模块105对第一缓存100a的实现过程相同,但是图5所示的第二更新控制模块205b的实现过程则与图4所示的更新控制模块105对第二缓存100b的实现过程有所区别,第二更新控制模块205b除了实现对B帧后向参考块数据的更新控制,还实现对P帧被重用概率较高的参考块数据的更新控制。此外,在具体实施时,可以将所述命中检测模块203和命中判断模块204集成于一检测模块之中。
本实施例中,在编码或解码B帧时,所述RAM地址及Tag生成模块202对于所述第一缓存200a和第二缓存200b的存储地址与外部存储器的存储地址之间进行的映射均为二维直接映射。为了使第二缓存200b拥有足够的长度表示P帧被重用概率高的参考块数据,本实施例中,在编码或解码P帧时,将第二缓存200b中二维直接映射的方式转换为一维直接映射的方式。图6是一维直接映射缓存的示意图。结合图2和图6,x方向为帧图像的宽度方向,y方向为帧图像的高度方向,W和H分别表示帧图像的宽度和高度,若二维缓存的宽度和高度分别设为2M和2N,则转换成的一维缓存(1D Cache)的长度为2M+N。某一帧图像中相应位置的参考像素数据与其在缓存中的存储位置之间的对应关系如图6中箭头所示。
图7是图6所示的一维直接映射缓存的缓存地址与外部存储地址之间映射的示意图。结合图3和图7,按图7所示的方法将缓存地址与外部存储地址之间映射由二维直接映射转换到一维直接映射。图7中,Address表示在长度这一维度上对应的外部存储地址,Tag0_x和Tag0_y分别是采用二维直接映射方式时在宽度和高度两个维度的缓存标志,Index0_x和Index0_y分别是采用二维直接映射方式时在宽度和高度两个维度的缓存地址索引,Address可以通过图7所示的方式转换得到。Tag1是采用一维直接映射方式时在长度这一维度的缓存标志,Tag1中除了包括Valid和Refidx,还包括外部存储地址的高位,即Address>>(M+N),其中“>>”为移位运算的符号。此外,本实施例中,Tag1中还包括更新标记位Local,适于表示当前地址的数据是否是在编码或解码当前宏块行时被更新,通常以1个比特位进行表示,例如:Local比特位为0表示当前地址的数据不是在编码或解码当前宏块行时被更新,为1则表示当前地址的数据是在编码或解码当前宏块行时被更新。Index1是采用一维直接映射方式时在长度这一维度的缓存地址索引,具体通过Address&(2M+N-1)表示。本实施例中,在编码或解码P帧过程中,为了实现第二缓存200b中二维直接映射到一维直接映射的转换,参阅图5,所述运动补偿缓存装置还包括转换单元207,所述转换单元207与所述RAM地址及Tag生成模块202、第二更新控制模块205b、命中检测模块203和第二缓存200b相连,适于在编码或解码P帧时将第二缓存200b中的缓存地址与外部存储地址之间映射由二维直接映射转换为一维直接映射。所述转换单元207的具体实施将在下面作进一步描述。
需要说明的是,本实施例中所述的“被重用概率较高”是一个相对概念,指的是从外部存储器300读取的数据与其对应的缓存中存储的未命中的数据相比,哪个数据的被重用的概率更高,若前者被重用概率更高,则将读取的数据更新到第二缓存200b中,若后者被重用概率更高,则直接将读取的数据输出,而不将其更新到第二缓存200b中。至于判断哪个数据的被重用的概率更高,则由第二更新控制模块205b依据一定的更新控制策略去实现,该更新控制策略将在下面详细描述。
基于本实施例提供的上述运动补偿缓存装置,所述用于视频运动补偿的缓存方法中,在编码或解码B帧和P帧时分别采用不同的缓存模式,所述缓存模式的不同体现在对第一缓存200a和第二缓存200b的数据更新控制方式的不同。
在编码或解码B帧时,第一缓存200a存储前向参考块数据,第二缓存200b存储后向参考块数据,一旦发生缓存未命中的情况,从外部存储器读取相应的数据后,便将读取的数据更新到缓存空间中。这时候缓存中的可重用数据都发生在宏块内部及相邻水平宏块的参考块之间的空间重叠部分,缓存中的数据随宏块编码或解码被快速更新,不能保持较长的时间,因此本实施例中将这一数据更新机制称为短期更新策略。参阅图5,第一缓存200a内示出的“B帧前向短期”表示在编码或解码B帧时是采用短期更新策略对该缓存中存储的前向参考块数据进行更新控制的,对第一缓存200a的数据更新通过第一更新控制模块205a实现;第二缓存200b内示出的“B帧后向短期”表示在编码或解码B帧时是采用短期更新策略对该缓存中存储的后向参考块数据进行更新控制的,对第二缓存200b的数据更新通过第二更新控制模块205b实现。
需要说明的是,在编码或解码B帧时,本实施例中运动补偿缓存的工作方式与现有技术并无特别的区别,此时,图5中的转换单元207处于关闭状态,Index1=Index0,Tag1=Tag0,第一更新控制模块205a、第二更新控制模块205b的实现过程与图4中的更新控制模块105也是相同的,可参考之前对于现有技术中运动补偿缓存装置的工作方式的相关描述。
本实施例中,在编码或解码P帧时,存储前向参考块的第一缓存200a仍然保持原有的短期更新策略,而对于第二缓存200b的数据更新,为了利用对P帧而言冗余的缓存空间,存储被重用概率较高的参考块数据,则采用下面将详细描述的长期更新策略。在执行所述长期更新策略的过程中,一旦发生缓存未命中的情况,从外部存储器读取相应的数据后,不会将其马上更新到缓存空间中,而是需要进行一些判断和识别的操作,只将满足一定条件的数据更新到缓存空间中。参阅图5,第一缓存200a内示出的“P帧短期”表示在编码或解码P帧时是采用短期更新策略对该缓存中存储的参考块数据进行更新控制的;第二缓存200b内示出的“P帧长期”表示在编码或解码P帧时是采用长期更新策略对该缓存中存储的参考块数据进行更新控制的。此时,图5中的转换单元207处于开启状态,将缓存地址与外部存储地址之间的映射由二维直接映射转换为一维直接映射,如图6和图7所示。参阅图5,经过转换单元207的转换操作之后出来的缓存标志和缓存地址索引分别为Tag1和Index1,第一更新控制模块205a实现过程仍然与图4中的更新控制模块105相同,而第二更新控制模块205b由于按照长期更新策略进行工作,其实现过程完全不同于更新控制模块105。
请继续参阅图5,本实施例中,所述长期更新策略按以下流程进行:
1)当缓存未命中时,从外部存储器300中读取相应的数据Data。
2)识别未命中的缓存数据是否为有效数据并且是否是在编码或解码当前宏块行时被更新。
具体实施时,判断第二缓存200b的Tag RAM中Index1地址对应的Tag数据的Valid或Local比特位是否有等于0的情况,如果满足条件,则将读取的外部数据Data和新的Tag数据分别更新到Data RAM和Tag RAM中。在实际情况中,Valid比特位为0则表示缓存中的数据无效,此时不存在判断从外部存储器300读取的数据Data是否比Data RAM中未命中的数据的被重用概率更高的问题,可以直接将读取的数据Data更新到第二缓存200b中;由于Local比特位为0表示当前地址的数据不是在编码或解码当前宏块行时被更新,那么该数据不可能在编码或解码下一行宏块时被重用,即该数据被重用的概率为0,此时可以直接将其替换为从外部存储器300读取的数据Data。在实际实施时,当每次编码或解码完一行宏块或一帧图像时,将Local比特统一清零,这样在处理新的一行宏块或一帧图像时,能够确保缓存中的数据都不是在编码或解码当前宏块行时被更新的。
需要说明的是,本实施例中所述的未命中的缓存数据,指的是根据Index从缓存中获取数据时,与Index相应的存储于缓存中的数据。举例来说,假设所需的数据a对应的Index为1010,则通过1010匹配到缓存行地址后,进一步通过Tag判断是否命中,若缓存命中,则读取Index为1010的缓存行所存储的数据a;如果Index为1010的缓存行所存储的数据为b,则通过Tag能够判断出缓存未命中,从外部存储器获取Index为1010对应存储的数据a,此时,Index为1010的缓存行所存储的数据b即为所述未命中的缓存数据。
3)判断从外部存储器300读取的数据Data相对于未命中的缓存数据是否被重用概率更高。
具体实施时,如果Valid和Local位都为1,则比较参考帧号Refidx:
如果Refidx不同,则表明从外部存储器300读取的数据Data和未命中的缓存数据是属于不同参考帧的数据,当判断出读取的数据Data所属参考帧与当前帧之间距离相对于未命中的缓存数据所属参考帧与当前帧之间距离更小时,进行数据更新,即将从外部存储器300读取的数据Data更新到第二缓存200b中。因为如果读取的数据Data所属参考帧与当前帧之间距离比未命中的缓存数据所属参考帧与当前帧之间距离更小,说明读取的数据Data所属参考帧与当前帧更接近,那么被重用的概率也会更高一些,所以需要进行数据更新。举例来说,如果当前帧的帧号为9,读取的数据Data所属参考帧的帧号为8,未命中的缓存数据所述参考帧的帧号为12,那么帧号9与帧号8的距离为1,帧号9与帧号12的距离为3,读取的数据Data所属参考帧是更接近于当前帧,在编码或解码过程中被重用概率更高些,需要将读取的数据Data更新到缓存中。
如果Refidx相同,则表明从外部存储器300读取的数据Data和未命中的缓存数据是属于同一参考帧的数据,此时比较Tag数据中剩下比特位的数值,即外部存储地址的高位Address>>(M+N)的数值,当读取的数据Data的Address>>(M+N)数值比未命中的缓存数据的Address>>(M+N)数值大时,进行数据更新。因为当读取的数据Data和未命中的缓存数据属于同一参考帧的数据时,Address>>(M+N)数值越大则表明对应数据是位于当前行宏块的参考块中更下方的数据,其被重用的概率也更高一些。
4)当以上条件都不满足时,不进行缓存更新,将从外部存储器300读取的数据Data直接输出。
采用了本实施例中提出的长期更新策略后,虽然缓存空间不足以缓存一行宏块的参考块数据,但每行宏块对应的参考块中最下方的像素数据将被优先缓存在有限的缓存空间中,这些像素数据也是发生空间重叠概率最高的像素数据。
图8是图5所示第二更新控制模块的结构示意图。结合图5和图8,为了实现上述长期更新策略,本实施例提供的用于视频运动补偿的缓存装置中的第二更新控制模块205b具体可以包括:
第一识别单元401,适于在所述数据读取控制模块206在所述第二缓存200b未命中时读取相应的P帧前向参考块数据后,识别未命中的缓存数据是否为无效数据或者是否是在编码或解码当前宏块行时被更新;
第一判断单元402,与所述第一识别单元401相连,适于在所述第一识别单元401识别出未命中的缓存数据为无效数据或者不是在编码或解码当前宏块行时被更新时,判断出读取的P帧前向参考块数据相对于未命中的缓存数据的被重用概率更高;
第二识别单元403,适于在所述数据读取控制模块206在所述第二缓存200b未命中时读取相应的P帧前向参考块数据后,识别当前参考帧与读取的数据所属参考帧是否相同;
第二判断单元404,与所述第一识别单元401和第二识别单元403相连,适于在所述第一识别单元401识别出未命中的缓存数据为有效数据且是在编码或解码当前宏块行时被更新,且所述第二识别单元403识别出当前参考帧与读取的数据所属参考帧不同时,若读取的数据所属参考帧与当前参考帧之间距离比未命中的缓存数据所属参考帧与当前参考帧之间距离小时,判断出读取的P帧前向参考块数据相对于未命中的缓存数据的被重用概率更高;
第三判断单元405,与所述第一识别单元401和第二识别单元403相连,适于在所述第一识别单元401识别出未命中的缓存数据为有效数据且是在编码或解码当前宏块行时被更新,且所述第二识别单元403识别出当前参考帧与读取的数据所属参考帧相同时,若读取的数据在外部存储器300的存储地址高位的数值比未命中的缓存数据在外部存储器300的存储地址高位的数值大时,判断出读取的P帧前向参考块数据相对于未命中的缓存数据的被重用概率更高;
更新单元406,与所述第一判断单元402、第二判断单元404以及第三判断单元405相连,适于将所述数据读取控制模块206在所述第二缓存200b未命中时读取的B帧后向参考块数据更新到所述第二缓存200b中;还适于在所述第一判断单元402或第二判断单元404或第三判断单元405判断出读取的P帧前向参考块数据相对于未命中的缓存数据的被重用概率更高后,将该读取的P帧前向参考块数据更新到所述第二缓存200b中。
本实施例中,所述第一识别单元401基于所述有效标记位Valid识别未命中的缓存数据是否为有效数据,基于所述更新标记位Local识别是否是在编码或解码当前宏块行时被更新。
本实施例中其他关于缓存访问和更新的具体实施,可以参考前面对于现有技术中运动补偿缓存的工作方式的相关描述,在此不再赘述。
本领域技术人员可以理解,实现上述实施例中用于视频运动补偿的缓存装置的全部或部分是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读存储介质中,所述存储介质可以是ROM、RAM、磁碟、光盘等。
基于上述用于视频运动补偿的缓存装置,本发明实施例还提供了一种用于视频运动补偿的缓存方法,包括:
编码或解码B帧时,若第一缓存未命中,则从外部存储器读取相应的B帧前向参考块数据并将其更新到所述第一缓存中;若第二缓存未命中,则从外部存储器读取相应的B帧后向参考块数据并将其更新到所述第二缓存中;
编码或解码P帧时,
若所述第一缓存未命中且所述第二缓存的缓存行地址匹配失败,则从外部存储器读取相应的P帧前向参考块数据并将其更新到所述第一缓存中;
若所述第一缓存的缓存行地址匹配失败且所述第二缓存未命中,则从外部存储器读取相应的P帧前向参考块数据,并在判断出读取的数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高后,将其更新到所述第二缓存中;
若所述第一缓存和第二缓存均未命中,则从外部存储器读取相应的P帧前向参考块数据并将其更新到所述第一缓存中,并在判断出读取的数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高后,将其更新到所述第二缓存中。
本实施例中,所述第一缓存和第二缓存的存储地址与外部存储器的存储地址之间进行的映射为直接映射。具体实施时,在编码或解码B帧时,所述第一缓存和第二缓存的存储地址与外部存储器的存储地址之间进行的映射均为二维直接映射;在编码或解码P帧时,将所述第二缓存的存储地址与外部存储器的存储地址之间进行的映射从二维直接映射转换为一维直接映射。
本实施例中,所述第一缓存和第二缓存的存储地址与外部存储器的存储地址之间进行的直接映射具体可以包括:将确定的各参考块中像素数据对应的缓存行地址依次映射成相应的缓存地址索引和缓存标志,所述外部存储器的存储地址包括所述缓存地址索引和缓存标志。在具体实施时,可以通过所述缓存标志判断所述第一缓存或第二缓存是否命中,通过所述缓存地址索引判断所述第一缓存或第二缓存的缓存行地址是否匹配失败。所述缓存标志包括:有效标记位,适于表示当前地址的缓存数据是否为有效数据;在编码或解码P帧时,所述缓存标志还包括:更新标记位,适于表示当前地址的缓存数据是否是在编码或解码当前宏块行时被更新。
本实施例中,所述判断出读取的数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高包括:
识别未命中的缓存数据是否为有效数据并且是在编码或解码当前宏块行时被更新,若否,则判断出读取的数据相对于未命中的缓存数据的被重用概率更高;若是,则:
若当前参考帧与读取的数据所属参考帧不同,当读取的数据所属参考帧与当前参考帧之间距离比未命中的缓存数据所属参考帧与当前参考帧之间距离小时,判断出读取的数据相对于未命中的缓存数据的被重用概率更高;
若当前参考帧与读取的数据所属参考帧相同,当读取的数据在外部存储器的存储地址高位的数值比未命中的缓存数据在外部存储器的存储地址高位的数值大时,判断出读取的数据相对于未命中的缓存数据的被重用概率更高。
所述用于视频运动补偿的缓存方法的具体实施可参考本实施例提供的用于视频运动补偿的缓存装置的实施,在此不再赘述。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

Claims (15)

1.一种用于视频运动补偿的缓存方法,其特征在于,包括:
编码或解码B帧时,若第一缓存未命中,则从外部存储器读取相应的B帧前向参考块数据并将其更新到所述第一缓存中;若第二缓存未命中,则从外部存储器读取相应的B帧后向参考块数据并将其更新到所述第二缓存中;
编码或解码P帧时,
若所述第一缓存未命中且所述第二缓存的缓存行地址匹配失败,则从外部存储器读取相应的P帧前向参考块数据并将其更新到所述第一缓存中;
若所述第一缓存的缓存行地址匹配失败且所述第二缓存未命中,则从外部存储器读取相应的P帧前向参考块数据,并在判断出读取的数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高后,将其更新到所述第二缓存中;
若所述第一缓存和第二缓存均未命中,则从外部存储器读取相应的P帧前向参考块数据并将其更新到所述第一缓存中,并在判断出读取的数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高后,将其更新到所述第二缓存中。
2.根据权利要求1所述的用于视频运动补偿的缓存方法,其特征在于,所述第一缓存和第二缓存的存储地址与外部存储器的存储地址之间进行的映射为直接映射。
3.根据权利要求1所述的用于视频运动补偿的缓存方法,其特征在于,在编码或解码B帧时,所述第一缓存和第二缓存的存储地址与外部存储器的存储地址之间进行的映射均为二维直接映射。
4.根据权利要求3所述的用于视频运动补偿的缓存方法,其特征在于,还包括:在编码或解码P帧时,将所述第二缓存的存储地址与外部存储器的存储地址之间进行的映射从二维直接映射转换为一维直接映射。
5.根据权利要求2所述的用于视频运动补偿的缓存方法,其特征在于,所述第一缓存和第二缓存的存储地址与外部存储器的存储地址之间进行的直接映射包括:将确定的各参考块中像素数据对应的缓存行地址依次映射成相应的缓存地址索引和缓存标志,所述外部存储器的存储地址包括所述缓存地址索引和缓存标志。
6.根据权利要求5所述的用于视频运动补偿的缓存方法,其特征在于,通过所述缓存标志判断所述第一缓存或第二缓存是否命中,通过所述缓存地址索引判断所述第一缓存或第二缓存的缓存行地址是否匹配失败。
7.根据权利要求5所述的用于视频运动补偿的缓存方法,其特征在于,所述缓存标志包括:有效标记位,适于表示当前地址的缓存数据是否为有效数据;在编码或解码P帧时,所述缓存标志还包括:更新标记位,适于表示当前地址的缓存数据是否是在编码或解码当前宏块行时被更新。
8.根据权利要求1所述的用于视频运动补偿的缓存方法,其特征在于,所述判断出读取的数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高包括:
识别未命中的缓存数据是否为有效数据并且是在编码或解码当前宏块行时被更新,若否,则判断出读取的数据相对于未命中的缓存数据的被重用概率更高;若是,则:
若当前参考帧与读取的数据所属参考帧不同,当读取的数据所属参考帧与当前参考帧之间距离比未命中的缓存数据所属参考帧与当前参考帧之间距离小时,判断出读取的数据相对于未命中的缓存数据的被重用概率更高;
若当前参考帧与读取的数据所属参考帧相同,当读取的数据在外部存储器的存储地址高位的数值比未命中的缓存数据在外部存储器的存储地址高位的数值大时,判断出读取的数据相对于未命中的缓存数据的被重用概率更高。
9.一种用于视频运动补偿的缓存装置,其特征在于,包括:
第一缓存和第二缓存;
检测模块,适于匹配所述第一缓存或第二缓存的缓存行地址,以及检测所述第一缓存或第二缓存是否命中;
数据读取控制模块,适于在编码或解码B帧时,若所述检测模块检测到所述第一缓存未命中,则从外部存储器读取相应的B帧前向参考块数据;若所述检测模块检测到所述第二缓存未命中,则从外部存储器读取相应的B帧后向参考块数据;
所述数据读取控制模块,还适于在编码或解码P帧时,若所述检测模块检测到所述第一缓存未命中且所述第二缓存的缓存行地址匹配失败,或者检测到所述第一缓存的缓存行地址匹配失败且所述第二缓存未命中,或者检测到所述第一缓存和第二缓存均未命中,则从外部存储器读取相应的P帧前向参考块数据;
第一更新控制模块,适于将所述数据读取控制模块在所述第一缓存未命中时读取的数据更新到所述第一缓存中;
第二更新控制模块,适于将所述数据读取控制模块在所述第二缓存未命中时读取的B帧后向参考块数据更新到所述第二缓存中;还适于判断出所述数据读取控制模块在所述第二缓存未命中时读取的P帧前向参考块数据相对于所述第二缓存中未命中的缓存数据的被重用概率更高后,将该读取的P帧前向参考块数据更新到所述第二缓存中。
10.根据权利要求9所述的用于视频运动补偿的缓存装置,其特征在于,还包括:
参考块确定及缓存行地址产生模块,适于确定运动补偿所需的实际参考块的大小和位置,并以此确定各参考块中像素数据对应的缓存行地址;
缓存地址及缓存标志生成模块,适于将确定的缓存行地址依次映射成与外部存储器的存储地址相对应的缓存地址索引和缓存标志;
所述检测模块包括:
命中检测模块,适于通过所述缓存地址索引匹配所述第一缓存或第二缓存的缓存行地址,并在匹配成功后将输入的缓存标志与相应于缓存地址索引的第一缓存或第二缓存中存储的缓存标志进行比较,并根据比较结果输出相应的检测结果;
命中判断模块,适于基于所述检测结果,判断所述第一缓存或第二缓存是否命中。
11.根据权利要求10所述的用于视频运动补偿的缓存装置,其特征在于,所述缓存地址及缓存标志生成模块对于所述第一缓存和第二缓存的存储地址与外部存储器的存储地址之间进行的映射为直接映射。
12.根据权利要求10所述的用于视频运动补偿的缓存装置,其特征在于,在编码或解码B帧时,所述缓存地址及缓存标志生成模块对于所述第一缓存和第二缓存的存储地址与外部存储器的存储地址之间进行的映射均为二维直接映射。
13.根据权利要求12所述的用于视频运动补偿的缓存装置,其特征在于,还包括转换单元,适于在编码或解码P帧时将第二缓存的存储地址与外部存储器的存储地址之间进行的映射由二维直接映射转换为一维直接映射。
14.根据权利要求10所述的用于视频运动补偿的缓存装置,其特征在于,所述第二更新控制模块包括:
第一识别单元,适于在所述数据读取控制模块在所述第二缓存未命中时读取相应的P帧前向参考块数据后,识别未命中的缓存数据是否为无效数据或者是否是在编码或解码当前宏块行时被更新;
第一判断单元,适于在所述第一识别单元识别出未命中的缓存数据为无效数据或者不是在编码或解码当前宏块行时被更新时,判断出读取的P帧前向参考块数据相对于未命中的缓存数据的被重用概率更高;
第二识别单元,适于在所述数据读取控制模块在所述第二缓存未命中时读取相应的P帧前向参考块数据后,识别当前参考帧与读取的数据所属参考帧是否相同;
第二判断单元,适于在所述第一识别单元识别出未命中的缓存数据为有效数据且是在编码或解码当前宏块行时被更新,且所述第二识别单元识别出当前参考帧与读取的数据所属参考帧不同时,若读取的数据所属参考帧与当前参考帧之间距离比未命中的缓存数据所属参考帧与当前参考帧之间距离小时,判断出读取的P帧前向参考块数据相对于未命中的缓存数据的被重用概率更高;
第三判断单元,适于在所述第一识别单元识别出未命中的缓存数据为有效数据且是在编码或解码当前宏块行时被更新,且所述第二识别单元识别出当前参考帧与读取的数据所属参考帧相同时,若读取的数据在外部存储器的存储地址高位的数值比未命中的缓存数据在外部存储器的存储地址高位的数值大时,判断出读取的P帧前向参考块数据相对于未命中的缓存数据的被重用概率更高;
更新单元,适于将所述数据读取控制模块在所述第二缓存未命中时读取的B帧后向参考块数据更新到所述第二缓存中;还适于在所述第一判断单元或第二判断单元或第三判断单元判断出读取的P帧前向参考块数据相对于未命中的缓存数据的被重用概率更高后,将该读取的P帧前向参考块数据更新到所述第二缓存中。
15.根据权利要求14所述的用于视频运动补偿的缓存装置,其特征在于,所述缓存标志包括:有效标记位和更新标记位;所述第一识别单元基于所述有效标记位识别未命中的缓存数据是否为有效数据,基于所述更新标记位识别是否是在编码或解码当前宏块行时被更新。
CN201210228887.0A 2012-07-03 2012-07-03 用于视频运动补偿的缓存方法与装置 Active CN103533366B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210228887.0A CN103533366B (zh) 2012-07-03 2012-07-03 用于视频运动补偿的缓存方法与装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210228887.0A CN103533366B (zh) 2012-07-03 2012-07-03 用于视频运动补偿的缓存方法与装置

Publications (2)

Publication Number Publication Date
CN103533366A true CN103533366A (zh) 2014-01-22
CN103533366B CN103533366B (zh) 2016-11-23

Family

ID=49934979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210228887.0A Active CN103533366B (zh) 2012-07-03 2012-07-03 用于视频运动补偿的缓存方法与装置

Country Status (1)

Country Link
CN (1) CN103533366B (zh)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105120286A (zh) * 2015-06-26 2015-12-02 福州瑞芯微电子股份有限公司 一种高效的视频解码参考帧取数方法及设备
CN107018418A (zh) * 2015-12-23 2017-08-04 联发科技股份有限公司 参考数据重用方法、带宽估计方法及相关视频解码器
CN107797757A (zh) * 2016-09-06 2018-03-13 晨星半导体股份有限公司 与影像处理系统中的快取存储器相关的存储器管理方法及存储器管理装置
CN109040520A (zh) * 2018-07-20 2018-12-18 西安交通大学 基于数据压缩与搜索范围预测的运动估计存储架构设计方法
CN110442382A (zh) * 2019-07-31 2019-11-12 西安芯海微电子科技有限公司 预取缓存控制方法、装置、芯片以及计算机可读存储介质
CN110909687A (zh) * 2019-11-26 2020-03-24 爱菲力斯(深圳)科技有限公司 动作特征有效性判定方法、计算机存储介质和电子装置
CN111538677A (zh) * 2020-04-26 2020-08-14 西安万像电子科技有限公司 数据处理方法及装置
CN111915673A (zh) * 2020-07-22 2020-11-10 深圳云天励飞技术有限公司 图像处理方法、装置、终端设备及存储介质
WO2021134631A1 (zh) * 2019-12-31 2021-07-08 深圳市大疆创新科技有限公司 视频处理的方法与装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1622626A (zh) * 2004-12-21 2005-06-01 北京中星微电子有限公司 一种视频编解码过程中宏块预取的方法
US20110096082A1 (en) * 2009-10-27 2011-04-28 Yamaha Corporation Memory access control device and method thereof
CN102340662A (zh) * 2010-07-22 2012-02-01 炬才微电子(深圳)有限公司 一种视频处理设备和方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1622626A (zh) * 2004-12-21 2005-06-01 北京中星微电子有限公司 一种视频编解码过程中宏块预取的方法
US20110096082A1 (en) * 2009-10-27 2011-04-28 Yamaha Corporation Memory access control device and method thereof
CN102055975A (zh) * 2009-10-27 2011-05-11 雅马哈株式会社 存储器存取控制设备及其方法
CN102340662A (zh) * 2010-07-22 2012-02-01 炬才微电子(深圳)有限公司 一种视频处理设备和方法

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105120286A (zh) * 2015-06-26 2015-12-02 福州瑞芯微电子股份有限公司 一种高效的视频解码参考帧取数方法及设备
CN105120286B (zh) * 2015-06-26 2019-01-18 福州瑞芯微电子股份有限公司 一种视频解码参考帧取数方法及设备
CN107018418A (zh) * 2015-12-23 2017-08-04 联发科技股份有限公司 参考数据重用方法、带宽估计方法及相关视频解码器
CN107797757B (zh) * 2016-09-06 2021-03-30 联发科技股份有限公司 影像处理系统中的快取存储器管理方法及装置
CN107797757A (zh) * 2016-09-06 2018-03-13 晨星半导体股份有限公司 与影像处理系统中的快取存储器相关的存储器管理方法及存储器管理装置
CN109040520A (zh) * 2018-07-20 2018-12-18 西安交通大学 基于数据压缩与搜索范围预测的运动估计存储架构设计方法
CN110442382A (zh) * 2019-07-31 2019-11-12 西安芯海微电子科技有限公司 预取缓存控制方法、装置、芯片以及计算机可读存储介质
CN110442382B (zh) * 2019-07-31 2021-06-15 西安芯海微电子科技有限公司 预取缓存控制方法、装置、芯片以及计算机可读存储介质
CN110909687A (zh) * 2019-11-26 2020-03-24 爱菲力斯(深圳)科技有限公司 动作特征有效性判定方法、计算机存储介质和电子装置
CN110909687B (zh) * 2019-11-26 2022-10-21 爱菲力斯(深圳)科技有限公司 动作特征有效性判定方法、计算机存储介质和电子装置
WO2021134631A1 (zh) * 2019-12-31 2021-07-08 深圳市大疆创新科技有限公司 视频处理的方法与装置
CN111538677A (zh) * 2020-04-26 2020-08-14 西安万像电子科技有限公司 数据处理方法及装置
CN111538677B (zh) * 2020-04-26 2023-09-05 西安万像电子科技有限公司 数据处理方法及装置
CN111915673A (zh) * 2020-07-22 2020-11-10 深圳云天励飞技术有限公司 图像处理方法、装置、终端设备及存储介质
CN111915673B (zh) * 2020-07-22 2022-01-11 深圳云天励飞技术股份有限公司 图像处理方法、装置、终端设备及存储介质

Also Published As

Publication number Publication date
CN103533366B (zh) 2016-11-23

Similar Documents

Publication Publication Date Title
CN103533366A (zh) 用于视频运动补偿的缓存方法与装置
CN100484246C (zh) Avs视频硬件解码器中运动补偿模块的像素预取装置
CN101116341B (zh) 用于进行视频运动补偿的高速缓存方法及设备
US5621464A (en) Method of reordering a decoded video picture sequence
CN102098519B (zh) 视频编码方法、解码方法、编码及解码装置
CN104731719B (zh) 一种缓存系统和方法
US7427990B2 (en) Data replacement method and circuit for motion prediction cache
TWI596570B (zh) 像素緩衝
CN1937771A (zh) 为运动补偿动态配置视频解码器高速缓存
CN101365136B (zh) 帧内预测的方法及装置
US10140126B2 (en) Variable length instruction processor system and method
CN101505427A (zh) 视频压缩编码算法中的运动估计装置
CN101193306A (zh) 运动矢量检测装置和运动矢量检测方法
CN111985456A (zh) 视频实时识别分割及检测架构
CN100378687C (zh) 一种高速缓存预取模块及其方法
CN101909212B (zh) 可重构多媒体SoC的多标准宏块预测系统
CN1757018B (zh) 具有预取装置的数据处理系统、数据预取方法
CN101466036A (zh) 基于avs的运动矢量预测流水并行设计方法
CN102223543B (zh) 参考像素读取存储系统
CN107801044B (zh) 后向适应装置与相关方法
CN100508604C (zh) 算术编码电路和算术编码控制方法
CN105550979A (zh) 一种高数据通量纹理Cache层次结构
CN113722247A (zh) 物理内存保护单元、物理内存权限控制方法和处理器
Chuang et al. Bandwidth-efficient cache-based motion compensation architecture with DRAM-friendly data access control
KR20210011494A (ko) 동작 캐시 및 명령 캐시 인출과 디코딩 명령을 위한 낮은 레이턴시 동기화

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20180418

Address after: 300456 Tianjin Binhai New Area free trade pilot area (Dongjiang Bonded Port Area), Asia Road 6865 financial and Trade Center North District 1 Building 1 door 1802 room -7

Patentee after: Xinji Lease (Tianjin) Co.,Ltd.

Address before: Zuchongzhi road in Pudong Zhangjiang hi tech park Shanghai 201203 Lane 2288 Pudong New Area Spreadtrum Center Building 1

Patentee before: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

TR01 Transfer of patent right
EE01 Entry into force of recordation of patent licensing contract

Application publication date: 20140122

Assignee: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

Assignor: Xinji Lease (Tianjin) Co.,Ltd.

Contract record no.: 2018990000196

Denomination of invention: Buffer memory method and apparatus for video motion compensation

Granted publication date: 20161123

License type: Exclusive License

Record date: 20180801

EE01 Entry into force of recordation of patent licensing contract
TR01 Transfer of patent right

Effective date of registration: 20221014

Address after: 201203 Shanghai city Zuchongzhi road Pudong New Area Zhangjiang hi tech park, Spreadtrum Center Building 1, Lane 2288

Patentee after: SPREADTRUM COMMUNICATIONS (SHANGHAI) Co.,Ltd.

Address before: 300456 Tianjin Binhai New Area free trade pilot area (Dongjiang Bonded Port Area), Asia Road 6865 financial and Trade Center North District 1 Building 1 door 1802 room -7

Patentee before: Xinji Lease (Tianjin) Co.,Ltd.

TR01 Transfer of patent right