CN116320401A - 视频编解码方法及相关装置 - Google Patents

视频编解码方法及相关装置 Download PDF

Info

Publication number
CN116320401A
CN116320401A CN202211643865.0A CN202211643865A CN116320401A CN 116320401 A CN116320401 A CN 116320401A CN 202211643865 A CN202211643865 A CN 202211643865A CN 116320401 A CN116320401 A CN 116320401A
Authority
CN
China
Prior art keywords
size
picture
reference pictures
search range
determining
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
CN202211643865.0A
Other languages
English (en)
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.)
MediaTek Inc
Original Assignee
MediaTek Inc
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 MediaTek Inc filed Critical MediaTek Inc
Publication of CN116320401A publication Critical patent/CN116320401A/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/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/573Motion compensation with multiple frame prediction using two or more reference frames in a given prediction direction
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • 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/172Methods 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 picture, frame or field
    • 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/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/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/423Methods 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 characterised by memory arrangements
    • 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/436Methods 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 using parallelised computational arrangements
    • 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
    • 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/57Motion estimation characterised by a search window with variable size or shape
    • 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/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

用于管理搜索内存的各种方案被描述,其有利于实现增强的编解码增益,低延迟和/或视频编码器或解码器的减少的硬件。在处理当前图片的当前块时,装置确定当前图片的多个参考图片的数量。该装置随后基于该数量决定至少一个参考图片的对应的搜索范围大小。然后,该装置基于搜索范围大小和当前块的位置决定参考图片的搜索范围,以及该装置基于该搜索范围对当前块进行编码或解码。

Description

