CN110691241A - 应用加速 - Google Patents

应用加速 Download PDF

Info

Publication number
CN110691241A
CN110691241A CN201910602249.2A CN201910602249A CN110691241A CN 110691241 A CN110691241 A CN 110691241A CN 201910602249 A CN201910602249 A CN 201910602249A CN 110691241 A CN110691241 A CN 110691241A
Authority
CN
China
Prior art keywords
block
blocks
frame
video
reference frame
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.)
Pending
Application number
CN201910602249.2A
Other languages
English (en)
Inventor
D·D·利瓦伊
A·韦斯曼
K·潘恩斯
N·布洛赫
E·雅各布
A·N·科恩
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.)
Myros Technology Co Ltd
Mellanox Technologies Ltd
Original Assignee
Myros Technology 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
Priority claimed from US16/291,023 external-priority patent/US20200014918A1/en
Application filed by Myros Technology Co Ltd filed Critical Myros Technology Co Ltd
Priority to CN202211212487.0A priority Critical patent/CN115567722A/zh
Publication of CN110691241A publication Critical patent/CN110691241A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/567Motion estimation based on rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/119Adaptive subdivision aspects, e.g. subdivision of a picture into rectangular or non-rectangular coding blocks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/12Selection from among a plurality of transforms or standards, e.g. selection between discrete cosine transform [DCT] and sub-band transform or selection between H.263 and H.264
    • H04N19/122Selection of transform size, e.g. 8x8 or 2x4x8 DCT; Selection of sub-band transforms of varying structure or type
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/58Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Discrete Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

一种系统包括加速设备,该加速设备包括输入电路和相似度计算电路,所述输入电路被配置用于针对第一多个待编码视频帧中的每一个而接收包括至少一个原始视频帧和至少一个参考帧的输入,以及将第一多个待编码视频帧中的每一个划分成第二多个块;所述相似度计算电路被配置用于针对第一多个待编码视频帧中的每一个:针对第二多个块中的每个块,产生基于每个待编码帧中的每个块与参考帧的每个块的相似度的结果块得分,以及位移矢量。还提供了相关的装置和方法。

Description