视频编解码方法及相关装置
技术领域
本发明涉及视频编解码。具体而言,本公开涉及通过有效的搜索内存管理来提高视频编码器或解码器的编解码效率的方法和装置。
背景技术
除非本文另有说明,否则本节中描述的方法不是下面列出的权利要求的现有技术,以及不被包含在本节中而被承认为现有技术。
视频编解码通常涉及由编码器将视频(即,源视频)编码成比特流,将比特流传输到解码器,以及由解码器解析和处理比特流从比特流解码视频以产生重构的视频。视频编解码器(即,编码器和解码器)可以在编码和解码视频时采用各种编解码模式或工具,其目的之一是实现例如表现为高编解码增益的高效视频编解码。即,视频编解码器旨在减少需要从编码器传输到解码器的比特流的总大小,同时仍向解码器提供有关原始视频的足够信息,以便解码器生成可以令人满意地忠实于原始视频的重构的视频。
许多编解码工具是基于块的编解码工具,其中待编解码的图片或帧被划分为许多不重叠的矩形区域或“块”。块构成编解码工具处理的基本元素,如帧内预测和帧间预测中常见的那样,用于视频编解码的这两种主要技术,分别通过去除源视频中的空间和时间冗余来实现高效的视频编解码。通常,视频冗余通过在被称为“候选参考块”的多个已编码块中搜索以及找到最类似于当前待编解码块的一个或多个参考块来去除。包含候选参考块的帧被称为“候选参考帧”。找到参考块后,使用参考块本身以及参考块和当前块之间的差值(被称为“残差”),当前块可被编解码或以其他方式表示,从而消除冗余。帧内预测利用在当前块的同一帧内找到的参考块来去除冗余,而帧间预测利用不在当前块的同一帧内而是在另一帧内找到的每个参考块,另一帧通常被称为源视频的“参考帧”或“参考图片”。
作为基于块的处理器,视频编码器通常以管线方式顺序编解码块。即,视频编解码器可以是具有多个级的编解码管线,每个级被配置为在将块传递到管线中的下一级之前对要编解码的块执行特定功能。块可以逐步经过编解码管线,直到它被编解码为止。在帧内的所有块经过编解码管线后,帧被编解码。并非所有已经编解码的块都可以作为用于帧内或帧间预测的候选参考块。同样,并不是所有已经编解码的帧都可以作为候选参考帧。通常,只有候选参考帧的特定块可以作为候选参考块。候选块通常是在空间或时间上接近正在编解码的当前块的块,因为与在空间或时间上远离当前块的块相比,视频编解码器有更高的机会在这些候选块中找到与当前块最相似的块。候选块可以加载到物理内存中,通常是静态随机存取内存(static random-access memory,简称SRAM),例如3级(L3)内存,其视频编码器和/解码器的帧内预测引擎或帧间预测引擎存取,以对当前块执行帧内或帧间预测。物理内存通常被称为视频编码器或解码器的“搜索内存”。
视频编解码器可以采用特定算法来管理搜索内存。例如,算法可以确定将哪些块加载到搜索内存中作为帧内和帧间预测引擎存取的候选块。算法可以是编解码工具特定的以及可以被修改以适应视频编码器可以采用的各种并行处理方案,例如波前并行处理(wavefront parallel processing,简称WPP)。用于管理搜索内存的算法在视频编码器编解码视频的效率方面起着重要作用。视频编解码器的效率可以在编解码视频的质量因子中体现,比如编解码增益(例如,比特率增益,例如Bjontegaard Delta-Rate增益)或主观/客观质量(例如,峰值讯噪比)。
发明内容
以下概述仅是说明性的并且不旨在以任何方式进行限制。即,以下概述被提供以介绍本文所述的新颖且非显而易见的技术的概念,亮点,益处和优点。选择而不是所有的实施方式在下面的详细描述中被进一步描述。因此,以下概述并非旨在识别所要求保护的主题的基本特征,也不旨在用于确定所要求保护的主题的范围。
本公开的目的是提供与管理用于视频编解码的搜索内存有关的方案、概念、设计、技术、方法和装置。利用本公开中的各种实施例,可实现包括增强的编解码增益、改进的编解码时延、简化的搜索内存访问和/或减少的硬件开销的益处。
在一个方面,基于多个参考图片使用基于块的帧间预测来编码或解码视频的图片的当前块的方法被呈现,该参考图片与当前图片相关联或对应于当前图片。参考图片与当前图片在同一视频中,基于该方法可以有效地去除当前图片中的时间冗余。该方法可以涉及确定参考图片的数量,即,表示对应于当前图片的参考图片的数量。每个参考图片都有一个唯一的索引,例如图片顺序计数(picture order count,简称POC),用于识别视频的时间序列中相应的参考图片。在一些实施例中,该方法可以涉及使用一个或多个有序列表来存储参考图片的索引,以及该方法可以通过检查索引列表来确定参考图片的数量。该方法可以涉及决定每个参考图片或至少一个参考图片的相应的搜索范围大小(SR大小),而SR大小至少部分地基于参考图片的数量来决定。该方法还可以涉及识别当前块的位置。例如,该方法可以将当前块的第一像素(例如,当前块的左上角或中心的像素)的像素坐标识别为当前块的位置。基于当前块的位置和SR大小,该方法可以涉及决定参考图片中的每个参考图片或至少一个参考图片中包含参考图片的多个块的搜索范围(SR),所述多个块可以作为用于编解码当前块的候选参考块。然后,该方法可以涉及基于多个参考图片中的每个参考图片或至少一个参考图片的SR内的候选参考块对当前块进行编解码。在一些实施例中,该方法可以涉及除了参考图片的数量之外还基于搜索内存的大小来决定SR大小,其中搜索内存被配置为存储来自每个参考图片或者来自至少一个参考图片的候选参考块。
在一些实施例中,该方法可以涉及使用两个有序列表而不是一个有序列表来追踪参考图片。例如,在当前图片是当代视频编解码标准中定义的所谓“双向预测帧”或“B帧”的情况下,帧间预测可以使用两个有序列表(每个预测方向一个)来执行。这两个列表可以有也可以没有重复的参考图片。如果相同的参考图片重复出现,即出现在两个列表中,则参考图片在数量上计算两次。例如,被称为“列表0”和“列表1”的两个列表可以分别包括第一数量的索引和第二数量的索引。不管是否有索引同时出现在列表0和列表1中,参考图片的数量都是第一数量和第二数量之总和。该方法可以涉及对出现在列表0和列表1中的参考图片指定较大的SR大小,以及对仅出现在两个列表之一中的参考图片指定较小的SR大小。也就是说,该方法旨在将更多的搜索内存分配给出现在两个列表中的参考图片,因为该参考图片比仅出现在两个列表(即仅用于从一个方向进行的预测)中之一的另一参考图片更多地被使用。
在另一方面,一种装置被提供,其包括参考图片缓冲器(reference picturebuffer,简称RPB)、一个或多个参考图片列表(reference picture list,简称RPL)、搜索内存、处理器和编解码模块。RPB被配置为存储当前图片的多个参考图片,其中每个RPL被配置为存储一个或多个索引,以及该一个或多个索引中的每个索引对应于参考图片之一。在一些实施例中,参考图片的POC可被用作索引。处理器被配置为基于一个或多个RPL来确定多个参考图片的数量。处理器随后可以基于该数量决定多个参考图片中的每个参考图片或者至少一个参考图片所对应的SR大小。此外,处理器可以识别当前图片的当前块的位置,例如当前块的左上角或中心的像素的像素坐标。基于当前块的位置以及对应于参考图片的SR大小,处理器可以决定包含相应参考图片的多个块的搜索范围(SR)作为用于对当前块进行编解码的候选参考块。处理器可以以相同的方式对当前图片中的另一个或多个参考图片或每个参考图片确定候选参考块。处理器还可以将决定的候选参考块存储到搜索内存。搜索记忆图可以由编解码模块存取,使得编解码模块可以使用参考图片的SR内的参考图片的多个块,即存储在搜索内存中的候选参考块,对当前块进行编解码。
在一些实施例中,该装置还可以包括运动估计模块。运动估计模块被配置为对每个参考图片或至少一个参考图片决定相应宏运动向量(macro motion vector,简称MMV),该相应宏运动向量表示从当前图片指向相应参考图片或从相应的参考图片到当前图片的图片级空间位移。即,MMV可被视为相应参考图片的图片级运动向量。处理器可以进一步基于MMV来决定相应参考图片的SR。在一些实施例中,运动估计模块可以是编解码模块的一部分。
附图说明
附图被包括以提供对本公开的进一步理解并且被并入并构成本公开的一部分。附图说明了本公开的实施方式,并且与描述一起用于解释本公开的原理。值得注意的是,附图不一定是按比例绘制的,因为在实际实施中特定元件可能被显示为与大小不成比例,以便清楚地说明本公开的概念。
图1示出根据本公开的实施方式的示例设计的图。
图2示出根据本公开的实施方式的示例设计的图。
图3示出根据本公开的实施方式的示例设计的图。
图4示出根据本公开的实施方式的示例设计的图。
图5示出根据本公开的实施方式的示例设计的图。
图6示出根据本公开的实施方式的示例设计的图。
图7示出根据本公开的实施方式的示例视频编码器的图。
图8示出根据本公开的实施方式的示例视频编码器的图。
图9示出根据本公开的实施方式的示例装置的图。
图10示出根据本公开的实施方式的示例处理的流程图。
图11示出根据本公开的实施方式的示例电子系统的图。
具体实施方式
在以下详细描述中,通过示例的方式阐述了许多具体细节,以便提供对相关教导的透彻理解。基于本文描述的教导的任何变化,衍生和/或扩展都在本公开的保护范围内。在一些情况下,与在此公开的一个或多个示例实施方式有关的众所周知的方法,处理,元件和/或电路可以在相对较高的水平上进行描述而没有细节,以避免不必要地模糊本公开的教导的方面。
根据本公开的实施方式涉及与实现视频编码器或解码器的高效搜索内存管理有关的各种技术、方法、方案和/或解决方案。根据本发明,多种可能的方案可以单独或联合实施。也就是说,虽然这些可能的解决方案可以在下面单独描述,但是这些可能的解决方案中的两个或更多个可以以一种或另一种组合来实现。
如上文别处所述,影响视频编解码器的编解码效率的重要因素是视频编解码器如何管理用于存储正被编解码的当前块的候选参考块的搜索内存。为此,视频编解码器可以采用各种搜索内存管理方案,这些方案可能特定于或可能不特定用于所使用的编解码工具。举例来说,视频编解码器可采用算法来确定哪些已编解码块可用作用于编解码当前块的候选参考块。
下面详细描述几种搜索内存管理方案。首先,使用适应性搜索范围大小的搜索内存管理被描述,其中不同的参考图片可以具有不同大小的搜索范围,候选参考块驻留在搜索范围内。其次,使用适应性搜索范围位置的搜索内存管理被描述,其中每个参考图片的搜索范围的位置相对于正在编解码的当前块可能具有或不具有相应的移位。适应性搜索范围定位旨在增加找到更好的参考块的机会,例如,具有较低的残差。第三,基于编解码树单元(coding tree unit,简称CTU)的并行处理的搜索内存管理被描述。
一、适应性搜索范围大小
图1示出根据本公开的实施方式的示例设计的图,其中搜索内存管理模块(searchmemory management,简称SMM)180被用来提供搜索内存管理方案,该搜索内存管理方案用于对视频的当前图片的当前块进行编解码。视频包括多个图片或“帧”,它们以时间序列呈现或以其他方式显示,例如时间序列160。如图1所示,时间序列160包括一系列图片,例如图片100、图片101、图片102、图片103、图片104、...、图片107、图片108、图片109和图片110,其中,图片之间存在时间关系。当时间序列160根据顺序显示为视频时,时间关系以图片的顺序显示。例如,图片100是时间序列160的第一图片。也就是说,当时间序列160被呈现(例如,记录或显示)为视频时,图片100表示第一帧。在时间序列160中,图片102在时间上显示在图片101之后,接着是图片103,接着是图片104等。类似地,图片107之后是图片108,图片108后面跟着图片109,接着是图片110,依此类推。此外,时间序列160的每张图片都具有时间标识符,称为“图片顺序计数(picture order count,简称POC)”,其是用于记录或以其他方式识别时间序列160中的各个图片的时间位置的整数索引。如图1所示,图片100具有指定或以其他方式记录为POC=0的相应时间标识符,而图片101的POC被指定为POC=1。类似地,图片102、103、104、107、108、109和110的POC值分别被指定为POC=2、3、4、7、8、9和10,如图3所示。使用此方案,图片被显示为视频时的时间关系可以被记录。特定图片的POC值可以标识图片在视频的时间序列中的时间位置。时间序列中的每张图片都具有唯一的POC值,在时间序列被显示时,POC值小于第二图片的第一图片必须在第二图片之前。POC信息对于SMM 180执行搜索内存管理功能很重要,这将在下文别处详细公开。
根据本公开的搜索内存管理的总体思路如下。在本公开中,术语“帧”、“图片”和“图片帧”可互换地用于指代视频中的图片,例如图片100-110中的任一图片。帧间预测模块140被配置为使用基于块的方法对时间序列160的当前图片进行编码或解码。帧间预测模块140可以采用在帧间编解码中通常采用的基于块的运动估计(motion estimation,简称ME)和运动补偿(motion compensation,简称MC)技术,尤其是使用块匹配算法的技术。如上文别处所述,在基于块的方法中,时间序列160中的每个图片被分成多个不重叠的矩形区域,被称为“块”。帧间预测模块140通过依次处理当前图片的块来对当前图片进行编码,直到当前图片的所有块被处理。帧间预测模块140正在处理的当前图片的块被称为“当前块”。例如,帧间预测模块140可以正在处理图片103。也就是说,图片103是当前图片。帧间预测模块140可以通过将ME和MC技术应用于对应于当前图片103的多个参考图片,即时间序列160中的一些其他帧,来对当前图片103进行编码或解码。例如,当前图片103对应的参考图片可以包括图片100、102、104和108。
时间序列160的每个图片可以具有对应的参考图片组。一般而言,并非时间序列160的每张图片都是时间序列160的一个或多个其他图片的参考图片。即,时间序列160的图片可被分为两组,即,第一组162包括参考图片,以及第二组164包括非参考图片。属于第一组162的图片可以被存储在参考图片缓冲器(reference picture buffer,简称RPB)150中,其中RPB 150可由SMM 180存取。
除了存储参考图片162之外,RPB 150还可以存储一个或多个列表,被称为参考图片列表或RPL。每个RPL包括一个或多个索引,其中一个或多个索引中的每个索引对应于当前图片的参考图片。基于存储在RPL中的索引,SMM 180能够将参考图片的信息转发到帧间预测模块140。具体地,SMM 180可以包括处理器182和搜索内存184。对于当前图片103的参考图片中的至少一个(即,图片100、102、104和108中的任一或每个),处理器182可以确定包括相应参考图片的一部分的相应搜索范围(search range,简称SR)。处理器182还可以针对当前图片103的至少一个参考图片,将SR内的像素数据存储到搜索内存184。帧间预测模块140可以存取搜索内存184,以及基于存储在搜索内存184中的像素数据对当前图片103进行编码或解码。
在一些实施例中,存储在RPB 150中的每个RPL可以是有序列表。即,记录在每个RPL中的索引按顺序记录,当帧间预测模块140应用使用当前帧的参考图像的像素数据的ME和MC技术时,该顺序可以是相应参考图片的优先级的指示。在一些实施例中,索引可以是参考图片162的POC。与当前图片103相关联的RPL的数量取决于当前图片103的图片类型。图片类型可以指示当前图片103是现代视频编解码标准中所定义的预测帧(P帧)或双向预测帧(B帧),现代视频编解码标准比如是多功能视频编解码(Versatile Video Coding,简称VVC)、高效视频编解码(High Efficiency Video Coding,简称HEVC)或高级视频编解码(Advanced Video Coding,简称AVC)。在当前图片103是P帧的情况下,RPB 150可以仅存储一个RPL,例如RPL 157。在当前图片103是B帧的情况下,RPB 150可以存储两个RPL,例如RPL157和另一个RPL 158。对应于P帧的一个RPL通常被称为“列表0”,而对应于B帧的两个RPL通常被称为“列表0”和分别为“列表1”。
图2示出根据本公开的实施方式的示例设计的图,其中当前图片103可以被划分为多个不重叠的矩形块,例如块211、212、213、214、215、216和217。帧间预测模块140可以顺序地处理当前图片103的块。具体地,对于当前图片103的每个块,帧间预测模块140被配置为寻找每个参考图片100、102、104和108中的最佳匹配块,其中最佳匹配块是如下块:与当前图片103的相应块相似以及具有相同大小。最佳匹配块的边界可以与当前图片103的不重叠矩形块的边界对齐或不对齐。帧间预测模块140可以通过使用整数像素搜索算法在至少一个参考图片以及至多每个参考图片中搜索相应的搜索范围(search range,简称SR)来找到最佳匹配块。在一些实施例中,帧间预测模块140可以在整数像素搜索算法之后使用分数像素搜索算法来找到最佳匹配块。
如图2所示,帧间预测模块140当前正在处理图片103的块217;即,图片103是当前图片,而块217是当前块。对应于当前图片103的一个或多个RPL上记录有POC 0、2、4和8。即,对应于当前图片103的参考图片是图片100、102、104和108。因此,帧间预测模块140可以通过搜索图片100内的SR 209从图片100中找到最佳匹配块203。类似地,帧间预测模块140可以通过搜索图片102内的SR 229从图片102中找到最佳匹配块223。同样地,帧间预测模块140通过分别搜索图片104和108中的SR 249和SR 289可以从图片102中找到最佳匹配块243和283。
如上所述,处理器182分别确定参考图片100、102、104和108的搜索范围209、229、249和289。通常,搜索范围具有矩形形状。搜索范围209、229、249和289中的每一个由其大小和位置定义。搜索范围的大小,或“SR大小”,可以用搜索范围的高度和宽度来表示,也可以用搜索范围的总面积来表示。搜索范围的位置可以使用参考图片内的搜索范围的像素坐标来识别。例如,搜索范围的左上像素的坐标可以用于标识搜索范围的位置。作为另一个例子,搜索范围的位置可以使用搜索范围中心的像素坐标来标识。
在一些实施例中,每个搜索范围都以当前块为中心。因此,标识当前块的坐标可足以标识每个搜索范围的位置。例如,在一些实施例中,SR 209、229、249和289中的每一个可以以当前块217为中心。因此,用于标识当前块217的位置的像素坐标(例如,当前块217左上角的像素的坐标)可用于识别SR 209、229、249和289中的每一个的位置。
在一些实施例中,所有搜索范围可以不以当前块为中心。也就是说,当前块的中心与搜索范围的中心之间可能存在位移。例如,SR 209和SR 289可能不以当前块217为中心,以及位移可被用来识别SR 209或289的位置与当前块217的位置相比的相对移位。位移可以是从当前块217的中心指向SR 209或289的中心的向量。可选地,位移可以是从SR 209或289的中心指向当前块217的中心的向量。
在一些实施例中,所有SR可以具有相同的SR大小,以及SR大小等于默认大小。在一些实施例中,默认大小可以是当前块大小的倍数。例如,SR209、229、249和289中的每一个可以具有宽度和高度,该宽度x倍于当前块217的宽度,以及该高度y倍于当前块217的宽度。在一些实施例中,x可以等于y,例如x=y=2.5或x=y=5。在一些实施例中,x可以不等于y,例如x=5和y=2.5。
在一些实施例中,所有SR可以具有相同的SR大小,以及处理器182可以基于当前图片的参考图片的数量来决定SR大小。此外,处理器182可以决定SR大小,使得所有SR的总大小保持恒定值,而不考虑参考图片的数量。处理器182可以通过存取RPB 150找到或以其他方式确定当前图片的参考图片的数量。具体地,处理器182可以通过检查存储在RPB 150中的一个或多个RPL(例如,RPL 157和158),因为每个RPL都包含参考图片的POC值。例如,处理器182可以检查RPL157和158,从而确定图片103具有四个参考图片(即,图片100、102、104和108)。同样,处理器182可以检查RPL 157和158以及确定图片108仅具有两个参考图片(例如,图片107和109)。由于当前图片103的参考图片的数量是当前图片108的两倍,处理器182可以决定当前图片103的参考图片的SR大小是当前图片108的一半,使得当前图片103的SR的总大小与当前图片108的SR的总大小相同。即,SR大小是除以当前图片的参考图片的数量的恒定值。在一些实施例中,SR的总大小的恒定值可以基本上等于搜索内存184的大小,其中搜索内存184的大小与搜索内存184的总容量成比例,以及可以使用搜索内存184能够存储的像素数据量来测量。在视频编解码器是使用诸如半导体集成电路(intefratedcircuit,简称IC)芯片中的那些物理电子元件来实现的情况下,搜索内存184可以使用静态随机存取内存(static random-access memory,简称SRAM)来实现,例如level-3(L3)内存,是IC芯片的组成部分。因此,搜索内存184的容量是固定值,该固定值取决于包括在IC芯片上的SRAM的大小。处理器182因此可以通过将搜索内存184的大小除以当前图片的参考图片的数量来决定每个参考图片的SR大小。
在一些实施例中,每个参考图片可以或可以不具有分别不同大小的SR。为了决定每个参考图片的相应SR大小,处理器182可以首先决定基本SR大小或“基本大小”。处理器182然后可以基于当前图片的基本大小和图片类型来确定相应的SR大小。例如,如果当前图片是P帧,则每个参考图片可以具有SR,其SR大小相同。具体地,处理器182可以将基本大小指定为每个参考图片的SR大小。如果当前图片是B帧,则可能存在其中参考图片具有比另一参考图片更大或更小的SR大小的场景。下面介绍不同类型的当前图片基本大小的决定及其与SR大小的关系。
在当前图片是P帧的情况下,只有一个对应的RPL(例如,RPL 157或158)被存储在RPB 150中。处理器182可以通过检查存储在RPB 150中的RPL来确定当前图片的参考图片的数量。处理器182然后可以基于数量决定当前图片的参考图片的SR的基本大小。例如,图片108可以是具有两个参考图片的P帧:POC=0图片(即,图片100)和POC=16图片(图1中未示出)。因此,当图片108是当前图片时,POC=0图片和POC=16图片被存储为参考图片162的一部分。而且,RPB 150可以包括RPL 157,其包括POC值0和16作为索引,该索引将POC=0图片和POC=16图片识别为当前图片108的参考图片。处理器182可检查RPL 157以及因此确定当前图片108的参考图片的数量为二,因为RPL 157包括两个索引。然后处理器182可以将SR的基本大小决定为默认大小除以数量(即,二)。或者,处理器182可将SR的基本大小决定为搜索内存184的大小除以数量(即,二)。在基本大小被决定之后,处理器182可以将基本大小指定为当前图片108的每个参考图片的SR大小,即,POC=0图片和POC=16图片。
在当前图片是B帧的情况下,在RPB 150中存储有两个对应的RPL(例如,RPL 157和158)。处理器182可以通过检查存储在RPB 150中的RPL决定当前图片的参考图片的数量。这两个RPL可以分别包括第一数量的索引和第二数量的索引。需要注意的是,同一个索引可能同时出现在两个RPL中。即,可能存在在两个RPL中重复的索引。处理器182可以将数量确定为第一数量和第二数量的总和,而不考虑任一重复的索引或者其缺失。然后处理器182可以基于数量决定当前图片的参考图片的SR的基本大小。例如,图片108可以是具有记录在RPL157和158中的每个RPL中的两个参考图片索引的B帧。具体地,RPL 157可以包括两个索引0和16,其标识POC=0图片(即,图片100)和POC=16图片(图1中未示出)作为图片108的参考图片,而RPL 158可以包括两个索引16和32,其标识POC=16图片和POC=32图片(未在图1中示出)作为图片108的参考图片。因此,当图片108是当前图片时,POC=0图片、POC=16图片和POC=32图片被存储为参考图片162的一部分。注意POC=16图片出现在RPL 157和RPL158中。处理器182可以检查RPL 157和158以及计算第一数量(即,二)和第二数量(即,二)的总和。处理器182可以通过将第一数量和第二数量的总和(即,四)指定为数量来相应地确定当前图片108的参考图片的数量。值得注意的是,数量被确定为四,即使对于当前图片108只有三个不同的参考图片(即,POC=0图片、POC=16图片和POC=32图片)。这是因为POC=16的图片同时出现在RPL 157和RPL 158中,因此两次被计入数量。处理器182然后可以将SR的基本大小决定为默认大小除以数量(即,四)。或者,处理器182可将SR的基本大小决定为搜索内存184的大小除以数量(即,四)。在基本大小被决定之后,处理器182可以基于相应参考图片是否在RPL 157和158中的一个或两个中来决定当前图片108的每个参考图片的SR大小。对于仅出现在RPL 157和158之一的参考图片,即POC=0图片和POC=32图片,处理器182可以将基本大小指定为SR大小。对于同时出现在RPL 157和158中的参考图片,即POC=16图片,处理器182可以将基本大小的两倍指定为SR大小。即,POC=16图片的SR大小是POC=0或32图片的SR大小的两倍。SR大小的两倍可以表现为SR的更大宽度,SR的更大高度,或者SR的更大宽度和更大高度。
在如上所述用于编解码B帧当前图片的实施例中,与仅出现在列表0或列表1中的另一参考图片相比,处理器182旨在将搜索内存184的较大部分分配给出现在列表0(即,RPL157)和列表1(即RPL 158)。较大的SR增加了找到更好参考块的可能性。也就是说,帧间预测模块140在较大SR内找到的参考块与在较小SR内找到的参考块相比预期具有较小的MC残差。处理器182被配置为将搜索内存184的较大部分分配给同时出现在列表0和列表1中的参考图片,因为用于参考图片的更好的参考块有利于编解码B帧当前图片的两个方向上的帧间预测。相比之下,处理器182被制止将搜索内存184的较大部分分配给仅出现在列表0或列表1中的参考图片,因为参考图片的更好参考块将有利于编解码B帧当前图片的仅在一个方向上的帧间预测。
图3示出根据本公开的实施方式的示例设计的图,其中表310和表320被示出为使用上述搜索内存管理方案分别编解码示例P帧和B帧。如表310所示,在当前图片(即,具有POC=32、16、8或3的图片)是P帧的情况下,相应参考图片的一个索引或多个索引(即,POC值)被存储在列表0(即,RPL 157)中,而列表1(即,RPL 158)是空的。处理器182可以检查列表0以及对于具有POC=32、16、8和3的当前图片分别确定参考图片的数量为1、2、2和2。处理器182还可以基于参考图片的数量决定基本SR大小分别为A、A/2、A/2和A/2,其中A可以是默认值,或者可选地,是搜索内存184的大小。然后,处理器182可以将基本SR大小指定为每个参考图片的SR大小。例如,对于POC=32当前图片,POC=0参考图片的SR大小是A。对于POC=16当前图片,POC=0参考图片和POC=32参考图片中的每个参考图片的SR大小是A/2。对于POC=8当前图片,POC=0参考图片和POC=16参考图片中的每个参考图片的SR大小是A/2。对于POC=3当前图片,POC=2参考图片和POC=0参考图片中的每个参考图片的SR大小是A/2。
同样地,如表320所示,在当前图片(即,具有POC=32、16、8或3的图片)是B帧的情况下,相应参考图片的一个索引或多个索引(即,POC值)被存储在列表0(即,RPL 157)和列表1(即,RPL 158)中的至少一个中。处理器182可同时检查列表0和列表1,从而决定具有POC=32、16、8和3的当前图片的参考图片的数量分别为2、4、4和4。处理器182还可以基于参考图片的数量决定基本SR大小分别为A/2、A/4、A/4和A/4,其中A可以是默认值,或者可选地,是搜索内存184的大小。然后,处理器182可以将基本SR大小指定为仅出现在列表0和列表1之一中的每个参考图片的SR大小,以及将基本SR大小的两倍指定为均出现在列表0和列表1中的每个参考图片的SR大小。例如,对于POC=32当前图片,POC=0参考图片的SR大小是基本SR大小的两倍,即为A。对于POC=16的当前图片,POC=0参考图片和POC=32参考图片中的每个参考图片的SR大小是基本SR大小的两倍,即为A/2。对于POC=8当前图片,POC=0参考图片和POC=32参考图片中的每个参考图片的SR大小是基本SR大小,即为A/4。然而,POC=16参考图片的SR大小是基本SR大小的两倍,即为A/2。对于POC=3当前图片,POC=2参考图片、POC=2参考图片、POC=4参考图片和POC=8参考图片中的每个参考图片的SR大小是基本SR大小,即为A/4。
值得注意的是,在表格310与表格320的每一行中,参考图片的SR的总集合面积等于A,其可以是默认值,或搜索内存184的大小。
在一些实施例中,在处理器182如上所述决定基本大小之后,与时间上更接近当前图片的参考图片相比,处理器182随后可以为时间上更远离当前图片的参考图片分配搜索内存184的更大部分。在图2中,当前图片是图片103,而参考图片是图片100、102、104和108。由处理器182决定的基本大小由标有数字299的方框表示,其大小等于搜索内存184的大小除以参考图片的数量(即四)。处理器182可以为参考图片100、102、104和108中的每个参考图片决定相对于当前图片103的时间距离。时间距离可以通过处理器182计算相应参考图片的POC和当前图片的POC之间的差值的绝对值来确定。因此,处理器182可以计算出参考图片101相对于当前图片103的时间距离是2个计数,而参考图片102和104中的每个参考图片相对于当前图片103的时间距离是1个计数。同样,参考图片108相对于当前图片103的时间距离是5计数。处理器182随后可以基于基本大小以及各自的时间距离来决定参考图片100、102、104和108中的每个参考图片的SR大小。即,处理器182可以将较大的SR大小指定给相对于当前图片具有较大时间距离的参考图片。因此,SR 289的大小大于SR 209的大小,SR 209的大小大于SR 249的大小,SR 249的大小等于SR 229的大小。具体而言,SR 289的大小大于基本大小299,而SR 229和SR 249的大小小于基本大小299。
在一些实施例中,在处理器182如上所述确定基本大小之后,与在空间上更接近当前图片的参考图片(即低运动参考图片)相比,处理器182可以随后为在空间上远离当前图片的参考图片(即,高运动参考图片)分配搜索内存184的较大部分。例如,如图2所示,当前图片是图片103,而参考图片是图片100、102、104和108。由处理器182确定的基本大小由标有数字299的方框表示,其大小等于搜索内存184的大小除以参考图片的数量(即四)。SMM180的运动估计(motion estimation,简称ME)模块186可以针对参考图片100、102、104和108中的每个参考图片决定关于当前图片103的宏运动向量(macro motion Vector,简称MMV)。MMV表示从当前图片到相应参考图片的空间位移。MMV可以由ME模块186使用当前图片103和相应的参考图片100、102、104或108执行基于帧的率失真优化操作来确定。具有较大幅度的MMV的参考图片在空间上离当前图片更远,而具有较小幅度的MMV的参考图片在空间上更接近当前图片。MMV可以通过在相应参考图片和当前图片103之间执行图片级运动估计来决定。可选地,MMV可以通过不基于整个帧而是基于当前图片的一个或多个块以及相应参考图片的一个或多个对应块执行运动估计来决定。当前图片的一个或多个块可以包括当前块以及当前块的一些相邻块。例如,在块217是当前块的情况下,用于决定MMV的当前图片的一个或多个块可以包括当前块217和当前块217的几个相邻块,例如块211、212、213和216。基于相应MMV的幅度,可以决定参考图片102和104中的每个参考图片是低运动参考图片,因为其相应MMV的幅度小,而参考图片108是高运动参考图片,因为其相应的MMV幅度较大。处理器182可以随后基于相应MMV的大小来决定参考图片100、102、104和108的SR大小。也就是说,处理器182可以将较大的SR大小指定给具有较大的相应MMV幅度的参考图片。因此,处理器182可以决定SR 289的大小大于SR 249的大小,SR259大小与SR 229的大小相等。具体地,SR 289的大小大于基本大小SR 299,而SR 229和SR 249的大小小于基本大小299。
在一些实施例中,在处理器182如上所述决定基本大小之后,与具有主题变化的参考图片相比,处理器182可以随后为没有主题变化的参考图片分配搜索内存184的更大部分。例如,当前图片是图片103,而参考图片是图片100、102、104和108。由处理器182决定的基本大小由标有数字299的块表示,其大小等于搜索内存184的大小除以参考图片的数量(即四)。SMM 180的ME模块186可以决定相应参考图片相对于当前图片103是否具有主题变化。例如,SMM 180的运动估计模块可以在相应参考图片和当前图片103之间的运动补偿产生的运动补偿残差大于预定阈值的情况下确定相应参考图片相对于当前图片103具有主题变化。因此,SMM 180的运动估计模块可以决定参考图片100、102和104中的每个参考图片与当前图片103相比没有主题变化,而参考图片108与当前图片103相比具有主题变化。处理器182可以随后基于参考图片100、102、104和108中的每个参考图片与当前图片103之间是否存在主题变化来决定参考图片100、102、104和108的SR大小。处理器182可以将较小的SR大小指定给相对于当前图片103具有主题变化的参考图片。因此,SR 209、229和249中的每个的大小大于SR 289的大小。具体地,SR 289的大小小于基本大小299,而SR 209、229和249中的每个都大于基本大小299。在一些实施例中,处理器182可以将零指定给相对于当前图片103具有主题变化的参考图片。即,SR 289的大小可以是零。
二、适应性搜索范围定位
为了决定或以其他方式定义搜索范围,有必要决定搜索范围的大小以及搜索范围的位置。例如,在对当前图片103的当前块217进行编解码时,SMM 180需要确定SR 209、229、249和289中的每个的大小,以及每个SR 209、229、249和289在参考图片100、102、104和108中的位置。上一节着重于公开SMM 180如何决定搜索范围的大小,而本节着重于公开SMM180如何决定搜索范围的位置。
通常,SR在参考图片内的位置与当前块在当前图片内的位置相关。在一些实施例中,每个搜索范围都以当前块为中心。即,SR的中心在帧内与当前块的中心处于相同位置。由此可见,每个搜索范围的位置可以通过参考标识当前块的位置的像素坐标来决定。例如,在一些实施例中,SR 209、229、249和289中的每个可以以当前块217为中心。因此,SR 209、229、249和289中的每个的位置(例如,标识相应SR的中心像素的像素位置)可以通过参考标识当前块217的位置的像素坐标(例如,当前块217的中心像素的坐标)来决定。
在一些实施例中,所有搜索范围可以不以当前块为中心。也就是说,在当前块的中心(图2中用符号“
Figure BDA0004008953720000171
”标记)和搜索范围的中心(图2中用符号“”标记)之间可能存在位移或“移位”。例如,SR 209和SR 289可能不以当前块217为中心,以及位移可被用来识别SR 209或289的位置与当前块217的位置相比的相对移位。位移可以用从当前块217的中心指向SR209或289的中心的向量来表示,例如向量201或向量281。可选地,位移可以是从中心指向的向量SR 209或289到当前块217的中心。
位移如图2的向量(例如,向量201或281)基于块且可由执行基于块的估计的ME模块186决定。例如,在决定向量281时,ME模块186可以使用当前块217内的像素数据以及与当前块217相同区域内但是来自参考图片108(即,参考图片108的块277内的像素数据)的像素数据来执行基于块的低复杂度率失真优化(low-complexity rate-distortionoptimization,简称LC-RDO)。
在一些实施例中,位移(displacement)或“移位”可能不是基于块,而是基于帧。也就是说,无论当前图片的哪个块是当前块,对应的SR都具有相同的移位。例如,当块217是帧间预测模块140正在处理的当前块时,对应的SR 289具有由向量281表示的位移。同样地,当图片103的任一其他块是当前块时,参考图片108中的相应SR具有从当前块的移位,由向量表示,其中该向量具有与向量281相同的方向和相同的幅度。在SR移位是基于帧的一些实施例中,ME模块186可以决定当前图片的MMV,如上文别处所述。此外,ME模块186可以应用MMV作为当前图片的每个块的SR移位(shift)。
在一些实施例中,当前图片可以被划分成几个分区,以及SMM 180可以向分区的每个块指定相同的SR移位。例如,分区可以是编解码单元(coding unit,简称CU)或编解码树单元(coding tree unit,简称CTU),如在诸如VVC、HEVC或AVC的现代视频编解码标准中所定义。在一些其他实施例中,分区可以是包含多个空间相邻CTU的图片片段。在一些实施例中,分区可以是包含串联成一行的多个CTU的CTU行(row)。
在一些实施例中,SMM 180可以向RPL中的每个参考图片指定相同的SR移位。即,其索引(例如,POC)在列表0(即,RPL 157)中的每个参考图片具有相同的SR移位。同样,其索引在列表1(即,RPL 158)中的每个参考图片都具有相同的SR移位。列表0中参考图片的SR移位可以与列表1中参考图片的SR移位相同或不同。
三、并行处理
为了提高编解码速度或吞吐量,视频编解码器可以采用各种并行处理方案。例如,帧间预测模块140可以包含两个或更多基本相同的处理单元,通常被称为“处理核心”或简称为“核心”,以处理当前图片的块。因此,SMM 180需要为并行处理方案提供对两个或更多核的并发支持。
图4根据本公开的实施方式的示例设计的图,其中当前图片499由包括四个并行处理核心的帧间预测模块140处理。因此,可能需要SMM 180具有四个SRAM组491、492、493和494,每个SRAM组被配置为支持四个处理核心之一。如图4所示,当前图片499包括多个块,例如块400-489。具体地,块400-489组成一个10×9的数组,数组的每一行有10个块,数组的每一列有9个块。在一些实施例中,当前图片499的每个块可以是CTU,因此当前图片400包括九个CTU行,每个行具有十个CTU。帧间预测模块140可以使用波前并行处理(wavefrontparallel processing,简称WPP)来处理当前图片499。具体地,帧间预测模块140可以包括四个WPP核141、142、143和144,用于同时处理当前图片499的四个CTU行。例如,WPP核心141正在处理包含块420-429的CTU行,而WPP核心142、143和144正在分别处理块430-439、440-449和450-459的CTU行。WPP核心141、142、143和144中的每个核心都被配置为沿x方向连续地处理相应CTU行的CTU,如图4所示。
WPP核心141-144可以管线方式处理CTU。具体地,每个WPP核心141-144可以在三个管线级处理CTU:预载入级、运动估计(motin estimation,简称ME)级和率失真优化(rate-distortion optimazation,简称RDO)级。以WPP核心141为例。在图4所示的管线循环中,WPP核心141正在对块426执行ME以及对块425执行RDO。在下一个管线周期,WPP核心141将对块427执行ME以及对块426执行RDO。此外,WPP核心141–144可以处理多个CTU行,其中在两个相邻的CTU行之间有一个CTU的滞后。例如,在图4所示的管线循环中。如图4所示,WPP核心141正在对块425执行RDO,而WPP核心142、143和144正在分别对块434、443和452执行RDO。同样,在图4中描述的管线循环中,WPP核心141正在对块426执行ME,而WPP核心142、143和144正在分别对块435、444和453执行ME。
在下文的描述中,符号{左上角块,右下角块}用于指代包含多个块的矩形区域。在一些实施例中,帧间预测模块可以在当前块周围的五个块×5个块的搜索范围(searchrange,简称SR)下执行ME和RDO操作。例如,在图4所示的管线循环中,WPP核心141通过存取包含块403-407、413-417、423-427、433-437和443-447的SR内的像素数据来对块425执行RDO,即{块403,块447}的SR。同时,WPP核心141通过存取{块404,块448}的SR中的像素数据来执行块426的ME。同时,处理器182将块409、419、429、439和449从参考图片缓冲器150加载到搜索内存184,以便块409、419、429、439和449可用于WPP核心141在下一个管线周期对块427执行ME。
如图4所示,每个SRAM储存单元491、492、493和494需要存储35个CTU的像素数据。具体地,在图4所示的管线循环中,{块403,块449}内的像素数据被存储在储存单元491中,{块412,块458}内的像素数据被存储在储存单元492中,{块421,块467}内的像素数据被存储在储存单元493,以及{块430,块476}内的像素数据被存储在储存单元494中。也就是说,搜索内存184需要具有至少35×4=140CTU的大小。
此外,在图4所示的管线循环中。储存单元491预载{块409,块449}的像素数据,储存单元492预载入{块418,块458}的像素数据,储存单元493预载入{块427,块467}的像素数据,储存单元494预载入{块436,块476}的像素资料。即,搜索内存184需要具有5×4=20个CTU的预加载带宽。
图5示出根据本公开的实施方式的示例设计的图,其中示出搜索内存管理方案500。在搜索内存管理方案500中,搜索内存184具有四个SRAM储存单元591-594。与图5的相比,搜索内存管理方案500能够减少搜索内存184的预加载带宽。与储存单元491–494(每个储存单元都有35个CTU)不同,储存单元591–594的储存单元大小不统一。具体地,{块403,块449}内的像素数据被存储在储存单元591中,{块412,块459}内的像素数据存储在储存单元592中,{块421,块469}内的像素数据被存储在储存单元593,{块430,块479}内的像素数据被存储在储存单元594中。虽然储存单元591的大小与储存单元491相同,均为35个CTU,但储存单元592的大小大于储存单元492,以及能够存储8x 5=40个CTU。储存单元593能够存储9x 5=45个CTU,而储存单元594能够存储10x 5=50个CTU。因此,在搜索内存管理方案500中,搜索内存184需要具有至少35+40+45+50=170个CTU的大小,与图4中描述的搜索内存管理方案相比多了30个CTU。此外,不统一的储存单元大小使SRAM储存单元的索引更加复杂。然而,由于仅需要预加载{块409、块479},实现搜索内存管理方案500的搜索内存184仅需要具有8个CTU的预加载带宽,而不是图4中所需的20个CTU,从而大大减少帧间预测模块140的处理延迟。
图6示出根据本公开的实施方式的示例设计的图,其中示出搜索内存管理方案600。在搜索内存管理方案600中,搜索内存184具有SRAM储存单元691-694,加上第五个SRAM储存单元695。搜索内存管理方案600具有与搜索内存管理方案500相同的预加载带宽,其提供减少帧间预测模块140的处理延迟的相同好处。同时,与SRAM储存单元591-594的非统一储存单元大小不同,四个SRAM储存单元691-694共享统一的储存单元大小,这使得与搜索内存管理方案500相比,SRAM储存单元的索引更简单。与储存单元491–494(每个储存单元都有35个CTU)一样,储存单元691–694也有统一的储存单元大小,但更小,为6x 5=30个CTU。具体地,{块403,块448}内的像素数据存储在储存单元691中,{块412,块457}内的像素数据被存储在储存单元692中,{块421,块466}内的像素数据被存储在储存单元693,{块430,块475}内的像素数据被存储在储存单元594中。搜索内存184需要预加载{块409,块479},这转化为8个CTU的预加载带宽,与搜索内存管理方案500的相同。然而,搜索内存184需要包括存储体695作为用于存储{块409,块479}内的像素数据的预加载缓冲器,即搜索内存184中32个CTU的大小。搜索内存184因此需要至少包括SRAM储存单元691-695,总大小为152个CTU。与搜索内存管理方案500所需的170个CTU相比,这更具成本效益。
因此,在搜索内存管理方案600中,搜索内存184需要具有至少30+30+30+30+32=152个CTU的大小,与图4中描述的搜索内存管理方案相比多了12个CTU,但与搜索内存管理方案500相比少了18个CTU。而且,统一的储存单元大小使得SRAM储存单元的索引更容易。与搜索内存管理方案500的情况相同,仅需要预加载{块409,块479},实现搜索内存管理方案600的搜索内存184仅需要具有8的预加载带宽CTU,而不是图4中所需的20个CTU,从而大大减少帧间预测模块140的处理延迟。
当采用像WPP这样的并行处理方案时,重要的是帧间预测模块140从相邻块存取适当类型的运动向量(motion vector,简称MV)作为运动估计的预测子。参考图4所示,WPP核心142正在对块435执行ME以及需要来自相邻块425的MV作为预测子。然而,在同一个管线周期,WPP核心141正在对块425执行RDO,以及RDO产生的MV仍在更新。因此,在对块435执行ME时,WPP核心142可以利用已经由在先前管线周期执行ME的WPP核心141生成的块425的MV,而不是由在当前管线周期对块425执行RDO的WPP核心141生成或以其他方式更新的块425的MV。
在一些实施例中,当帧间预测模块140的WPP核心需要使用来自相邻块的MV来对当前块执行ME时,WPP核心可以通用地使用ME MV(即,由ME产生的MV)来代替RDO MVs(即,由RDO产生的MV)。在一些可选实施例中,WPP核心可以避免使用来自当前帧的相邻块的MV,而是使用时间MV,即来自其他帧的相邻块的MV。
四、说明性实施方式
图7示出示例视频编码器700,其中可以采用上文别处描述的各种实施例、并行处理方案和内存管理方案。如图所示,视频编码器700从视频源705接收输入视频信号以及将该信号编码为比特流795。视频编码器700具有用于对来自视频源705的信号进行编码的若干元件或模块,至少包括选自以下的一些元件:变换模块710、量化模块711、逆量化模块714、逆变换模块715、帧内估计模块720、帧内预测模块725、运动补偿模块730、运动估计模块735、环路滤波器745、重构图片缓冲器750、运动向量(motion vector,简称MV)缓冲器765、MV预测模块775、搜索内存管理模块(search memory management module,简称SMM)780以及熵编码器790。运动补偿模块730和运动估计模块735是帧间预测模块740的一部分。帧间预测模块740可以包括被配置为执行整数像素搜索的整数运动估计(integer motionestimation,简称IME)内核,以及被配置为执行分数像素搜索的分数运动估计(fractionalmotion estimation,简称FME)内核。整数像素搜索和分数像素搜索都是运动补偿模块730和运动估计模块735的基本功能。
在一些实施例中,如上所列的模块710-790是由计算设备或电子装置的一个或多个处理单元(例如,处理器)执行的软件指令的模块。在一些实施例中,模块710-790是由电子装置的一个或多个集成电路(integrated circuit,简称IC)实现的硬件电路模块。尽管模块710-790被示为单独的模块,但是一些模块可以组合成单个模块。
视频源705提供原始视频信号,其呈现每个视频帧的像素数据而没有压缩。即,视频源705提供包括以时间序列呈现的图片的视频流。减法器708计算来自视频源705的视频数据与来自运动补偿模块730或帧内预测模块725的预测像素数据713之间的差值。变换模块710将差值(或残差像素数据或残差信号709)转化为变换系数(例如,通过执行离散余弦变换或DCT)。量化模块711将变换系数量化为量化资料(或量化系数)712,其由熵编码器790编码为比特流795。
逆量化模块714对量化数据(或量化系数)712进行逆量化以获得变换系数,逆变换模块715对变换系数进行逆变换以产生重构残差719。重构残差719被添加与预测像素资料713一起生成重构像素资料717。在一些实施例中,重构像素数据717被临时存储在行缓冲器(未示出)中用于帧内预测和空间MV预测。重构像素由环路滤波器745滤波以及被存储在重构图片缓冲器750中。在一些实施例中,重构图片缓冲器750是视频编码器700外部的内存。在一些实施例中,重构图片缓冲器750是视频编码器700内部的内存。
帧内估计模块720基于重构像素数据717执行帧内预测以产生帧内预测数据。帧内预测数据被提供给熵编码器790以被编码成比特流795。帧内预测数据也被帧内预测模块725用来产生预测像素数据713。
运动估计模块735通过产生MV以参考存储在重构图片缓冲器750中的先前解码帧的像素数据来执行帧间预测。这些MV被提供给运动补偿模块730以产生预测像素数据。
视频编码器700不是在比特流中编码完整的实际MV,而是使用MV预测来生成预测的MV,以及用于运动补偿的MV和预测的MV之间的差值被编码为残差运动数据以及被存储在比特流795中。
MV预测模块775基于为编码先前视频帧而生成的参考MV,即用于执行运动补偿的运动补偿MV,生成预测MV。MV预测模块775从MV缓冲器765中检索来自先前视频帧的参考MV。视频编码器700将为当前视频帧生成的MV存储在MV缓冲器765中作为用于生成预测MV的参考MV。
MV预测模块775使用参考MV来创建预测的MV。预测的MV可以通过空间MV预测或时间MV预测来计算。预测的MV和当前帧的运动补偿MV(MC MV)之间的差值(残差运动数据)由熵编码器790编码到比特流795中。
搜索内存管理模块(search memory management module,简称SMM)780决定正在编码的当前图片的一个或多个参考图片的搜索范围。参考图片被存储在重构图片缓冲器750中。SMM 780将搜索范围内的像素资料转发到帧间预测模块740以用于运动估计和运动补偿。SMM 780可以实施SMM 180(至少处理器182和搜索内存184),因为ME模块186可以分时方式由ME模块735实施。重构图片缓冲器750可以实施参考图片缓冲器150。帧间预测模块740可以实施帧间预测模块140。
熵编码器790通过使用诸如上下文适应性二进制算术编解码(entropy-codingtechniques such as context-adaptive binary arithmetic coding,简称CABAC)或霍夫曼编码的熵编码技术将各种参数和数据编码到比特流795中。熵编码器790将各种报头元素、标志连同量化变换系数712和残差运动数据作为语法元素编码到比特流795中。比特流795又被存储在存放设备中或通过比如网络等通讯媒介传输到解码器。
环路滤波器745对重构的像素数据717执行滤波或平滑操作以减少编解码的伪影,特别是在像素块的边界处。在一些实施例中,所执行的滤波操作包括样本适应性偏移(sample adaptive offset,简称SAO)。在一些实施例中,滤波操作包括适应性环路滤波器(adaptive loop filter,简称ALF)。
图8示出示例视频解码器800。如图所示,视频解码器800是图像解码或视频解码电路,其接收比特流895以及将比特流895的内容解码成视频帧的像素数据以供显示。视频解码器800具有用于解码比特流895的若干元件或模块,包括选自以下的一些元件:逆量化模块811、逆变换模块810、帧内预测模块825、运动补偿模块830、环路滤波器845、解码图片缓冲器850、MV缓冲器865、MV预测模块875、搜索内存管理模块(search memory managementmodule,简称SMM)880和解析器890。运动补偿模块830是帧间预测模块840的一部分。
在一些实施例中,模块810-890是由计算设备的一个或多个处理单元(例如,处理器)执行的软件指令模块。在一些实施例中,模块810-890是由电子装置的一个或多个集成电路(integrated circuit,简称IC)实现的硬件电路模块。尽管模块810-890被示为单独的模块,但是一些模块可以组合成单个模块。
解析器(例如,熵解码器)890接收比特流895以及根据由视频编解码或图像编解码标准定义的语法执行初始解析。解析的语法元素包括各种头部元素、标志以及量化数据(或量化系数)812。解析器890通过使用熵编解码技术解析出各种语法元素,例如上下文适应性二进制算术编解码(context-adaptive binary arithmetic coding,简称CABAC)或霍夫曼编码。
逆量化模块811对量化数据(或量化系数)812进行逆量化以获得变换系数,以及逆变换模块810对变换系数816执行逆变换以产生重构残差信号819。重构残差信号819与来自帧内预测模块825或运动补偿模块830的预测像素数据813相加以产生解码像素数据817。解码像素数据由环路滤波器845滤波以及被存储在解码图片缓冲器850中。在一些实施例中,解码图片缓冲器850是视频解码器800外部的存储。在一些实施例中,解码图片缓冲器850是视频解码器800内部的存储。
帧内预测模块825从比特流895接收帧内预测数据,以及据此从解码图片缓冲器850中存储的解码像素数据817产生预测像素数据813。在一些实施例中,解码像素数据817还存储在行缓冲器(未示出)中用于帧内预测和空间MV预测。
在一些实施例中,解码图片缓冲器850的内容用于显示。显示设备855获取解码图片缓冲器850的内容以直接显示或获取解码图片缓冲器的内容到显示缓冲器。在一些实施例中,显示设备通过像素传输从解码图片缓冲器850接收像素值。
运动补偿模块830根据运动补偿MV(motion compensation,简称MC MV)从存储在解码图片缓冲器850中的解码像素数据817产生预测像素数据813。通过将从比特流895接收的残差运动数据与从MV预测模块875接收的预测MV相加来解码这些运动补偿MV。
MV预测模块875基于为解码先前视频帧而生成的参考MV生成预测的MV,例如,用于执行运动补偿的运动补偿MV。MV预测模块875从MV缓冲器865中获取先前视频帧的参考MV。视频解码器800将为解码当前视频帧而生成的运动补偿MV存储在MV缓冲器865中作为用于产生预测MV的参考MV。
环内滤波器845对解码像素数据817执行滤波或平滑操作以减少编码伪像,特别是在像素块的边界处。在一些实施例中,执行的滤波操作包括样本适应性偏移(sampleadaptive offset,简称SAO)。在一些实施例中,滤波操作包括适应性环路滤波器(adaptiveloop filter,简称ALF)。
搜索内存管理模块(search memory management module,简称SMM)880决定正在编码的当前图片的一个或多个参考图片的搜索范围。参考图片被存储在解码图片缓冲器850中。SMM 880将搜索范围内的像素资料转发到帧间预测模块840以用于运动估计和运动补偿。SMM 880可以实施SMM 180。解码图片缓冲器850可以实施参考图片缓冲器150。帧间预测模块840可以实施帧间预测模块140。
图9示出能够根据上文别处描述的各种搜索内存管理方案对视频进行编码或解码的视频编解码器900。视频编解码器900可以使用基于块的管线处理来处理视频的当前图片以进行帧间预测。视频编解码器900具有若干元件或模块,包括选自以下的一些元件:参考图片缓冲器(reference picture buffer,简称RPB)910、搜索内存920、处理器930、编解码模块940以及运动估计模块950。在一些实施例中,运动估计模块950可以是编解码模块940的一部分。
RPB 910可以被配置为存储当前图片的多个参考图片。例如,视频编解码器900正在处理图片103,以及RPB 910可以被配置为存储图片100、102、104和108,它们是当前图片103的参考图片。RPB 910可以被配置为进一步存储一个或多个参考图片列表(referencepicture list,简称RPL),例如RPL 157和/或RPL 158。每个RPL可以被配置为存储分别对应于多个参考图片中的一个或多个参考图片的一个或多个索引。在一些实施例中,索引可以是参考图片的图片顺序计数(picture order count,简称POC)值。RPB 910可以由参考图片缓冲器150、重构图片缓冲器750或解码图片缓冲器850来实施。
搜索内存920可以被配置为对RPL中指示的一个或多个参考图片存储相应参考图片的搜索范围内的像素数据。在一些实施例中,搜索内存920可以是编解码模块940可存取的SRAM。搜索内存920可以由搜索内存管理模块180的搜索内存184实施。
处理器930可以由搜索内存管理模块180的处理器182实施。处理器930可以被配置为决定当前图片的参考图片的数量。处理器930可基于存储在RPB 910中的一个或多个RPL来决定数量。例如,处理器930可检查RPL 157和/或RPL 158以及决定当前图片103的参考图片的数量为四。处理器930还可以被配置为基于该数量决定一个或多个参考图片对应的搜索范围(search range,简称SR)大小。在一些实施例中,处理器930可以首先基于数量确定基本大小,然后基于基本大小决定参考图片的SR大小。例如,处理器930可以首先决定基本大小299,以及随后根据上文别处描述的适应性SR大小方案基于该基本大小299决定SR209、229、249和289的大小。
除了SR的大小之外,处理器930还可以被配置为决定SR的位置。处理器930可以基于当前块(即,正被处理的块)的位置来确定每个SR的位置。在一些实施例中,SR的中心与块的中心对齐,因此SR的位置基于当前块的位置唯一确定。在一些可选实施例中,SR的位置与当前块的位置之间可能存在空间位移。空间位移可由向量表示,例如向量201或281。在一些实施例中,处理器930可指定宏运动向量(macro motion vector,简称MMV)作为空间位移,其中MMV表示当前图片到相应参考图片的空间位移。视频解码器900可包括运动估计(motion estimation,简称ME)模块950,其可被配置以决定MMV。ME模块950可以由ME模块186或ME模块735来实施。ME模块950可以包括整数运动估计(integer motion estimation,简称IME)内核952。在一些实施例中,ME模块950还可以包括分数运动估计(fractionalmotion estimation,简称FME)内核954。IME内核952被配置为执行整数像素搜索,而FME内核954被配置为执行小数像素搜索。
此外,处理器930还可以被配置为将每个参考图片的SR内的像素数据存储到搜索内存920。例如,处理器930可以将SR 209、229、249和289内的像素数据存储到搜索内存920,使得编解码模块940可以随后存取搜索内存920以及使用存储在搜索内存920中的像素数据编码或解码当前图片103。
五、说明性处理
图10示出根据本公开的实施方式的示例处理1000。处理1000可以表示实现上述各种提议的设计、概念、方案、系统和方法的方面。更具体地,根据本公开,处理1000可以表示涉及基于涉及适应性搜索范围的搜索内存管理方案对当前图片的当前块进行编解码的所提出的概念和方案的方面。处理1000可以包括一个或多个操作、动作或功能,如块1010、1020、1030和1040中的一个或多个所示。虽然被说明为离散的块,但是处理1000的各个方框可以被划分成另外的块,组合成更少的块,或被消除,这取决于所需的实施方式。此外,处理1000的块/子块可以图10所示的顺序执行,或者以不同的顺序。此外,处理1000的块/子块中的一个或多个可被重复或迭代地执行。处理1000可由装置900及其任一变型实施或在装置900中实施。仅出于说明的目的并且不限制范围,处理1000在下文中在装置900的上下文中被描述。处理1000可以在块1010处开始。
在1010,处理1000可以涉及处理器930确定当前图片的多个参考图片的数量。例如,处理器930可以检查存储在参考图片缓冲器(RPB)910中的一个或多个参考图片列表(RPL),其中每个RPL可以包括一个或多个索引,例如POC值,其对应于多个参考图片。处理1000可以从1010进行到1020。
在1020,处理1000可以涉及处理器930基于数量确定多个参考图片中的至少一个参考图片所对应的搜索范围(SR)大小。例如,处理器930可以基于表310或320中列出的数量来确定SR大小。在一些实施例中,处理器930可以基于数量决定基本大小,然后基于基本大小确定SR大小,如表310和320中所示。处理1000可以从1020进行到1030。
在1030,处理1000可以涉及处理器930基于在1020决定的SR大小以及当前块的位置,决定多个参考图片中的至少一个参考图片所对应的参考图片的相应SR。例如,处理器930可以确定SR的位置由当前块的位置唯一决定。通过决定SR的位置和SR的大小,处理器930决定SR。例如,处理器930可以基于表310或320中列出的SR大小以及当前块217的位置来决定SR,例如SR 209、229、249和289之一。在一些实施例中,SR的位置不仅仅基于当前块的位置来确定。例如,运动估计模块950可以以当前图片和参考图片作为输入来执行运动估计,从而决定表示当前图片和参考图片之间的空间位移(例如,向量201或281)的宏运动向量(macro motion vector,简称MMV),然后根据当前块的位置和空间位移决定SR的位置。处理1000可以从1030进行到1040。
在1040,处理1000可以涉及编解码模块940基于多个参考图片中的至少一个参考图片的SR内的像素数据对当前块进行编解码。例如,编解码模块940可以基于SR 209、229、249和289中的像素数据对当前块217进行编码或解码。具体地,编解码模块940首先可以分别基于SR 209、229、249和289内的像素数据决定最佳匹配块203、223、243和283。编解码模块940随后可以基于最佳匹配块203、223、243和283对当前块217进行编码。
六、说明性电子系统
许多上述特征和应用被实现为软件处理,这些软件处理被指定为记录在计算机可读存储介质(也称为计算机可读介质)上的一组指令。当这些指令由一个或多个计算或处理单元(例如,一个或多个处理器,处理器内核或其他处理单元)执行时,它们使处理单元执行指令中指示的动作。计算机可读介质的示例包括但不限于只读光盘驱动器(compact discread-only memory,简称CD-ROM),闪存驱动器,随机存取内存(random-access memroy,简称RAM)芯片,硬盘驱动器,可擦除可程序设计只读存储器(erasable programmble read-only memory,简称EPROM),电可擦除可程序设计只读存储器(electrically erasableproagrammble read-only memory,简称EEPROM)等。计算机可读介质不包括通过无线或有线连接传递的载波和电子信号。
在本说明书中,术语“软件”意在包括驻留在只读存储器中的固件或存储在磁内存中的应用程序,其可以读入内存以供处理器处理。此外,在一些实施例中,多个软件发明可以实现为更大程序的子部分,同时保留不同的软件发明。在一些实施例中,多个软件发明也可以实现为单独的程序。最后,共同实现此处描述的软件发明的单独程序的任一组合都在本公开的范围内。在一些实施例中,软件程序,在被安装以在一个或多个电子系统上运行时,定义一个或多个特定机器实施方式,该实施方式处理和执行软件程序的操作。
图11概念性地示出了实现本公开的一些实施例的电子系统1100。电子系统1100可以是计算机(例如,台式计算机,个人计算机,平板计算机等),电话,PDA或任一其他类型的电子设备。这种电子系统包括各种类型的计算机可读介质和用于各种其他类型的计算机可读介质的接口。电子系统1100包括总线1105,处理单元1110,图形处理单元(graphics-processing unit,简称GPU)1115,系统内存1120,网络1125,只读存储器1130,永久存储设备1135,输入设备1140,和输出设备1145。
总线1105共同表示与电子系统1100通讯连接的众多内部设备的所有系统,外围设备和芯片组总线。例如,总线1105将处理单元1110与GPU 1115,只读存储器1130,系统内存1120和永久存储设备1135通讯地连接。
处理单元1110从这些各种内存单元中获取要执行的指令和要处理的数据,以便执行本公开的处理。在不同的实施例中,处理单元可以是单个处理器或多核处理器。一些指令被传递到GPU 1115并由其执行。GPU 1115可以卸除各种计算或补充由处理单元1110提供的图像处理。
只读存储器(read-only-memory,简称ROM)1130存储由处理单元1110和电子系统的其他模块使用的静态数据和指令。另一方面,永久存储设备1135是读写存放设备。该设备是即使在电子系统1100关闭时也存储指令和数据的非易失性存储单元。本公开的一些实施例使用大容量记忆装置(例如磁盘或光盘及其对应的磁盘驱动器)作为永久存储设备1135。
其他实施例使用卸除式存储设备设备(例如软盘,闪存设备等,及其对应的磁盘驱动器)作为永久存储设备。与永久存储设备1135一样,系统内存1120是读写内存设备。然而,与永久存储设备1135不同,系统内存1120是易失性(volatile)读写内存,例如随机存取内存。系统内存1120存储处理器在运行时使用的一些指令和数据。在一些实施例中,根据本公开的处理被存储在系统内存1120,永久存储设备1135和/或只读存储器1130中。例如,根据本公开的一些实施例,各种内存单元包括用于根据处理多媒体剪辑的指令。从这些各种内存单元中,处理单元1110获取要执行的指令和要处理的数据,以便执行一些实施例的处理。
总线1105还连接到输入设备1140和输出设备1145。输入设备1140使用户能够向电子系统传达信息和选择命令。输入设备1140包括字母数字元元键盘和定点设备(也被称为“游标控制设备”),照相机(例如,网络摄像头),麦克风或用于接收语音命令的类似设备等。输出设备1145显示由电子系统生成的图像或者输出数据。输出设备1145包括打印机和显示设备,例如阴极射线管(cathode ray tubes,简称CRT)或液晶显示器(liquid crystaldisplay,简称LCD),以及扬声器或类似的音讯输出设备。一些实施例包括用作输入和输出设备的设备,例如触摸屏。
最后,如图11所示,总线1105还通过网络适配器(未示出)将电子系统1100耦合到网络1125。以这种方式,计算机可以是计算机网络(例如局域网(“LAN”),广域网(“WAN”)或内部网络的一部分,或者是多种网络的一个网络,例如互联网。电子系统1100的任一或所有元件可以与本公开结合使用。
一些实施例包括电子元件,例如微处理器,存储装置和内存,其将计算机程序指令存储在机器可读或计算机可读介质(或者被称为计算机可读存储介质,机器可读介质或机器可读存储介质)中。这种计算机可读介质的一些示例包括RAM,ROM,只读光盘(read-onlycompact discs,简称CD-ROM),可记录光盘(recordable compact discs,简称CD-R),可重写光盘(rewritable compact discs,简称CD-RW),只读数字多功能光盘(read-onlydigital versatile discs)(例如,DVD-ROM,双层DVD-ROM),各种可刻录/可重写DVD(例如,DVD-RAM,DVD-RW,DVD+RW等),闪存(例如,SD卡,迷你SD卡,微型SD卡等),磁性和/或固态硬盘驱动器,只读和可记录Blu-Ray
Figure BDA0004008953720000321
光盘,超密度光盘,任一其他光学或磁性介质以及软盘。计算机可读介质可以存储可由至少一个处理单元执行以及包括用于执行各种操作的指令集合的计算机程序。计算机程序或计算机代码的示例包括诸如由编译程序产生的机器代码,以及包括由计算机,电子元件或使用注释器(interpreter)的微处理器执行的高级代码的文档。
虽然上述讨论主要涉及执行软件的微处理器或多核处理器,但许多上述特征和应用由一个或多个集成电路执行,例如专用集成电路(application specific integratedcircuit,简称ASIC)或现场可程序设计门阵列(field programmable gate array,简称FPGA)。在一些实施例中,这样的集成电路执行存储在电路本身上的指令。此外,一些实施例执行存储在可程序设计逻辑器件(programmable logic device,简称PLD),ROM或RAM器件中的软件。
如在本说明书和本申请的任一权利要求中使用的,术语“计算机”,“服务器”,“处理器”和“内存”均指电子或其他技术设备。这些术语不包括人或人群。出于本说明书的目的,术语显示或显示是指在电子设备上显示。如在本说明书和本申请的任何权利要求中所使用的,术语“计算机可读介质”,“计算机可读介质”和“机器可读介质”完全限于以计算机可读形式存储信息的有形物理对象。这些术语不包括任何无线信号,有线下载信号和任何其他短暂信号。尽管已经参考许多具体细节描述了本公开,但是所属技术领域的技术人员将认识到,在不脱离本公开的精神的情况下,可以以其他特定形式来实施本公开。
补充说明
本文所描述的主题有时表示不同的元件,其包含在或者连接到其他不同的元件。可以理解的是,所描述的结构仅是示例,实际上可以由许多其他结构来实施,以实现相同的功能,从概念上讲,任何实现相同功能的元件的排列实际上是“相关联的”,以便实现所需功能。因此,不论结构或中间部件,为实现特定的功能而组合的任何两个元件被视为“相互关联”,以实现所需的功能。同样,任何两个相关联的元件被看作是相互“可操作连接”或“可操作耦接”,以实现特定功能。能相互关联的任何两个元件也被视为相互“可操作地耦接”,以实现特定功能。能相互关联的任何两个元件也被视为相互“可操作地耦合”以实现特定功能。可操作连接的具体例子包括但不限于物理可配对和/或物理上相互作用的元件,和/或无线可交互和/或无线上相互作用的元件,和/或逻辑上相互作用和/或逻辑上可交互的元件。
此外,关于基本上任何复数和/或单数术语的使用,所属技术领域的技术人员可以根据上下文和/或应用从复数变换为单数和/或从单数到复数。为清楚起见,本发明明确阐述了不同的单数/复数排列。
此外,所属技术领域的技术人员可以理解,通常,本发明所使用的术语特别是权利要求中的,如权利要求的主题,通常用作“开放”术语,例如,“包括”应解释为“包括但不限于”,“有”应理解为“至少有”“包括”应解释为“包括但不限于”等。所属技术领域的技术人员可以进一步理解,若计划介绍特定数量的权利要求内容,将在权利要求内明确表示,并且,在没有这类内容时将不显示。例如,为帮助理解,下面权利要求可能包含短语“至少一个”和“一个或复数个”,以介绍权利要求的内容。然而,这些短语的使用不应理解为暗示使用不定冠词“一个”或“一种”介绍权利要求内容,而限制了任何特定神专利范围。甚至当相同的权利要求包括介绍性短语“一个或复数个”或“至少有一个”,不定冠词,例如“一个”或“一种”,则应被解释为表示至少一个或者更多,对于用于介绍权利要求的明确描述的使用而言,同样成立。此外,即使明确引用特定数量的介绍性内容,所属技术领域的技术人员可以认识到,这样的内容应被解释为表示所引用的数量,例如,没有其他修改的“两个引用”,意味着至少两个引用,或两个或两个以上的引用。此外,在使用类似于“A,B和C中的至少一个”的表述的情况下,通常如此表述是为了所属技术领域的技术人员可以理解该表述,例如,“系统包括A,B和C中的至少一个”将包括但不限于单独具有A的系统,单独具有B的系统,单独具有C的系统,具有A和B的系统,具有A和C的系统,具有B和C的系统,和/或具有A,B和C的系统等。所属技术领域的技术人员进一步可理解,无论在说明书中,权利要求中或者附图中,由两个或两个以上的替代术语所表现的任何分隔的单词和/或短语应理解为,包括这些术语中的一个,其中一个,或者这两个术语的可能性。例如,“A或B”应理解为,“A”,或者“B”,或者“A和B”的可能性。
从前述可知,出于说明目的,本发明已描述了各种实施方案,并且在不偏离本发明的范围和精神的情况下,可以进行各种变形。因此,此处所公开的各种实施方式不用于限制,真实的范围和申请由权利要求表示。

Claims (20)

1.一种视频编解码方法,用于处理当前图片的当前块,包括:
确定所述当前图片的多个参考图片的数量;
相对于所述多个参考图片中至少一个参考图片,基于所述数量决定搜索范围大小;
相对于所述多个参考图片中所述至少一个参考图片,基于所述搜索范围大小以及所述当前块的位置决定所述多个参考图片中所述至少一个参考图片的搜索范围;以及
基于所述搜索范围中的像素数据对所述当前块进行编解码。
2.如权利要求1所述的视频编解码方法,其特征在于,所述数量的决定包括检查一个或多个列表,其中每个列表包括一个或多个索引,一个或多个索引中的每个索引对应于所述多个参考图片之一。
3.如权利要求2所述的视频编解码方法,其特征在于,所述一个或多个列表包括第一列表和第二列表,所述第一列表包含第一数量的索引,所述第二列表包含第二数量的索引,其中决定所述数量的步骤还包括计算所述第一数量与所述第二数量的总和,以及其中基于所述数量决定相应的所述搜索范围大小的步骤包括:
根据所述总和决定基本大小;
响应于所述多个参考图片中所述至少一个参考图片仅位于所述第一列表和所述第二列表中的一个,将所述基本大小指定为所述搜索范围大小;以及
响应于所述多个参考图片中所述至少一个参考图片位于所述第一列表和所述第二列表中,将所述基本大小的两倍指定为所述搜索范围大小。
4.如权利要求3所述的视频编解码方法,其特征在于,决定所述基本大小的步骤进一步基于被配置为将所述像素资料存储在所述搜索范围内的搜索内存的大小。
5.如权利要求1所述的视频编解码方法,其特征在于,所述多个参考图片中所述至少一个参考图片包括所述多个参考图片中的两个或更多个,以及其中决定相应的所述搜索范围大小的步骤包括:
根据所述多个参考图片的所述数量决定基本大小;
对所述多个参考图片中的两个或更多个参考图片中的每个参考图片决定相对于所述当前图片的相应时间距离;
将小于所述基本大小的第一大小指定为所述多个参考图片中的两个或更多个参考图片中的第一参考图片的所述搜索范围大小;以及
将大于所述基本大小的第二大小指定为所述多个参考图片中的两个或更多个参考图片中的第二参考图片的所述搜索范围大小,其中对应于所述第二参考图片的所述时间距离大于对应于所述第一参考图片的所述时间距离。
6.如权利要求5所述的视频编解码方法,其特征在于,决定相对于所述当前图片的所述时间距离的步骤包括计算所述多个参考图片中所述至少一个参考图片的图片顺序计数与所述当前图片的图片顺序计数之间的差值的绝对值。
7.如权利要求1所述的视频编解码方法,其特征在于,所述多个参考图片中所述至少一个参考图片包括所述多个参考图片中的两个或更多个参考图片,以及其中决定所述参考图片中的两个或更多个参考图片中的每个参考图片的所述搜索范围大小的步骤包括:
根据所述多个参考图片的所述数量决定基本大小;
对所述多个参考图片中的两个或更多参考图片中的每个参考图片决定相对于所述当前图片的相应空间距离;
将小于所述基本大小的第一大小指定为所述多个参考图片中的两个或更多个参考图片的第一参考图片的所述搜索范围大小;以及
将大于所述基本尺寸的第二大小指定为所述多个参考图片中的两个或更多个参考图片的第二参考图片的所述搜索范围大小,其中对应于所述第二参考图片的所述空间距离大于对应于所述第一参考图片的所述空间距离。
8.如权利要求7所述的视频编解码方法,其特征在于,决定相对于所述当前图片的所述空间距离的步骤包括基于所述当前图片的一个或多个块以及对应于所述当前图片的所述一个或多个块的所述多个参考图片中所述至少一个参考图片的一个或多个块来执行运动估计。
9.如权利要求1所述的视频编解码方法,其特征在于,所述多个参考图片中所述至少一个参考图片包括两个或更多个参考图片,以及其中决定所述多个参考图片中的所述两个或更多个参考图片中每个参考图片的所述搜索范围大小的步骤包括:
基于所述多个参考图片的所述数量决定基本大小;
将小于所述基本大小的第一大小指定为所述两个或更多个参考图片中的第一参考图片的所述搜索范围大小,与所述当前图片相比所述第一参考图片具有主题变化;以及
将大于所述基本大小的第二大小指定为所述两个或更多个参考图片中的第二参考图片的所述搜索范围大小,与所述当前图片相比所述第二参考图片不具有主题变化。
10.如权利要求9所述的视频编解码方法,其特征在于,所述第一大小为零。
11.一种视频编解码装置,包括:
参考图片缓冲器,被配置为存储当前图片的多个参考图片和一个或多个参考图片列表,每个参考图片列表被配置为存储一个或多个索引,一个或多个索引中的每个索引对应于所述多个参考图片中的参考图片;
搜索内存;
处理器,被配置为执行多个操作,包括:
基于所述一个或多个参考图片列表决定所述多个参考图片的数量;
相对于所述多个参考图片中至少一个参考图片,基于所述数量决定搜索范围大小;
基于所述搜索范围大小和所述当前块的位置决定所述多个参考图片中所述至少一个参考图片的搜索范围;以及
将所述搜索范围中的像素数据存储到所述搜索内存中;以及
编解码模块,用于使用存储在所述搜索内存中的所述像素数据对所述当前块进行编解码。
12.如权利要求11所述的视频编解码装置,进一步包括:
运动估计模块,被配置为相对于所述多个参考图片中所述至少一个参考图片决定宏运动向量,所述宏运动向量表示从所述当前图片到所述多个参考图片中所述至少一个参考图片的空间位移,
其中决定所述搜索范围的步骤进一步基于所述宏运动向量。
13.如权利要求11所述的视频编解码装置,其特征在于,所述一个或多个参考图片列表包括第一列表和第二列表,所述第一列表包含第一数量的索引,以及所述第二列表包含第二数量的索引,以及其中基于所述数量决定所述搜索范围大小的步骤:
基于所述第一数量和所述第二数量的总和决定基本大小;
响应于所述多个参考图片中所述至少一个参考图片仅位于所述第一列表和所述第二列表中的一个,将所述基本大小指定为所述搜索范围大小;以及
响应于所述多个参考图片中所述至少一个参考图片位于所述第一列表和所述第二列表中,将所述基本大小的两倍指定为所述搜索范围大小。
14.如权利要求13所述的视频编解码装置,其特征在于,决定所述基本大小的步骤进一步基于所述搜索内存的大小。
15.如权利要求11所述的视频编解码装置,其特征在于,所述多个参考图片中所述至少一个参考图片包括所述多个参考图片中的两个或更多个参考图片,以及其中决定所述参考图片中的两个或更多个参考图片中的每个参考图片的所述搜索范围大小的步骤包括:
根据所述数量决定基本大小;
对所述多个参考图片中的两个或更多参考图片中的每个参考图片决定相对于所述当前图片的相应空间距离;
将小于所述基本大小的第一大小指定为所述多个参考图片中的两个或更多个参考图片的第一参考图片的所述搜索范围大小;以及
将大于所述基本尺寸的第二大小指定为所述多个参考图片中的两个或更多个参考图片的第二参考图片的所述搜索范围大小,其中对应于所述第二参考图片的所述空间距离大于对应于所述第一参考图片的所述空间距离。
16.如权利要求15所述的视频编解码装置,其特征在于,决定相对于所述当前图片的所述时间距离的步骤包括计算所述多个参考图片中所述至少一个参考图片的图片顺序计数与所述当前图片的图片顺序计数之间的差值的绝对值。
17.如权利要求11所述的视频编解码装置,还包括:
运动估计模块,
其中,所述多个参考图片中的至少一个参考图片包括所述多个参考图片中的两个或更多个参考图片,
其中,所述运动估计模块被配置为对所述多个参考图片中的所述两个或更多个参考图片中的每个参考图片,决定表示相应的宏运动向量,所述相应的宏运动向量表示从所述当前图片到所述多个参考图片中所述至少一个参考图片的空间位移,以及
其中,所述运动估计模块基于所述当前图片的一个或多个块和所述多个参考图片中所述至少一个参考图片中对应的一个或多个块来决定所述相应的宏运动向量。
18.如权利要求17所述的视频编解码装置,其特征在于,决定所述多个参考图片中的所述两个或更多个参考图片中每个参考图片的所述搜索范围大小的步骤包括:
基于所述多个参考图片的所述数量决定基本大小;
将小于所述基本大小的第一大小指定为所述两个或更多个参考图片中的第一参考图片的所述搜索范围大小;以及
将大于所述基本大小的第二大小指定为所述两个或更多个参考图片中的第二参考图片的所述搜索范围大小,其中与所述第二参考图片对应的所述宏运动向量的幅度大于所述第一参考图片对应的所述宏运动向量的幅度。
19.如权利要求11所述的视频编解码装置,其特征在于,所述多个参考图片中所述至少一个参考图片包括两个或更多个参考图片,以及其中决定所述多个参考图片中的所述两个或更多个参考图片中每个参考图片的所述搜索范围大小的步骤包括:
基于所述多个参考图片的所述数量决定基本大小;
将小于所述基本大小的第一大小指定为所述两个或更多个参考图片中的第一参考图片的所述搜索范围大小,与所述当前图片相比所述第一参考图片具有主题变化;以及
将大于所述基本大小的第二大小指定为所述两个或更多个参考图片中的第二参考图片的所述搜索范围大小,与所述当前图片相比所述第二参考图片不具有主题变化。
20.如权利要求19所述的视频编解码装置,其特征在于,所述第一大小是零。
CN202211643865.0A 2021-12-21 2022-12-20 视频编解码方法及相关装置 Pending CN116320401A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163291970P 2021-12-21 2021-12-21
US63/291,970 2021-12-21
US17/994,400 2022-11-28
US17/994,400 US20230199171A1 (en) 2021-12-21 2022-11-28 Search Memory Management For Video Coding

Publications (1)

Publication Number Publication Date
CN116320401A true CN116320401A (zh) 2023-06-23

Family

ID=86769455

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211643865.0A Pending CN116320401A (zh) 2021-12-21 2022-12-20 视频编解码方法及相关装置

Country Status (3)

Country Link
US (1) US20230199171A1 (zh)
CN (1) CN116320401A (zh)
TW (1) TWI832628B (zh)

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109996081B (zh) * 2017-12-31 2023-09-12 华为技术有限公司 图像预测方法、装置以及编解码器
CN112135141A (zh) * 2019-06-24 2020-12-25 华为技术有限公司 视频编码器、视频解码器及相应方法

Also Published As

Publication number Publication date
US20230199171A1 (en) 2023-06-22
TW202327354A (zh) 2023-07-01
TWI832628B (zh) 2024-02-11

Similar Documents

Publication Publication Date Title
US11070802B2 (en) Moving image coding device, moving image decoding device, moving image coding/decoding system, moving image coding method and moving image decoding method
CN109997361B (zh) 用于视频译码的低复杂度符号预测
US20220248064A1 (en) Signaling for illumination compensation
CN108293113B (zh) 图像编码系统中的基于建模的图像解码方法和设备
US9699456B2 (en) Buffering prediction data in video coding
EP3979647A1 (en) Coding/decoding method and device, and storage medium
KR101588559B1 (ko) 모션 벡터 저장 방법 및 장치, 인코딩 및 디코딩 방법, 인코딩 및 디코딩 장치, 및 기록 매체
US20180288439A1 (en) Multiple Transform Prediction
JP2018050308A (ja) ビデオコーディングのための動きベクトル予測の実行
US10715811B2 (en) Method and apparatus for determining merge mode
US20180352221A1 (en) Image encoding method and device, and image decoding method and device
CN111448798A (zh) 基于块形状的视频编码和解码的方法和装置
US10999604B2 (en) Adaptive implicit transform setting
US9479788B2 (en) Systems and methods for low complexity encoding and background detection
AU2018236768A1 (en) Method for inducing a merge candidate block and device using same
KR101602871B1 (ko) 데이터 부호화 방법 및 장치와 데이터 복호화 방법 및 장치
CN116320401A (zh) 视频编解码方法及相关装置
CN113794884B (zh) 一种编解码方法、装置及其设备
WO2023020392A1 (en) Latency reduction for reordering merge candidates
CN110868601B (zh) 帧间预测方法、装置以及视频编码器和视频解码器
CN118160301A (zh) 重新排序预测候选的延迟减少
AU2016200597B2 (en) Method for inducing a merge candidate block and device using same
CN117981318A (zh) 用于在视频编解码中进行帧内预测的自适应编解码顺序
CN116266866A (zh) 视频编解码方法及相关装置
CN114760467A (zh) 编码模式的确定方法及装置

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