应用加速
技术领域
本发明总体上涉及计算机架构和应用加速领域。
优先权要求
本申请对以下申请要求优先权:于2018年7月8日提交的Levi等人的美国临时专利申请62/695,063;以及于2018年9月4日提交的Levi等人的美国临时专利申请62/726,446;以及于2019年3`月4日提交的Levi等人的美国专利申请16/291,023。
背景技术
在本文中,将视频编码描述为产生沉重压力的工作负荷的一个示例(作为非限制性示例,在云中和/或数据中心中;这同样适用于作为视频流的一部分的其他设备和/或位置)。关于为边缘计算设备(作为非限制性示例,智能电话、电视机等)准备视频的特定非限制性示例而言,数据中心工作负荷包括数百万个视频流,这些视频流必须在每分钟内编码和重新编码,以便以非常有效的方式将流流式传输到多个设备(通常具有不同的视频编解码器)。本领域技术人员将会理解,自适应流式传输还需要将视频编码为多种比特率。
发明内容
本领域技术人员将会理解以下内容:
1.在本发明的示例性实施方式中提供对本申请中(包括在其“背景技术”中)提及的问题的解决方案适用于各种用例,而不仅仅适用于数据中心和/或云用例。
2.在本发明的示例性实施方式中提供的解决方案适用于(作为非限制性示例):视频压缩;运动估计;视频去块滤波器;当前图片参考(Current Picture Referencing,CPR)和视频转换。作为非限制性示例,本发明的示例性实施方式可应用于的相关系统的非限制性示例包括:HEVC/H.265(高效视频编码);AVC/H.264(高级视频编码);VP9;AV-1(AOMediaVideo 1);以及VVC(多功能视频编码)。虽然通常在运动估计的上下文中描述本发明的示例性实施方式的使用,但这样的描述并不表示限制,并且根据本文中的描述,本领域技术人员将会理解如何至少在本段中上述其他情况下提供解决方案。
对于单个CPU,单个编码任务本身的负荷通常太大。现在参考图9、图10和图11,图9是描绘CPU能力与各种编码任务之间的关系的简化图形说明,图10是描绘各种过去、现在和未来的编码标准的大致时间线视图的简化图示说明,图11是描绘各种编码标准的复杂性的简化表格说明。图9示出了,在相当长的一段时间内,单个CPU无法跟上单个编码任务;据信,随着未来的标准被采用并且得到更广泛的使用(参见图10)并且如图11中所示这些未来标准的复杂性预计将会更高,这个问题未来将会变得更加严峻。
此外,随着越来越多的信息/数据产生并且以更高的分辨率流式传输至边缘设备,每个流中的信息/数据量不断增加。现在附加参考图12,其为描绘分辨率与复杂性之间关系的简化的部分图示、部分图形说明。图12示出了历年相混的分辨率的非常保守的预测,并且还示出了每个流中存在更多像素的事实所涉及的标称复杂性。
现在附加参考图13,其为描绘视频复杂性、CPU能力和计算工作量之间的关系的简化图形说明。图13示出了真实视频复杂性(每像素的复杂性×像素数)正在遭受CPU能力与所需计算工作量之间的不断增大的差距。
到目前为止所提出的问题的考虑没有包括需要在数据中心内同时处理的视频流数目的预期继续大幅增加。
考虑到上述情况,有理由提出这样的问题:为什么本发明的发明人所知的技术领域尚未包括为数据中心提供视频编码加速的任何加速设备。在不限制本发明的一般性的情况下,术语“设备”可以在本说明书中用于描述本发明的示例性实施方式的实现,以及(在前一句中)在现有技术中明显缺少的实现。应当理解,在本发明的示例性实施方式中,作为非限制性示例,实现可以在以下方面进行:ASIC[专用集成电路];ASSP[专用标准部件];SOC[片上系统],FPGA[现场可编程门阵列];GPU[图形处理单元];固件;或者前述各项的任何适当组合。
本发明的发明人认为,如本发明的发明人所知,本领域尚未包括如上所述的适当的视频加速的原因包括:
1.技术原因
需要支持的视频标准的巨大的多样性(部分地由图10中所示的情况造成),以及为了完全支持任何单个编码器而需要的丰富特征集,有可能使得看起来在本发明的示例性实施方式的发明之前不可能创造出用于加速数据中心内的视频编码的通用加速设备。
2.商业原因
在过去十年中,编码器供应商在业界获得了大量的技术和知识(编码器供应商通常但并不一定以软件[SW]来提供其编码器;为了便于描述,术语“SW”在整个本说明书和权利要求书中用于描述这样的编码器,其事实上通常由编码器供应商以软件、固件、硬件或其任何适当组合来提供),这些编码器供应商将视频编码调节到“它们的最佳最有效点”——这代表着每个编码器供应商所认为的其竞争优势。在该上下文中重要的是要理解视频压缩本质上作为有损压缩,在各种实现中相异于很多方面,诸如:性能;CPU负荷;时延;(这在其他非视频工作负荷中也是公知的);而且还有质量。就质量而言,没有共同和公认的客观度量来量化和评定质量;相反,已知有多种度量(例如,PSNR、SSIM和VMAF),但关于哪个度量堪称适当尚未达成普遍共识。因此,每个公司积累的知识和声誉以某种方式阻碍着希望渗透到加速设备市场的任何潜在加速设备供应商。换言之,如果这样的供应商要创造出设备,例如,作为特定非限制性示例,实现视频编解码器的ASIC,则该供应商将会发现自己正在与整个生态系统竞争。即使在给定的供应商内部,也可能针对不同的用例使用不同的质量度量,从而导致产生多个这样的ASIC实现的动机。
本发明在其示例性实施方式中寻求提供改进的视频编码、视频压缩、运动估计、当前图片参考(CPR)和计算机架构系统,其中以这样的方式使部分工作(例如,作为非限制性示例,以下任何一个或多个:运动估计;当前图片参考(CPR)变换;去块;环路滤波器;以及上下文自适应二进制算术编码(CABAC)引擎)减荷,使得(在编码器的特定非限制性示例中):
1.从编码器大大减轻工作量;
2.本发明的示例性实施方式将会与所实现的特定编码器无关;以及
3.将会使得给定编码器供应商(作为非限制性示例,软件编码器供应商)能够运行其自己的“秘密酱料(secret sauce)”并且使用本发明的一个或多个示例性实施方式来提供加速作为基本操作。给定的编码器供应商可以针对一个或多个适当的用例来选择适当的质量/性能。
因此,根据本发明的示例性实施方式,提供了一种系统,该系统包括加速设备,所述加速设备包括输入电路和相似度计算电路,所述输入电路被配置用于针对第一多个待编码视频帧中的每一个,接收包括至少一个原始视频帧和至少一个参考帧的输入,以及将第一多个待编码视频帧中的每一个划分成第二多个块,而所述相似度计算电路被配置用于针对第一多个待编码视频帧中的每一个:针对第二多个块中的每个块,产生基于每个待编码帧中的每个块与参考帧的每个块的相似度的结果块得分以及位移矢量。
此外,根据本发明的示例性实施方式,至少一个原始视频帧和至少一个参考帧是相同的。
更进一步根据本发明的示例性实施方式,结果块得分包括排序列表。
另外,根据本发明的示例性实施方式,结果块具有固定尺寸。
此外,根据本发明的示例性实施方式,结果块具有可变尺寸。
进一步根据本发明的示例性实施方式,所述系统还包括加权电路,该加权电路被配置用于对第二多个块中的至少一些块进行加权。
进一步根据本发明的示例性实施方式,针对第二多个块中的给定块B,加权电路被配置用于根据以下公式对块B进行加权以产生加权块B′:B′=A*B+C1,其中A和C1是标量。
另外,根据本发明的示例性实施方式,所述系统还包括上采样电路,该上采样电路被配置用于对第二多个块中的至少一些块进行上采样,并且其中结果块得分基于每个块与至少一个上采样块的相似度。
此外,根据本发明的示例性实施方式,所述系统还包括第二组件,并且第二组件接收来自加速设备的输出并且至少部分地基于从加速设备接收的输出来产生符合编码标准的第二组件输出。
进一步根据本发明的示例性实施方式,第二组件包括多个第二组件,所述多个第二组件中的每一个产生符合编码标准的第二组件输出,多个第二组件中之一的编码标准不同于多个第二组件中的其他第二组件的编码标准。
更进一步根据本发明的示例性实施方式,多个第二组件中的至少一个的编码标准包括下列HEVC/H.265、AVC/H.264、VP9、AV-1和VVC中的至少一个。
另外,根据本发明的示例性实施方式,第二组件包括聚合组件,该聚合组件被配置用于将具有相等位移矢量的多个相邻块聚合成更大的块。
此外,根据本发明的示例性实施方式,更大的块的位移矢量等于具有相等位移矢量的多个块中的每个块的位移矢量,并且更大的块的得分等于具有相等位移矢量的多个块的得分之和。
根据本发明的另一示例性实施方式,还提供了一种方法,所述方法包括提供包括输入电路和相似度计算电路的加速设备,所述输入电路被配置用于针对第一多个待编码视频帧中的每一个而接收包括至少一个原始视频帧和至少一个参考帧的输入,以及将第一多个待编码视频帧中的每一个划分成第二多个块,所述相似度计算电路被配置用于针对第一多个待编码视频帧中的每一个:针对第二多个块中的每个块,产生:基于每个待编码帧中的每个块与参考帧的每个块的相似度的结果块得分;以及位移矢量;所述方法还包括向加速装置提供输入,以及基于该输入产生结果块得分和位移矢量。
此外,根据本发明的示例性实施方式,至少一个原始视频帧和至少一个参考帧是相同的。
更进一步根据本发明的示例性实施方式,结果块得分包括排序列表。
另外,根据本发明的示例性实施方式,结果块具有固定尺寸。
此外,根据本发明的示例性实施方式,结果块具有可变尺寸。
此外,根据本发明的示例性实施方式,所述方法还包括对第二多个块中的至少一些块进行加权。
进一步根据本发明的示例性实施方式,针对第二多个块中的给定块B,所述加权根据以下公式对块B进行加权以产生加权块B′:B′=A*B+C1,其中A和C1是标量。
另外,根据本发明的示例性实施方式,所述方法还包括对第二多个块中的至少一些块进行上采样,并且其中结果块得分基于每个块与至少一个上采样块的相似度。
此外,根据本发明的示例性实施方式,所述方法还包括提供第二组件,该第二组件接收来自加速设备的输出并且至少部分地基于从加速设备接收的输出来产生符合编码标准的第二组件输出。
进一步根据本发明的示例性实施方式,第二组件包括多个第二组件,所述多个第二组件中的每一个产生符合编码标准的第二组件输出,多个第二组件中之一的编码标准不同于多个第二组件中的其他第二组件的编码标准。
另外,根据本发明的示例性实施方式,多个第二组件中的至少一个的编码标准包括下列HEVC/H.265、AVC/H.264、VP9、AV-1和VVC中的至少一个。
此外,根据本发明的示例性实施方式,第二组件包括聚合组件,该聚合组件被配置用于将具有相等运动矢量的多个相邻块聚合成更大的块。
此外,根据本发明的示例性实施方式,更大的块的位移矢量等于具有相等等级的多个块中的每一个的位移矢量,并且更大的块的得分等于具有相等位移矢量的多个块的得分之和。
更进一步根据本发明的示例性实施方式,相似度计算电路被配置用于还针对每个块产生AC能量系数。
另外,根据本发明的示例性实施方式,参考帧包括重建的参考帧。
此外,根据本发明的示例性实施方式,参考帧包括原始参考帧。
附图说明
从以下结合附图的详细描述中将会更全面地理解和了解本发明,在附图中:
图1A是描绘视频比特流中的帧间块的简化表格图示;
图1B是根据本发明的示例性实施方式构建和操作的应用加速系统的简化框图图示;
图2是描绘H.264/AVC块划分的简化图示说明;
图3是描绘HEVC(H.265)块划分的简化图示说明;
图4是描绘在示例性情况下旨在由诸如图1B的系统等应用加速系统来执行的块编码的示例性顺序的简化表格图示;
图5是描绘根据本发明的示例性实施方式的加速设备执行的操作的示例性结果的简化表格图示;
图6是描绘根据本发明的示例性实施方式的加速设备执行的操作的示例性结果的另一简化表格图示;
图7是描绘根据本发明的示例性实施方式的示例性系统可能遇到的“局部最小值”问题的简化图示说明;
图8是描绘可由根据本发明的示例性实施方式的示例性系统执行的对低分辨率图像的操作的简化图示说明;
图9是描绘CPU能力与各种编码任务之间的关系的简化图形说明;
图10是描绘各种过去、现在和未来的编码标准的大致时间线视图的简化图示说明;
图11是描绘各种编码标准的复杂性的简化表格图示;
图12是描绘分辨率与复杂性之间关系的简化部分图示、部分图形说明;
图13是描绘视频复杂性、CPU能力和计算工作量之间的关系的简化图形说明;
图14是描绘视频编解码器标准的各个部分的简化图示说明;
图15是描绘用于运动矢量预测的示例性搜索区域的简化图示说明;
图16是描绘像素子块的非限制性示例的简化图示说明;
图17A是描绘用于产生比特流的示例性系统和过程(包括运动估计)的简化的部分图示、部分框图图示;
图17B是描绘用于产生比特流(包括使用图1B的加速系统的示例性实施方式)的示例性系统和过程(包括运动估计)的简化的部分图示、部分框图图示;
图18是描绘使用图1B的加速系统的特定示例性情况的简化框图;
图19是描绘使用图1B的加速系统的另一特定示例性情况的简化框图;
图20是描绘使用图1B的加速系统的又一特定示例性情况的简化框图;
图21是描述使用图1B的加速系统的另一特定示例性情况的简化框图;
图22是图1B的应用加速系统的一部分的示例性实施方式的简化部分图示、部分框图图示;
图23是描绘根据本发明的另一示例性实施方式的加速设备执行的操作的示例性结果的简化表格图示;
图24是描绘根据本发明的又一示例性实施方式的加速设备执行的操作的示例性结果的简化表格图示;
图25是描绘根据本发明的另一示例性实施方式的加速设备执行的操作的示例性结果的简化表格图示;
图26A和图26B是有助于理解本发明的又一示例性实施方式的简化表格图示;
图27A是描绘用于产生比特流的示例性系统和过程(包括运动估计)的简化的部分图示、部分框图图示;以及
图27B是描绘用于产生比特流(包括使用图1B的加速系统的示例性实施方式)的示例性系统和过程(包括运动估计)的简化部分图示、部分框图图示。
具体实施方式
以下一般性讨论可以有助于理解本文中描述的本发明的某些示例性实施方式。
在视频压缩标准中的数百种工具中,运动估计部分/工具(在运动补偿规程的标准中描述)通常被认为是在计算工作量方面最苛刻的工具。前述还适用于当前图片参考(Current Picture Referencing,CPR)工具。
理论上,运动估计不是视频标准的一部分,如图14中所示,图14是描绘视频编解码器标准的各个部分的简化图示说明。然而,运动估计规程涉及将块(本文中称为“参考块(reference block)”)与参考帧中的许多块进行比较,从而寻找具有最大(或者在一些情况下接近最大)相似度的块,以及继而执行运动补偿,如公知那样,运动补偿包括在比特流中写入残差(如本领域中已知的)和运动矢量(本文中也称为“位移矢量”)。在一些情况下,可以使用“因子(factor)”来寻找这样的块——该块乘以某个常数(因子)接近于给定块。在其他情况下,可以通过加权求和来组合来自两个不同帧的两个块,并且继而可以找到接近平均值的块。
通常,在许多编解码系统中,运动估计和运动补偿被构建成一个单元,这意味着运动估计得分函数(其为与参考块的“相似度”)与补偿部分相同,从而允许编解码器使用最佳匹配块的得分作为比特流中的残差而无需进一步处理。
现在参考图1A,其为描绘视频比特流中的帧间块(总体上标记为101)的简化表格图示。图1A中示出了视频比特流中的帧间块的高级视图。
块报头103指定块类型(作为非限制性示例,其一般可以是帧间或帧内的,图1A中所示的特定非限制性示例是具有单个运动矢量(motion vector,MV)结构的帧间块)。
运动矢量105表示帧间块的左上角与参考块的左上角之间的距离,而残余比特107,在某些示例性实施方式中,其表示参考块与目标块(给定的块)之间的差异)。如本领域中已知,图1A中所示的每个区段可以不同地压缩。
图1A中每个区段的部分/尺寸是动态的,原因在于三个区段中的每一个可以具有可变尺寸。在本发明的示例性实施方式中,目标是减少整个比特流中的比特总数,而不仅仅是减少给定帧间块中的比特总数。
一般而言,涉及繁重计算的生成帧间块的过程的部分是为每个参考块读取(在很多情况下,作为非限制性示例)数十个块以及计算相应的差异。执行该操作本身可能比访问原始视频本身消耗多约50倍的存储器带宽。还应当理解,大致而言生成帧间块的过程的计算工作量可能非常大,并且计算工作量估计大约是50O(像素数目)。
运动估计部分通常不仅负责寻找相对于每个参考具有最小残差的块,而且还负责寻找最佳划分;作为非限制性示例,具有5比特残差的32×32块将会比各自之中具有0比特残差的4个8×8块在比特流中消耗少得多的比特。在该特定非限制性示例中,32×32块划分会被认为是最佳的。本领域技术人员将会理解,选择最佳匹配块的方法取决于特定编解码器标准的细节,包括:作为非限制性示例,因为不同标准不同地处理具有大幅度的运动矢量。前一句中“不同”的非限制性示例包括:不同的划分;不同的子像素内插;以及可用的不同补偿选项。应当理解,在本发明的示例性实施方式中,如本领域中已知,通过上采样产生子像素。
除了上面所述之外,就运动补偿而言,不同的视频标准至少在以下参数方面彼此不同:
1.运动矢量分辨率:
较旧的标准仅允许全像素比较(针对实际块),而较新的标准允许分数采样内插。不同的标准在用于内插的滤波器方面也不相同。在不同标准之间有所差异的其他特征包括舍入和剪取的细节,如本领域所公知。
2.运动补偿残差函数:计算比特流中的残差数据。
3.所补偿的块尺寸。作为特定非限制性示例:
在H.264/AVC中,标准允许如图2中所示的块划分。
相比之下,在H.265/HEVC中,引入了图3中所示的划分。
4.加权预测。在H.264标准中,将加权预测引入到了主要和扩展配置文件中。加权预测工具允许使用乘法加权因子缩放参考帧,并且还向每个像素添加加性偏移(常数)。通常认为加权预测工具在淡入/淡出的场景中非常强大。
当在整个图片上均匀地施加淡化时,单个加权因子和偏移足以有效地编码从同一参考图片预测的图片中的所有宏块。当使用多个参考图片时,最佳加权因子和偏移通常在不同参考图片的淡化期间有所不同,因为对于时间上更加远离的图片,亮度级别更加不同。
作为特定非限制性示例:对于单向预测,以下等式表示采用加权预测的运动补偿:
SampleP=Clip1(((SampleP·W0+2LWD-1)>>LWD)+O0)
其中Clip1()是剪取到范围[0,255]的算符,W0和O0分别是参考图片加权因子和偏移量,并且LWD是对数权重分母舍入因子。SampleP是列表0初始预测子,并且SampleP是加权预测子。
本领域技术人员将会理解,通常针对加权参考帧执行运动估计(由应用上述SampleP公式得到)。本领域技术人员还将会理解,补偿函数在未来的编解码器中将会不同是一个合理的假定。
假定未来的编解码器标准将会在上面刚刚提到的几点上继续不同似乎是合理的。
运动估计规程包括如上所述的“秘密酱料(secret sauce)”。为了允许稍后将会允许使用期望的“秘密酱料”进行运动估计的不可知准备(agnostic preparation),本发明的示例性实施方式将会进行比不使用根据本发明示例性实施方式的加速设备的系统中已知的更多的计算,从而使稍后要由运动补偿/估计软件做出的决定成为开放的问题。
以下是可用于创建通用和不可知加速设备以便为特定编解码器的运动估计和当前图片参考(CPR)减荷的方法的示例性实施方式的描述。作为非限制性示例,适当的加速设备的实现可以发生在以下所列之中:ASIC[专用集成电路];ASSP[专用标准部件];SOC[片上系统],FPGA[现场可编程门阵列];固件;GPU[图形处理单元];或者前述各项的任何适当的组合。前面句子中描述的实现在本文中也可以称为“电路”,而不限制前述内容的一般性。接下来将会描述加速设备如何克服与如上所述的运动矢量分辨率、运动补偿残差函数、所补偿的块尺寸以及加权预测中的每一个相关的问题的详细说明。如上所述,运动估计被描述为一个特定非限制性示例。
现在参考图1B,其为根据本发明的示例性实施方式构建和操作的应用加速系统的简化框图图示。
在图1B的特定非限制性示例中,应用加速系统(总体上标记为110)包括视频加速系统。
视频加速系统110包括视频加速设备120;本文中进一步描述视频加速设备120的构造和操作的示例性实施方式。如下面进一步详细描述的,在示例性实施方式中,视频加速设备120被配置用于产生结果图140。
结果图140作为输入被提供给另外的组件(本文中通常称为“SW”,如上文所述);在示例性实施方式中,另外的组件包括运动估计/块划分/率失真控制单元130。如其全名所暗示,控制单元130可以负责:
·运动估计;
·块划分;以及
·率失真(例如,确定比特率与失真之间的权衡)
在本发明的某些示例性实施方式中,应当理解,最佳性能可出现在以下情况下:高存储器带宽可用;多个队列可用于管理存储器访问;以及虚拟存储器地址转换以高性能可用于多个队列。满足前述最佳性能准则的市售系统的一个非限制性示例是可从MellanoxTechnologies Ltd.购得的ConnectX-5。应当理解,ConnextX-5的示例作为特定示例提供,而非意在限制;备选地可以使用其他系统。
现在更详细地描述图1B的系统的操作,特别是图1B的视频加速设备120的操作。
向系统的输入:
在本发明的某些示例性实施方式中,对于正在被编码的每个视频帧(本文中称为“目标帧”),视频加速设备120读取先前解码的帧(也称为重建的原始视频),针对所述先前解码的帧对目标帧进行补偿;作为特定非限制性示例,可以读取两个先前解码的帧。应当理解,在使用CPR的示例性实施方式中,视频加速设备120可以两次读取/使用目标帧,一次作为目标帧,一次作为参考帧。附加地和可选地,可以提供运动矢量预测图;运动矢量预测图示出每个块的搜索区域的中心。前一句中的特定示例是非限制性的,应当理解,可以针对任何给定块确定(包括独立地确定)搜索中心。现在附加参考图15,其为描绘用于运动矢量预测的示例性搜索区域的简化图示说明。在图15中,示出了示例性图(总体上标记为1500)。在图15的特定非限制性示例中,给定块的搜索区域的中心被标记为1510。在图15的特定非限制性示例中,搜索区域包括多个搜索块1520,为了便于描绘,其中仅有一些搜索块标有附图标记1520。应当理解,可选地,可以配置其他参数,并且这些参数可以帮助系统“调谐”到特定编码器,以指定期望的质量和速度;作为非限制性示例,这样的参数可以包括:子像素内插的准确度;搜索区域尺寸;聚合级别(聚合的最大块尺寸);划分信息(例如,仅可以划分成正方形,还是亦可划分成矩形);以及要使用的块匹配函数(例如,作为非限制性示例:SAD(Sum of Absolute Difference,绝对差之和);以及SSE(Sum of Square Error,平方误差之和))。
系统的输出:
现在附加参考图4,其为描绘在示例性情况下旨在由诸如图1B的应用加速系统110等应用加速系统执行的块编码的示例性顺序的简化表格图示。在本发明的某些示例性实施方式中,视频加速设备120输出排名最高的块的列表,这些块与正在被编码的块中的每一个块具有最大相似度;例如,将当前编码的帧划分成小块(例如,作为非限制性示例,8×8块)。这在图4中图示,包括块编码顺序的示例性非限制性示例。
现在附加参考图5,其为描绘根据本发明的示例性实施方式的诸如图1B的视频加速设备120等加速设备执行的操作的示例性结果的简化表格图示。图5中所示的结果图500(也可以称为“加速矢量”)是在本发明的示例性实施方式中产生的输出(本文中也称为“结果记分板(result score board)”)的示例;图5中的结果图是图1B的结果图140的特定非限制性示例。
图5的结果图展示了当使用本文所述的加速设备的实施方式时提供给SW的灵活性,原因在于(作为非限制性示例)块划分决策可以基于图5的结果图500中包括的数据来进行。因此,作为一个非限制性示例,如果SW是“朴实的
Figure BDA0002119612350000101
”,并且对于每个块使用第一得分,则其将会产生四个8×8块,总残差为(5+0+0+0)=5(参见结果图500中以粗体下划线标记的条目)。
或者,在另一非限制性示例中,SW可以选择创建一个单独的32×32块(由于有4个具有相同MV值的得分,因此可以组合对应的块),其残差为:(6+3)+1+1)=11(参见结果图500中以粗斜体标记的条目)。
类似地,SW可以选择重新划分为更大块,例如当(作为非限制性示例)基于块的结果时:从图1的视频加速设备120而来的4、5、6、7、16、17、18、19、20、21、22、23个,以便划分为64×64尺寸。
现在参考图17A,其为描绘用于产生如视频领域中已知的比特流的示例性系统和过程(包括运动估计)的简化部分图示、部分框图图示。在图17A的系统中,输入多个目标帧1705。对于给定块1710(一个或多个目标帧1705的给定块,应当理解,通常对多个目标帧执行该过程),在比较元件1715处执行比较操作。比较操作基于从解码图片缓冲器1730接收的解码图片输入,相对于由运动估计单元1725产生/选择的参考块1720来进行。
比较元件1715的结果是残差块1735。残差块1735在变换单元1740处经受变换操作;在量化单元1750处经受量化;并且在熵单元1755中经受熵编码。图17A的系统的输出是比特流。
与此同时,来自量化单元1750的量化数据被逆量化单元1760反量化,并且在逆变换单元1765处经受逆变换操作,从而产生解码残差块1770。解码残差块1770在元件1772处被添加到参考块1720,其结果由环路滤波器1775处理,并且继而发送到解码图片缓冲器1730,以供如前所述的进一步处理。
现在参考图17B,其为描绘用于产生比特流(包括使用图1B的加速系统的示例性实施方式)的示例性系统和过程(包括运动估计)的简化部分图示、部分框图图示。在图17B的示例性系统和过程中,运动估计单元1725(图17A)已经被替换为块匹配单元1780,在诸如图1B的视频加速设备120等视频加速设备中实例化。具有与图17A中的元件相同的附图标记的图17B的其他元件可以与其类似。
块匹配单元1780产生结果图1782,结果图1782可以类似于图1B的结果图140,并且其被发送到RDO(rate distortion optimization unit,率失真优化单元)1785,RDO 1785的功能是选择(根据适用的度量)最佳参考块和划分,其目标是使在过程结束时的比特流长度以最大可用质量与目标比特率相匹配。根据上述讨论,RDO 1785连同图17A和图17B之间共同的元件是如上文解释的SW元件。
为了进一步阐明本发明的某些示例性实施方式的某些目标的上述讨论,下面描述其中本文所述的加速设备的示例性实施方式是“编解码器不可知”或“通用设备”的情况。
不可知
(1)
在本发明的示例性实施方式中,通过允许设备配置(在任何特定编码标准的情况下)以(作为一个非限制性示例)根据该标准适当地将搜索限制为全像素和半像素来克服上述运动矢量分辨率的问题。通过允许SW配置内核系数来克服上述子像素的内核系数的差异。该系数通常不会“在运行中”发生变化;即使一个/多个系数是编解码器相关的,但它们对于整个视频流是固定的。还应当理解,视频编码可能在描述比特流时允许的运动矢量分辨率方面不同;作为非限制性示例,一些可以允许1/4像素分辨率,而一些可以允许更高的分辨率(小于1/4像素,例如,1/8像素)。编码还能够以使用已知且固定的系数通过相邻像素的内插来定义子像素样本的方式而不同;所述系数在本文中也称为“内核”。
对于每个块,加速设备可以产生(作为特定非限制性示例,在1/4尺寸像素的情况下)十六个子块,其中每个子块表示不同的分数运动矢量。现在参考图16,其为描绘像素子块的非限制性示例的简化图示说明。在图16中,每个阴影矩形(例如,作为非限制性示例,矩形A1,0)表示像素的左上角(阴影矩形表示像素的一个子块),而附近的非阴影矩形(在阴影矩形A1,0的示例中,另外的十五个矩形(a1,0;b1,0;c1,0;d1,0;e1,0;f1,0;g1,0;h1,0;i1,0;j1,0;k1,0;n1,0;p1,0;q1,0;以及r1,0))表示像素的其他子块,总共十六个矩形(子块)。通常,在本发明的优选实施方式中,可以配置内核作为输入。
(2)
不同的视频编码在补偿方面也不同,这意味着图17A和图17B的残差块1735的表示在不同的视频编码中以不同方式进行。在本发明的示例性实施方式中,估计(哪个块可能是最佳的)与补偿(如何表示参考帧中和目标帧中的给定块之间的差异)相分离,其在先前的系统中是一起计算的。因此,区别于先前系统,在本发明的示例性实施方式中,SW将会计算残差(补偿后的剩余),但不计算估计。在某些实施方式中,可能在加速设备(诸如图1B的视频加速设备120)中实现不同的得分函数,从而允许SW选择其中之一来使用。以下是示例性得分函数的非限制性列表,这些函数在本领域中是已知的:SAD(绝对差之和);以及SSE(平方误差之和)。
(3)
一些编码标准允许对照加权图像来补偿块,这意味着将参考帧(先前解码的帧)乘以因子(有理数)。或者,一共2个参考帧可以各自乘以不同的加权因子。在本发明的优选实施方式中,加速设备可以允许为每个参考帧配置加权因子,或者可以接收已经加权的帧作为输入。
现在附加参考图6,其为描绘根据本发明的示例性实施方式的加速设备执行的操作的示例性结果的另一简化表格图示。作为记分板的非限制性示例,考虑如图6中所示的结果记分板600;在图6中,粗体下划线和粗斜体与图5中的用法类似地使用。
“智能SW”能够看到结果记分板600中的两个参考帧具有相同的MV(1/4,-1/4),因此智能SW可以自己计算帧0与帧1之间的加权预测的补偿,并且可能从而获取比得分板所指示的更好的结果。在所示的特定示例中,由于块0、1、2、3都具有给定得分,因此可以将这些块重新划分成一个16×16块(这仅是一个特定示例,例如,其能够可扩展到更大的块)。取得更好结果的可能性的原因在于,通过分离如本文所述在加速设备与SW之间的功能,SW可以使用由加速设备提供的不同结果来潜在地找到“更大图片”并且产生更好的结果。
现在转到如上所述的划分问题:
据信,灵活加速设备输出允许SW基于加速设备结果进行重新划分,如上面刚刚描述。
在本发明的某些示例性实施方式中,加速设备可以不必在达到阈值时停止搜索;相比之下,SW算法通常具有导致SW停止寻找候选者的最小阈值,这意味着(作为非限制性示例)如果SW在第一次搜索尝试中找到具有小残差的块,则它将会终止搜索过程。
在上述特定的非限制性情况下,由于划分在过程中稍后进行,并且如示例中所述,以便避免不适当的终止,因此加速设备将会完成搜索并且返回所找到的最佳结果的矢量,以便允许SW进行重新划分。以上参考图5更详细地讨论了重新划分。
聚集成更大的块
在示例性实施方式中,加速设备还提供相邻块(作为非限制性示例,相对于给定块位于“上边”和“左边”的块)的匹配得分,以便允许高效地进行聚合。在示例性实施方式中,当相邻块具有相同的位移矢量时进行聚合,其中被聚合以替换相邻块的更大的块具有匹配结果,所述匹配结果是子块的得分的总和,因为得分函数是加性的。
避免局部最小值
现在附加参考图7,其为描绘根据本发明的示例性实施方式的示例性系统可能遇到的“局部最小值”问题的简化图示说明。当在小块上搜索时,可能发生搜索算法将会“落入”到局部最小值,如图7中所示。在该上下文中的局部最小值是指这样的小块:该小块可能与某个区域具有非常好的匹配(甚至是完美匹配),尽管使用大得多的块可能存在匹配。下面参考图8讨论使用多个块尺寸来克服局部最小值问题的示例性技术。
当处理小块时,有更高的可能性很多小块将会是相似的,并且在其示例性实施方式中,本发明将不会找到更大对象的整个区域。为了克服该问题,在示例性实施方式中,加速设备对以下所谓的预测子执行完全和分层搜索:
1.在一个或多个先前解码的帧中并置(术语“并置”在视频领域中已知)块的结果。在示例性实施方式中,使用这样的结果由SW配置。这样的结果可以包括P和A图,如下文所述。
2.如上所述,来自一个或多个相邻块的结果。
3.围绕图像的全局运动矢量的结果(即,将全局运动矢量用作搜索区域的中心),使用由SW配置的这样的结果,当SW提供这样的全局运动矢量时可能是这种情况。
4.低分辨率图像搜索的结果,如下面更详细地描述,包括参考图19-图21。
低分辨率图像搜索
现在附加参考图8,其为描绘可由根据本发明的示例性实施方式的示例性系统执行的对低分辨率图像的操作的简化图示说明。在低分辨率搜索技术中,图像的分辨率降低(使图片变小),例如,作为非限制性示例,每个维度降低4倍。在示例性实施方式中,继而对降低分辨率的图像执行搜索和运动估计,如图8中所示。在降低4倍的非限制性示例中,在图8的降低分辨率图像中,8×8块表示原始图像中的64×64块;本领域技术人员将会理解,在这样的降低分辨率图像中比在原始图像中的噪声更少。因此,在降低分辨率图像中标识的候选锚点将会允许在全分辨率划分中寻找更大的锚点。
应当理解,在本发明的实施方式中,加速设备返回每个锚点的最佳结果,并且有时返回次优结果,而不是总排名得分。
现在参考图18,其为描绘使用图1B的加速系统的特定示例性情况的简化框图图示。图18描绘了其中执行一遍以获取结果的示例性情况;通常,由SW决定使用一遍还是多遍。下文描述其中可以执行不止一遍的其他示例性情况。
在图18中,示出了图1B的视频加速设备120接收以下输入:
第一预测和聚合(P和A)图1810;
第二P和A图1820,其可以是指第二参考帧(诸如下面提到的第二参考帧1840);
第一参考帧1830;
第二参考帧1840;以及
目标帧1850。
根据以上讨论,将会理解第一参考帧1830、第二参考帧1840和目标帧1850。
第一P和A图1810以及第二P和A图1820可以在形式上类似于图1B的结果图140,或者,作为非常特定的非限制性示例,可以类似于图5的结果图500。通常,第一P和A图1810以及第二P和A图1820:
·可以是可选的;
·由SW提供;以及
·提供为具有故意较差的得分,原因在于据信提供较差的得分将会产生更好的结果。
视频加速设备120产生结果图1860,结果图1860可以在形式上类似于图1B的结果图140,或者,作为非常特定的非限制性示例,可以类似于图5的结果图500。
对图18的上文描述可以进一步详述如下。通常,接收一个或多个参考帧以及一个或多个目标帧作为输入。可以接收多个P和A图;作为一个特定非限制性示例,当接收到两个参考帧和两个目标帧时,可以接收多达四个P和A图。通常,给定的P和A图是指与目标帧配对的参考帧,因此如果存在两个参考帧和两个目标帧,则将会存在四个P和A图以覆盖适用的配对。在特定P和A图是空白的情况下,这可以是对于视频加速设备120在没有关于搜索位置的任何附加信息的情况下进行搜索的指示。通常,P和A图提供预测和聚合点以协助视频加速设备120进行与每个目标相关的搜索。
现在参考图19,其为描绘使用图1B的加速系统的另一特定示例性情况的简化框图图示。图19描绘了为了获取结果而执行两遍的示例性情况;通常,由SW决定使用一遍还是多遍。如上所述,图19中描绘的两遍使用缩减,其旨在帮助避免局部最小值。
在图19中,提供全分辨率目标帧1910和全分辨率参考帧1920作为输入。全分辨率目标帧1910和全分辨率参考帧1920中的每一个分别在缩减单元1930和缩减单元1940处缩减(为了简化描述和说明,将其示出为单独的单元,应当理解,备选地,可以使用单个缩减单元来执行多个缩减操作)。在图19中所示的特定非限制性示例中,缩减单元1930和缩减单元1940被示出为以1:8的比例缩减,但应当理解,1:8的示例并不表示限制。
缩减单元1930的输出是经缩减目标帧1950。缩减单元1940的输出是经缩减参考帧1960。经缩减目标帧1950和经缩减参考帧1960被输入到视频加速设备120中。为了便于描绘加速,在图19中示出了视频加速设备120的两个实例,应当理解,可以仅使用单个视频加速设备120。
作为非限制性示例,还将空的P和A图1965(参见上面的P和A图的描述,参考图18)输入到视频加速设备120中。接收经缩减目标帧1950和经缩减参考帧1960的视频加速设备120产生P和A图(R)1970,“R”指定该图涉及参考帧,表示在经缩减参考帧1960中为经缩减目标帧1950找到的最佳缩减结果。
与此同时,全分辨率目标帧1910和全分辨率参考帧1920各自作为输入被提供给视频加速设备120,视频加速设备120还接收P和A图(R)1970,P和A图(R)1970产生第二P和A图(R)1975。应当理解,当使用诸如图19中所描绘的方法时,除了对整个帧进行完全搜索之外,还使用缩减搜索,产生了可以帮助寻找更大的块(例如,作为非限制性示例,64×64块)的信息。这可能是因为,实际上,系统已经“放大”于每个帧,因此每个帧更多地将会处于有效搜索区域中。
现在参考图20和图21,图20是描绘使用图1B的加速系统的又一特定示例性情况的简化框图图示,图21是描绘使用图1B的加速系统的另一特定示例性情况的简化框图图示。参考图19的上文描述将会理解图20和图21。图20描绘了使用和组合1:4和1:8缩减的情况。图21描绘了使用和组合对称和非对称缩减的情况。通常,在图20和图21中描绘的情况下,视频加速设备120的输出的“质量”可以得到改善,而在另外的几遍中几乎不需要附加工作。
现在参考图22,其为图1B的应用加速系统的一部分的示例性实施方式的简化部分图示、部分框图图示。图22描绘了图1B的视频加速设备120的特定示例性非限制性实施方式。
图22的视频加速设备120被示出为接收以下各项作为输入:P和A图2210;参考帧2215;以及目标帧2220。P和A图2210、参考帧2215和目标帧2220中的每一个可以类似于上文所述的P和A图、参考帧和目标帧。
图22的视频加速设备120包括以下元件:
结果图缓冲器2225;
参考帧缓冲器2230;
目标帧缓冲器2235;
块匹配引擎2240;
记分板存储单元2245;以及
聚合和排序电路2255。
结果图缓冲器2260被示出为储存图2260,图2260可以是输入P和A图2210或另一图,如也在下文中所述。
现在简要描述图22的视频加速设备120的操作的非限制性示例:
目标帧2220或其相关部分(通常在SW控制下确定)由视频加速设备120接收,并且至少相关部分储存在目标帧缓冲器2235中。作为特定非限制性示例,相关部分可以包括要搜索的8×8像素的当前块。
参考帧2215或其相关部分由视频加速设备120接收,并且相关搜索区域(其可以是目标帧中的当前块周围的搜索区域)储存在参考帧缓冲器2230中。
块匹配引擎2240(其可以包括多个块匹配引擎,以便并行执行不止一个操作)接收储存在目标帧缓冲器2235中的当前块和储存在参考帧缓冲器2230中的相关块。块匹配引擎2240确定得分(如上所述作为非限制性示例,使用SAD或SSE),并且将得分写入到记分板存储单元2245,从而产生记分板2250。记分板如上所述;一个特定非限制性示例是如上所述的图5的记分板500。
在某些示例性实施方式中,块匹配引擎2240可以使用P和A图2210(其可以储存在结果图缓冲器2225中,或者视频加速设备120中的其他地方)来“聚焦”对P和A图2210中指示的块以及这些块附近的块的得分确定。
在示例性实施方式中,聚合和排序电路2255被配置用于从记分板2250确定最佳结果,以及还通过使用(作为非限制性示例)相邻块(这些相邻块具有与给定块相同的位移矢量)的值的总和进行聚合来确定大块,以便产生输出记分板/结果图2260。虽然未在图22中示出,但输出记分板/结果图通常作为输出从视频加速设备120提供,如上文所述。
现在参考图23,其为描绘根据本发明的另一示例性实施方式的加速设备执行的操作的示例性结果的简化表格图示。返回参考图5及其描述,图5描述了包括关于参考帧的信息的系统输出的非限制性示例。在另一示例性实施方式中,整个表(例如,作为非常特定的非限制性示例,图23中描绘的表,总体上标记为2300)可以指代特定参考帧,应当理解,可以提供类似于表2300的多个表,每个参考帧一个表。因此,在图23的表2300的情况下(与图5的表500相比),参考运动矢量(Ref MV)可以包括2个逗号分隔的数字,分别包括x和y坐标(作为非限制性示例)。
以下描述经适当变动可以适用于参考图5的表500描绘和描述的情况,或者适用于参考图23的表2300描绘和描述的情况。
返回参考图17A,每个残差块1735在变换单元1740处经受变换操作。在示例性实施方式中,变换操作将输入(诸如每个残差块1735)从空间域(图像中的每个位置的能量)变换到频域。这样的变换的非限制性示例是离散余弦变换(DCT)。通常,这样的变换的输出是具有与输入块相同尺寸的块。这样的块的左上角元素称为DC元素;特别地,在视频编码领域中已知,DC元素非常接近于空间域中的块中的像素强度值的平均值。变换输出中的其他元素称为AC元素。在视频压缩领域中公知,与较低频率相比,人眼模型对较高频率中的误差较不敏感,所述较高频率是变换输出的最后元素。因此,量化单元1750通常比第一AC元素并且远比DC元素更多地量化最后的AC元素。
在视频压缩领域中还已知,AC系数中具有较少能量的残差块比其他残差块得到更好的压缩。换言之,如果比特流中的比特较少,则解码器将会能够重建更接近于源信号的块;在该上下文中,作为非限制性示例,“更接近”可以通过PSNR度量来测量,如上文所述。
然而,在本领域中已知,当进行运动估计或试图寻找要针对其进行补偿的参考图像中的最佳块时,对每个候选块进行变换以便估计该候选块的率失真优化得分(RDO得分)是极其计算密集的,并且实际上可能是几乎不可能的。
以下公式被认为是对AC系数(在本文中与“AC元素”可互换使用的术语)中存在的能量的良好估计:
给定目标块T和候选参考块C,将在从块C补偿块T时创建的残差块R的AC系数的能量是:
R中的AC~SAD(T,C)–|AVG(T)–AVG(C)|
其中:
如上所述,SAD表示绝对差之和;
AVG表示给定块中的像素值的平均值;
~表示近似值;以及
||表示绝对值。
现在参考图24,其为描绘根据本发明的又一示例性实施方式的加速设备执行的操作的示例性结果的简化表格图示。总体上用2400表示的图24的表可以类似于图23的表2300,其中增加了用于AC能量估计的列,其值可以根据上面针对“R中的AC”而提供的公式来计算。应当理解,这样的列还可以经适当变动添加到图5的表500中。
返回参考图22,具有微小变化的图22的系统可以用于产生图24的表,所述变化如下:
除了如上参考图22所述的确定得分(如上所述作为非限制性示例,使用SAD或SSE)之外,块匹配引擎2240还使用上述“R中的AC”公式来确定AC系数能量。如果使用SSE作为评分函数,如上文参考图22所述,则上述“R中的AC”公式中的SAD替换为SSE。当将得分写入记分板存储单元2245以产生记分板2250时,如上文参考图22所述,记分板将会包括:块编号MV、SAD/SSE和AC能量。
再次参考图24,从编码器的角度来看,选择要补偿的“最佳”块可以如下进行。“最佳”块将会是引入最小质量损失并且仍然符合“比特预算(bit budget)”的块;也就是说,通常向编码器提供“比特预算”,以指示在编码中可以使用多少个比特。因此,编码器通常保持比特使用/质量损失的核算。例如,可以使用如下公式确定最佳块:
Cost=MV_cost+Residual_cost*alpha
其中:
MV_cost是编码器为了在比特流中对给定运动矢量(MV)进行编码所需要的比特数;
Residual_cost是用于编码器在比特流中对残差系数进行编码的以比特为单位的成本;逻辑上指的是2个块(目标与参考)之间的“差量(delta)”。应当理解,由于每个块被变换,从参考块中减去,并且继而被量化,因此Residual_cost取决于SAD结果和AC能量结果。量化过程意味着,当使用低比特率时,其中通常使用较高的量化器,残差的成本将会影响较小,而用于表示MV的比特成本是恒定的。为了将量化中的差异纳入考虑,引入了alpha参数,对于每个量化参数,alpha参数通常是不同的。对于较高量化器(较低比特率),alpha值小于对于较低量化器(较高比特率)的alpha值。
上面的讨论表明,如本文所述的加速设备可被配置成仅输出总成本,或者基于上面的成本函数进行排序,并且从而减少编码器需要分析的数据量。为了实现这一点,编码器(或与其相关联的软件)在操作之前配置一个或多个alpha值,并且还针对每个被搜索的帧来向加速设备配置平均量化参数(QP)并且根据其来配置alpha值。
现在参考图25,其为描绘由根据本发明的又一示例性实施方式的加速设备执行的操作的示例性结果的简化表格图示。总体上标记为2500的图25的表可以类似于图23的表2300,区别在于相对于图23的表2300向表2500添加了可以用于促进双向预测的附加信息。
双向预测可在某些视频编码标准中使用,并且允许从两个图像进行预测;这意味着目标图像中的每个块可以针对两个不同的块(分别来自两个不同图像中的每个图像)得到补偿。在这样的情况下,加速设备可以将每个块与作为来自两个不同图像的两个块的加权和的块进行比较,以便产生表2500。如本领域中已知,用于计算加权和的加权系数对于给定的目标帧是恒定的。
在计算表2500中所示的得分函数之前(作为特定非限制性示例,使用SAD或SSE),可以使用以下公式组装“虚构”参考块:
〖RefBlock〗(i,j))=W0*〖B0〗(i,j)+W1*〖B1〗(i,j)
其中W0和W1是权重(通常由编码器提供,并且基于相关视频压缩标准中的值);
(i,j)表示给定块内的位置;
B0表示第一实际块;
B1表示第二实际块;以及
〖RefBlock〗表示计算出的“虚构”参考块。
应当理解,通常,W0和W1不依赖于i和j。
加速设备可以继而对“虚构”参考块执行成本计算(使用图22的块匹配引擎2240,如上文所述),如同“虚构”参考块是普通参考块那样,但向记分板输出两个不同的位移矢量。
位移矢量可以是在单独的表中(在诸如图25的情况下)或单独的行中(在诸如图5的情况下)。
现在描述可以用于未来的编解码器的本发明的示例性实施方式。在这样的未来编解码器中,据信将会有可能从先前编码/解码的块复制块的内容。这样的能力仅限于从当前处理的编码树单元(coding tree unit,CTU)或紧接在前的CTU来复制数据。该CTU限制简化了帧内块复制(intra block copy,IBC)实现,这对于这样的未来编解码器可能是有用的,因为从重建的缓冲器进行复制在某些系统中可能是有问题的;并且CTU限制通过允许仅为IBC目的添加单独的相对较小的缓冲器而消除了访问重建的缓冲器的需要。
现在参考图26A和图26B,其为用于理解本发明的又一示例性实施方式的简化表格图示。图26A示出了总体上标记为2610的块阵列。描绘了正在处理的当前块2620,连同多个“有效的”可能的参考块2630。
本发明的发明人认为,通过放宽如图26A中所描绘的哪些块“有效”的限制,可以通过允许使用已经处理的帧数据对未来的编解码器进行计算来实现效率。图26B示出了用于这样的情况的块阵列,其总体上标记为2640。描绘了当前块2650,连同多个“有效的可能的参考块2660和2670”。
使用根据本发明的示例性实施方式的加速设备(特别是参考图17A和图17B及其上述说明),加速基于以帧分辨率接收重建缓冲器,这意味着每个帧只能访问先前处理过的重建帧,而不能访问当前重建的帧数据。由于如上所述的未来的编解码器使用当前帧的重建缓冲器,因此根据图17A和图17B的示例性实施方式的解决方案的实现将会是困难的或者也许是不可能的,原因在于当前帧重建图像在图17A和图17B的系统的操作期间通常不可用。
现在参考图27A和图27B,图27A是描绘用于产生比特流的示例性系统和过程(包括运动估计)的简化的部分图示、部分框图图示,图27B是描绘用于产生比特流(包括使用图1B的加速系统的示例性实施方式)的示例性系统和过程(包括运动估计)的简化部分图示、部分框图图示。图27A和图27B分别类似于图17A和图17B,并且在其中使用相同的附图标记。
使用图27A和图27B的系统和过程,运动矢量(MV)搜索在原始帧上而不是在重建帧上运行。该解决方案可以在帧的编码之前执行。该解决方案的限制可能是原始帧数据与重建帧数据之间的差异,但本发明的发明人认为,原始帧和重建帧(以及因此对应的数据)图像十分相似,尤其是对于以高比特率编码。在这种情况下,MV搜索的目的主要是寻找最佳矢量而不是计算这样的矢量的成本,原因在于可以假定最佳MV对于原始帧和重建帧是相同的,而据信成本本身受帧差异的影响更大。“实际”成本可以由编码器而不是图27A和图27B的系统和过程来计算,并且由于不需要附加搜索,因此成本操作相对简单。
另外,在本发明的备选示例性实施方式中,应当理解,类似的概念可以用于常规MV搜索;通过在原始帧数据上而不是在重建的帧数据上运行MV搜索,有可能在编码器运行之前在整个视频上使用加速设备,因此编码可以更高效并且可以使并行实现更简单。
应当理解,如果需要,本发明的软件组件能够以ROM(只读存储器)形式实现。如果需要,软件组件通常可以使用常规技术以硬件实现。还应当理解,软件组件可以被实例化,例如:作为计算机程序产品或在有形介质上。在一些情况下,有可能将软件组件实例化为可由适当的计算机解译的信号,尽管在本发明的某些实施方式中可能排除这样的实例化。
应当理解,为了清楚起见而在单独的实施方式的上下文中描述的本发明的各种特征也可以在单个实施方式中组合提供。相反,为简洁起见而在单个实施方式的上下文中描述的本发明的各种特征也可以单独提供或以任何合适的子组合提供。
本领域技术人员将会理解,本发明不限于上文中具体示出和描述的内容。相反,本发明的范围由所附权利要求及其等同物限定。

Claims (17)

1.一种系统,包括:
加速设备,包括:
输入电路,其被配置用于,针对第一多个待编码视频帧中的每一个,接收包括至少一个原始视频帧和至少一个参考帧的输入,以及将所述第一多个待编码视频帧中的每一个划分成第二多个块;以及
相似度计算电路,其被配置用于,针对所述第一多个待编码视频帧中的每一个:
针对所述第二多个块中的每个所述块,产生:基于每个待编码帧中的每个所述块与所述参考帧的每个块的相似度的结果块得分;以及位移矢量。
2.根据权利要求1所述的系统,其中所述至少一个原始视频帧和所述至少一个参考帧是相同的。
3.根据权利要求1所述的系统,其中所述结果块得分包括排序列表。
4.根据权利要求1所述的系统,其中所述结果块具有固定尺寸。
5.根据权利要求1所述的系统,其中所述结果块具有可变尺寸。
6.根据权利要求1所述的系统,还包括加权电路,所述加权电路被配置用于对所述第二多个块中的至少一些块进行加权。
7.根据权利要求6所述的系统,其中对于所述第二多个块中的给定块B,所述加权电路被配置用于根据以下公式对所述块B进行加权以产生加权块B':
B'=A*B+C1
其中A和C1是标量。
8.根据权利要求1所述的系统,还包括上采样电路,所述上采样电路被配置用于对所述第二多个块中的至少一些块进行上采样,并且其中所述结果块得分基于每个所述块与至少一个上采样块的相似度。
9.根据权利要求1所述的系统,还包括第二组件,并且其中所述第二组件接收来自所述加速设备的输出并且至少部分地基于从所述加速设备接收的所述输出来产生符合编码标准的第二组件输出。
10.根据权利要求9所述的系统,其中所述第二组件包括多个第二组件,所述多个第二组件中的每一个产生符合编码标准的第二组件输出,所述多个第二组件中之一的编码标准不同于所述多个第二组件中的其他第二组件的编码标准。
11.根据权利要求10所述的系统,其中所述多个第二组件中的至少一个第二组件的编码标准包括以下各项中的至少一个:HEVC/H.265;AVC/H.264;VP9;AV-1;以及VVC。
12.根据权利要求9所述的系统,其中所述第二组件包括聚合组件,所述聚合组件被配置用于将具有相等位移矢量的多个相邻块聚合成更大的块。
13.根据权利要求12所述的系统,其中所述更大的块的位移矢量等于所述具有相等位移矢量的多个块中的每一个的位移矢量,并且所述更大的块的得分等于所述具有相等位移矢量的多个块的得分之和。
14.根据权利要求1所述的系统,其中所述相似度计算电路被配置用于还针对每个所述块产生AC能量系数。
15.根据权利要求1所述的系统,其中所述参考帧包括重建的参考帧。
16.根据权利要求1所述的系统,其中所述参考帧包括原始参考帧。
17.一种方法,包括:
提供加速设备,所述加速设备包括:
输入电路,其被配置用于,针对第一多个待编码视频帧中的每一个,接收包括至少一个原始视频帧和至少一个参考帧的输入,以及将所述第一多个待编码视频帧中的每一个划分成第二多个块;以及
相似度计算电路,其被配置用于,针对所述第一多个待编码视频帧中的每一个:
针对所述第二多个块中的每个所述块,产生:基于每个待编码帧中的每个所述块与所述参考帧的每个块的相似度的结果块得分;以及位移矢量;以及
向所述加速设备提供所述输入,以及基于所述输入产生所述结果块得分和所述位移矢量。
CN201910602249.2A 2018-07-08 2019-07-05 应用加速 Pending CN110691241A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211212487.0A CN115567722A (zh) 2018-07-08 2019-07-05 应用加速

Applications Claiming Priority (8)

Application Number Priority Date Filing Date Title
US201862695063P 2018-07-08 2018-07-08
US62/695,063 2018-07-08
US201862726446P 2018-09-04 2018-09-04
US62/726,446 2018-09-04
US16/291,023 US20200014918A1 (en) 2018-07-08 2019-03-04 Application accelerator
US16/291,023 2019-03-04
US16/442,581 US20200014945A1 (en) 2018-07-08 2019-06-17 Application acceleration
US16/442,581 2019-06-17

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202211212487.0A Division CN115567722A (zh) 2018-07-08 2019-07-05 应用加速

Publications (1)

Publication Number Publication Date
CN110691241A true CN110691241A (zh) 2020-01-14

Family

ID=69102407

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202211212487.0A Pending CN115567722A (zh) 2018-07-08 2019-07-05 应用加速
CN201910602249.2A Pending CN110691241A (zh) 2018-07-08 2019-07-05 应用加速

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202211212487.0A Pending CN115567722A (zh) 2018-07-08 2019-07-05 应用加速

Country Status (2)

Country Link
US (2) US20200014945A1 (zh)
CN (2) CN115567722A (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11252464B2 (en) 2017-06-14 2022-02-15 Mellanox Technologies, Ltd. Regrouping of video data in host memory
US11057637B1 (en) 2020-01-29 2021-07-06 Mellanox Technologies, Ltd. Efficient video motion estimation by reusing a reference search region
CN111462170B (zh) 2020-03-30 2023-08-25 Oppo广东移动通信有限公司 运动估计方法、运动估计装置、存储介质与电子设备
US11500808B1 (en) 2021-07-26 2022-11-15 Mellanox Technologies, Ltd. Peripheral device having an implied reset signal

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050220353A1 (en) * 2001-09-17 2005-10-06 Marta Karczewicz Method for sub-pixel value interpolation
US20060129909A1 (en) * 2003-12-08 2006-06-15 Butt Abou U A Multimedia distribution system
CN102792687A (zh) * 2010-02-19 2012-11-21 斯凯普公司 用于视频的数据压缩
US20140177726A1 (en) * 2011-09-02 2014-06-26 Panasonic Corporation Video decoding apparatus, video decoding method, and integrated circuit
CN104904207A (zh) * 2012-10-01 2015-09-09 Ge视频压缩有限责任公司 将层间预测贡献值用于增强层预测的可伸缩视频编码
CN107113422A (zh) * 2015-11-06 2017-08-29 微软技术许可有限责任公司 用于视频编码和解码的灵活的参考图片管理
US20170332099A1 (en) * 2016-05-13 2017-11-16 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8761259B2 (en) * 2005-09-22 2014-06-24 Qualcomm Incorporated Multi-dimensional neighboring block prediction for video encoding
US20080126278A1 (en) * 2006-11-29 2008-05-29 Alexander Bronstein Parallel processing motion estimation for H.264 video codec
US8811484B2 (en) * 2008-07-07 2014-08-19 Qualcomm Incorporated Video encoding by filter selection
US8503527B2 (en) * 2008-10-03 2013-08-06 Qualcomm Incorporated Video coding with large macroblocks
US20100226438A1 (en) * 2009-02-04 2010-09-09 Droplet Technology, Inc. Video Processing Systems, Methods and Apparatus
CN108965870B (zh) * 2010-09-10 2022-11-01 交互数字麦迪逊专利控股公司 通过基于图像内容搜索和分级在视频压缩中对至参考块的链接进行编码
US10027982B2 (en) * 2011-10-19 2018-07-17 Microsoft Technology Licensing, Llc Segmented-block coding
US20130208795A1 (en) * 2012-02-09 2013-08-15 Google Inc. Encoding motion vectors for video compression
US9445076B2 (en) * 2012-03-14 2016-09-13 Qualcomm Incorporated Disparity vector construction method for 3D-HEVC
US20130301727A1 (en) * 2012-05-14 2013-11-14 Qualcomm Incorporated Programmable and scalable integer search for video encoding
US9357212B2 (en) * 2012-12-07 2016-05-31 Qualcomm Incorporated Advanced residual prediction in scalable and multi-view video coding
US10958927B2 (en) * 2015-03-27 2021-03-23 Qualcomm Incorporated Motion information derivation mode determination in video coding
EP3298782B1 (en) * 2016-04-15 2022-12-21 Pony Technology Limited Magic Motion compensation using machine learning
BR112018073434A2 (pt) * 2016-05-13 2019-03-26 Interdigital Vc Holdings, Inc. método e aparelho para codificação de vídeo com corte adaptativo
US10951912B2 (en) * 2016-10-05 2021-03-16 Qualcomm Incorporated Systems and methods for adaptive selection of weights for video coding
US10805630B2 (en) * 2017-04-28 2020-10-13 Qualcomm Incorporated Gradient based matching for motion search and derivation
US10448014B2 (en) * 2017-05-23 2019-10-15 Intel Corporation Content adaptive motion compensated temporal filtering for denoising of noisy video for efficient coding
US10602180B2 (en) * 2017-06-13 2020-03-24 Qualcomm Incorporated Motion vector prediction
US10911769B2 (en) * 2017-06-23 2021-02-02 Qualcomm Incorporated Motion-based priority for the construction of candidate lists in video coding
US10785494B2 (en) * 2017-10-11 2020-09-22 Qualcomm Incorporated Low-complexity design for FRUC

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050220353A1 (en) * 2001-09-17 2005-10-06 Marta Karczewicz Method for sub-pixel value interpolation
US20060129909A1 (en) * 2003-12-08 2006-06-15 Butt Abou U A Multimedia distribution system
CN102792687A (zh) * 2010-02-19 2012-11-21 斯凯普公司 用于视频的数据压缩
US20140177726A1 (en) * 2011-09-02 2014-06-26 Panasonic Corporation Video decoding apparatus, video decoding method, and integrated circuit
CN104904207A (zh) * 2012-10-01 2015-09-09 Ge视频压缩有限责任公司 将层间预测贡献值用于增强层预测的可伸缩视频编码
CN107113422A (zh) * 2015-11-06 2017-08-29 微软技术许可有限责任公司 用于视频编码和解码的灵活的参考图片管理
US20170332099A1 (en) * 2016-05-13 2017-11-16 Qualcomm Incorporated Merge candidates for motion vector prediction for video coding

Also Published As

Publication number Publication date
US20200014945A1 (en) 2020-01-09
US20230012939A1 (en) 2023-01-19
CN115567722A (zh) 2023-01-03

Similar Documents

Publication Publication Date Title
US9743088B2 (en) Video encoder and video encoding method
US10291925B2 (en) Techniques for hardware video encoding
US8023562B2 (en) Real-time video coding/decoding
JP6286718B2 (ja) 高効率な次世代ビデオコーディングのためのフレーム階層応答型量子化を使用する、コンテンツ適応ビットレートおよび品質管理
CN110691241A (zh) 应用加速
US20160080764A1 (en) Encoding system using motion estimation and encoding method using motion estimation
US11323700B2 (en) Encoding video using two-stage intra search
US20200014918A1 (en) Application accelerator
US11025913B2 (en) Encoding video using palette prediction and intra-block copy
US20210168354A1 (en) Video Coding System
US10349071B2 (en) Motion vector searching apparatus, motion vector searching method, and storage medium storing motion vector searching program
RU2551473C2 (ru) Устройство кодирования видео, способ кодирования видео и программа кодирования видео
CN113994692A (zh) 用于利用光流的预测细化的方法和装置
JP7249111B2 (ja) 画像符号化装置、画像復号装置、及びプログラム
JP6700877B2 (ja) 画像復号装置、画像復号プログラム及びチップ
JP2018110321A (ja) 動画像符号化装置、動画像符号化プログラム、及び動画像符号化方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20200114